@useinsider/guido 2.0.0 → 2.1.0-beta.e6bf76b

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 (134) hide show
  1. package/README.md +2 -0
  2. package/dist/@types/config/schemas.js +57 -39
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +15 -17
  5. package/dist/components/organisms/email-preview/PreviewContainer.vue.js +3 -3
  6. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.js +6 -6
  7. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue2.js +17 -13
  8. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +6 -6
  9. package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +14 -12
  10. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.js +18 -0
  11. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue2.js +15 -0
  12. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +16 -15
  13. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +14 -22
  14. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +3 -3
  15. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +12 -11
  16. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +12 -10
  17. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +11 -10
  18. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +15 -14
  19. package/dist/components/organisms/header/EditorActions.vue.js +21 -0
  20. package/dist/components/organisms/header/EditorActions.vue2.js +41 -0
  21. package/dist/components/organisms/header/EditorToolbar.vue.js +18 -0
  22. package/dist/components/organisms/header/EditorToolbar.vue2.js +17 -0
  23. package/dist/components/organisms/header/HeaderWrapper.vue.js +6 -5
  24. package/dist/components/organisms/header/LeftSlot.vue.js +9 -9
  25. package/dist/components/organisms/header/LeftSlot.vue2.js +12 -13
  26. package/dist/components/organisms/header/MiddleSlot.vue.js +7 -7
  27. package/dist/components/organisms/header/MiddleSlot.vue2.js +11 -15
  28. package/dist/components/organisms/header/RightSlot.vue.js +11 -14
  29. package/dist/components/organisms/header/RightSlot.vue2.js +13 -30
  30. package/dist/components/organisms/header/version-history/VersionHistory.vue.js +5 -5
  31. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +15 -15
  32. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +1 -1
  33. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +20 -19
  34. package/dist/composables/useActionsApi.js +33 -30
  35. package/dist/composables/useConfig.js +29 -27
  36. package/dist/composables/useSave.js +13 -11
  37. package/dist/composables/useStripo.js +57 -56
  38. package/dist/config/migrator/index.js +9 -8
  39. package/dist/config/migrator/itemsBlockMigrator.js +334 -0
  40. package/dist/enums/academy.js +8 -0
  41. package/dist/enums/onboarding.js +1 -2
  42. package/dist/enums/unsubscribe.js +20 -21
  43. package/dist/extensions/Blocks/CouponBlock/constants.js +4 -0
  44. package/dist/extensions/Blocks/CouponBlock/controls/index.js +29 -0
  45. package/dist/extensions/Blocks/CouponBlock/extension.js +5 -4
  46. package/dist/extensions/Blocks/CouponBlock/settingsPanel.js +20 -14
  47. package/dist/extensions/Blocks/CouponBlock/template.js +22 -11
  48. package/dist/extensions/Blocks/Items/block.js +36 -40
  49. package/dist/extensions/Blocks/Items/controls/button/link.js +22 -29
  50. package/dist/extensions/Blocks/Items/controls/cardComposition.js +66 -46
  51. package/dist/extensions/Blocks/Items/controls/image/link.js +23 -30
  52. package/dist/extensions/Blocks/Items/controls/name/trimming.js +25 -25
  53. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +19 -17
  54. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +31 -29
  55. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +44 -38
  56. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +21 -19
  57. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +29 -27
  58. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +93 -0
  59. package/dist/extensions/Blocks/Items/controls/settingsControl.js +146 -131
  60. package/dist/extensions/Blocks/Items/enums/controlEnums.js +2 -2
  61. package/dist/extensions/Blocks/Items/enums/productEnums.js +43 -45
  62. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +4 -5
  63. package/dist/extensions/Blocks/Items/extension.js +11 -9
  64. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +58 -49
  65. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +48 -59
  66. package/dist/extensions/Blocks/Items/settingsPanel.js +27 -26
  67. package/dist/extensions/Blocks/Items/store/items-block.js +11 -7
  68. package/dist/extensions/Blocks/Items/template.js +389 -141
  69. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +176 -0
  70. package/dist/extensions/Blocks/Recommendation/control.js +1 -1
  71. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  72. package/dist/extensions/Blocks/common-control.js +30 -32
  73. package/dist/extensions/Blocks/controlFactories.js +139 -118
  74. package/dist/guido.css +1 -1
  75. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +370 -286
  76. package/dist/package.json.js +1 -1
  77. package/dist/services/stripoApi.js +6 -10
  78. package/dist/src/@types/config/index.d.ts +2 -2
  79. package/dist/src/@types/config/schemas.d.ts +34 -0
  80. package/dist/src/@types/config/types.d.ts +7 -1
  81. package/dist/src/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.d.ts +2 -0
  82. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +4 -0
  83. package/dist/src/components/organisms/header/EditorToolbar.vue.d.ts +2 -0
  84. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  85. package/dist/src/composables/useActionsApi.d.ts +1 -0
  86. package/dist/src/composables/useConfig.d.ts +10 -0
  87. package/dist/src/config/migrator/itemsBlockMigrator.d.ts +6 -0
  88. package/dist/src/enums/academy.d.ts +12 -0
  89. package/dist/src/enums/onboarding.d.ts +0 -1
  90. package/dist/src/enums/unsubscribe.d.ts +0 -1
  91. package/dist/src/extensions/Blocks/CouponBlock/constants.d.ts +14 -0
  92. package/dist/src/extensions/Blocks/CouponBlock/controls/index.d.ts +108 -0
  93. package/dist/src/extensions/Blocks/CouponBlock/template.d.ts +1 -1
  94. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -2
  95. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +9 -0
  96. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -2
  97. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +1 -1
  98. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +18 -0
  99. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -4
  100. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +1 -0
  101. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +24 -26
  102. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +1 -2
  103. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +2 -0
  104. package/dist/src/extensions/Blocks/Items/template.d.ts +22 -1
  105. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +76 -0
  106. package/dist/src/extensions/Blocks/common-control.d.ts +10 -11
  107. package/dist/src/extensions/Blocks/controlFactories.d.ts +30 -7
  108. package/dist/src/stores/config.d.ts +181 -1
  109. package/dist/src/stores/editor.d.ts +21 -0
  110. package/dist/static/assets/desktop/desktop-mockup-center.svg.js +4 -0
  111. package/dist/static/assets/desktop/desktop-mockup-left.svg.js +4 -0
  112. package/dist/static/assets/desktop/desktop-mockup-right.svg.js +4 -0
  113. package/dist/static/assets/mobile/email-mockup.svg.js +4 -0
  114. package/dist/static/assets/mobile/inbox-mockup.svg.js +4 -0
  115. package/dist/static/styles/components/button.css.js +1 -1
  116. package/dist/static/styles/components/narrow-panel.css.js +0 -10
  117. package/dist/static/styles/components/wide-panel.css.js +1 -1
  118. package/dist/stores/config.js +7 -0
  119. package/dist/stores/editor.js +1 -0
  120. package/dist/utils/pairProductVariables.js +61 -58
  121. package/dist/utils/templatePreparation.js +17 -17
  122. package/package.json +3 -3
  123. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +0 -17
  124. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +0 -20
  125. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  126. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  127. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -76
  128. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -46
  129. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  130. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  131. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -50
  132. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  133. package/dist/static/assets/inbox-mockup.svg.js +0 -4
  134. package/dist/static/assets/phone-mockup.svg.js +0 -4
@@ -0,0 +1,4 @@
1
+ const M = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjg2IiBoZWlnaHQ9IjU5MiIgdmlld0JveD0iMCAwIDI4NiA1OTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyODYiIGhlaWdodD0iNTkyIiByeD0iNDQiIGZpbGw9IndoaXRlIi8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xXzc1MikiPgo8Zm9yZWlnbk9iamVjdCB4PSItMy45NDcyNSIgeT0iLTMuOTQ3MjUiIHdpZHRoPSIyOTMuODk1IiBoZWlnaHQ9IjEwMS44OTUiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJiYWNrZHJvcC1maWx0ZXI6Ymx1cig3Ljk3cHgpO2NsaXAtcGF0aDp1cmwoI2JnYmx1cl8xXzFfNzUyX2NsaXBfcGF0aCk7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJSI+PC9kaXY+PC9mb3JlaWduT2JqZWN0PjxnIGRhdGEtZmlnbWEtYmctYmx1ci1yYWRpdXM9IjE1Ljk0NzMiPgo8cGF0aCBkPSJNMTIgMzZDMTIgMjIuNzQ1MiAyMi43NDUyIDEyIDM2IDEySDI1MEMyNjMuMjU1IDEyIDI3NCAyMi43NDUyIDI3NCAzNlY4MkgxMlYzNloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMjcuNzA5IDcxVjYxLjlIMTI4LjgxNFY3MUgxMjcuNzA5Wk0xMzAuOTM5IDcxVjY0LjVIMTMxLjkxNEwxMzEuOTc5IDY1LjY5NlY3MUgxMzAuOTM5Wk0xMzUuNTAyIDcxVjY3LjY3MkgxMzYuNTQyVjcxSDEzNS41MDJaTTEzNS41MDIgNjcuNjcyQzEzNS41MDIgNjcuMDMwNyAxMzUuNDI5IDY2LjU0MSAxMzUuMjgxIDY2LjIwM0MxMzUuMTM0IDY1Ljg2NSAxMzQuOTMgNjUuNjM1MyAxMzQuNjcgNjUuNTE0QzEzNC40MSA2NS4zODQgMTM0LjExNiA2NS4zMTkgMTMzLjc4NiA2NS4zMTlDMTMzLjIxNCA2NS4zMTkgMTMyLjc2OCA2NS41MjI3IDEzMi40NDcgNjUuOTNDMTMyLjEzNSA2Ni4zMjg3IDEzMS45NzkgNjYuODk2MyAxMzEuOTc5IDY3LjYzM0gxMzEuNDcyQzEzMS40NzIgNjYuOTQ4MyAxMzEuNTcyIDY2LjM1OSAxMzEuNzcxIDY1Ljg2NUMxMzEuOTcxIDY1LjM3MSAxMzIuMjYxIDY0Ljk5NCAxMzIuNjQyIDY0LjczNEMxMzMuMDI0IDY0LjQ3NCAxMzMuNDgzIDY0LjM0NCAxMzQuMDIgNjQuMzQ0QzEzNC41MzIgNjQuMzQ0IDEzNC45NzQgNjQuNDQ4IDEzNS4zNDYgNjQuNjU2QzEzNS43MjggNjQuODU1MyAxMzYuMDIyIDY1LjE3NiAxMzYuMjMgNjUuNjE4QzEzNi40NDcgNjYuMDYgMTM2LjU1MSA2Ni42NDA3IDEzNi41NDIgNjcuMzZWNjcuNjcySDEzNS41MDJaTTEzOC4xODggNzFWNjEuOUgxMzkuMjI4VjY5Ljc5MUwxMzkuMTc2IDcxSDEzOC4xODhaTTE0MS40MjUgNzEuMTU2QzE0MC44NzkgNzEuMTU2IDE0MC4zOTggNzEuMDEzIDEzOS45ODIgNzAuNzI3QzEzOS41NzUgNzAuNDQxIDEzOS4yNTkgNzAuMDQyMyAxMzkuMDMzIDY5LjUzMUMxMzguODA4IDY5LjAxMSAxMzguNjk1IDY4LjQxNzMgMTM4LjY5NSA2Ny43NUMxMzguNjk1IDY3LjA3NCAxMzguODA4IDY2LjQ4MDMgMTM5LjAzMyA2NS45NjlDMTM5LjI1OSA2NS40NTc3IDEzOS41NzUgNjUuMDU5IDEzOS45ODIgNjQuNzczQzE0MC4zOTggNjQuNDg3IDE0MC44NzkgNjQuMzQ0IDE0MS40MjUgNjQuMzQ0QzE0Mi4wMDYgNjQuMzQ0IDE0Mi41MTcgNjQuNDg3IDE0Mi45NTkgNjQuNzczQzE0My40MDEgNjUuMDU5IDE0My43NDQgNjUuNDU3NyAxNDMuOTg2IDY1Ljk2OUMxNDQuMjM4IDY2LjQ4MDMgMTQ0LjM2MyA2Ny4wNzQgMTQ0LjM2MyA2Ny43NUMxNDQuMzYzIDY4LjQxNzMgMTQ0LjIzOCA2OS4wMTEgMTQzLjk4NiA2OS41MzFDMTQzLjc0NCA3MC4wNDIzIDE0My40MDEgNzAuNDQxIDE0Mi45NTkgNzAuNzI3QzE0Mi41MTcgNzEuMDEzIDE0Mi4wMDYgNzEuMTU2IDE0MS40MjUgNzEuMTU2Wk0xNDEuMTkxIDcwLjIwN0MxNDEuNTk5IDcwLjIwNyAxNDEuOTU4IDcwLjEwMyAxNDIuMjcgNjkuODk1QzE0Mi41OTEgNjkuNjg3IDE0Mi44NDIgNjkuMzk2NyAxNDMuMDI0IDY5LjAyNEMxNDMuMjE1IDY4LjY1MTMgMTQzLjMxIDY4LjIyNjcgMTQzLjMxIDY3Ljc1QzE0My4zMSA2Ny4yNzMzIDE0My4yMTkgNjYuODQ4NyAxNDMuMDM3IDY2LjQ3NkMxNDIuODY0IDY2LjEwMzMgMTQyLjYxNyA2NS44MTMgMTQyLjI5NiA2NS42MDVDMTQxLjk3NiA2NS4zOTcgMTQxLjYxMiA2NS4yOTMgMTQxLjIwNCA2NS4yOTNDMTQwLjgyMyA2NS4yOTMgMTQwLjQ4MSA2NS4zOTcgMTQwLjE3NyA2NS42MDVDMTM5Ljg4MyA2NS44MTMgMTM5LjY0OSA2Ni4xMDMzIDEzOS40NzUgNjYuNDc2QzEzOS4zMTEgNjYuODQ4NyAxMzkuMjI4IDY3LjI3MzMgMTM5LjIyOCA2Ny43NUMxMzkuMjI4IDY4LjIyNjcgMTM5LjMxMSA2OC42NTEzIDEzOS40NzUgNjkuMDI0QzEzOS42NDkgNjkuMzk2NyAxMzkuODgzIDY5LjY4NyAxNDAuMTc3IDY5Ljg5NUMxNDAuNDcyIDcwLjEwMyAxNDAuODEgNzAuMjA3IDE0MS4xOTEgNzAuMjA3Wk0xNDguNjc5IDcxLjE1NkMxNDguMDQ2IDcxLjE1NiAxNDcuNDgzIDcxLjAxMyAxNDYuOTg5IDcwLjcyN0MxNDYuNTAzIDcwLjQzMjMgMTQ2LjEyMiA3MC4wMjkzIDE0NS44NDUgNjkuNTE4QzE0NS41NjcgNjkuMDA2NyAxNDUuNDI5IDY4LjQxNzMgMTQ1LjQyOSA2Ny43NUMxNDUuNDI5IDY3LjA4MjcgMTQ1LjU2MyA2Ni40OTMzIDE0NS44MzIgNjUuOTgyQzE0Ni4xMDkgNjUuNDcwNyAxNDYuNDkgNjUuMDcyIDE0Ni45NzYgNjQuNzg2QzE0Ny40NyA2NC40OTEzIDE0OC4wMjkgNjQuMzQ0IDE0OC42NTMgNjQuMzQ0QzE0OS4yOTQgNjQuMzQ0IDE0OS44NTcgNjQuNDkxMyAxNTAuMzQzIDY0Ljc4NkMxNTAuODM3IDY1LjA3MiAxNTEuMjE4IDY1LjQ3MDcgMTUxLjQ4NyA2NS45ODJDMTUxLjc2NCA2Ni40OTMzIDE1MS45MDMgNjcuMDgyNyAxNTEuOTAzIDY3Ljc1QzE1MS45MDMgNjguNDE3MyAxNTEuNzY0IDY5LjAwNjcgMTUxLjQ4NyA2OS41MThDMTUxLjIxOCA3MC4wMjkzIDE1MC44NDEgNzAuNDMyMyAxNTAuMzU2IDcwLjcyN0MxNDkuODcgNzEuMDEzIDE0OS4zMTEgNzEuMTU2IDE0OC42NzkgNzEuMTU2Wk0xNDguNjc5IDcwLjE5NEMxNDkuMTEyIDcwLjE5NCAxNDkuNDg5IDcwLjA5IDE0OS44MSA2OS44ODJDMTUwLjEzIDY5LjY3NCAxNTAuMzgyIDY5LjM4OCAxNTAuNTY0IDY5LjAyNEMxNTAuNzU0IDY4LjY2IDE1MC44NSA2OC4yMzUzIDE1MC44NSA2Ny43NUMxNTAuODUgNjcuMjY0NyAxNTAuNzU0IDY2Ljg0IDE1MC41NjQgNjYuNDc2QzE1MC4zODIgNjYuMTEyIDE1MC4xMjYgNjUuODI2IDE0OS43OTcgNjUuNjE4QzE0OS40NjcgNjUuNDEgMTQ5LjA4NiA2NS4zMDYgMTQ4LjY1MyA2NS4zMDZDMTQ4LjIyOCA2NS4zMDYgMTQ3Ljg1MSA2NS40MSAxNDcuNTIyIDY1LjYxOEMxNDcuMjAxIDY1LjgyNiAxNDYuOTQ1IDY2LjExMiAxNDYuNzU1IDY2LjQ3NkMxNDYuNTczIDY2Ljg0IDE0Ni40ODIgNjcuMjY0NyAxNDYuNDgyIDY3Ljc1QzE0Ni40ODIgNjguMjI2NyAxNDYuNTczIDY4LjY1MTMgMTQ2Ljc1NSA2OS4wMjRDMTQ2Ljk0NSA2OS4zODggMTQ3LjIwNSA2OS42NzQgMTQ3LjUzNSA2OS44ODJDMTQ3Ljg3MyA3MC4wOSAxNDguMjU0IDcwLjE5NCAxNDguNjc5IDcwLjE5NFpNMTUyLjUwMyA3MUwxNTUuMTU1IDY3LjI2OUwxNTcuMDI3IDY0LjVIMTU4LjI2MkwxNTUuNzkyIDY4LjAxTDE1My43NjQgNzFIMTUyLjUwM1pNMTU3LjE3IDcxTDE1NS4xNjggNjguMDFMMTUyLjY3MiA2NC41SDE1My45MDdMMTU1Ljc5MiA2Ny4yNjlMMTU4LjQxOCA3MUgxNTcuMTdaIiBmaWxsPSIjOTg5ODk4Ii8+CjwvZz4KPHJlY3Qgd2lkdGg9IjI2MiIgaGVpZ2h0PSI0NDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyIDgyKSIgZmlsbD0id2hpdGUiLz4KPG1hc2sgaWQ9InBhdGgtNS1pbnNpZGUtMV8xXzc1MiIgZmlsbD0id2hpdGUiPgo8cGF0aCBkPSJNMTIgNTI0SDI3NFY1NTZDMjc0IDU2OS4yNTUgMjYzLjI1NSA1ODAgMjUwIDU4MEgzNkMyMi43NDUyIDU4MCAxMiA1NjkuMjU1IDEyIDU1NlY1MjRaIi8+CjwvbWFzaz4KPHBhdGggZD0iTTEyIDUyNEgyNzRWNTU2QzI3NCA1NjkuMjU1IDI2My4yNTUgNTgwIDI1MCA1ODBIMzZDMjIuNzQ1MiA1ODAgMTIgNTY5LjI1NSAxMiA1NTZWNTI0WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTEyIDUyM0gyNzRWNTI1SDEyVjUyM1pNMjc0IDU4MEgxMkgyNzRaTTEyIDU4MFY1MjRWNTgwWk0yNzQgNTI0VjU4MFY1MjRaIiBmaWxsPSIjRENERUU2IiBtYXNrPSJ1cmwoI3BhdGgtNS1pbnNpZGUtMV8xXzc1MikiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zMSA1NDdDMzEgNTQ2LjQ0OCAzMS40NDc3IDU0NiAzMiA1NDZINDhDNDguNTUyMyA1NDYgNDkgNTQ2LjQ0OCA0OSA1NDdDNDkgNTQ3LjU1MiA0OC41NTIzIDU0OCA0OCA1NDhIMzJDMzEuNDQ3NyA1NDggMzEgNTQ3LjU1MiAzMSA1NDdaTTM0IDU1MkMzNCA1NTEuNDQ4IDM0LjQ0NzcgNTUxIDM1IDU1MUg0NUM0NS41NTIzIDU1MSA0NiA1NTEuNDQ4IDQ2IDU1MkM0NiA1NTIuNTUyIDQ1LjU1MjMgNTUzIDQ1IDU1M0gzNUMzNC40NDc3IDU1MyAzNCA1NTIuNTUyIDM0IDU1MlpNMzcgNTU3QzM3IDU1Ni40NDggMzcuNDQ3NyA1NTYgMzggNTU2SDQyQzQyLjU1MjMgNTU2IDQzIDU1Ni40NDggNDMgNTU3QzQzIDU1Ny41NTIgNDIuNTUyMyA1NTggNDIgNTU4SDM4QzM3LjQ0NzcgNTU4IDM3IDU1Ny41NTIgMzcgNTU3WiIgZmlsbD0iIzk4OTg5OCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTI1My4xODYgNTQyLjA5QzI1My43MDcgNTQyLjM0IDI1NC4zMjIgNTQyLjcwMiAyNTQuODExIDU0My4xOTFDMjU1LjMwMSA1NDMuNjgxIDI1NS42NjMgNTQ0LjI5NSAyNTUuOTExIDU0NC44MTZDMjU2LjIyNCA1NDUuNDcgMjU2LjAyMSA1NDYuMjI0IDI1NS41MSA1NDYuNzM2TDI0OC4yOTYgNTUzLjk0OUMyNDcuOTg2IDU1NC4yNTkgMjQ3LjYwOCA1NTQuNDkgMjQ3LjE5MSA1NTQuNjI0TDI0Mi45NjkgNTU1Ljk3N0MyNDIuODM4IDU1Ni4wMTkgMjQyLjY5NyA1NTYuMDI0IDI0Mi41NjMgNTU1Ljk5MkMyNDIuNDI5IDU1NS45NTkgMjQyLjMwNyA1NTUuODkgMjQyLjIwOSA1NTUuNzkzQzI0Mi4xMTIgNTU1LjY5NSAyNDIuMDQzIDU1NS41NzMgMjQyLjAxMSA1NTUuNDM5QzI0MS45NzggNTU1LjMwNSAyNDEuOTg0IDU1NS4xNjQgMjQyLjAyNiA1NTUuMDMzTDI0My4zNzkgNTUwLjgxMkMyNDMuNTEzIDU1MC4zOTUgMjQzLjc0NCA1NTAuMDE2IDI0NC4wNTMgNTQ5LjcwN0wyNTEuMjY3IDU0Mi40OTNDMjUxLjc3OSA1NDEuOTgxIDI1Mi41MzMgNTQxLjc3OSAyNTMuMTg3IDU0Mi4wOTFMMjUzLjE4NiA1NDIuMDlaTTI1My4zOTcgNTQ0LjYwNkMyNTMuMTUgNTQ0LjM3MyAyNTIuODcxIDU0NC4xNzUgMjUyLjU2OSA1NDQuMDJMMjQ1LjU3NSA1NTEuMDE0QzI0NS41MDQgNTUxLjA4NSAyNDUuNDQ0IDU1MS4xNjYgMjQ1LjM5NyA1NTEuMjU1TDI0My45IDU1NC4xMDJMMjQ2Ljc0NiA1NTIuNjA2QzI0Ni44MzYgNTUyLjU1OSAyNDYuOTE3IDU1Mi40OTkgMjQ2Ljk4OCA1NTIuNDI4TDI1My45ODIgNTQ1LjQzNEMyNTMuODI3IDU0NS4xMzIgMjUzLjYzIDU0NC44NTMgMjUzLjM5NyA1NDQuNjA2Wk0yMzguOTk5IDU0NS41QzIzOC45OTkgNTQ1LjM3MiAyMzkuMDQ3IDU0NS4yNDkgMjM5LjEzNSA1NDUuMTU2QzIzOS4yMjMgNTQ1LjA2MyAyMzkuMzQyIDU0NS4wMDcgMjM5LjQ3IDU0NUwyNDUgNTQ1LjAwNUMyNDUuMjY1IDU0NS4wMDUgMjQ1LjUyIDU0NC45IDI0NS43MDcgNTQ0LjcxMkMyNDUuODk1IDU0NC41MjUgMjQ2IDU0NC4yNyAyNDYgNTQ0LjAwNUMyNDYgNTQzLjc0IDI0NS44OTUgNTQzLjQ4NSAyNDUuNzA3IDU0My4yOThDMjQ1LjUyIDU0My4xMSAyNDUuMjY1IDU0My4wMDUgMjQ1IDU0My4wMDVMMjM5LjUgNTQzQzIzOC44MzcgNTQzIDIzOC4yMDEgNTQzLjI2MyAyMzcuNzMyIDU0My43MzJDMjM3LjI2MyA1NDQuMjAxIDIzNyA1NDQuODM3IDIzNyA1NDUuNVY1NTguMDc3QzIzNyA1NTguODM3IDIzNy4wODIgNTU5LjI2MiAyMzcuMzE5IDU1OS43MDRDMjM3LjU0MyA1NjAuMTIzIDIzNy44NzcgNTYwLjQ1OCAyMzguMjk2IDU2MC42ODJDMjM4LjczOCA1NjAuOTE4IDIzOS4xNjIgNTYxIDIzOS45MjMgNTYxSDI1Mi4wNzdDMjUyLjgzNyA1NjEgMjUzLjI2MiA1NjAuOTE4IDI1My43MDQgNTYwLjY4MkMyNTQuMTI0IDU2MC40NTggMjU0LjQ1OCA1NjAuMTIzIDI1NC42ODIgNTU5LjcwNEMyNTQuOTE4IDU1OS4yNjIgMjU1IDU1OC44MzggMjU1IDU1OC4wNzdWNTUzQzI1NSA1NTIuNzM1IDI1NC44OTUgNTUyLjQ4IDI1NC43MDcgNTUyLjI5M0MyNTQuNTIgNTUyLjEwNSAyNTQuMjY1IDU1MiAyNTQgNTUyQzI1My43MzUgNTUyIDI1My40OCA1NTIuMTA1IDI1My4yOTMgNTUyLjI5M0MyNTMuMTA1IDU1Mi40OCAyNTMgNTUyLjczNSAyNTMgNTUzVjU1OC4wNzdDMjUzIDU1OC41MzYgMjUyLjk3OSA1NTguNjQ4IDI1Mi45MTggNTU4Ljc2MUMyNTIuODgzIDU1OC44MjggMjUyLjgyOCA1NTguODgzIDI1Mi43NjEgNTU4LjkxOEMyNTIuNjQ4IDU1OC45NzggMjUyLjUzNiA1NTkgMjUyLjA3NyA1NTlIMjM5LjkyM0MyMzkuNDY0IDU1OSAyMzkuMzUzIDU1OC45NzggMjM5LjIzOSA1NTguOTE4QzIzOS4xNzIgNTU4Ljg4MyAyMzkuMTE3IDU1OC44MjggMjM5LjA4MiA1NTguNzYxQzIzOS4wMjIgNTU4LjY0OCAyMzkgNTU4LjUzNiAyMzkgNTU4LjA3N0wyMzguOTk5IDU0NS41WiIgZmlsbD0iIzk4OTg5OCIvPgo8cGF0aCBkPSJNNDcuMjc5NSAzM1YyOC4zNTU1SDQ3LjIxMzFMNDUuODEwOCAyOS4zNDc3VjI4LjM5ODRMNDcuMjgzNSAyNy4zNjMzSDQ4LjI4NzRWMzNINDcuMjc5NVpNNTIuMDQ3MyAzM1YzMS45MThINDkuMjg5NVYzMS4wOTM4QzUwLjAyIDI5LjgyNDIgNTAuODIwOCAyOC41MjczIDUxLjU4NjQgMjcuMzYzM0g1My4wMTIyVjMxLjA4NTlINTMuNzdWMzEuOTE4SDUzLjAxMjJWMzNINTIuMDQ3M1pNNTAuMjI3IDMxLjEwOTRINTIuMDYzVjI4LjE2OEg1Mi4wMDQ0QzUxLjQyNjIgMjkuMDUwOCA1MC43NzM5IDMwLjA5MzggNTAuMjI3IDMxLjA1MDhWMzEuMTA5NFpNNTUuMTM5MyAyOS4zNDc3QzU0Ljc4MzkgMjkuMzQ3NyA1NC41MTgyIDI5LjA3NDIgNTQuNTE4MiAyOC43MzA1QzU0LjUxODIgMjguMzgyOCA1NC43ODM5IDI4LjExMzMgNTUuMTM5MyAyOC4xMTMzQzU1LjQ5ODcgMjguMTEzMyA1NS43NjA0IDI4LjM4MjggNTUuNzYwNCAyOC43MzA1QzU1Ljc2MDQgMjkuMDc0MiA1NS40OTg3IDI5LjM0NzcgNTUuMTM5MyAyOS4zNDc3Wk01NS4xMzkzIDMyLjI0NjFDNTQuNzgzOSAzMi4yNDYxIDU0LjUxODIgMzEuOTc2NiA1NC41MTgyIDMxLjYyODlDNTQuNTE4MiAzMS4yODEyIDU0Ljc4MzkgMzEuMDExNyA1NS4xMzkzIDMxLjAxMTdDNTUuNDk4NyAzMS4wMTE3IDU1Ljc2MDQgMzEuMjgxMiA1NS43NjA0IDMxLjYyODlDNTUuNzYwNCAzMS45NzY2IDU1LjQ5ODcgMzIuMjQ2MSA1NS4xMzkzIDMyLjI0NjFaTTU2LjY2ODggMzNWMzIuMzIwM0w1OC41MjA0IDMwLjQyOTdDNTkuMjg2IDI5LjY1NjIgNTkuNTAwOSAyOS4zNzExIDU5LjUwMDkgMjguOTM3NVYyOC45MjU4QzU5LjUwMDkgMjguNDA2MiA1OS4xNDU0IDI4LjAzMTIgNTguNTU5NSAyOC4wMzEyQzU3Ljk2MTggMjguMDMxMiA1Ny41NTk1IDI4LjQyNTggNTcuNTU5NSAyOS4wMDc4TDU3LjU1NTUgMjkuMDIzNEw1Ni42MTggMjkuMDE5NUw1Ni42MTQxIDI5LjAwNzhDNTYuNjE0MSAyNy45NTcgNTcuNDM0NSAyNy4yMjI3IDU4LjYxMDIgMjcuMjIyN0M1OS43MDc5IDI3LjIyMjcgNjAuNDk3IDI3Ljg5MDYgNjAuNDk3IDI4LjgzOThWMjguODUxNkM2MC40OTcgMjkuNDkyMiA2MC4xODg0IDMwIDU5LjE2MSAzMC45ODgzTDU4LjAzMjEgMzIuMDgyVjMyLjE2NDFINjAuNTgyOVYzM0g1Ni42Njg4Wk02My4zNTg1IDMzLjE0MDZDNjIuMDE4NiAzMy4xNDA2IDYxLjIxNCAzMi4wMDM5IDYxLjIxNCAzMC4xODM2VjMwLjE3NThDNjEuMjE0IDI4LjM1NTUgNjIuMDE4NiAyNy4yMjI3IDYzLjM1ODUgMjcuMjIyN0M2NC42OTgzIDI3LjIyMjcgNjUuNTEwOCAyOC4zNTU1IDY1LjUxMDggMzAuMTc1OFYzMC4xODM2QzY1LjUxMDggMzIuMDAzOSA2NC42OTgzIDMzLjE0MDYgNjMuMzU4NSAzMy4xNDA2Wk02My4zNTg1IDMyLjMyNDJDNjQuMDc3MiAzMi4zMjQyIDY0LjQ5NTIgMzEuNTE5NSA2NC40OTUyIDMwLjE4MzZWMzAuMTc1OEM2NC40OTUyIDI4LjgzOTggNjQuMDc3MiAyOC4wNDMgNjMuMzU4NSAyOC4wNDNDNjIuNjM5NyAyOC4wNDMgNjIuMjI5NiAyOC44Mzk4IDYyLjIyOTYgMzAuMTc1OFYzMC4xODM2QzYyLjIyOTYgMzEuNTE5NSA2Mi42Mzk3IDMyLjMyNDIgNjMuMzU4NSAzMi4zMjQyWiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTIwNy44MzQgMjYuNDk5OEMyMDcuODM0IDI2LjEzMTYgMjA4LjEzMiAyNS44MzMyIDIwOC41IDI1LjgzMzJIMjA5LjE2N0MyMDkuNTM1IDI1LjgzMzIgMjA5LjgzNCAyNi4xMzE2IDIwOS44MzQgMjYuNDk5OFYzMS44MzI2QzIwOS44MzQgMzIuMjAwOCAyMDkuNTM1IDMyLjQ5OTIgMjA5LjE2NyAzMi40OTkySDIwOC41QzIwOC4xMzIgMzIuNDk5MiAyMDcuODM0IDMyLjIwMDggMjA3LjgzNCAzMS44MzI2VjI2LjQ5OThaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjExLjE2NyAyNS4xNjY2QzIxMS4xNjcgMjQuNzk4NCAyMTEuNDY1IDI0LjUgMjExLjgzMyAyNC41SDIxMi41QzIxMi44NjggMjQuNSAyMTMuMTY3IDI0Ljc5ODQgMjEzLjE2NyAyNS4xNjY2VjMxLjgzMjZDMjEzLjE2NyAzMi4yMDA4IDIxMi44NjggMzIuNDk5MiAyMTIuNSAzMi40OTkySDIxMS44MzNDMjExLjQ2NSAzMi40OTkyIDIxMS4xNjcgMzIuMjAwOCAyMTEuMTY3IDMxLjgzMjZWMjUuMTY2NloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0yMDQuNTAxIDI4LjgzMjlDMjA0LjUwMSAyOC40NjQ3IDIwNC43OTkgMjguMTY2MyAyMDUuMTY3IDI4LjE2NjNIMjA1LjgzNEMyMDYuMjAyIDI4LjE2NjMgMjA2LjUwMSAyOC40NjQ3IDIwNi41MDEgMjguODMyOVYzMS44MzI2QzIwNi41MDEgMzIuMjAwOCAyMDYuMjAyIDMyLjQ5OTIgMjA1LjgzNCAzMi40OTkySDIwNS4xNjdDMjA0Ljc5OSAzMi40OTkyIDIwNC41MDEgMzIuMjAwOCAyMDQuNTAxIDMxLjgzMjZWMjguODMyOVoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0yMDEuMTY4IDMwLjQ5OTRDMjAxLjE2OCAzMC4xMzEyIDIwMS40NjYgMjkuODMyOCAyMDEuODM0IDI5LjgzMjhIMjAyLjUwMUMyMDIuODY5IDI5LjgzMjggMjAzLjE2OCAzMC4xMzEyIDIwMy4xNjggMzAuNDk5NFYzMS44MzI2QzIwMy4xNjggMzIuMjAwOCAyMDIuODY5IDMyLjQ5OTIgMjAyLjUwMSAzMi40OTkySDIwMS44MzRDMjAxLjQ2NiAzMi40OTkyIDIwMS4xNjggMzIuMjAwOCAyMDEuMTY4IDMxLjgzMjZWMzAuNDk5NFoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0yMjUuMjQzIDMwLjQ0NjNDMjI2LjE4OSAyOS42MjkxIDIyNy41NzYgMjkuNjI5MSAyMjguNTIyIDMwLjQ0NjNDMjI4LjU3IDMwLjQ5MDIgMjI4LjU5OCAzMC41NTE4IDIyOC41OTkgMzAuNjE3MkMyMjguNjAxIDMwLjY4MjcgMjI4LjU3NSAzMC43NDYxIDIyOC41MjkgMzAuNzkyTDIyNy4wNDcgMzIuMzE4NEMyMjcuMDA0IDMyLjM2MzIgMjI2Ljk0NCAzMi4zODg3IDIyNi44ODIgMzIuMzg4N0MyMjYuODIxIDMyLjM4ODYgMjI2Ljc2MiAzMi4zNjMyIDIyNi43MTggMzIuMzE4NEwyMjUuMjM2IDMwLjc5MkMyMjUuMTkgMzAuNzQ2MSAyMjUuMTY1IDMwLjY4MjcgMjI1LjE2NyAzMC42MTcyQzIyNS4xNjggMzAuNTUxOSAyMjUuMTk1IDMwLjQ5MDEgMjI1LjI0MyAzMC40NDYzWk0yMjMuMjQgMjguNjE5MUMyMjUuMjc5IDI2LjY4MyAyMjguNDM2IDI2LjY4MyAyMzAuNDc1IDI4LjYxOTFDMjMwLjUyMSAyOC42NjQ1IDIzMC41NDggMjguNzI2NyAyMzAuNTQ4IDI4Ljc5MkMyMzAuNTQ5IDI4Ljg1NzMgMjMwLjUyNCAyOC45MjA1IDIzMC40NzkgMjguOTY2OEwyMjkuNjIzIDI5Ljg0OTZDMjI5LjUzNCAyOS45Mzk4IDIyOS4zOTEgMjkuOTQyMyAyMjkuMyAyOS44NTQ1QzIyOC42MzEgMjkuMjM1NyAyMjcuNzYgMjguODkyNiAyMjYuODU3IDI4Ljg5MjZDMjI1Ljk1NCAyOC44OTMgMjI1LjA4NCAyOS4yMzYgMjI0LjQxNSAyOS44NTQ1QzIyNC4zMjQgMjkuOTQyMyAyMjQuMTgxIDI5LjkzOTggMjI0LjA5MiAyOS44NDk2TDIyMy4yMzYgMjguOTY2OEMyMjMuMTkxIDI4LjkyMDUgMjIzLjE2NiAyOC44NTczIDIyMy4xNjcgMjguNzkyQzIyMy4xNjcgMjguNzI2NiAyMjMuMTk0IDI4LjY2NDUgMjIzLjI0IDI4LjYxOTFaTTIyMS4yMzggMjYuNzk0OUMyMjQuMzY2IDIzLjczNTQgMjI5LjMgMjMuNzM1NCAyMzIuNDI3IDI2Ljc5NDlDMjMyLjQ3MyAyNi44NDAzIDIzMi40OTggMjYuOTAyMSAyMzIuNDk5IDI2Ljk2NjhDMjMyLjQ5OSAyNy4wMzE2IDIzMi40NzQgMjcuMDk0NiAyMzIuNDI5IDI3LjE0MDZMMjMxLjU3MiAyOC4wMjM0QzIzMS40ODQgMjguMTE0MSAyMzEuMzQgMjguMTE1NSAyMzEuMjUxIDI4LjAyNjRDMjMwLjA1OSAyNi44NyAyMjguNDc3IDI2LjIyNDcgMjI2LjgzMyAyNi4yMjQ2QzIyNS4xODggMjYuMjI0NyAyMjMuNjA3IDI2Ljg3MDEgMjIyLjQxNiAyOC4wMjY0QzIyMi4zMjYgMjguMTE1OCAyMjIuMTgyIDI4LjExNDMgMjIyLjA5MyAyOC4wMjM0TDIyMS4yMzYgMjcuMTQwNkMyMjEuMTkxIDI3LjA5NDYgMjIxLjE2NiAyNy4wMzE2IDIyMS4xNjcgMjYuOTY2OEMyMjEuMTY3IDI2LjkwMjEgMjIxLjE5MyAyNi44NDAzIDIyMS4yMzggMjYuNzk0OVoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIG9wYWNpdHk9IjAuMzUiIGQ9Ik0yNDMuNDk5IDI1SDI1NC40OTlDMjU1Ljg4IDI1IDI1Ni45OTkgMjYuMTE5MyAyNTYuOTk5IDI3LjVWMzAuNUMyNTYuOTk5IDMxLjg4MDcgMjU1Ljg4IDMzIDI1NC40OTkgMzNIMjQzLjQ5OUMyNDIuMTE4IDMzIDI0MC45OTkgMzEuODgwNyAyNDAuOTk5IDMwLjVWMjcuNUMyNDAuOTk5IDI2LjExOTMgMjQyLjExOCAyNSAyNDMuNDk5IDI1WiIgc3Ryb2tlPSJibGFjayIvPgo8cGF0aCBvcGFjaXR5PSIwLjQiIGQ9Ik0yNTguNDk5IDI3LjVWMzAuNUMyNTkuMTA1IDMwLjI0NTkgMjU5LjQ5OSAyOS42NTQ5IDI1OS40OTkgMjlDMjU5LjQ5OSAyOC4zNDUxIDI1OS4xMDUgMjcuNzU0MSAyNTguNDk5IDI3LjVaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQyLjQ5OSAyNy41QzI0Mi40OTkgMjYuOTQ3NyAyNDIuOTQ3IDI2LjUgMjQzLjQ5OSAyNi41SDI1NC40OTlDMjU1LjA1MSAyNi41IDI1NS40OTkgMjYuOTQ3NyAyNTUuNDk5IDI3LjVWMzAuNUMyNTUuNDk5IDMxLjA1MjMgMjU1LjA1MSAzMS41IDI1NC40OTkgMzEuNUgyNDMuNDk5QzI0Mi45NDcgMzEuNSAyNDIuNDk5IDMxLjA1MjMgMjQyLjQ5OSAzMC41VjI3LjVaIiBmaWxsPSJibGFjayIvPgo8ZyBvcGFjaXR5PSIwLjgiPgo8cmVjdCB4PSI5OCIgeT0iNTcwIiB3aWR0aD0iOTAiIGhlaWdodD0iNCIgcng9IjIiIGZpbGw9IiMwRjEyMTgiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTpkYXJrZW4iLz4KPC9nPgo8L2c+CjxyZWN0IHg9IjEwMiIgeT0iMjAiIHdpZHRoPSI4MyIgaGVpZ2h0PSIyMiIgcng9IjExIiBmaWxsPSIjMjQyNjJEIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImJnYmx1cl8xXzFfNzUyX2NsaXBfcGF0aCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMy45NDcyNSAzLjk0NzI1KSI+PHBhdGggZD0iTTEyIDM2QzEyIDIyLjc0NTIgMjIuNzQ1MiAxMiAzNiAxMkgyNTBDMjYzLjI1NSAxMiAyNzQgMjIuNzQ1MiAyNzQgMzZWODJIMTJWMzZaIi8+CjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJjbGlwMF8xXzc1MiI+CjxyZWN0IHg9IjEyIiB5PSIxMiIgd2lkdGg9IjI2MiIgaGVpZ2h0PSI1NjgiIHJ4PSIzMiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K";
2
+ export {
3
+ M as default
4
+ };
@@ -48,7 +48,7 @@ const o = `.control-shadow-wrapper:has(.button) {
48
48
  }
49
49
 
50
50
  .e2e-text-insert-controls .control-shadow-wrapper:not(:last-of-type) {
51
- margin-right: 16px;
51
+ margin-right: 6px;
52
52
  }
53
53
 
54
54
  .flat-white > .button {
@@ -32,16 +32,6 @@ ue-stripe-thumb:hover:not(.disabled),
32
32
  padding: 0 16px 16px;
33
33
  grid-row-gap: 16px;
34
34
  }
35
-
36
- /* TODO: will be removed after we find another way to hide stripo custom modules */
37
- #moduleTab_tab1,
38
- button[aria-label="Default Modules"],
39
- button[aria-controls="moduleTab_tab1_content"],
40
- #moduleTab_tab2,
41
- button[aria-label="Pre-Built AMP"],
42
- button[aria-controls="moduleTab_tab2_content"] {
43
- display: none !important;
44
- }
45
35
  `;
46
36
  export {
47
37
  o as default
@@ -64,7 +64,7 @@ ue-control-panel,
64
64
 
65
65
  .control-panel-header {
66
66
  grid-template-columns: repeat(12, 1fr);
67
- padding: 0;
67
+ padding: 16px 0px 16px 16px;
68
68
  }
69
69
 
70
70
  .control-panel-header > * {
@@ -64,6 +64,13 @@ const s = o("guido-config", {
64
64
  var e;
65
65
  return ((e = i.config) == null ? void 0 : e.compiler) ?? null;
66
66
  },
67
+ /**
68
+ * Get the callbacks configuration
69
+ */
70
+ callbacks: (i) => {
71
+ var e;
72
+ return ((e = i.config) == null ? void 0 : e.callbacks) ?? null;
73
+ },
67
74
  /**
68
75
  * Get the template ID
69
76
  */
@@ -13,6 +13,7 @@ const o = e("guidoEditor", {
13
13
  }),
14
14
  getters: {
15
15
  // Middle Slot
16
+ isEditorToolbarVisible: (i) => !i.isVersionHistoryOpen && !i.isPreviewModeOpen,
16
17
  isUndoButtonDisabled: (i) => i.loadingStatus || i.isPreviewModeOpen,
17
18
  isRedoButtonDisabled: (i) => i.loadingStatus || i.isPreviewModeOpen,
18
19
  isCodeEditorButtonDisabled: (i) => i.loadingStatus || i.isPreviewModeOpen,
@@ -1,74 +1,77 @@
1
1
  import { productPairs as w } from "../extensions/Blocks/Items/enums/productEnums.js";
2
- function M(H) {
3
- const m = H.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), $ = new DOMParser().parseFromString(m, "text/html"), C = w.PAIRS_FOR_EXTENSION;
4
- Object.entries(C).forEach(([n, d]) => {
2
+ function P(k) {
3
+ const m = k.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), $ = new DOMParser().parseFromString(m, "text/html"), R = w.PAIRS_FOR_EXTENSION;
4
+ Object.entries(R).forEach(([n, l]) => {
5
5
  $.querySelectorAll(".ins-product-td").forEach((o) => {
6
- const h = o.getAttribute("data-number") || "1", _ = o.getAttribute("data-type") || "CART_ITEMS";
6
+ const E = o.getAttribute("data-number") || "1", b = o.getAttribute("data-type") || "CART_ITEMS";
7
7
  o.querySelectorAll(`[product-attr="${n}"]`).forEach((e) => {
8
8
  var y;
9
- const b = e.getAttribute("data-type") || _, u = e.getAttribute("data-number") || h, p = d[b];
9
+ const T = e.getAttribute("data-type") || b, u = e.getAttribute("data-number") || E, p = l[T];
10
10
  if (p)
11
11
  switch (n) {
12
12
  case "imageSrc": {
13
- let t = null, i = null;
14
- if (e.tagName === "IMG" ? (t = e, i = t.closest("a")) : (t = e.querySelector("img"), i = e.querySelector("a") || e.closest("a")), !t)
13
+ let t = null, c = null;
14
+ if (e.tagName === "IMG" ? (t = e, c = t.closest("a")) : (t = e.querySelector("img"), c = e.querySelector("a") || e.closest("a")), !t)
15
15
  break;
16
- const c = p.DEFAULT, a = p.ATTR;
17
- if (c && t.src) {
16
+ const i = p.DEFAULT, a = p.ATTR;
17
+ if (i && t.src) {
18
18
  const r = t.src;
19
- c.some((l) => {
20
- const s = l.split("/").pop() || "", F = r.split("/").pop() || "";
21
- return r.includes(l) || r.includes(s) || F === s;
19
+ i.some((d) => {
20
+ const s = d.split("/").pop() || "", _ = r.split("/").pop() || "";
21
+ return r.includes(d) || r.includes(s) || _ === s;
22
22
  }) && (t.src = `{{${a}_${u}}}`);
23
23
  }
24
- if (i) {
25
- const r = (y = C.itemLink) == null ? void 0 : y[b];
24
+ if (c) {
25
+ const r = (y = R.itemLink) == null ? void 0 : y[T];
26
26
  if (r) {
27
- const f = r.HREF, l = r.DEFAULT_HREF || "#!", s = i.href;
28
- (s === "#" || s === "" || s.endsWith("#!") || s.endsWith(l) || s === `${window.location.href}${l}` || !s || s === window.location.href) && (i.href = `{{${f}_${u}}}`);
27
+ const f = r.HREF, d = r.DEFAULT_HREF || "#!", s = c.href;
28
+ (s === "#" || s === "" || s.endsWith("#!") || s.endsWith(d) || s === `${window.location.href}${d}` || !s || s === window.location.href) && (c.href = `{{${f}_${u}}}`);
29
29
  }
30
30
  }
31
31
  break;
32
32
  }
33
33
  case "name": {
34
- const t = p, i = t.ATTR, c = t.DEFAULT_HREF || "#!", a = t.HREF;
35
- e.textContent && (e.textContent = `{{${i}_${u}}}`);
34
+ const t = p, c = t.ATTR, i = t.DEFAULT_HREF || "#!", a = t.HREF;
35
+ e.textContent && (e.textContent = `{{${c}_${u}}}`);
36
36
  const r = e.closest("a") || (e.tagName === "A" ? e : null);
37
37
  if (r && a) {
38
- const f = r.href, l = `${window.location.href}${c}`;
39
- (f === l || f.endsWith(c)) && (r.href = `{{${a}_${u}}}`);
38
+ const f = r.href, d = `${window.location.href}${i}`;
39
+ (f === d || f.endsWith(i)) && (r.href = `{{${a}_${u}}}`);
40
40
  }
41
41
  break;
42
42
  }
43
43
  case "price":
44
44
  case "originalPrice": {
45
- const t = p, c = e.getAttribute("data-formated") === "true", a = e.getAttribute("data-curency") || "before", r = c ? t.PRICE_FORMATTED : t.PRICE, f = t.CURRENCY;
46
- let l = `{{${r}_${u}}}`;
47
- if (f) {
48
- const s = `{{${f}_${u}}}`;
49
- l = a === "after" ? `${l} ${s}` : `${s} ${l}`;
45
+ const t = p, c = e.getAttribute("data-formated"), i = e.getAttribute("data-single_price"), a = c === "true", r = i === "true", f = e.getAttribute("data-curency") || "before";
46
+ let d;
47
+ r ? d = a ? t.SINGLE_PRICE_FORMATTED : t.SINGLE_PRICE : d = a ? t.PRICE_FORMATTED : t.PRICE;
48
+ const s = t.CURRENCY;
49
+ let _ = `{{${d}_${u}}}`;
50
+ if (s) {
51
+ const H = `{{${s}_${u}}}`;
52
+ _ = f === "after" ? `${_} ${H}` : `${H} ${_}`;
50
53
  }
51
- e.textContent = l;
54
+ e.textContent = _;
52
55
  break;
53
56
  }
54
57
  case "quantity": {
55
- const t = p, i = t.ATTR, c = t.DEFAULT;
56
- e.textContent && e.textContent.trim() === c && (e.textContent = `{{${i}_${u}}}`);
58
+ const t = p, c = t.ATTR, i = t.DEFAULT;
59
+ e.textContent && e.textContent.trim() === i && (e.textContent = `{{${c}_${u}}}`);
57
60
  break;
58
61
  }
59
62
  case "button": {
60
- const t = p, i = t.HREF, c = t.DEFAULT_HREF || "#!", a = e.tagName === "A" ? e : e.querySelector("a");
63
+ const t = p, c = t.HREF, i = t.DEFAULT_HREF || "#!", a = e.tagName === "A" ? e : e.querySelector("a");
61
64
  if (a) {
62
- const r = a.href || "", f = `${window.location.href}${c}`;
63
- (r === "" || r === "#" || r === f || r.endsWith(c) || r.endsWith("#!") || r === window.location.href) && (a.href = `{{${i}_${u}}}`);
65
+ const r = a.href || "", f = `${window.location.href}${i}`;
66
+ (r === "" || r === "#" || r === f || r.endsWith(i) || r.endsWith("#!") || r === window.location.href) && (a.href = `{{${c}_${u}}}`);
64
67
  }
65
68
  break;
66
69
  }
67
70
  case "itemLink": {
68
- const t = p, i = t.HREF, c = t.DEFAULT_HREF || "#!", a = e;
71
+ const t = p, c = t.HREF, i = t.DEFAULT_HREF || "#!", a = e;
69
72
  if (a.href) {
70
- const r = a.href, f = `${window.location.href}${c}`;
71
- (r === f || r.endsWith(c)) && (a.href = `{{${i}_${u}}}`);
73
+ const r = a.href, f = `${window.location.href}${i}`;
74
+ (r === f || r.endsWith(i)) && (a.href = `{{${c}_${u}}}`);
72
75
  }
73
76
  break;
74
77
  }
@@ -83,21 +86,21 @@ function M(H) {
83
86
  });
84
87
  });
85
88
  });
86
- const S = $.querySelectorAll(".ins-product-td"), R = [];
87
- S.forEach((n) => {
88
- const d = n.getAttribute("data-type") || "CART_ITEMS", A = n.getAttribute("data-number") || "1", o = n.getAttribute("data-nodup"), h = n.outerHTML;
89
- R.push({
89
+ const F = $.querySelectorAll(".ins-product-td"), S = [];
90
+ F.forEach((n) => {
91
+ const l = n.getAttribute("data-type") || "CART_ITEMS", A = n.getAttribute("data-number") || "1", o = n.getAttribute("data-nodup"), E = n.outerHTML;
92
+ S.push({
90
93
  element: n,
91
- outerHtml: h,
92
- type: d,
94
+ outerHtml: E,
95
+ type: l,
93
96
  number: A,
94
97
  nodup: o || void 0
95
98
  });
96
99
  });
97
- let E = $.body.innerHTML;
98
- R.reverse().forEach(({ outerHtml: n, type: d, number: A }) => {
100
+ let h = $.body.innerHTML;
101
+ S.reverse().forEach(({ outerHtml: n, type: l, number: A }) => {
99
102
  let o = "";
100
- switch (d) {
103
+ switch (l) {
101
104
  case "CART_ITEMS":
102
105
  o = "ins_apr_total_product_kind";
103
106
  break;
@@ -109,28 +112,28 @@ function M(H) {
109
112
  break;
110
113
  }
111
114
  if (o) {
112
- const _ = parseInt(A) - 1, b = `${`{% if ${o} > ${_} %}`}${n}{% endif %}`;
113
- E = E.replace(n, b);
115
+ const b = parseInt(A) - 1, T = `${`{% if ${o} > ${b} %}`}${n}{% endif %}`;
116
+ h = h.replace(n, T);
114
117
  }
115
118
  });
116
- const k = $.querySelectorAll('[product-attr="originalPrice"][data-type="CART_ITEMS"]'), T = [];
117
- return k.forEach((n) => {
118
- const d = n.getAttribute("data-number"), A = n.getAttribute("data-type");
119
- if (!d || A !== "CART_ITEMS")
119
+ const I = $.querySelectorAll('[product-attr="originalPrice"][data-type="CART_ITEMS"]'), g = [];
120
+ return I.forEach((n) => {
121
+ const l = n.getAttribute("data-number"), A = n.getAttribute("data-type");
122
+ if (!l || A !== "CART_ITEMS")
120
123
  return;
121
124
  const o = n.closest(".product-original-price-class");
122
125
  if (o) {
123
- const h = o.outerHTML;
124
- T.some((g) => g.tdOuterHtml === h) || T.push({ tdOuterHtml: h, number: d });
126
+ const E = o.outerHTML;
127
+ g.some((C) => C.tdOuterHtml === E) || g.push({ tdOuterHtml: E, number: l });
125
128
  }
126
- }), T.reverse().forEach(({ tdOuterHtml: n, number: d }) => {
127
- const A = `{% if ins_apr_price_${d} != ins_apr_originalprice_${d} %}`;
128
- if (!E.includes(A) && !n.includes("{% if")) {
129
- const h = `${A}${n}{% endif %}`;
130
- E = E.replace(n, h);
129
+ }), g.reverse().forEach(({ tdOuterHtml: n, number: l }) => {
130
+ const A = `{% if ins_apr_price_${l} != ins_apr_originalprice_${l} %}`;
131
+ if (!h.includes(A) && !n.includes("{% if")) {
132
+ const E = `${A}${n}{% endif %}`;
133
+ h = h.replace(n, E);
131
134
  }
132
- }), E.replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
135
+ }), h.replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
133
136
  }
134
137
  export {
135
- M as pairProductVariables
138
+ P as pairProductVariables
136
139
  };
@@ -1,29 +1,29 @@
1
- import { useActionsApi as S } from "../composables/useActionsApi.js";
2
- import { useHtmlCompiler as b } from "../composables/useHtmlCompiler.js";
3
- import { useDynamicContentStore as f } from "../stores/dynamic-content.js";
4
- import { useUnsubscribeStore as C } from "../stores/unsubscribe.js";
5
- const z = () => {
6
- const i = f(), t = C(), { getCompiledEmail: o, getTemplateData: s } = S(), { compileHtml: n } = b();
1
+ import { useActionsApi as b } from "../composables/useActionsApi.js";
2
+ import { useHtmlCompiler as f } from "../composables/useHtmlCompiler.js";
3
+ import { useDynamicContentStore as C } from "../stores/dynamic-content.js";
4
+ import { useUnsubscribeStore as T } from "../stores/unsubscribe.js";
5
+ const P = () => {
6
+ const i = C(), t = T(), { getCompiledEmail: o, getTemplateData: s, editorSave: n } = b(), { compileHtml: a } = f();
7
7
  return {
8
8
  prepareTemplateDetails: async () => {
9
- const { html: a, ampHtml: m = "", ampErrors: r = [] } = await o({
9
+ const { html: r, ampHtml: m = "", ampErrors: c = [] } = await o({
10
10
  minimize: !0,
11
11
  resetDataSavedFlag: !1
12
- }), { html: c, css: l, syncModulesIds: p = [] } = await s(), { compiledHtml: u, stats: e, appliedRules: d } = n(a), g = i.getSelectedDynamicContentList;
13
- return console.debug("HTML Compilation Stats:", {
12
+ }), { html: l, css: p, syncModulesIds: u = [] } = await s(), { compiledHtml: d, stats: e, appliedRules: g } = a(r), S = i.getSelectedDynamicContentList;
13
+ return n(), console.debug("HTML Compilation Stats:", {
14
14
  originalSize: e.originalSize,
15
15
  compiledSize: e.compiledSize,
16
16
  reduction: `${e.reductionPercentage.toFixed(2)}%`,
17
- appliedRules: d,
17
+ appliedRules: g,
18
18
  executionTime: `${e.executionTime.toFixed(2)}ms`
19
19
  }), {
20
- dynamicContentList: g,
21
- compiledHtml: u,
22
- rawHtml: c,
23
- css: l,
20
+ dynamicContentList: S,
21
+ compiledHtml: d,
22
+ rawHtml: l,
23
+ css: p,
24
24
  ampHtml: m,
25
- ampErrors: r,
26
- modules: p,
25
+ ampErrors: c,
26
+ modules: u,
27
27
  recommendation: {
28
28
  campaignUrls: {},
29
29
  configs: {}
@@ -37,5 +37,5 @@ const z = () => {
37
37
  };
38
38
  };
39
39
  export {
40
- z as useTemplatePreparation
40
+ P as useTemplatePreparation
41
41
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "2.0.0",
3
+ "version": "2.1.0-beta.e6bf76b",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",
@@ -31,7 +31,7 @@
31
31
  "author": "",
32
32
  "license": "ISC",
33
33
  "dependencies": {
34
- "@stripoinc/ui-editor-extensions": "3.3.0",
34
+ "@stripoinc/ui-editor-extensions": "3.5.0",
35
35
  "@useinsider/design-system-vue": "0.14.20",
36
36
  "@vueuse/core": "11.3.0",
37
37
  "lodash-es": "4.17.21",
@@ -85,7 +85,7 @@
85
85
  },
86
86
  "guido": {
87
87
  "stripo": {
88
- "version": "2.47.0"
88
+ "version": "2.52.0"
89
89
  }
90
90
  }
91
91
  }
@@ -1,17 +0,0 @@
1
- import e from "./EmailHeaderInfo.vue2.js";
2
- import c from "../../../../_virtual/_plugin-vue2_normalizer.js";
3
- var r = function() {
4
- var t = this, s = t._self._c, a = t._self._setupProxy;
5
- return s("div", { staticClass: "d-f a-i-c j-c-s-b w-1" }, [s("div", { staticClass: "d-f a-i-c" }, [s("div", { staticClass: "b-c-49 bor-r-100 w-5-s h-5-s d-f a-i-c j-c-c" }, [s(a.InIcons, { attrs: { name: "line-menu-profile" } })], 1), s("div", { staticClass: "d-f f-d-c ml-2" }, [s("p", { staticClass: "t-c-53 f-w-600 f-s-1 l-h-1" }, [t._v(" " + t._s(a.senderName) + " ")]), s("p", { staticClass: "t-c-55 f-w-400 f-s-12 l-h-1" }, [t._v(" " + t._s(a.subject) + " ")])])])]);
6
- }, i = [], n = /* @__PURE__ */ c(
7
- e,
8
- r,
9
- i,
10
- !1,
11
- null,
12
- null
13
- );
14
- const o = n.exports;
15
- export {
16
- o as default
17
- };
@@ -1,20 +0,0 @@
1
- import { defineComponent as i, computed as s } from "vue";
2
- import { useConfig as c } from "../../../../composables/useConfig.js";
3
- import { useTranslations as d } from "../../../../composables/useTranslations.js";
4
- import { InIcons as u } from "@useinsider/design-system-vue";
5
- const g = /* @__PURE__ */ i({
6
- __name: "EmailHeaderInfo",
7
- setup(f) {
8
- const { config: n } = c(), r = d(), a = s(() => {
9
- var e, t, o;
10
- return ((o = (t = (e = n.value) == null ? void 0 : e.editor) == null ? void 0 : t.emailHeader) == null ? void 0 : o.senderName) || r("settings.sender-name");
11
- }), m = s(() => {
12
- var e, t, o;
13
- return ((o = (t = (e = n.value) == null ? void 0 : e.editor) == null ? void 0 : t.emailHeader) == null ? void 0 : o.subject) || r("email-editor.default-subject");
14
- });
15
- return { __sfc: !0, config: n, trans: r, senderName: a, subject: m, InIcons: u };
16
- }
17
- });
18
- export {
19
- g as default
20
- };
@@ -1,17 +0,0 @@
1
- function r(t) {
2
- if (!t)
3
- return null;
4
- const n = t.closest(".items-block-v2");
5
- return n ? n.querySelector("esd-config-block") : null;
6
- }
7
- function o(t, n = !1) {
8
- return t == null ? n : t === "1" || t === "true";
9
- }
10
- function e(t, n = "") {
11
- return t || n;
12
- }
13
- export {
14
- o as attributeToBoolean,
15
- e as attributeToString,
16
- r as getConfigBlock
17
- };
@@ -1,28 +0,0 @@
1
- import { configAttributes as i } from "../enums/productEnums.js";
2
- import { getConfigBlock as c, attributeToBoolean as u, attributeToString as a } from "./configBlockUtils.js";
3
- function l(r, t) {
4
- const e = c(r);
5
- if (!e)
6
- return;
7
- const o = e.getAttribute(i[t.attributeName]), n = t.converter(o);
8
- t.storeSetter(n);
9
- }
10
- function b(r, t, e = !1) {
11
- return {
12
- attributeName: r,
13
- storeSetter: t,
14
- converter: (o) => u(o, e)
15
- };
16
- }
17
- function s(r, t, e = "") {
18
- return {
19
- attributeName: r,
20
- storeSetter: t,
21
- converter: (o) => a(o, e)
22
- };
23
- }
24
- export {
25
- b as createBooleanSyncConfig,
26
- s as createStringSyncConfig,
27
- l as syncAttributeFromConfigBlock
28
- };
@@ -1,76 +0,0 @@
1
- import { useItemsBlockStore as e } from "../store/items-block.js";
2
- import { syncAttributeFromConfigBlock as r, createBooleanSyncConfig as i, createStringSyncConfig as s } from "./syncAttributeFromConfigBlock.js";
3
- function m(t) {
4
- const o = e(), n = i(
5
- "PRODUCT_NAME_TRIMMING",
6
- (c) => o.setNameTrimming(c),
7
- !1
8
- );
9
- r(t, n);
10
- }
11
- function f(t) {
12
- const o = e(), n = i(
13
- "PRODUCT_PRICE_HIDE_DISCOUNT",
14
- (c) => o.setHideDiscount(c),
15
- !1
16
- );
17
- r(t, n);
18
- }
19
- function R(t) {
20
- const o = e(), n = i(
21
- "PRODUCT_PRICE_FORMATTED",
22
- (c) => o.setFormattedPrice(c),
23
- !0
24
- );
25
- r(t, n);
26
- }
27
- function O(t) {
28
- const o = e(), n = s(
29
- "PRODUCT_PRICE_CURRENCY_SYMBOL",
30
- (c) => o.setCurrencySymbol(c),
31
- ""
32
- );
33
- r(t, n);
34
- }
35
- function _(t) {
36
- const o = e(), n = s(
37
- "PRODUCT_PRICE_CURRENCY_LOCATION",
38
- (c) => o.setCurrencyLocation(c),
39
- "0"
40
- );
41
- r(t, n);
42
- }
43
- function I(t) {
44
- const o = e(), n = s(
45
- "PRODUCT_BUTTON_LINK",
46
- (c) => o.setButtonLink(c),
47
- ""
48
- );
49
- r(t, n);
50
- }
51
- function T(t) {
52
- const o = e(), n = s(
53
- "PRODUCT_IMAGE_LINK",
54
- (c) => o.setImageLink(c),
55
- ""
56
- );
57
- r(t, n);
58
- }
59
- function y(t) {
60
- const o = e(), n = s(
61
- "PRODUCT_ORIGINAL_PRICE_CONTROL_ORIENTATION",
62
- (c) => o.setPriceOrientation(c),
63
- "horizontal"
64
- );
65
- r(t, n);
66
- }
67
- export {
68
- I as syncButtonLinkFromAttributes,
69
- _ as syncCurrencyLocationFromAttributes,
70
- O as syncCurrencySymbolFromAttributes,
71
- R as syncFormattedPriceFromAttributes,
72
- f as syncHideDiscountFromAttributes,
73
- T as syncImageLinkFromAttributes,
74
- m as syncNameTrimmingFromAttributes,
75
- y as syncPriceOrientationFromAttributes
76
- };
@@ -1,46 +0,0 @@
1
- import { ModificationDescription as p } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { configAttributes as t } from "../enums/productEnums.js";
3
- import { DefaultConfigValues as i } from "../enums/settingsEnums.js";
4
- import { useItemsBlockStore as s } from "../store/items-block.js";
5
- import { getConfigBlock as P } from "./configBlockUtils.js";
6
- function M(n, O) {
7
- const e = P(n);
8
- if (!e)
9
- return;
10
- const c = s(), {
11
- itemsType: r,
12
- itemIds: C,
13
- orientation: T,
14
- nameTrimming: _,
15
- hideDiscount: E,
16
- formattedPrice: R,
17
- currencySymbol: N,
18
- currencyLocation: m,
19
- priceOrientation: I,
20
- buttonLink: a,
21
- imageLink: f
22
- } = c, u = {
23
- "data-source": r,
24
- [t.TYPE]: r,
25
- [t.ITEMS_INDEX_SELECT_CONTROL_VALUE]: C,
26
- [t.ORIENTATION]: T,
27
- [t.PRODUCT_NAME_TRIMMING]: _ ? "1" : "0",
28
- [t.PRODUCT_PRICE_HIDE_DISCOUNT]: E ? "1" : "0",
29
- [t.PRODUCT_PRICE_FORMATTED]: R ? "1" : "0",
30
- [t.PRODUCT_PRICE_CURRENCY_SYMBOL]: N || "",
31
- [t.PRODUCT_PRICE_CURRENCY_LOCATION]: m || "0",
32
- [t.PRODUCT_ORIGINAL_PRICE_CONTROL_ORIENTATION]: I || "horizontal",
33
- [t.PRODUCT_BUTTON_LINK]: a || "",
34
- [t.PRODUCT_IMAGE_LINK]: f || "",
35
- [t.NAME_CONTROL_ENABLED]: i.productNameControlEnabled,
36
- [t.QUANTITY_CONTROL_ENABLED]: i.productQuantityControlEnabled,
37
- [t.PRICE_CONTROL_OPENED]: i.productPriceControlOpened
38
- };
39
- let o = O.getDocumentModifier().modifyHtml(e);
40
- Object.entries(u).forEach(([D, l]) => {
41
- o = o.setAttribute(D, l);
42
- }), o.apply(new p("Update config block attributes from control"));
43
- }
44
- export {
45
- M as updateConfigBlockAttributes
46
- };
@@ -1,23 +0,0 @@
1
- import { ImmutableHtmlElementNode, ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
- /**
3
- * Gets the esd-config-block element from the current node.
4
- * Searches within the closest .items-block-v2 container.
5
- * @param currentNode - The current node from the control (usually this.currentNode)
6
- * @returns The config block element or null if not found
7
- */
8
- export declare function getConfigBlock(currentNode: ImmutableHtmlNode | undefined): ImmutableHtmlElementNode | null;
9
- /**
10
- * Converts an attribute value to a boolean.
11
- * Handles string values '1', 'true', and null/undefined cases.
12
- * @param value - The attribute value (string or null)
13
- * @param defaultValue - Default value to return if value is null/undefined (default: false)
14
- * @returns The boolean value
15
- */
16
- export declare function attributeToBoolean(value: string | null, defaultValue?: boolean): boolean;
17
- /**
18
- * Gets a string attribute value with a default fallback.
19
- * @param value - The attribute value (string or null)
20
- * @param defaultValue - Default value to return if value is null/undefined (default: '')
21
- * @returns The string value or default
22
- */
23
- export declare function attributeToString(value: string | null, defaultValue?: string): string;
@@ -1,32 +0,0 @@
1
- import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
- import { configAttributes } from '../enums/productEnums';
3
- type StoreSetter<T> = (value: T) => void;
4
- interface SyncConfig<T> {
5
- attributeName: keyof typeof configAttributes;
6
- storeSetter: StoreSetter<T>;
7
- converter: (value: string | null) => T;
8
- }
9
- /**
10
- * Generic utility to sync an attribute value from esd-config-block to the store.
11
- * This makes attribute values mutable by syncing them from the DOM.
12
- * @param currentNode - The current node from the control (usually this.currentNode)
13
- * @param config - Configuration object with attribute name, store setter, and value converter
14
- */
15
- export declare function syncAttributeFromConfigBlock<T>(currentNode: ImmutableHtmlNode | undefined, config: SyncConfig<T>): void;
16
- /**
17
- * Helper to create a sync config for boolean attributes.
18
- * @param attributeName - The attribute name from configAttributes
19
- * @param storeSetter - The store setter function
20
- * @param defaultValue - Default value if attribute is not set (default: false)
21
- * @returns Sync configuration object
22
- */
23
- export declare function createBooleanSyncConfig(attributeName: keyof typeof configAttributes, storeSetter: StoreSetter<boolean>, defaultValue?: boolean): SyncConfig<boolean>;
24
- /**
25
- * Helper to create a sync config for string attributes.
26
- * @param attributeName - The attribute name from configAttributes
27
- * @param storeSetter - The store setter function
28
- * @param defaultValue - Default value if attribute is not set (default: '')
29
- * @returns Sync configuration object
30
- */
31
- export declare function createStringSyncConfig(attributeName: keyof typeof configAttributes, storeSetter: StoreSetter<string>, defaultValue?: string): SyncConfig<string>;
32
- export {};