@useinsider/guido 3.14.0-beta.1e474dd → 3.14.0-beta.2bae355

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 (333) hide show
  1. package/dist/components/organisms/header/EditorActions.vue.js +1 -1
  2. package/dist/components/organisms/header/EditorActions.vue2.js +47 -39
  3. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +30 -28
  4. package/dist/{src/composables → composables}/useHtmlValidator.d.ts +2 -3
  5. package/dist/composables/useHtmlValidator.js +50 -50
  6. package/dist/{src/composables → composables}/useHttp.d.ts +6 -0
  7. package/dist/composables/useHttp.js +66 -59
  8. package/dist/config/i18n/en/labels.json.js +3 -7
  9. package/dist/config/migrator/recommendation/compositionMapper.js +23 -26
  10. package/dist/config/migrator/recommendation/htmlBuilder.js +155 -156
  11. package/dist/{src/config → config}/migrator/recommendation/types.d.ts +0 -1
  12. package/dist/{src/extensions → extensions}/Blocks/Recommendation/constants/index.d.ts +1 -1
  13. package/dist/{src/extensions → extensions}/Blocks/Recommendation/constants/selectors.d.ts +0 -4
  14. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +13 -15
  15. package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/cardComposition/index.d.ts +5 -22
  16. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +314 -346
  17. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +43 -44
  18. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +16 -16
  19. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +16 -16
  20. package/dist/{src/extensions → extensions}/Blocks/Recommendation/templates/utils.d.ts +11 -12
  21. package/dist/extensions/Blocks/Recommendation/templates/utils.js +120 -120
  22. package/dist/extensions/Blocks/Recommendation/utils/captureStyleTemplates.js +54 -55
  23. package/dist/{src/extensions → extensions}/Blocks/common-control.d.ts +1 -3
  24. package/dist/extensions/Blocks/common-control.js +35 -42
  25. package/dist/guido.css +1 -1
  26. package/package.json +1 -1
  27. package/dist/extensions/Blocks/Recommendation/utils/compositionKeys.js +0 -89
  28. package/dist/src/extensions/Blocks/Recommendation/utils/compositionKeys.d.ts +0 -52
  29. /package/dist/{src/@types → @types}/config/defaults.d.ts +0 -0
  30. /package/dist/{src/@types → @types}/config/index.d.ts +0 -0
  31. /package/dist/{src/@types → @types}/config/schemas.d.ts +0 -0
  32. /package/dist/{src/@types → @types}/config/types.d.ts +0 -0
  33. /package/dist/{src/@types → @types}/config/validator.d.ts +0 -0
  34. /package/dist/{src/@types → @types}/events.d.ts +0 -0
  35. /package/dist/{src/@types → @types}/extensions/block.d.ts +0 -0
  36. /package/dist/{src/@types → @types}/generic.d.ts +0 -0
  37. /package/dist/{src/@types → @types}/save-as-template.d.ts +0 -0
  38. /package/dist/{src/App.vue.d.ts → App.vue.d.ts} +0 -0
  39. /package/dist/{src/components → components}/Guido.vue.d.ts +0 -0
  40. /package/dist/{src/components → components}/organisms/AutoSaveController.vue.d.ts +0 -0
  41. /package/dist/{src/components → components}/organisms/LoadingWrapper.vue.d.ts +0 -0
  42. /package/dist/{src/components → components}/organisms/base/Toaster.vue.d.ts +0 -0
  43. /package/dist/{src/components → components}/organisms/email-preview/PreviewContainer.vue.d.ts +0 -0
  44. /package/dist/{src/components → components}/organisms/email-preview/amp/AmpErrorModal.vue.d.ts +0 -0
  45. /package/dist/{src/components → components}/organisms/email-preview/amp/AmpToggle.vue.d.ts +0 -0
  46. /package/dist/{src/components → components}/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.d.ts +0 -0
  47. /package/dist/{src/components → components}/organisms/email-preview/desktop-preview/DesktopPreview.vue.d.ts +0 -0
  48. /package/dist/{src/components → components}/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.d.ts +0 -0
  49. /package/dist/{src/components → components}/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.d.ts +0 -0
  50. /package/dist/{src/components → components}/organisms/email-preview/mobile-preview/ContentView.vue.d.ts +0 -0
  51. /package/dist/{src/components → components}/organisms/email-preview/mobile-preview/InboxView.vue.d.ts +0 -0
  52. /package/dist/{src/components → components}/organisms/email-preview/mobile-preview/MobilePreview.vue.d.ts +0 -0
  53. /package/dist/{src/components → components}/organisms/extensions/recommendation/FilterItem.vue.d.ts +0 -0
  54. /package/dist/{src/components → components}/organisms/extensions/recommendation/FilterSelectionDrawer.vue.d.ts +0 -0
  55. /package/dist/{src/components → components}/organisms/extensions/recommendation/Filters.vue.d.ts +0 -0
  56. /package/dist/{src/components → components}/organisms/extensions/recommendation/LogicAdapter.vue.d.ts +0 -0
  57. /package/dist/{src/components → components}/organisms/header/AutoSaveToggle.vue.d.ts +0 -0
  58. /package/dist/{src/components → components}/organisms/header/EditorActions.vue.d.ts +0 -0
  59. /package/dist/{src/components → components}/organisms/header/EditorToolbar.vue.d.ts +0 -0
  60. /package/dist/{src/components → components}/organisms/header/HeaderWrapper.vue.d.ts +0 -0
  61. /package/dist/{src/components → components}/organisms/header/LeftSlot.vue.d.ts +0 -0
  62. /package/dist/{src/components → components}/organisms/header/MiddleSlot.vue.d.ts +0 -0
  63. /package/dist/{src/components → components}/organisms/header/MigrationConfirmModal.vue.d.ts +0 -0
  64. /package/dist/{src/components → components}/organisms/header/RightSlot.vue.d.ts +0 -0
  65. /package/dist/{src/components → components}/organisms/header/ViewOptions.vue.d.ts +0 -0
  66. /package/dist/{src/components → components}/organisms/header/version-history/RestoreButton.vue.d.ts +0 -0
  67. /package/dist/{src/components → components}/organisms/header/version-history/VersionHistory.vue.d.ts +0 -0
  68. /package/dist/{src/components → components}/organisms/header/version-history/VersionHistoryItem.vue.d.ts +0 -0
  69. /package/dist/{src/components → components}/organisms/header/version-history/ViewOptions.vue.d.ts +0 -0
  70. /package/dist/{src/components → components}/organisms/onboarding/AMPOnboarding.vue.d.ts +0 -0
  71. /package/dist/{src/components → components}/organisms/onboarding/GenericOnboarding.vue.d.ts +0 -0
  72. /package/dist/{src/components → components}/organisms/onboarding/ItemsOnboarding.vue.d.ts +0 -0
  73. /package/dist/{src/components → components}/organisms/onboarding/NewVersionPopup.vue.d.ts +0 -0
  74. /package/dist/{src/components → components}/organisms/onboarding/OnboardingWrapper.vue.d.ts +0 -0
  75. /package/dist/{src/components → components}/organisms/onboarding/TextBlockOnboarding.vue.d.ts +0 -0
  76. /package/dist/{src/components → components}/organisms/onboarding/VersionHistoryOnboarding.vue.d.ts +0 -0
  77. /package/dist/{src/components → components}/organisms/save-as-template/SaveAsTemplateDrawer.vue.d.ts +0 -0
  78. /package/dist/{src/components → components}/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.d.ts +0 -0
  79. /package/dist/{src/components → components}/organisms/unsubscribe/UnsubscribePageSelection.vue.d.ts +0 -0
  80. /package/dist/{src/components → components}/organisms/unsubscribe/UnsubscribeTypeSelection.vue.d.ts +0 -0
  81. /package/dist/{src/components → components}/organisms/unsubscribe/UnsubscribeWrapper.vue.d.ts +0 -0
  82. /package/dist/{src/components → components}/wrappers/WpDrawer.vue.d.ts +0 -0
  83. /package/dist/{src/components → components}/wrappers/WpModal.vue.d.ts +0 -0
  84. /package/dist/{src/composables → composables}/useActionsApi.d.ts +0 -0
  85. /package/dist/{src/composables → composables}/useAllowlist.d.ts +0 -0
  86. /package/dist/{src/composables → composables}/useAutoSave.d.ts +0 -0
  87. /package/dist/{src/composables → composables}/useBlocksConfig.d.ts +0 -0
  88. /package/dist/{src/composables → composables}/useCodeEditorApi.d.ts +0 -0
  89. /package/dist/{src/composables → composables}/useConfig.d.ts +0 -0
  90. /package/dist/{src/composables → composables}/useCortexBlueprintBridge.d.ts +0 -0
  91. /package/dist/{src/composables → composables}/useCustomInterfaceAppearance.d.ts +0 -0
  92. /package/dist/{src/composables → composables}/useDebounce.d.ts +0 -0
  93. /package/dist/{src/composables → composables}/useEmailTemplateApplier.d.ts +0 -0
  94. /package/dist/{src/composables → composables}/useExport.d.ts +0 -0
  95. /package/dist/{src/composables → composables}/useFullStoryBridge.d.ts +0 -0
  96. /package/dist/{src/composables → composables}/useGuidoActions.d.ts +0 -0
  97. /package/dist/{src/composables → composables}/useGuidoStateBridge.d.ts +0 -0
  98. /package/dist/{src/composables → composables}/useHtmlCompiler.d.ts +0 -0
  99. /package/dist/{src/composables → composables}/useModuleDynamicContentRepair.d.ts +0 -0
  100. /package/dist/{src/composables → composables}/usePartner.d.ts +0 -0
  101. /package/dist/{src/composables → composables}/usePreviewInteractionGuard.d.ts +0 -0
  102. /package/dist/{src/composables → composables}/usePreviewMode.d.ts +0 -0
  103. /package/dist/{src/composables → composables}/useProvideInject.d.ts +0 -0
  104. /package/dist/{src/composables → composables}/useRecommendation.d.ts +0 -0
  105. /package/dist/{src/composables → composables}/useRecommendationPreview.d.ts +0 -0
  106. /package/dist/{src/composables → composables}/useResponsivePreview.d.ts +0 -0
  107. /package/dist/{src/composables → composables}/useRibbonOffset.d.ts +0 -0
  108. /package/dist/{src/composables → composables}/useSave.d.ts +0 -0
  109. /package/dist/{src/composables → composables}/useStripo.d.ts +0 -0
  110. /package/dist/{src/composables → composables}/useStripoEventHandler.d.ts +0 -0
  111. /package/dist/{src/composables → composables}/useStripoNotifications.d.ts +0 -0
  112. /package/dist/{src/composables → composables}/useSyncModuleExtractor.d.ts +0 -0
  113. /package/dist/{src/composables → composables}/useTimerClone.d.ts +0 -0
  114. /package/dist/{src/composables → composables}/useToaster.d.ts +0 -0
  115. /package/dist/{src/composables → composables}/useTranslations.d.ts +0 -0
  116. /package/dist/{src/composables → composables}/useUserRole.d.ts +0 -0
  117. /package/dist/{src/composables → composables}/useValidation.d.ts +0 -0
  118. /package/dist/{src/composables → composables}/useVersionHistoryApi.d.ts +0 -0
  119. /package/dist/{src/composables → composables}/validators/saveAsTemplate.d.ts +0 -0
  120. /package/dist/{src/composables → composables}/validators/useCouponBlockValidator.d.ts +0 -0
  121. /package/dist/{src/composables → composables}/validators/useLiquidValidator.d.ts +0 -0
  122. /package/dist/{src/composables → composables}/validators/useUnsubscribeBlockValidator.d.ts +0 -0
  123. /package/dist/{src/config → config}/compiler/htmlCompilerRules.d.ts +0 -0
  124. /package/dist/{src/config → config}/compiler/itemsCompilerRules.d.ts +0 -0
  125. /package/dist/{src/config → config}/compiler/liquidCompilerRules.d.ts +0 -0
  126. /package/dist/{src/config → config}/compiler/outlookCompilerRules.d.ts +0 -0
  127. /package/dist/{src/config → config}/compiler/recommendationCompilerRules.d.ts +0 -0
  128. /package/dist/{src/config → config}/compiler/socialCompilerRules.d.ts +0 -0
  129. /package/dist/{src/config → config}/compiler/unsubscribeCompilerRules.d.ts +0 -0
  130. /package/dist/{src/config → config}/compiler/utils/recommendationCompilerUtils.d.ts +0 -0
  131. /package/dist/{src/config → config}/compiler/utils/recommendationIgnoreUtils.d.ts +0 -0
  132. /package/dist/{src/config → config}/i18n/en/index.d.ts +0 -0
  133. /package/dist/{src/config → config}/i18n/index.d.ts +0 -0
  134. /package/dist/{src/config → config}/migrator/checkboxMigrator.d.ts +0 -0
  135. /package/dist/{src/config → config}/migrator/couponBlockMigrator.d.ts +0 -0
  136. /package/dist/{src/config → config}/migrator/index.d.ts +0 -0
  137. /package/dist/{src/config → config}/migrator/itemsBlockMigrator.d.ts +0 -0
  138. /package/dist/{src/config → config}/migrator/radioButtonMigrator.d.ts +0 -0
  139. /package/dist/{src/config → config}/migrator/recommendation/compositionMapper.d.ts +0 -0
  140. /package/dist/{src/config → config}/migrator/recommendation/extractors.d.ts +0 -0
  141. /package/dist/{src/config → config}/migrator/recommendation/htmlBuilder.d.ts +0 -0
  142. /package/dist/{src/config → config}/migrator/recommendation/parseLegacyConfig.d.ts +0 -0
  143. /package/dist/{src/config → config}/migrator/recommendation/settingsMapper.d.ts +0 -0
  144. /package/dist/{src/config → config}/migrator/recommendation/themeMapper.d.ts +0 -0
  145. /package/dist/{src/config → config}/migrator/recommendationMigrator.d.ts +0 -0
  146. /package/dist/{src/config → config}/migrator/socialIconMigrator.d.ts +0 -0
  147. /package/dist/{src/config → config}/migrator/textBlockMigration.d.ts +0 -0
  148. /package/dist/{src/config → config}/migrator/unsubscribeMigrator.d.ts +0 -0
  149. /package/dist/{src/enums → enums}/academy.d.ts +0 -0
  150. /package/dist/{src/enums → enums}/block.d.ts +0 -0
  151. /package/dist/{src/enums → enums}/date.d.ts +0 -0
  152. /package/dist/{src/enums → enums}/defaults.d.ts +0 -0
  153. /package/dist/{src/enums → enums}/extensions/recommendationBlock.d.ts +0 -0
  154. /package/dist/{src/enums → enums}/html-validator.d.ts +0 -0
  155. /package/dist/{src/enums → enums}/onboarding.d.ts +0 -0
  156. /package/dist/{src/enums → enums}/preview.d.ts +0 -0
  157. /package/dist/{src/enums → enums}/recommendation.d.ts +0 -0
  158. /package/dist/{src/enums → enums}/roles.d.ts +0 -0
  159. /package/dist/{src/enums → enums}/toaster.d.ts +0 -0
  160. /package/dist/{src/enums → enums}/unsubscribe.d.ts +0 -0
  161. /package/dist/{src/extensions → extensions}/Blocks/Checkbox/block.d.ts +0 -0
  162. /package/dist/{src/extensions → extensions}/Blocks/Checkbox/control.d.ts +0 -0
  163. /package/dist/{src/extensions → extensions}/Blocks/Checkbox/extension.d.ts +0 -0
  164. /package/dist/{src/extensions → extensions}/Blocks/Checkbox/iconsRegistry.d.ts +0 -0
  165. /package/dist/{src/extensions → extensions}/Blocks/Checkbox/settingsPanel.d.ts +0 -0
  166. /package/dist/{src/extensions → extensions}/Blocks/Checkbox/template.d.ts +0 -0
  167. /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/block.d.ts +0 -0
  168. /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/constants.d.ts +0 -0
  169. /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/controls/index.d.ts +0 -0
  170. /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/extension.d.ts +0 -0
  171. /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/iconsRegistry.d.ts +0 -0
  172. /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/settingsPanel.d.ts +0 -0
  173. /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/template.d.ts +0 -0
  174. /package/dist/{src/extensions → extensions}/Blocks/Items/block.d.ts +0 -0
  175. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/button/link.d.ts +0 -0
  176. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/cardComposition.d.ts +0 -0
  177. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/image/link.d.ts +0 -0
  178. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/index.d.ts +0 -0
  179. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/name/trimming.d.ts +0 -0
  180. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/price/currencyLocation.d.ts +0 -0
  181. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/price/currencySymbol.d.ts +0 -0
  182. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/price/formattedPrice.d.ts +0 -0
  183. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/price/hideDiscount.d.ts +0 -0
  184. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/price/priceOrientation.d.ts +0 -0
  185. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/price/singlePrice.d.ts +0 -0
  186. /package/dist/{src/extensions → extensions}/Blocks/Items/controls/settingsControl.d.ts +0 -0
  187. /package/dist/{src/extensions → extensions}/Blocks/Items/enums/controlEnums.d.ts +0 -0
  188. /package/dist/{src/extensions → extensions}/Blocks/Items/enums/productEnums.d.ts +0 -0
  189. /package/dist/{src/extensions → extensions}/Blocks/Items/enums/settingsEnums.d.ts +0 -0
  190. /package/dist/{src/extensions → extensions}/Blocks/Items/extension.d.ts +0 -0
  191. /package/dist/{src/extensions → extensions}/Blocks/Items/iconsRegistry.d.ts +0 -0
  192. /package/dist/{src/extensions → extensions}/Blocks/Items/settingsPanel.d.ts +0 -0
  193. /package/dist/{src/extensions → extensions}/Blocks/Items/template.d.ts +0 -0
  194. /package/dist/{src/extensions → extensions}/Blocks/Items/utils/nodeConfigUtils.d.ts +0 -0
  195. /package/dist/{src/extensions → extensions}/Blocks/RadioButton/block.d.ts +0 -0
  196. /package/dist/{src/extensions → extensions}/Blocks/RadioButton/control.d.ts +0 -0
  197. /package/dist/{src/extensions → extensions}/Blocks/RadioButton/extension.d.ts +0 -0
  198. /package/dist/{src/extensions → extensions}/Blocks/RadioButton/iconsRegistry.d.ts +0 -0
  199. /package/dist/{src/extensions → extensions}/Blocks/RadioButton/settingsPanel.d.ts +0 -0
  200. /package/dist/{src/extensions → extensions}/Blocks/RadioButton/template.d.ts +0 -0
  201. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/block.d.ts +0 -0
  202. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/constants/blockIds.d.ts +0 -0
  203. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/constants/controlIds.d.ts +0 -0
  204. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/constants/defaultConfig.d.ts +0 -0
  205. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/constants/layout.d.ts +0 -0
  206. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/blockBackground/index.d.ts +0 -0
  207. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/button/index.d.ts +0 -0
  208. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -0
  209. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/customAttribute/index.d.ts +0 -0
  210. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/customAttribute/textTrim.d.ts +0 -0
  211. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/image/index.d.ts +0 -0
  212. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/index.d.ts +0 -0
  213. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -0
  214. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/currency.d.ts +0 -0
  215. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/filters.d.ts +0 -0
  216. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/index.d.ts +0 -0
  217. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/layoutOrientation.d.ts +0 -0
  218. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/locale.d.ts +0 -0
  219. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/pricePlacement.d.ts +0 -0
  220. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/productCount.d.ts +0 -0
  221. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -0
  222. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -0
  223. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/main/utils.d.ts +0 -0
  224. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +0 -0
  225. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/name/index.d.ts +0 -0
  226. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -0
  227. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -0
  228. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -0
  229. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -0
  230. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -0
  231. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -0
  232. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -0
  233. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -0
  234. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/price/index.d.ts +0 -0
  235. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/shared/textTrimCssRules.d.ts +0 -0
  236. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/spacing/index.d.ts +0 -0
  237. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/controls/syncInfoMessage.d.ts +0 -0
  238. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/extension.d.ts +0 -0
  239. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/iconsRegistry.d.ts +0 -0
  240. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/services/configService.d.ts +0 -0
  241. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/services/index.d.ts +0 -0
  242. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/settingsPanel.d.ts +0 -0
  243. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/store/recommendation.d.ts +0 -0
  244. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +0 -0
  245. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/templates/grid/migration.d.ts +0 -0
  246. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/templates/grid/template.d.ts +0 -0
  247. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/templates/index.d.ts +0 -0
  248. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/templates/list/elementRenderer.d.ts +0 -0
  249. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/templates/list/migration.d.ts +0 -0
  250. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/templates/list/template.d.ts +0 -0
  251. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/types/index.d.ts +0 -0
  252. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/types/nodeConfig.d.ts +0 -0
  253. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/useRecommendationBlockWarning.d.ts +0 -0
  254. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/utils/captureStyleTemplates.d.ts +0 -0
  255. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/utils/filterUtil.d.ts +0 -0
  256. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/utils/legacyStrategyMap.d.ts +0 -0
  257. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/utils/partnerCustomizations.d.ts +0 -0
  258. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/utils/priceFormatter.d.ts +0 -0
  259. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/utils/recommendationBlockCount.d.ts +0 -0
  260. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/utils/tagName.d.ts +0 -0
  261. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/validation/filterSchema.d.ts +0 -0
  262. /package/dist/{src/extensions → extensions}/Blocks/Recommendation/validation/requiredFields.d.ts +0 -0
  263. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/block.d.ts +0 -0
  264. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/control.d.ts +0 -0
  265. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/elements/preview.d.ts +0 -0
  266. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/extension.d.ts +0 -0
  267. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/iconsRegistry.d.ts +0 -0
  268. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/settingsPanel.d.ts +0 -0
  269. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/tagRegistry.d.ts +0 -0
  270. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/template.d.ts +0 -0
  271. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/utils/constants.d.ts +0 -0
  272. /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/utils/utils.d.ts +0 -0
  273. /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/block.d.ts +0 -0
  274. /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/control.d.ts +0 -0
  275. /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/extension.d.ts +0 -0
  276. /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/iconsRegistry.d.ts +0 -0
  277. /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/settingsPanel.d.ts +0 -0
  278. /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/template.d.ts +0 -0
  279. /package/dist/{src/extensions → extensions}/Blocks/controlFactories.d.ts +0 -0
  280. /package/dist/{src/extensions → extensions}/DynamicContent/dynamic-content-modal.d.ts +0 -0
  281. /package/dist/{src/extensions → extensions}/DynamicContent/dynamic-content.d.ts +0 -0
  282. /package/dist/{src/extensions → extensions}/DynamicContent/extension.d.ts +0 -0
  283. /package/dist/{src/extensions → extensions}/ModulesTabIcons/extension.d.ts +0 -0
  284. /package/dist/{src/library.d.ts → library.d.ts} +0 -0
  285. /package/dist/{src/main.d.ts → main.d.ts} +0 -0
  286. /package/dist/{src/mock → mock}/api/auth.d.ts +0 -0
  287. /package/dist/{src/mock → mock}/api/custom-fonts.d.ts +0 -0
  288. /package/dist/{src/mock → mock}/api/default-template.d.ts +0 -0
  289. /package/dist/{src/mock → mock}/api/recommendation.d.ts +0 -0
  290. /package/dist/{src/mock → mock}/api/settings.d.ts +0 -0
  291. /package/dist/{src/mock → mock}/api/template-library.d.ts +0 -0
  292. /package/dist/{src/mock → mock}/api/unsubscribe.d.ts +0 -0
  293. /package/dist/{src/mock → mock}/api/user-modal-state.d.ts +0 -0
  294. /package/dist/{src/mock → mock}/api/validator.d.ts +0 -0
  295. /package/dist/{src/mock → mock}/browser.d.ts +0 -0
  296. /package/dist/{src/mock → mock}/handlers.d.ts +0 -0
  297. /package/dist/{src/services → services}/allowlistApi.d.ts +0 -0
  298. /package/dist/{src/services → services}/blankTemplate.d.ts +0 -0
  299. /package/dist/{src/services → services}/onboardingApi.d.ts +0 -0
  300. /package/dist/{src/services → services}/recommendationApi.d.ts +0 -0
  301. /package/dist/{src/services → services}/stripoApi.d.ts +0 -0
  302. /package/dist/{src/services → services}/templateLibraryApi.d.ts +0 -0
  303. /package/dist/{src/services → services}/unsubscribeApi.d.ts +0 -0
  304. /package/dist/{src/stores → stores}/autosave.d.ts +0 -0
  305. /package/dist/{src/stores → stores}/config.d.ts +0 -0
  306. /package/dist/{src/stores → stores}/dynamic-content.d.ts +0 -0
  307. /package/dist/{src/stores → stores}/editor.d.ts +0 -0
  308. /package/dist/{src/stores → stores}/guido-email-editor.d.ts +0 -0
  309. /package/dist/{src/stores → stores}/onboarding.d.ts +0 -0
  310. /package/dist/{src/stores → stores}/preview.d.ts +0 -0
  311. /package/dist/{src/stores → stores}/recommendation.d.ts +0 -0
  312. /package/dist/{src/stores → stores}/save-as-template.d.ts +0 -0
  313. /package/dist/{src/stores → stores}/template.d.ts +0 -0
  314. /package/dist/{src/stores → stores}/toaster.d.ts +0 -0
  315. /package/dist/{src/stores → stores}/unsubscribe.d.ts +0 -0
  316. /package/dist/{src/stores → stores}/version-history.d.ts +0 -0
  317. /package/dist/{src/utils → utils}/ampErrorFilter.d.ts +0 -0
  318. /package/dist/{src/utils → utils}/arrayUtil.d.ts +0 -0
  319. /package/dist/{src/utils → utils}/base64.d.ts +0 -0
  320. /package/dist/{src/utils → utils}/dateUtil.d.ts +0 -0
  321. /package/dist/{src/utils → utils}/dynamicContentConverter.d.ts +0 -0
  322. /package/dist/{src/utils → utils}/environmentUtil.d.ts +0 -0
  323. /package/dist/{src/utils → utils}/genericUtil.d.ts +0 -0
  324. /package/dist/{src/utils → utils}/htmlCompiler.d.ts +0 -0
  325. /package/dist/{src/utils → utils}/htmlEscape.d.ts +0 -0
  326. /package/dist/{src/utils → utils}/migrationBannerHtml.d.ts +0 -0
  327. /package/dist/{src/utils → utils}/pairProductVariables.d.ts +0 -0
  328. /package/dist/{src/utils → utils}/preserveTextStyles.d.ts +0 -0
  329. /package/dist/{src/utils → utils}/stripFontTags.d.ts +0 -0
  330. /package/dist/{src/utils → utils}/templatePreparation.d.ts +0 -0
  331. /package/dist/{src/utils → utils}/timeUtil.d.ts +0 -0
  332. /package/dist/{src/utils → utils}/tooltipUtils.d.ts +0 -0
  333. /package/dist/{src/utils → utils}/urlSchemes.d.ts +0 -0
@@ -1,104 +1,101 @@
1
- var st = Object.defineProperty;
2
- var nt = (h, p, t) => p in h ? st(h, p, { enumerable: !0, configurable: !0, writable: !0, value: t }) : h[p] = t;
3
- var I = (h, p, t) => nt(h, typeof p != "symbol" ? p + "" : p, t);
4
- import { UIElementType as g, UEAttr as E, ModificationDescription as S } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { CommonControl as lt } from "../../../common-control.js";
6
- import { ATTR_PRODUCT_IMAGE as q, ATTR_PRODUCT_NAME as at, ATTR_PRODUCT_PRICE as y, ATTR_PRODUCT_OLD_PRICE as N, ATTR_PRODUCT_OMNIBUS_PRICE as ct, ATTR_PRODUCT_OMNIBUS_DISCOUNT as dt, ATTR_PRODUCT_BUTTON as B, ATTR_DATA_CUSTOM_ATTRIBUTES as V, ATTR_CUSTOM_PREFIX as A, SELECTOR_ATTRIBUTE_ROW as v, ATTR_DATA_ATTRIBUTE_TYPE as R, BUILT_IN_DEFAULT_ATTRIBUTES as ut } from "../../constants/selectors.js";
7
- import { DEFAULT_COMPOSITION as j, DEFAULT_VISIBILITY as K } from "../../constants/defaultConfig.js";
8
- import { RecommendationConfigService as _ } from "../../services/configService.js";
9
- import { useRecommendationExtensionStore as mt } from "../../store/recommendation.js";
10
- import { ATTRIBUTE_CELL_CLASS as ht, gridElementRenderer as pt, DEFAULT_CELL_PADDING as gt, buildFillerCell as bt } from "../../templates/grid/elementRenderer.js";
11
- import { listElementRenderer as ft } from "../../templates/list/elementRenderer.js";
12
- import { resolveInlinePriceOrder as _t, toDisplayName as yt, toDisplayableAttributeValue as Ct, buildElementRenderer as W } from "../../templates/utils.js";
13
- import { normalizeCompositionKeys as St, normalizeCustomAttrValues as At, compositionKeyToProductAttr as w, resolveRowCompositionKey as z, filterToProductAttrValue as T, findAttributeRow as Tt, rewriteLegacyRowKeyHtml as G, bareAttributeName as D, isDefaultProductAttr as $t, productAttrToCompositionKey as U } from "../../utils/compositionKeys.js";
14
- import { getTableDisplayValue as It } from "../../utils/tagName.js";
15
- import { isPartnerManagedBlock as vt, regenerateProductRowsWithStyles as Nt, getCurrentLayout as Et } from "../main/utils.js";
16
- const Rt = "ui-elements-recommendation-card-composition", k = ".product-card-wrapper > tbody", Y = ".product-info-cell > table > tbody", X = "data-card-composition", O = "data-visibility", J = {
1
+ var tt = Object.defineProperty;
2
+ var et = (g, b, t) => b in g ? tt(g, b, { enumerable: !0, configurable: !0, writable: !0, value: t }) : g[b] = t;
3
+ var v = (g, b, t) => et(g, typeof b != "symbol" ? b + "" : b, t);
4
+ import { UIElementType as f, UEAttr as D, ModificationDescription as T } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ import { CommonControl as rt } from "../../../common-control.js";
6
+ import { ATTR_PRODUCT_IMAGE as k, ATTR_PRODUCT_NAME as it, ATTR_PRODUCT_PRICE as S, ATTR_PRODUCT_OLD_PRICE as N, ATTR_PRODUCT_OMNIBUS_PRICE as ot, ATTR_PRODUCT_OMNIBUS_DISCOUNT as st, ATTR_PRODUCT_BUTTON as U, ATTR_DATA_CUSTOM_ATTRIBUTES as F, ATTR_CUSTOM_PREFIX as m, BUILT_IN_DEFAULT_ATTRIBUTES as nt } from "../../constants/selectors.js";
7
+ import { DEFAULT_COMPOSITION as x, DEFAULT_VISIBILITY as M } from "../../constants/defaultConfig.js";
8
+ import { RecommendationConfigService as y } from "../../services/configService.js";
9
+ import { useRecommendationExtensionStore as lt } from "../../store/recommendation.js";
10
+ import { ATTRIBUTE_CELL_CLASS as at, gridElementRenderer as ct, DEFAULT_CELL_PADDING as dt, buildFillerCell as ut } from "../../templates/grid/elementRenderer.js";
11
+ import { listElementRenderer as mt } from "../../templates/list/elementRenderer.js";
12
+ import { resolveInlinePriceOrder as ht, toDisplayName as pt, isDefaultAttribute as gt, toDisplayableAttributeValue as bt, buildElementRenderer as V } from "../../templates/utils.js";
13
+ import { getTableDisplayValue as ft } from "../../utils/tagName.js";
14
+ import { isPartnerManagedBlock as _t, regenerateProductRowsWithStyles as yt, getCurrentLayout as Ct } from "../main/utils.js";
15
+ const St = "ui-elements-recommendation-card-composition", $ = ".recommendation-attribute-row", H = ".product-card-wrapper > tbody", j = ".product-info-cell > table > tbody", W = "data-card-composition", C = "data-attribute-type", E = "data-visibility", K = {
17
16
  ADD_ATTRIBUTE: "addAttribute"
18
- }, b = 5, L = "reorderIcon_", Dt = '<svg width="14" height="10" viewBox="0 0 14 10" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><circle cx="2" cy="2.5" r="1.2"/><circle cx="7" cy="2.5" r="1.2"/><circle cx="12" cy="2.5" r="1.2"/><circle cx="2" cy="7.5" r="1.2"/><circle cx="7" cy="7.5" r="1.2"/><circle cx="12" cy="7.5" r="1.2"/></svg>', m = [
19
- { key: q, label: "Product Image" },
20
- { key: at, label: "Product Name" },
21
- { key: y, label: "Product Price" },
17
+ }, _ = 5, O = "reorderIcon_", At = '<svg width="14" height="10" viewBox="0 0 14 10" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><circle cx="2" cy="2.5" r="1.2"/><circle cx="7" cy="2.5" r="1.2"/><circle cx="12" cy="2.5" r="1.2"/><circle cx="2" cy="7.5" r="1.2"/><circle cx="7" cy="7.5" r="1.2"/><circle cx="12" cy="7.5" r="1.2"/></svg>', h = [
18
+ { key: k, label: "Product Image" },
19
+ { key: it, label: "Product Name" },
20
+ { key: S, label: "Product Price" },
22
21
  { key: N, label: "Product Original Price" },
23
- { key: ct, label: "Omnibus Price" },
24
- { key: dt, label: "Omnibus Discount" },
25
- { key: B, label: "Product Button" }
26
- ], Ot = new Set(m.map((h) => h.key)), $ = "customAttr_", P = "deleteAttr_";
27
- class Wt extends lt {
22
+ { key: ot, label: "Omnibus Price" },
23
+ { key: st, label: "Omnibus Discount" },
24
+ { key: U, label: "Product Button" }
25
+ ], Tt = new Set(h.map((g) => g.key)), I = "customAttr_", R = "deleteAttr_";
26
+ class qt extends rt {
28
27
  constructor() {
29
28
  super(...arguments);
30
- I(this, "store", mt());
31
- I(this, "unsubscribeStore", null);
32
- I(this, "eventController", null);
29
+ v(this, "store", lt());
30
+ v(this, "unsubscribeStore", null);
31
+ v(this, "eventController", null);
33
32
  /**
34
33
  * Guard flag: when true, onTemplateNodeUpdated skips _initializeComposition.
35
34
  * Used during _onReorder to prevent multiple intermediate rebuilds.
36
35
  */
37
- I(this, "reorderInProgress", !1);
36
+ v(this, "reorderInProgress", !1);
38
37
  }
39
38
  getId() {
40
- return Rt;
39
+ return St;
41
40
  }
42
41
  // ========================================================================
43
42
  // Lifecycle
44
43
  // ========================================================================
45
44
  getTemplate() {
46
- const t = m.map((d) => `
47
- <div data-toggle-key="${d.key}" style="display: none;">
48
- ${this._GuToggle(`visibility_${d.key}`)}
45
+ const t = h.map((a) => `
46
+ <div data-toggle-key="${a.key}" style="display: none;">
47
+ ${this._GuToggle(`visibility_${a.key}`)}
49
48
  </div>
50
49
  `).join(""), e = Array.from(
51
- { length: b },
52
- (d, c) => `
53
- <div data-custom-select-key="${$}${c}" style="display: none;">
50
+ { length: _ },
51
+ (a, d) => `
52
+ <div data-custom-select-key="${I}${d}" style="display: none;">
54
53
  ${this._GuSelect({
55
- name: `${$}${c}`,
54
+ name: `${I}${d}`,
56
55
  placeholder: this.api.translate("Select Attribute"),
57
- options: [],
58
- // A partner's attribute list runs long; search beats scrolling.
59
- searchable: !0
56
+ options: []
60
57
  })}
61
58
  </div>
62
59
  `
63
- ).join(""), r = m.length + b, i = Array.from(
60
+ ).join(""), r = h.length + _, o = Array.from(
64
61
  { length: r },
65
- (d, c) => `
66
- <div data-reorder-icon-key="${L}${c}" style="display: none;">
67
- <${g.BUTTON}
62
+ (a, d) => `
63
+ <div data-reorder-icon-key="${O}${d}" style="display: none;">
64
+ <${f.BUTTON}
68
65
  class="drag-handle-btn flat-inline flat-white"
69
- ${E.BUTTON.name}="${L}${c}"
66
+ ${D.BUTTON.name}="${O}${d}"
70
67
  >
71
- <${g.ICON}
68
+ <${f.ICON}
72
69
  src="reorder"
73
70
  class="icon-button"
74
- ></${g.ICON}>
75
- </${g.BUTTON}>
71
+ ></${f.ICON}>
72
+ </${f.BUTTON}>
76
73
  </div>
77
74
  `
78
- ).join(""), o = Array.from(
79
- { length: b },
80
- (d, c) => `
81
- <div data-custom-delete-key="${P}${c}" style="display: none;">
82
- <${g.BUTTON}
75
+ ).join(""), i = Array.from(
76
+ { length: _ },
77
+ (a, d) => `
78
+ <div data-custom-delete-key="${R}${d}" style="display: none;">
79
+ <${f.BUTTON}
83
80
  class="custom-attr-delete flat-inline flat-white"
84
- ${E.BUTTON.name}="${P}${c}"
81
+ ${D.BUTTON.name}="${R}${d}"
85
82
  >
86
- <${g.ICON}
83
+ <${f.ICON}
87
84
  src="delete"
88
85
  class="icon-button"
89
- ></${g.ICON}>
90
- </${g.BUTTON}>
86
+ ></${f.ICON}>
87
+ </${f.BUTTON}>
91
88
  </div>
92
89
  `
93
90
  ).join(""), s = "https://academy.insiderone.com/docs/new-editor-email-recommendation-block", n = this.api.translate(
94
91
  "Drag and drop the card elements to reorder them, adjust their visibility or add new attributes up to 5."
95
- ), a = this.api.translate("For more information, you can"), l = this.api.translate("visit Academy");
92
+ ), c = this.api.translate("For more information, you can"), l = this.api.translate("visit Academy");
96
93
  return `
97
94
  <div class="recommendation-controls-container" data-card-composition-control>
98
95
  <div class="container">
99
96
  <p class="card-composition-description">
100
97
  ${n}
101
- ${a}
98
+ ${c}
102
99
  <!-- cspell:disable-next-line -->
103
100
  <a href="${s}" target="_blank" rel="noopener noreferrer">${l}</a>.
104
101
  </p>
@@ -113,17 +110,17 @@ class Wt extends lt {
113
110
  </div>
114
111
 
115
112
  <div class="custom-delete-store" style="display: none;">
116
- ${o}
113
+ ${i}
117
114
  </div>
118
115
 
119
116
  <div class="reorder-icon-store" style="display: none;">
120
- ${i}
117
+ ${o}
121
118
  </div>
122
119
 
123
120
  <div class="orderable-list" data-composition-list></div>
124
121
 
125
122
  ${this._GuButton({
126
- name: J.ADD_ATTRIBUTE,
123
+ name: K.ADD_ATTRIBUTE,
127
124
  label: this.api.translate("Add Attribute"),
128
125
  id: "guido__btn-add-attribute"
129
126
  })}
@@ -144,7 +141,7 @@ class Wt extends lt {
144
141
  const t = (r = this.getContainer()) == null ? void 0 : r.querySelector("[data-card-composition-control]");
145
142
  if (!t)
146
143
  return;
147
- const e = vt(this.currentNode);
144
+ const e = _t(this.currentNode);
148
145
  t.style.pointerEvents = e ? "none" : "", t.style.opacity = e ? "0.5" : "";
149
146
  }
150
147
  onTemplateNodeUpdated(t) {
@@ -157,19 +154,19 @@ class Wt extends lt {
157
154
  // Initialization
158
155
  // ========================================================================
159
156
  _initializeComposition() {
160
- const t = this._readCompositionFromNode(), e = this._readCustomAttributesFromNode(), r = this._readVisibilityFromRows(), i = this._renderOrderableItems(t, e), o = this._buildVisibilityValues(r);
161
- this.api.updateValues(o), i && this._initializeCustomSelects(e), this._updateAddButtonState();
157
+ const t = this._readCompositionFromNode(), e = this._readCustomAttributesFromNode(), r = this._readVisibilityFromRows(), o = this._renderOrderableItems(t, e), i = this._buildVisibilityValues(r);
158
+ this.api.updateValues(i), o && this._initializeCustomSelects(e), this._updateAddButtonState();
162
159
  }
163
160
  _registerValueChangeListeners() {
164
- m.forEach((t) => {
161
+ h.forEach((t) => {
165
162
  this.api.onValueChanged(`visibility_${t.key}`, (e) => {
166
163
  this._applyVisibilityToBlock(t.key, e);
167
164
  });
168
165
  });
169
- for (let t = 0; t < b; t++) {
170
- const e = `${$}${t}`, r = t;
171
- this.api.onValueChanged(e, (i) => {
172
- this._onCustomAttributeChanged(r, i);
166
+ for (let t = 0; t < _; t++) {
167
+ const e = `${I}${t}`, r = t;
168
+ this.api.onValueChanged(e, (o) => {
169
+ this._onCustomAttributeChanged(r, o);
173
170
  });
174
171
  }
175
172
  }
@@ -178,64 +175,56 @@ class Wt extends lt {
178
175
  // ========================================================================
179
176
  _readCompositionFromNode() {
180
177
  if (!this.currentNode || !("getAttribute" in this.currentNode))
181
- return [...j];
182
- const t = this.currentNode.getAttribute(X);
178
+ return [...x];
179
+ const t = this.currentNode.getAttribute(W);
183
180
  if (t)
184
- return this._normalizeComposition(t.split(",").filter(Boolean));
185
- const { composition: e } = _.getConfig(this.currentNode);
186
- return e != null && e.length ? this._normalizeComposition([...e]) : [...j];
187
- }
188
- /** Upgrades legacy bare-name custom keys to the canonical form. (SD-147101) */
189
- _normalizeComposition(t) {
190
- return St(t, this.currentNode, this.store.filterList);
181
+ return t.split(",").filter(Boolean);
182
+ const { composition: e } = y.getConfig(this.currentNode);
183
+ return e != null && e.length ? [...e] : [...x];
191
184
  }
192
185
  _readCustomAttributesFromNode() {
193
186
  if (!this.currentNode || !("getAttribute" in this.currentNode))
194
187
  return [];
195
- const t = this.currentNode.getAttribute(V);
188
+ const t = this.currentNode.getAttribute(F);
196
189
  if (t)
197
190
  try {
198
- return At(
199
- JSON.parse(t),
200
- this.currentNode,
201
- this.store.filterList
202
- );
191
+ return JSON.parse(t);
203
192
  } catch {
204
193
  return [];
205
194
  }
206
- return this._readCompositionFromNode().filter((e) => e.startsWith(A)).map(w);
195
+ return this._readCompositionFromNode().filter((e) => e.startsWith(m)).map((e) => e.substring(m.length));
207
196
  }
208
197
  _readVisibilityFromRows() {
209
198
  if (!this.currentNode)
210
199
  return this._getDefaultVisibilities();
211
- const t = Array.from(this.currentNode.querySelectorAll(v)), e = this._extractVisibilityFromRows(t);
200
+ const t = Array.from(this.currentNode.querySelectorAll($)), e = this._extractVisibilityFromRows(t);
212
201
  if (Object.keys(e).length > 0)
213
202
  return this._mergeWithDefaults(e);
214
- const r = _.getConfig(this.currentNode).visibility;
203
+ const r = y.getConfig(this.currentNode).visibility;
215
204
  return this._mergeWithDefaults({ ...r });
216
205
  }
217
206
  _getDefaultVisibilities() {
218
- return { ...K };
207
+ return { ...M };
219
208
  }
220
209
  _extractVisibilityFromRows(t) {
221
210
  const e = {};
222
211
  return t.forEach((r) => {
223
212
  if (!("getAttribute" in r))
224
213
  return;
225
- const i = z(r), o = r.getAttribute(O);
226
- i && o !== null && (e[i] = this._parseVisibilityValue(o));
214
+ const o = r.getAttribute(C), i = r.getAttribute(E);
215
+ o && i !== null && (e[o] = this._parseVisibilityValue(i));
227
216
  }), e;
228
217
  }
229
218
  _parseVisibilityValue(t) {
230
219
  return t === "1" || t === "true";
231
220
  }
232
221
  _mergeWithDefaults(t) {
233
- return Object.entries(K).forEach(([e, r]) => {
222
+ return Object.entries(M).forEach(([e, r]) => {
234
223
  e in t || (t[e] = r);
235
224
  }), t;
236
225
  }
237
226
  _buildVisibilityValues(t) {
238
- return m.reduce((e, r) => (e[`visibility_${r.key}`] = t[r.key] ?? !0, e), {});
227
+ return h.reduce((e, r) => (e[`visibility_${r.key}`] = t[r.key] ?? !0, e), {});
239
228
  }
240
229
  // ========================================================================
241
230
  // UI Rendering (Orderable List)
@@ -249,30 +238,30 @@ class Wt extends lt {
249
238
  const r = this._getControlContainer();
250
239
  if (!r)
251
240
  return !1;
252
- const i = r.querySelector("[data-composition-list]");
253
- if (!i)
241
+ const o = r.querySelector("[data-composition-list]");
242
+ if (!o)
254
243
  return !1;
255
- const o = !_.getConfig(this.currentNode).priceMovedToNextLine;
256
- if (!(i.dataset.inlinePrices !== String(o)) && this._tryReorderInPlace(i, t))
244
+ const i = !y.getConfig(this.currentNode).priceMovedToNextLine;
245
+ if (!(o.dataset.inlinePrices !== String(i)) && this._tryReorderInPlace(o, t))
257
246
  return !1;
258
- i.dataset.inlinePrices = String(o);
259
- const n = new Set(e), a = _t(t);
260
- let l = 0, d = 0;
261
- const c = t.map((u) => {
262
- if (o && (u === y || u === N))
263
- return u === a.anchor ? this._createPriceGroupItemHtml(d++, a.originalFirst) : "";
264
- if (Ot.has(u)) {
265
- const f = m.find((C) => C.key === u);
266
- return this._createBuiltInItemHtml(f, d++);
247
+ o.dataset.inlinePrices = String(i);
248
+ const n = new Set(e), c = ht(t);
249
+ let l = 0, a = 0;
250
+ const d = t.map((u) => {
251
+ if (i && (u === S || u === N))
252
+ return u === c.anchor ? this._createPriceGroupItemHtml(a++, c.originalFirst) : "";
253
+ if (Tt.has(u)) {
254
+ const p = h.find((A) => A.key === u);
255
+ return this._createBuiltInItemHtml(p, a++);
267
256
  }
268
- if (u.startsWith(A)) {
269
- const f = w(u);
270
- if (n.has(f))
271
- return this._createCustomItemHtml(u, l++, d++);
257
+ if (u.startsWith(m)) {
258
+ const p = u.substring(m.length);
259
+ if (n.has(p))
260
+ return this._createCustomItemHtml(u, l++, a++);
272
261
  }
273
262
  return "";
274
263
  }).join("");
275
- return this._rescueTogglesToStore(r), this._rescueSelectsToStore(r), this._rescueDeleteButtonsToStore(r), this._rescueReorderIconsToStore(r), i.innerHTML = c, this._moveTogglesIntoItems(r), this._moveSelectsIntoItems(r, e.length), this._moveDeleteButtonsIntoItems(r, e.length), this._moveReorderIconsIntoItems(r, d), !0;
264
+ return this._rescueTogglesToStore(r), this._rescueSelectsToStore(r), this._rescueDeleteButtonsToStore(r), this._rescueReorderIconsToStore(r), o.innerHTML = d, this._moveTogglesIntoItems(r), this._moveSelectsIntoItems(r, e.length), this._moveDeleteButtonsIntoItems(r, e.length), this._moveReorderIconsIntoItems(r, a), !0;
276
265
  }
277
266
  /**
278
267
  * Attempts to reorder existing orderable-item elements to match the composition order.
@@ -284,27 +273,27 @@ class Wt extends lt {
284
273
  const r = Array.from(t.querySelectorAll(".orderable-item"));
285
274
  if (r.length !== e.length)
286
275
  return !1;
287
- const i = r.map((l) => l.dataset.key).filter(Boolean);
288
- if (i.length !== e.length)
276
+ const o = r.map((l) => l.dataset.key).filter(Boolean);
277
+ if (o.length !== e.length)
289
278
  return !1;
290
- const o = [...i].sort().join(","), s = [...e].sort().join(",");
291
- if (o !== s || e.some((l) => l.startsWith(A)))
279
+ const i = [...o].sort().join(","), s = [...e].sort().join(",");
280
+ if (i !== s || e.some((l) => l.startsWith(m)))
292
281
  return !1;
293
282
  const n = /* @__PURE__ */ new Map();
294
283
  r.forEach((l) => {
295
- const { key: d } = l.dataset;
296
- if (d) {
297
- const c = n.get(d) || [];
298
- c.push(l), n.set(d, c);
284
+ const { key: a } = l.dataset;
285
+ if (a) {
286
+ const d = n.get(a) || [];
287
+ d.push(l), n.set(a, d);
299
288
  }
300
289
  });
301
- const a = /* @__PURE__ */ new Map();
290
+ const c = /* @__PURE__ */ new Map();
302
291
  return e.forEach((l) => {
303
- const d = n.get(l);
304
- if (!d)
292
+ const a = n.get(l);
293
+ if (!a)
305
294
  return;
306
- const c = a.get(l) || 0;
307
- a.set(l, c + 1), d[c] && t.appendChild(d[c]);
295
+ const d = c.get(l) || 0;
296
+ c.set(l, d + 1), a[d] && t.appendChild(a[d]);
308
297
  }), !0;
309
298
  }
310
299
  _createBuiltInItemHtml(t, e) {
@@ -325,19 +314,19 @@ class Wt extends lt {
325
314
  * plain drag handle (no UE button → untouched by the reorder-icon rescue).
326
315
  */
327
316
  _createPriceGroupItemHtml(t, e) {
328
- var n, a;
329
- const r = ((n = m.find((l) => l.key === y)) == null ? void 0 : n.label) ?? "Product Price", i = ((a = m.find((l) => l.key === N)) == null ? void 0 : a.label) ?? "Product Original Price", o = (l, d) => `
317
+ var n, c;
318
+ const r = ((n = h.find((l) => l.key === S)) == null ? void 0 : n.label) ?? "Product Price", o = ((c = h.find((l) => l.key === N)) == null ? void 0 : c.label) ?? "Product Original Price", i = (l, a) => `
330
319
  <div class="price-suborderable-item" draggable="true" data-subkey="${l}">
331
- <span class="sub-drag-handle">${Dt}</span>
332
- <span class="item-label">${this.api.translate(d)}</span>
333
- </div>`, s = e ? o(N, i) + o(y, r) : o(y, r) + o(N, i);
320
+ <span class="sub-drag-handle">${At}</span>
321
+ <span class="item-label">${this.api.translate(a)}</span>
322
+ </div>`, s = e ? i(N, o) + i(S, r) : i(S, r) + i(N, o);
334
323
  return `
335
324
  <div class="orderable-item price-group-item" draggable="true"
336
- data-key="${y}" data-group="prices">
325
+ data-key="${S}" data-group="prices">
337
326
  <div class="price-group-header">
338
327
  <span class="drag-handle" data-reorder-icon-slot="${t}"></span>
339
328
  <span class="item-label">${this.api.translate("Product Prices")}</span>
340
- <div class="item-action" data-action-for="${y}"></div>
329
+ <div class="item-action" data-action-for="${S}"></div>
341
330
  </div>
342
331
  <div class="price-suborderable-list">${s}</div>
343
332
  </div>
@@ -357,34 +346,19 @@ class Wt extends lt {
357
346
  `;
358
347
  }
359
348
  /**
360
- * Dropdown label of an attribute. A partner can own a default and a custom
361
- * attribute under the same name; the type is spelled out only then, so partners
362
- * without a collision keep clean labels. (SD-147101)
363
- */
364
- _toOptionLabel(t, e, r) {
365
- return r ? `${t} (${this.api.translate(e ? "Default" : "Custom")})` : t;
366
- }
367
- /**
368
- * Builds select options from the store's filterList. Option values are
369
- * `product-attr` values, so a default attribute and a same-named custom one
370
- * never collapse onto a single option. (SD-147101)
349
+ * Builds select options from the store's filterList.
371
350
  * Falls back to a single option for the currently selected attribute.
372
351
  */
373
352
  _getSelectOptions(t, e = []) {
374
353
  const r = this._getAddableFilters();
375
- if (r.length === 0)
376
- return [{ text: this._getDisplayNameForAttribute(t), value: t }];
377
- const i = /* @__PURE__ */ new Map();
378
- r.forEach((s) => i.set(s.attributeName, (i.get(s.attributeName) ?? 0) + 1));
379
- const o = new Set(e);
380
- return o.delete(t), r.filter((s) => !o.has(T(s))).map((s) => ({
381
- text: this._toOptionLabel(
382
- s.displayName,
383
- s.type === "defaultAttribute",
384
- (i.get(s.attributeName) ?? 0) > 1
385
- ),
386
- value: T(s)
387
- }));
354
+ if (r.length > 0) {
355
+ const i = new Set(e);
356
+ return i.delete(t), r.filter((s) => !i.has(s.attributeName)).map((s) => ({
357
+ text: s.displayName,
358
+ value: s.attributeName
359
+ }));
360
+ }
361
+ return [{ text: this._getDisplayNameForAttribute(t), value: t }];
388
362
  }
389
363
  /**
390
364
  * Initializes custom attribute selects: sets their options and current value.
@@ -394,8 +368,8 @@ class Wt extends lt {
394
368
  _initializeCustomSelects(t) {
395
369
  t.length !== 0 && setTimeout(() => {
396
370
  t.forEach((e, r) => {
397
- const i = `${$}${r}`, o = this._getSelectOptions(e, t);
398
- this.api.setUIEAttribute(i, E.SELECTPICKER.items, o), this.api.updateValues({ [i]: e });
371
+ const o = `${I}${r}`, i = this._getSelectOptions(e, t);
372
+ this.api.setUIEAttribute(o, D.SELECTPICKER.items, i), this.api.updateValues({ [o]: e });
399
373
  });
400
374
  }, 0);
401
375
  }
@@ -404,11 +378,11 @@ class Wt extends lt {
404
378
  * Stripo initializes toggles at template parse time; moving the DOM node preserves bindings.
405
379
  */
406
380
  _moveTogglesIntoItems(t) {
407
- m.forEach((e) => {
408
- const r = t.querySelector(`[data-toggle-key="${e.key}"]`), i = t.querySelector(`[data-action-for="${e.key}"]`);
409
- if (r && i) {
410
- const o = r.querySelector("ue-switcher");
411
- o && i.appendChild(o);
381
+ h.forEach((e) => {
382
+ const r = t.querySelector(`[data-toggle-key="${e.key}"]`), o = t.querySelector(`[data-action-for="${e.key}"]`);
383
+ if (r && o) {
384
+ const i = r.querySelector("ue-switcher");
385
+ i && o.appendChild(i);
412
386
  }
413
387
  });
414
388
  }
@@ -418,9 +392,9 @@ class Wt extends lt {
418
392
  */
419
393
  _moveSelectsIntoItems(t, e) {
420
394
  for (let r = 0; r < e; r++) {
421
- const i = `${$}${r}`, o = t.querySelector(`[data-custom-select-key="${i}"]`), s = t.querySelector(`[data-custom-select-slot="${r}"]`);
422
- if (o && s) {
423
- const n = o.querySelector("ue-select");
395
+ const o = `${I}${r}`, i = t.querySelector(`[data-custom-select-key="${o}"]`), s = t.querySelector(`[data-custom-select-slot="${r}"]`);
396
+ if (i && s) {
397
+ const n = i.querySelector("ue-select");
424
398
  n && s.appendChild(n);
425
399
  }
426
400
  }
@@ -432,11 +406,11 @@ class Wt extends lt {
432
406
  * previously-moved toggles, making them permanently lost.
433
407
  */
434
408
  _rescueTogglesToStore(t) {
435
- m.forEach((e) => {
436
- const r = t.querySelector(`[data-toggle-key="${e.key}"]`), i = t.querySelector(`[data-action-for="${e.key}"]`);
437
- if (i) {
438
- const o = i.querySelector("ue-switcher");
439
- o && r && r.appendChild(o);
409
+ h.forEach((e) => {
410
+ const r = t.querySelector(`[data-toggle-key="${e.key}"]`), o = t.querySelector(`[data-action-for="${e.key}"]`);
411
+ if (o) {
412
+ const i = o.querySelector("ue-switcher");
413
+ i && r && r.appendChild(i);
440
414
  }
441
415
  });
442
416
  }
@@ -445,11 +419,11 @@ class Wt extends lt {
445
419
  * Same rescue pattern as _rescueTogglesToStore — prevents innerHTML from destroying them.
446
420
  */
447
421
  _rescueSelectsToStore(t) {
448
- for (let e = 0; e < b; e++) {
449
- const r = `${$}${e}`, i = t.querySelector(`[data-custom-select-key="${r}"]`), o = t.querySelector(`[data-custom-select-slot="${e}"]`);
450
- if (o) {
451
- const s = o.querySelector("ue-select");
452
- s && i && i.appendChild(s);
422
+ for (let e = 0; e < _; e++) {
423
+ const r = `${I}${e}`, o = t.querySelector(`[data-custom-select-key="${r}"]`), i = t.querySelector(`[data-custom-select-slot="${e}"]`);
424
+ if (i) {
425
+ const s = i.querySelector("ue-select");
426
+ s && o && o.appendChild(s);
453
427
  }
454
428
  }
455
429
  }
@@ -459,9 +433,9 @@ class Wt extends lt {
459
433
  */
460
434
  _moveDeleteButtonsIntoItems(t, e) {
461
435
  for (let r = 0; r < e; r++) {
462
- const i = `${P}${r}`, o = t.querySelector(`[data-custom-delete-key="${i}"]`), s = t.querySelector(`[data-custom-delete-slot="${r}"]`);
463
- if (o && s) {
464
- const n = o.querySelector("ue-button");
436
+ const o = `${R}${r}`, i = t.querySelector(`[data-custom-delete-key="${o}"]`), s = t.querySelector(`[data-custom-delete-slot="${r}"]`);
437
+ if (i && s) {
438
+ const n = i.querySelector("ue-button");
465
439
  n && s.appendChild(n);
466
440
  }
467
441
  }
@@ -471,11 +445,11 @@ class Wt extends lt {
471
445
  * Same rescue pattern as _rescueSelectsToStore — prevents innerHTML from destroying them.
472
446
  */
473
447
  _rescueDeleteButtonsToStore(t) {
474
- for (let e = 0; e < b; e++) {
475
- const r = `${P}${e}`, i = t.querySelector(`[data-custom-delete-key="${r}"]`), o = t.querySelector(`[data-custom-delete-slot="${e}"]`);
476
- if (o) {
477
- const s = o.querySelector("ue-button");
478
- s && i && i.appendChild(s);
448
+ for (let e = 0; e < _; e++) {
449
+ const r = `${R}${e}`, o = t.querySelector(`[data-custom-delete-key="${r}"]`), i = t.querySelector(`[data-custom-delete-slot="${e}"]`);
450
+ if (i) {
451
+ const s = i.querySelector("ue-button");
452
+ s && o && o.appendChild(s);
479
453
  }
480
454
  }
481
455
  }
@@ -485,9 +459,9 @@ class Wt extends lt {
485
459
  */
486
460
  _moveReorderIconsIntoItems(t, e) {
487
461
  for (let r = 0; r < e; r++) {
488
- const i = `${L}${r}`, o = t.querySelector(`[data-reorder-icon-key="${i}"]`), s = t.querySelector(`[data-reorder-icon-slot="${r}"]`);
489
- if (o && s) {
490
- const n = o.querySelector("ue-button");
462
+ const o = `${O}${r}`, i = t.querySelector(`[data-reorder-icon-key="${o}"]`), s = t.querySelector(`[data-reorder-icon-slot="${r}"]`);
463
+ if (i && s) {
464
+ const n = i.querySelector("ue-button");
491
465
  n && s.appendChild(n);
492
466
  }
493
467
  }
@@ -497,12 +471,12 @@ class Wt extends lt {
497
471
  * Same rescue pattern as _rescueDeleteButtonsToStore — prevents innerHTML from destroying them.
498
472
  */
499
473
  _rescueReorderIconsToStore(t) {
500
- const e = m.length + b;
474
+ const e = h.length + _;
501
475
  for (let r = 0; r < e; r++) {
502
- const i = `${L}${r}`, o = t.querySelector(`[data-reorder-icon-key="${i}"]`), s = t.querySelector(`[data-reorder-icon-slot="${r}"]`);
476
+ const o = `${O}${r}`, i = t.querySelector(`[data-reorder-icon-key="${o}"]`), s = t.querySelector(`[data-reorder-icon-slot="${r}"]`);
503
477
  if (s) {
504
478
  const n = s.querySelector("ue-button");
505
- n && o && o.appendChild(n);
479
+ n && i && i.appendChild(n);
506
480
  }
507
481
  }
508
482
  }
@@ -514,10 +488,10 @@ class Wt extends lt {
514
488
  const { signal: t } = this.eventController, e = this._getControlContainer();
515
489
  if (!e)
516
490
  return;
517
- const r = e.querySelector("[data-composition-list]"), i = e.querySelector("#guido__btn-add-attribute");
518
- r && (this._setupDragAndDrop(r, t), this._setupDeleteHandler(r, t)), i && i.addEventListener("click", () => {
519
- const o = new Set(this._readCustomAttributesFromNode()), s = this._getAddableFilters().find((n) => !o.has(T(n)));
520
- s && this._onAddAttribute(T(s), s.displayName);
491
+ const r = e.querySelector("[data-composition-list]"), o = e.querySelector("#guido__btn-add-attribute");
492
+ r && (this._setupDragAndDrop(r, t), this._setupDeleteHandler(r, t)), o && o.addEventListener("click", () => {
493
+ const i = new Set(this._readCustomAttributesFromNode()), s = this._getAddableFilters().find((n) => !i.has(n.attributeName));
494
+ s && this._onAddAttribute(s.attributeName, s.displayName);
521
495
  }, { signal: t });
522
496
  }
523
497
  /**
@@ -528,11 +502,11 @@ class Wt extends lt {
528
502
  _extractCompositionOrder(t) {
529
503
  const e = [];
530
504
  return t.querySelectorAll(".orderable-item").forEach((r) => {
531
- const i = r;
532
- i.dataset.group === "prices" ? i.querySelectorAll(".price-suborderable-item").forEach((o) => {
533
- const s = o.dataset.subkey;
505
+ const o = r;
506
+ o.dataset.group === "prices" ? o.querySelectorAll(".price-suborderable-item").forEach((i) => {
507
+ const s = i.dataset.subkey;
534
508
  s && e.push(s);
535
- }) : i.dataset.key && e.push(i.dataset.key);
509
+ }) : o.dataset.key && e.push(o.dataset.key);
536
510
  }), e;
537
511
  }
538
512
  _setupDragAndDrop(t, e) {
@@ -555,42 +529,42 @@ class Wt extends lt {
555
529
  * identically.
556
530
  */
557
531
  _registerDragHandlers(t, e, r) {
558
- let i = null, o = null;
532
+ let o = null, i = null;
559
533
  const s = (n) => n.target.closest(r.itemSelector);
560
534
  t.addEventListener("dragstart", (n) => {
561
- var d;
562
- const a = n.target;
563
- if (r.ignoreSelector && a.closest(r.ignoreSelector))
535
+ var a;
536
+ const c = n.target;
537
+ if (r.ignoreSelector && c.closest(r.ignoreSelector))
564
538
  return;
565
539
  const l = s(n);
566
- l && (i = l, l.classList.add("dragging"), (d = n.dataTransfer) == null || d.setData("text/plain", l.dataset.key ?? l.dataset.subkey ?? ""));
540
+ l && (o = l, l.classList.add("dragging"), (a = n.dataTransfer) == null || a.setData("text/plain", l.dataset.key ?? l.dataset.subkey ?? ""));
567
541
  }, { signal: e }), t.addEventListener("dragend", () => {
568
- i == null || i.classList.remove("dragging"), o == null || o.classList.remove("drag-over"), i = null, o = null;
542
+ o == null || o.classList.remove("dragging"), i == null || i.classList.remove("drag-over"), o = null, i = null;
569
543
  }, { signal: e }), t.addEventListener("dragover", (n) => {
570
- if (!i)
544
+ if (!o)
571
545
  return;
572
- const a = s(n);
573
- if (!a)
546
+ const c = s(n);
547
+ if (!c)
574
548
  return;
575
549
  n.preventDefault();
576
- const l = a !== i ? a : null;
577
- l !== o && (o == null || o.classList.remove("drag-over"), o = l, o == null || o.classList.add("drag-over"));
550
+ const l = c !== o ? c : null;
551
+ l !== i && (i == null || i.classList.remove("drag-over"), i = l, i == null || i.classList.add("drag-over"));
578
552
  }, { signal: e }), t.addEventListener("drop", (n) => {
579
- var c;
580
- const a = i && s(n);
581
- if (!i || !a || a === i)
553
+ var d;
554
+ const c = o && s(n);
555
+ if (!o || !c || c === o)
582
556
  return;
583
557
  n.preventDefault();
584
- const l = a.getBoundingClientRect(), d = n.clientY < l.top + l.height / 2;
585
- (c = r.getDropParent(a)) == null || c.insertBefore(i, d ? a : a.nextSibling), o == null || o.classList.remove("drag-over"), i.classList.remove("dragging"), i = null, o = null, this._onReorder(this._extractCompositionOrder(t));
558
+ const l = c.getBoundingClientRect(), a = n.clientY < l.top + l.height / 2;
559
+ (d = r.getDropParent(c)) == null || d.insertBefore(o, a ? c : c.nextSibling), i == null || i.classList.remove("drag-over"), o.classList.remove("dragging"), o = null, i = null, this._onReorder(this._extractCompositionOrder(t));
586
560
  }, { signal: e });
587
561
  }
588
562
  _setupDeleteHandler(t, e) {
589
563
  t.addEventListener("click", (r) => {
590
- const o = r.target.closest(".custom-attr-delete");
591
- if (!o)
564
+ const i = r.target.closest(".custom-attr-delete");
565
+ if (!i)
592
566
  return;
593
- const s = o.closest("[data-custom-index]"), n = s == null ? void 0 : s.dataset.customIndex;
567
+ const s = i.closest("[data-custom-index]"), n = s == null ? void 0 : s.dataset.customIndex;
594
568
  n !== void 0 && this._onDeleteCustomAttribute(Number(n));
595
569
  }, { signal: e });
596
570
  }
@@ -598,10 +572,10 @@ class Wt extends lt {
598
572
  // Actions (Add, Delete, Reorder)
599
573
  // ========================================================================
600
574
  _onAddAttribute(t, e) {
601
- const r = U(t), i = this._readCompositionFromNode();
602
- i.push(r);
603
- const o = [...this._readCustomAttributesFromNode(), t];
604
- this._updateBothAttributes(i, o), this._injectCustomAttributeHtml(t, e, r, i), this._renderOrderableItems(i, o), this._initializeCustomSelects(o), this._updateAddButtonState();
575
+ const r = `${m}${t}`, o = this._readCompositionFromNode();
576
+ o.push(r);
577
+ const i = [...this._readCustomAttributesFromNode(), t];
578
+ this._updateBothAttributes(o, i), this._injectCustomAttributeHtml(t, e, r, o), this._renderOrderableItems(o, i), this._initializeCustomSelects(i), this._updateAddButtonState();
605
579
  }
606
580
  /**
607
581
  * Removes a single custom attribute by its index in the customAttrs array.
@@ -611,7 +585,7 @@ class Wt extends lt {
611
585
  const e = this._readCustomAttributesFromNode();
612
586
  if (e[t] === void 0)
613
587
  return;
614
- const i = this._readCompositionFromNode(), o = this._findNthCustomKeyIndex(i, t), s = i.filter((a, l) => l !== o), n = e.filter((a, l) => l !== t);
588
+ const o = this._readCompositionFromNode(), i = this._findNthCustomKeyIndex(o, t), s = o.filter((c, l) => l !== i), n = e.filter((c, l) => l !== t);
615
589
  this._updateBothAttributes(s, n), this._removeCustomAttributeHtml(s), this._renderOrderableItems(s, n), this._initializeCustomSelects(n), this._updateAddButtonState();
616
590
  }
617
591
  /**
@@ -619,21 +593,21 @@ class Wt extends lt {
619
593
  * Uses the customIndex to target only the specific instance, supporting duplicates.
620
594
  */
621
595
  _onCustomAttributeChanged(t, e) {
622
- const r = this._readCustomAttributesFromNode(), i = r[t];
623
- if (i === void 0 || i === e)
596
+ const r = this._readCustomAttributesFromNode(), o = r[t];
597
+ if (o === void 0 || o === e)
624
598
  return;
625
- const o = U(e), s = this._readCompositionFromNode(), n = this._findNthCustomKeyIndex(s, t);
626
- n !== -1 && (s[n] = o), r[t] = e;
627
- const a = this._getDisplayNameForAttribute(e);
628
- this._updateBothAttributes(s, r), this._injectCustomAttributeHtml(e, a, o, s), this._renderOrderableItems(s, r), this._initializeCustomSelects(r);
599
+ const i = `${m}${e}`, s = this._readCompositionFromNode(), n = this._findNthCustomKeyIndex(s, t);
600
+ n !== -1 && (s[n] = i), r[t] = e;
601
+ const c = this._getDisplayNameForAttribute(e);
602
+ this._updateBothAttributes(s, r), this._injectCustomAttributeHtml(e, c, i, s), this._renderOrderableItems(s, r), this._initializeCustomSelects(r);
629
603
  }
630
604
  _onReorder(t) {
631
- const e = t.filter((r) => r.startsWith(A)).map(w);
605
+ const e = t.filter((r) => r.startsWith(m)).map((r) => r.substring(m.length));
632
606
  this.reorderInProgress = !0;
633
607
  try {
634
608
  this._updateBothAttributes(t, e);
635
- const r = !_.getConfig(this.currentNode).priceMovedToNextLine;
636
- this._getCurrentLayout() === "grid" && !r ? this._reorderProductAttributes(t) : this.currentNode && Nt({
609
+ const r = !y.getConfig(this.currentNode).priceMovedToNextLine;
610
+ this._getCurrentLayout() === "grid" && !r ? this._reorderProductAttributes(t) : this.currentNode && yt({
637
611
  currentNode: this.currentNode,
638
612
  documentModifier: this.api.getDocumentModifier()
639
613
  });
@@ -645,75 +619,67 @@ class Wt extends lt {
645
619
  // ========================================================================
646
620
  // HTML Injection / Removal (Product Card DOM)
647
621
  // ========================================================================
648
- /**
649
- * Outer HTML of an existing attribute row, rewritten to the canonical key when
650
- * the row still carries a legacy bare-name one. Copying rows this way lets the
651
- * DOM converge on the next composition change without writing on open.
652
- */
653
- _getExistingRowHtml(t, e) {
654
- const r = Tt(t, e);
655
- if (r && "getOuterHTML" in r)
656
- return G(r.getOuterHTML(), e);
657
- const i = t.querySelector(
658
- `${v}[${R}="${e}"]`
659
- );
660
- return i && "getOuterHTML" in i ? G(i.getOuterHTML(), e) : "";
661
- }
662
- _injectCustomAttributeHtml(t, e, r, i) {
622
+ _injectCustomAttributeHtml(t, e, r, o) {
663
623
  if (!this.currentNode)
664
624
  return;
665
- this._getCurrentLayout() === "grid" ? this._injectGridAttributeRow(t, e, r, i) : this._injectListAttributeRow(t, e, r, i);
625
+ this._getCurrentLayout() === "grid" ? this._injectGridAttributeRow(t, e, r, o) : this._injectListAttributeRow(t, e, r, o);
666
626
  }
667
- _injectGridAttributeRow(t, e, r, i) {
668
- const o = this.currentNode.querySelectorAll(k);
669
- if (!(o != null && o.length))
627
+ _injectGridAttributeRow(t, e, r, o) {
628
+ const i = this.currentNode.querySelectorAll(H);
629
+ if (!(i != null && i.length))
670
630
  return;
671
- const s = _.getConfig(this.currentNode), a = `0 ${Math.floor(s.columnSpacing / 2)}px`, l = this.api.getDocumentModifier(), d = this.store.recommendationProducts.length;
672
- let c = 0;
673
- o.forEach((u) => {
674
- var F;
675
- const f = u.querySelector(v), C = ((F = f == null ? void 0 : f.querySelectorAll(`.${ht}`)) == null ? void 0 : F.length) || 1, x = (100 / C).toFixed(2), { bgStyle: Q, bgAttr: Z } = this._extractSegmentBgFromCard(u), H = d > 0 ? Math.min(C, d - c) : C, tt = i.map((M) => {
676
- if (M === r) {
677
- const et = Array.from(
678
- { length: H },
679
- (Lt, it) => {
680
- const ot = this._resolveAttributeContent(
631
+ const s = y.getConfig(this.currentNode), c = `0 ${Math.floor(s.columnSpacing / 2)}px`, l = this.api.getDocumentModifier(), a = this.store.recommendationProducts.length;
632
+ let d = 0;
633
+ i.forEach((u) => {
634
+ var w;
635
+ const p = u.querySelector($), A = ((w = p == null ? void 0 : p.querySelectorAll(`.${at}`)) == null ? void 0 : w.length) || 1, q = (100 / A).toFixed(2), { bgStyle: G, bgAttr: z } = this._extractSegmentBgFromCard(u), L = a > 0 ? Math.min(A, a - d) : A, Y = o.map((B) => {
636
+ if (B === r) {
637
+ const X = Array.from(
638
+ { length: L },
639
+ ($t, Q) => {
640
+ const Z = this._resolveAttributeContent(
681
641
  t,
682
642
  e,
683
- c + it
643
+ d + Q
684
644
  );
685
645
  return this._getGridCellHtml(
686
646
  t,
687
- ot,
688
- x,
689
- Q,
690
647
  Z,
691
- a
648
+ q,
649
+ G,
650
+ z,
651
+ c
692
652
  );
693
653
  }
694
- ).join(""), rt = bt(x, a).repeat(C - H);
695
- return `<tr class="recommendation-attribute-row" ${R}="${r}" ${O}="1">${et}${rt}</tr>`;
654
+ ).join(""), J = ut(q, c).repeat(A - L);
655
+ return `<tr class="recommendation-attribute-row" ${C}="${r}" ${E}="1">${X}${J}</tr>`;
696
656
  }
697
- return this._getExistingRowHtml(u, M);
657
+ const P = u.querySelector(
658
+ `${$}[${C}="${B}"]`
659
+ );
660
+ return P && "getOuterHTML" in P ? P.getOuterHTML() : "";
698
661
  }).join("");
699
- c += H, d > 0 && c >= d && (c = 0), l.modifyHtml(u).setInnerHtml(tt);
700
- }), l.apply(new S(`${this.api.translate("Add custom attribute")}: ${e}`));
662
+ d += L, a > 0 && d >= a && (d = 0), l.modifyHtml(u).setInnerHtml(Y);
663
+ }), l.apply(new T(`${this.api.translate("Add custom attribute")}: ${e}`));
701
664
  }
702
- _injectListAttributeRow(t, e, r, i) {
703
- const o = this.currentNode.querySelectorAll(Y);
704
- if (!(o != null && o.length))
665
+ _injectListAttributeRow(t, e, r, o) {
666
+ const i = this.currentNode.querySelectorAll(j);
667
+ if (!(i != null && i.length))
705
668
  return;
706
- const s = i.filter((a) => a !== q && a !== B), n = this.api.getDocumentModifier();
707
- o.forEach((a, l) => {
708
- const d = s.map((c) => {
709
- if (c === r) {
710
- const u = this._resolveAttributeContent(t, e, l);
711
- return this._getListRowHtml(t, u, r);
669
+ const s = o.filter((c) => c !== k && c !== U), n = this.api.getDocumentModifier();
670
+ i.forEach((c, l) => {
671
+ const a = s.map((d) => {
672
+ if (d === r) {
673
+ const p = this._resolveAttributeContent(t, e, l);
674
+ return this._getListRowHtml(t, p, r);
712
675
  }
713
- return this._getExistingRowHtml(a, c);
676
+ const u = c.querySelector(
677
+ `${$}[${C}="${d}"]`
678
+ );
679
+ return u && "getOuterHTML" in u ? u.getOuterHTML() : "";
714
680
  }).join("");
715
- n.modifyHtml(a).setInnerHtml(d);
716
- }), n.apply(new S(`${this.api.translate("Add custom attribute")}: ${e}`));
681
+ n.modifyHtml(c).setInnerHtml(a);
682
+ }), n.apply(new T(`${this.api.translate("Add custom attribute")}: ${e}`));
717
683
  }
718
684
  /**
719
685
  * Removes a custom attribute by rebuilding product card content without it.
@@ -724,19 +690,19 @@ class Wt extends lt {
724
690
  return;
725
691
  const e = this._getCurrentLayout(), r = this.api.getDocumentModifier();
726
692
  if (e === "grid") {
727
- const i = this.currentNode.querySelectorAll(k);
728
- i == null || i.forEach((o) => {
729
- const s = this._buildCompositionHtml(o, t);
730
- r.modifyHtml(o).setInnerHtml(s);
693
+ const o = this.currentNode.querySelectorAll(H);
694
+ o == null || o.forEach((i) => {
695
+ const s = this._buildCompositionHtml(i, t);
696
+ r.modifyHtml(i).setInnerHtml(s);
731
697
  });
732
698
  } else {
733
- const i = t.filter((s) => s !== q && s !== B), o = this.currentNode.querySelectorAll(Y);
734
- o == null || o.forEach((s) => {
735
- const n = this._buildCompositionHtml(s, i);
699
+ const o = t.filter((s) => s !== k && s !== U), i = this.currentNode.querySelectorAll(j);
700
+ i == null || i.forEach((s) => {
701
+ const n = this._buildCompositionHtml(s, o);
736
702
  r.modifyHtml(s).setInnerHtml(n);
737
703
  });
738
704
  }
739
- r.apply(new S(this.api.translate("Remove custom attribute")));
705
+ r.apply(new T(this.api.translate("Remove custom attribute")));
740
706
  }
741
707
  // ========================================================================
742
708
  // DOM Mutation (Block Root Attributes, Reorder)
@@ -752,10 +718,10 @@ class Wt extends lt {
752
718
  if (!this.currentNode)
753
719
  return;
754
720
  const r = {
755
- ..._.getConfig(this.currentNode),
721
+ ...y.getConfig(this.currentNode),
756
722
  composition: t
757
723
  };
758
- this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(X, t.join(",")).setAttribute(V, JSON.stringify(e)).setNodeConfig(r).apply(new S(this.api.translate("Update card composition")));
724
+ this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(W, t.join(",")).setAttribute(F, JSON.stringify(e)).setNodeConfig(r).apply(new T(this.api.translate("Update card composition")));
759
725
  }
760
726
  /**
761
727
  * Reorders attribute rows within each product card based on composition order.
@@ -764,21 +730,24 @@ class Wt extends lt {
764
730
  _reorderProductAttributes(t) {
765
731
  if (!this.currentNode)
766
732
  return;
767
- const e = this.currentNode.querySelectorAll(k);
733
+ const e = this.currentNode.querySelectorAll(H);
768
734
  if (!(e != null && e.length))
769
735
  return;
770
736
  const r = this.api.getDocumentModifier();
771
- e.forEach((i) => {
772
- const o = this._buildCompositionHtml(i, t);
773
- r.modifyHtml(i).setInnerHtml(o);
774
- }), r.apply(new S(this.api.translate("Reorder product attributes")));
737
+ e.forEach((o) => {
738
+ const i = this._buildCompositionHtml(o, t);
739
+ r.modifyHtml(o).setInnerHtml(i);
740
+ }), r.apply(new T(this.api.translate("Reorder product attributes")));
775
741
  }
776
742
  /**
777
743
  * Builds HTML string with attributes ordered according to composition.
778
744
  * Queries existing rows from the container by data-attribute-type.
779
745
  */
780
746
  _buildCompositionHtml(t, e) {
781
- return e.reduce((r, i) => r + this._getExistingRowHtml(t, i), "");
747
+ return e.reduce((r, o) => {
748
+ const i = t.querySelector(`${$}[${C}="${o}"]`);
749
+ return i && "getOuterHTML" in i ? r + i.getOuterHTML() : r;
750
+ }, "");
782
751
  }
783
752
  // ========================================================================
784
753
  // Visibility
@@ -786,19 +755,19 @@ class Wt extends lt {
786
755
  _applyVisibilityToBlock(t, e) {
787
756
  if (!this.currentNode)
788
757
  return;
789
- const r = t.startsWith(A) ? this.currentNode.querySelectorAll(v).filter((l) => z(l) === t) : this.currentNode.querySelectorAll(`${v}[${R}="${t}"]`);
758
+ const r = this.currentNode.querySelectorAll(`${$}[${C}="${t}"]`);
790
759
  if (!(r != null && r.length))
791
760
  return;
792
- const i = e ? "1" : "0", o = e ? this.api.translate("visible") : this.api.translate("hidden"), s = `${this.api.translate("Set visibility")}: ${t} → ${o}`, n = this.api.getDocumentModifier();
761
+ const o = e ? "1" : "0", i = e ? this.api.translate("visible") : this.api.translate("hidden"), s = `${this.api.translate("Set visibility")}: ${t} → ${i}`, n = this.api.getDocumentModifier();
793
762
  r.forEach((l) => {
794
- const d = It(l), c = e ? d : "none";
795
- n.modifyHtml(l).setStyle("display", c).setAttribute(O, i);
763
+ const a = ft(l), d = e ? a : "none";
764
+ n.modifyHtml(l).setStyle("display", d).setAttribute(E, o);
796
765
  });
797
- const a = {
798
- ..._.getConfig(this.currentNode),
766
+ const c = {
767
+ ...y.getConfig(this.currentNode),
799
768
  visibility: { ...this._readVisibilityFromRows(), [t]: e }
800
769
  };
801
- n.modifyHtml(this.currentNode).setNodeConfig(a), n.apply(new S(s));
770
+ n.modifyHtml(this.currentNode).setNodeConfig(c), n.apply(new T(s));
802
771
  }
803
772
  // ========================================================================
804
773
  // Utilities
@@ -810,16 +779,16 @@ class Wt extends lt {
810
779
  */
811
780
  _findNthCustomKeyIndex(t, e) {
812
781
  let r = 0;
813
- for (let i = 0; i < t.length; i++)
814
- if (t[i].startsWith(A)) {
782
+ for (let o = 0; o < t.length; o++)
783
+ if (t[o].startsWith(m)) {
815
784
  if (r === e)
816
- return i;
785
+ return o;
817
786
  r++;
818
787
  }
819
788
  return -1;
820
789
  }
821
790
  _getCurrentLayout() {
822
- return this.store.recommendationConfigs.orientation || Et(this.currentNode);
791
+ return this.store.recommendationConfigs.orientation || Ct(this.currentNode);
823
792
  }
824
793
  /**
825
794
  * Extracts background color properties from existing card elements.
@@ -828,7 +797,7 @@ class Wt extends lt {
828
797
  * Used when injecting new attribute cells to match the card's current background.
829
798
  */
830
799
  _extractSegmentBgFromCard(t) {
831
- var i;
800
+ var o;
832
801
  const e = t.querySelector(".product-card-segment");
833
802
  if (e && "getAttribute" in e) {
834
803
  const s = (e.getAttribute("style") || "").match(/background-color:\s*([^;]+)/);
@@ -837,12 +806,12 @@ class Wt extends lt {
837
806
  return { bgStyle: `background-color: ${s[1].trim()};`, bgAttr: n };
838
807
  }
839
808
  }
840
- const r = (i = this.currentNode) == null ? void 0 : i.querySelector(".product-card-wrapper");
809
+ const r = (o = this.currentNode) == null ? void 0 : o.querySelector(".product-card-wrapper");
841
810
  if (r && "getStyle" in r) {
842
- const o = r.getStyle("background-color");
843
- if (o && o !== "transparent") {
811
+ const i = r.getStyle("background-color");
812
+ if (i && i !== "transparent") {
844
813
  const s = "getAttribute" in r && r.getAttribute("bgcolor") || "";
845
- return { bgStyle: `background-color: ${o};`, bgAttr: s };
814
+ return { bgStyle: `background-color: ${i};`, bgAttr: s };
846
815
  }
847
816
  }
848
817
  return { bgStyle: "", bgAttr: "" };
@@ -871,11 +840,11 @@ class Wt extends lt {
871
840
  * or when all available filters have already been added (no unused attributes left).
872
841
  */
873
842
  _updateAddButtonState() {
874
- const t = this._readCustomAttributesFromNode(), e = t.length >= b, r = new Set(t), i = this._getAddableFilters(), o = i.length > 0 && i.every((s) => r.has(T(s)));
843
+ const t = this._readCustomAttributesFromNode(), e = t.length >= _, r = new Set(t), o = this._getAddableFilters(), i = o.length > 0 && o.every((s) => r.has(s.attributeName));
875
844
  this.api.setUIEAttribute(
876
- J.ADD_ATTRIBUTE,
877
- E.BUTTON.disabled,
878
- e || o ? "true" : "false"
845
+ K.ADD_ATTRIBUTE,
846
+ D.BUTTON.disabled,
847
+ e || i ? "true" : "false"
879
848
  );
880
849
  }
881
850
  /**
@@ -888,55 +857,54 @@ class Wt extends lt {
888
857
  this.unsubscribeStore = this.store.$subscribe(() => {
889
858
  const r = this.store.recommendationConfigs.orientation;
890
859
  r !== t && (t = r, this._updateOrderableState());
891
- const i = Object.keys(this.store.filterList).sort().join(",");
892
- i !== e && (e = i, this._initializeComposition());
860
+ const o = Object.keys(this.store.filterList).sort().join(",");
861
+ o !== e && (e = o, this._initializeComposition());
893
862
  });
894
863
  }
895
864
  /**
896
- * Returns filters eligible for the custom attribute dropdown, excluding default
897
- * attributes already covered by built-in toggle items.
865
+ * Returns filters eligible for the custom attribute dropdown,
866
+ * excluding default attributes already covered by built-in toggle items.
898
867
  */
899
868
  _getAddableFilters() {
900
- return Object.values(this.store.filterList).filter((t) => !(t.type === "defaultAttribute" && ut.has(t.attributeName)));
869
+ return Object.values(this.store.filterList).filter((t) => !(t.type === "defaultAttribute" && nt.has(t.attributeName)));
901
870
  }
902
871
  /**
903
- * Looks up the display name for a `product-attr` value from the store's filterList.
904
- * Matches on the canonical value, so a default and a same-named custom attribute
905
- * resolve to their own entry. Falls back to Title Case of the bare name.
872
+ * Looks up the display name for an attribute from the store's filterList.
873
+ * Falls back to Title Case conversion of the snake_case attribute name.
906
874
  */
907
875
  _getDisplayNameForAttribute(t) {
908
- const e = Object.values(this.store.filterList).find((r) => T(r) === t);
909
- return e ? e.displayName : yt(D(t));
876
+ const e = Object.values(this.store.filterList).find((r) => r.attributeName === t);
877
+ return e ? e.displayName : pt(t);
910
878
  }
911
879
  /**
912
880
  * Resolves the display content for a custom attribute cell.
913
881
  * Uses the real product value from the store when available, falls back to displayName.
914
882
  */
915
883
  _resolveAttributeContent(t, e, r) {
916
- var a;
917
- const o = this.store.recommendationProducts[r], s = D(t), n = $t(t) ? o == null ? void 0 : o[s] : (a = o == null ? void 0 : o.product_attributes) == null ? void 0 : a[s];
918
- return Ct(n) ?? e;
919
- }
920
- _getGridCellHtml(t, e, r, i = "", o = "", s = "") {
921
- const n = U(t), a = D(t), l = W(pt, [n], this.store.filterList), d = {
922
- [a]: e,
923
- product_attributes: { [a]: e }
884
+ var n;
885
+ const i = this.store.recommendationProducts[r], s = gt(t, this.store.filterList) ? i == null ? void 0 : i[t] : (n = i == null ? void 0 : i.product_attributes) == null ? void 0 : n[t];
886
+ return bt(s) ?? e;
887
+ }
888
+ _getGridCellHtml(t, e, r, o = "", i = "", s = "") {
889
+ const n = `${m}${t}`, c = V(ct, [n], this.store.filterList), l = {
890
+ [t]: e,
891
+ product_attributes: { [t]: e }
924
892
  };
925
- let c = l[n](d);
926
- return c = c.replace("<td", `<td width="${r}%"`), s && (c = c.replace(
927
- `padding: ${gt}`,
893
+ let a = c[n](l);
894
+ return a = a.replace("<td", `<td width="${r}%"`), s && (a = a.replace(
895
+ `padding: ${dt}`,
928
896
  `padding: ${s}`
929
- )), i && (c = c.replace(/style="table-layout: fixed;"/, `style="table-layout: fixed; ${i}"`)), o && (c = c.replace(/border="0"/, `border="0" bgcolor="${o}"`)), c;
897
+ )), o && (a = a.replace(/style="table-layout: fixed;"/, `style="table-layout: fixed; ${o}"`)), i && (a = a.replace(/border="0"/, `border="0" bgcolor="${i}"`)), a;
930
898
  }
931
899
  _getListRowHtml(t, e, r) {
932
- const i = D(t), o = W(ft, [r], this.store.filterList), s = {
933
- [i]: e,
934
- product_attributes: { [i]: e }
935
- }, a = o[r](s).replace(/<tr>/, "").replace(/<\/tr>/, "");
936
- return `<tr class="recommendation-attribute-row" ${R}="${r}" ${O}="1">${a}</tr>`;
900
+ const o = V(mt, [r], this.store.filterList), i = {
901
+ [t]: e,
902
+ product_attributes: { [t]: e }
903
+ }, n = o[r](i).replace(/<tr>/, "").replace(/<\/tr>/, "");
904
+ return `<tr class="recommendation-attribute-row" ${C}="${r}" ${E}="1">${n}</tr>`;
937
905
  }
938
906
  }
939
907
  export {
940
- Rt as COMPOSITION_CONTROL_BLOCK_ID,
941
- Wt as RecommendationCardCompositionControl
908
+ St as COMPOSITION_CONTROL_BLOCK_ID,
909
+ qt as RecommendationCardCompositionControl
942
910
  };