@designcrowd/library.brand-page 5.18.6 → 5.18.7-ast-padding-1

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 (218) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DlYq1LAT.js → CreatedOnBrandCrowd-de-de-Cn8zNuGM.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BssRIQqn.js → CreatedOnBrandCrowd-en-us-CP8xAFc-.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BGF9pptH.js → CreatedOnBrandCrowd-es-es-Ds8NijwP.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-Caupqu2Z.js → CreatedOnBrandCrowd-fr-ca-BiVV_7lj.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-Caupqu2Z.js → CreatedOnBrandCrowd-fr-fr-BiVV_7lj.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-s9q4uJ4u.js → CreatedOnBrandCrowd-pt-br-CjjrYojo.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-s9q4uJ4u.js → CreatedOnBrandCrowd-pt-pt-CjjrYojo.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-UnYnZbA7.js → CreatedOnDcom-de-de-ChR5jvlP.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-rDv6H12L.js → CreatedOnDcom-en-us-C4rO1BMA.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-DKPLaT6o.js → CreatedOnDcom-es-es-DxGMS6JK.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-DAv34bG7.js → CreatedOnDcom-fr-ca-n31u4t7u.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DsOHnS8q.js → CreatedOnDcom-fr-fr-gwdsX7YV.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-DpjDBCLj.js → CreatedOnDcom-pt-br-iZjFp--s.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-rFG0unf1.js → CreatedOnDcom-pt-pt-B3Z3-RLC.js} +1 -1
  15. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +4 -0
  16. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +8 -4
  17. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.d.ts +4 -0
  18. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.js +4 -0
  19. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.d.ts +4 -0
  20. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +4 -1
  21. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.d.ts +4 -0
  22. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.js +4 -0
  23. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.d.ts +4 -0
  24. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.js +4 -1
  25. package/lib/src/brand-page/components/video/Video.mixin.d.ts +4 -0
  26. package/lib/src/brand-page/components/video/Video.mixin.js +4 -0
  27. package/lib/src/brand-page/constants/misc.constants.d.ts +26 -0
  28. package/lib/src/brand-page/constants/misc.constants.js +42 -0
  29. package/lib/src/brand-page/models/content.model.d.ts +2 -0
  30. package/lib/src/brand-page/utils/content-padding.util.d.ts +13 -0
  31. package/lib/src/brand-page/utils/content-padding.util.js +10 -0
  32. package/lib/src/brand-page/utils/index.d.ts +1 -0
  33. package/lib/src/brand-page/utils/index.js +1 -0
  34. package/lib/src/brand-page/utils/migration/migration-17.d.ts +2 -0
  35. package/lib/src/brand-page/utils/migration/migration-17.js +48 -0
  36. package/lib/src/brand-page/utils/migration.util.js +10 -0
  37. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +7 -2
  38. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +2 -0
  39. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +19 -2
  40. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +8 -0
  41. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +7 -2
  42. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +1 -0
  43. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +104 -2
  44. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +5 -0
  45. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +7 -2
  46. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +3 -0
  47. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.js +11 -0
  48. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +7 -2
  49. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +7 -2
  50. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +7 -2
  51. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +7 -2
  52. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +9 -0
  53. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +21 -1
  54. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +20 -0
  55. package/lib/src/brand-page-maker/composables/useEventTracker.js +17 -0
  56. package/lib/src/brand-page-maker/composables/useUndoRedoFlag.d.ts +17 -0
  57. package/lib/src/brand-page-maker/composables/useUndoRedoFlag.js +25 -0
  58. package/lib/src/brand-page-maker/constants/config-settings-constant.js +38 -0
  59. package/lib/src/brand-page-maker/convertors/about-display-style.convertor.js +9 -1
  60. package/lib/src/brand-page-maker/convertors/banner-align-display-style.convertor.js +7 -1
  61. package/lib/src/brand-page-maker/convertors/contact-layout-style.convertor.js +6 -1
  62. package/lib/src/brand-page-maker/models/content-settings.js +36 -2
  63. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +12 -0
  64. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +41 -2
  65. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +307 -5
  66. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +86 -0
  67. package/lib/src/brand-page-maker/stores/history/history-store.js +501 -0
  68. package/lib/src/brand-page-maker/stores/logo-store/logo-store.d.ts +1 -0
  69. package/lib/src/brand-page-maker/stores/user/user-store.js +1 -0
  70. package/lib/src/bundled-translations-BUyt4scr.js +175 -0
  71. package/lib/src/bundled-translations.de-DE-DEw_OVai.js +175 -0
  72. package/lib/src/bundled-translations.es-ES-CFKWmkgY.js +175 -0
  73. package/lib/src/bundled-translations.fr-CA-DCl5LJS4.js +175 -0
  74. package/lib/src/bundled-translations.fr-FR-B5BjgllA.js +175 -0
  75. package/lib/src/bundled-translations.pt-BR-5PWpMPuM.js +175 -0
  76. package/lib/src/bundled-translations.pt-PT-B9_wN0HR.js +175 -0
  77. package/lib/src/bundles/bundled-translations.de-DE.json +5 -1
  78. package/lib/src/bundles/bundled-translations.es-ES.json +5 -1
  79. package/lib/src/bundles/bundled-translations.fr-CA.json +5 -1
  80. package/lib/src/bundles/bundled-translations.fr-FR.json +5 -1
  81. package/lib/src/bundles/bundled-translations.json +5 -1
  82. package/lib/src/bundles/bundled-translations.pt-BR.json +5 -1
  83. package/lib/src/bundles/bundled-translations.pt-PT.json +5 -1
  84. package/lib/src/constants/ui.d.ts +1 -0
  85. package/lib/src/css/library.brand-page-brandCrowd.min.css +128 -131
  86. package/lib/src/css/library.brand-page-brandPage.min.css +128 -132
  87. package/lib/src/css/library.brand-page-designCom.min.css +128 -131
  88. package/lib/src/css/library.brand-page-preview.min.css +128 -131
  89. package/lib/src/index.mjs +1 -1
  90. package/lib/src/{lib-ngdDRkSL.js → lib-CIj_C38s.js} +36378 -35591
  91. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +104 -2
  92. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +5 -0
  93. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.stories.js +1 -0
  94. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +37 -2
  95. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +28 -0
  96. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +19 -2
  97. package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.d.ts +3 -0
  98. package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.js +19 -2
  99. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +12 -0
  100. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.js +18 -8
  101. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +67 -0
  102. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.js +6 -0
  103. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.js +9 -0
  104. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +12 -0
  105. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +19 -0
  106. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +11 -0
  107. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +10 -2
  108. package/lib/src/shared/logo-settings/store/editable-logo-store.d.ts +5 -1
  109. package/lib/src/shared/logo-settings/store/editable-logo-store.js +31 -0
  110. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +40 -2
  111. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +24 -2
  112. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +23 -2
  113. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +16 -0
  114. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +23 -2
  115. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +16 -0
  116. package/lib/src/utils/minify-brand-page-metadata.js +11 -1
  117. package/package.json +1 -1
  118. package/src/brand-page/components/about-section/AboutSection.vue +10 -4
  119. package/src/brand-page/components/banner-section/BannerSection.vue +11 -4
  120. package/src/brand-page/components/booking-section/BookingSection.vue +11 -3
  121. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +12 -6
  122. package/src/brand-page/components/contact-form/ContactForm.vue +105 -104
  123. package/src/brand-page/components/image-gallery/ImageGallery.mixin.ts +5 -0
  124. package/src/brand-page/components/image-gallery/ImageGallery.vue +1 -1
  125. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +8 -1
  126. package/src/brand-page/components/mailing-list/MailingList.vue +1 -1
  127. package/src/brand-page/components/map/Map.vue +5 -1
  128. package/src/brand-page/components/payment/request-payment/RequestPayment.mixin.ts +5 -0
  129. package/src/brand-page/components/payment/request-payment/RequestPayment.vue +1 -0
  130. package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +8 -1
  131. package/src/brand-page/components/payment/support-me/SupportMe.vue +1 -0
  132. package/src/brand-page/components/shop/Shop.vue +7 -2
  133. package/src/brand-page/components/social-links/SocialLinks.vue +7 -3
  134. package/src/brand-page/components/text/Text.vue +12 -5
  135. package/src/brand-page/components/text-media-section/TextMediaSection.vue +11 -3
  136. package/src/brand-page/components/video/Video.mixin.ts +5 -0
  137. package/src/brand-page/components/video/Video.vue +1 -1
  138. package/src/brand-page/constants/misc.constants.ts +48 -0
  139. package/src/brand-page/models/content.model.ts +2 -0
  140. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +9 -3
  141. package/src/brand-page/utils/content-padding.util.test.ts +29 -0
  142. package/src/brand-page/utils/content-padding.util.ts +13 -0
  143. package/src/brand-page/utils/index.ts +1 -0
  144. package/src/brand-page/utils/migration/migration-17.ts +65 -0
  145. package/src/brand-page/utils/migration.util.test.ts +195 -0
  146. package/src/brand-page/utils/migration.util.ts +11 -0
  147. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +9 -0
  148. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +2 -3
  149. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +1 -0
  150. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +5 -0
  151. package/src/brand-page-maker/components/cookie-collection/CookieSettings.vue +18 -17
  152. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.ts +13 -0
  153. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.vue +26 -3
  154. package/src/brand-page-maker/components/quick-link-bar/RedoButton.vue +66 -0
  155. package/src/brand-page-maker/components/quick-link-bar/UndoButton.vue +66 -0
  156. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.de-DE.json +6 -4
  157. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.es-ES.json +6 -4
  158. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-CA.json +6 -4
  159. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-FR.json +6 -4
  160. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.json +3 -1
  161. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.pt-BR.json +6 -4
  162. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.pt-PT.json +6 -4
  163. package/src/brand-page-maker/components/quick-link-bar/undo-redo-buttons.test.ts +116 -0
  164. package/src/brand-page-maker/components/save-contact/SaveContact.vue +12 -19
  165. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +10 -0
  166. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +28 -1
  167. package/src/brand-page-maker/composables/useEventTracker.ts +29 -0
  168. package/src/brand-page-maker/composables/useUndoRedoFlag.ts +30 -0
  169. package/src/brand-page-maker/constants/config-settings-constant.ts +44 -0
  170. package/src/brand-page-maker/convertors/about-display-style.convertor.ts +10 -0
  171. package/src/brand-page-maker/convertors/banner-align-display-style.convertor.ts +8 -0
  172. package/src/brand-page-maker/convertors/contact-layout-style.convertor.test.ts +50 -0
  173. package/src/brand-page-maker/convertors/contact-layout-style.convertor.ts +8 -0
  174. package/src/brand-page-maker/models/content-settings.ts +38 -2
  175. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +334 -0
  176. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +371 -4
  177. package/src/brand-page-maker/stores/history/history-store.test.ts +1120 -0
  178. package/src/brand-page-maker/stores/history/history-store.ts +666 -0
  179. package/src/brand-page-maker/stores/logo-store/logo-store.ts +5 -0
  180. package/src/brand-page-maker/stores/user/user-store.ts +1 -0
  181. package/src/bundles/bundled-translations.de-DE.json +5 -1
  182. package/src/bundles/bundled-translations.es-ES.json +5 -1
  183. package/src/bundles/bundled-translations.fr-CA.json +5 -1
  184. package/src/bundles/bundled-translations.fr-FR.json +5 -1
  185. package/src/bundles/bundled-translations.json +5 -1
  186. package/src/bundles/bundled-translations.pt-BR.json +5 -1
  187. package/src/bundles/bundled-translations.pt-PT.json +5 -1
  188. package/src/constants/ui.ts +1 -0
  189. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +5 -0
  190. package/src/shared/content-settings/components/content-settings/ContentSettings.stories.ts +1 -0
  191. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +2 -0
  192. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +2 -0
  193. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +2 -0
  194. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +2 -0
  195. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +2 -0
  196. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +2 -0
  197. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +2 -0
  198. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.vue +1 -1
  199. package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.ts +19 -2
  200. package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.vue +1 -1
  201. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +2 -2
  202. package/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.ts +26 -10
  203. package/src/shared/content-settings/components/logo-selection-field/LogoSelection.vue +63 -48
  204. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +4 -0
  205. package/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.ts +7 -0
  206. package/src/shared/content-settings/components/slider-field/SliderField.mixin.ts +9 -0
  207. package/src/shared/content-settings/components/text-field/TextField.vue +1 -0
  208. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +33 -4
  209. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +11 -0
  210. package/src/shared/logo-settings/store/editable-logo-store.ts +42 -1
  211. package/src/utils/minify-brand-page-metadata.ts +11 -1
  212. package/lib/src/bundled-translations-B5Fkt3qd.js +0 -175
  213. package/lib/src/bundled-translations.de-DE-DpdVePM9.js +0 -175
  214. package/lib/src/bundled-translations.es-ES-BsIcrzZF.js +0 -175
  215. package/lib/src/bundled-translations.fr-CA-G1XCp2Qh.js +0 -175
  216. package/lib/src/bundled-translations.fr-FR-BdwLXOnB.js +0 -175
  217. package/lib/src/bundled-translations.pt-BR-Bvn5ePe7.js +0 -175
  218. package/lib/src/bundled-translations.pt-PT-CDtkb2k1.js +0 -175
@@ -36,6 +36,8 @@ declare const _default: import("vue").DefineComponent<{}, {
36
36
  id: string;
37
37
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
38
38
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
39
+ topPadding?: number | undefined;
40
+ bottomPadding?: number | undefined;
39
41
  imageUrlOverride?: string | undefined;
40
42
  imageUrlsOverride?: string | undefined;
41
43
  avatarImageUrlOverride?: string | undefined;
@@ -85,6 +87,8 @@ declare const _default: import("vue").DefineComponent<{}, {
85
87
  id: string;
86
88
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
87
89
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
90
+ topPadding?: number | undefined;
91
+ bottomPadding?: number | undefined;
88
92
  imageUrlOverride?: string | undefined;
89
93
  imageUrlsOverride?: string | undefined;
90
94
  avatarImageUrlOverride?: string | undefined;
@@ -134,6 +138,8 @@ declare const _default: import("vue").DefineComponent<{}, {
134
138
  id: string;
135
139
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
136
140
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
141
+ topPadding?: number | undefined;
142
+ bottomPadding?: number | undefined;
137
143
  imageUrlOverride?: string | undefined;
138
144
  imageUrlsOverride?: string | undefined;
139
145
  avatarImageUrlOverride?: string | undefined;
@@ -183,6 +189,8 @@ declare const _default: import("vue").DefineComponent<{}, {
183
189
  id: string;
184
190
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
185
191
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
192
+ topPadding?: number | undefined;
193
+ bottomPadding?: number | undefined;
186
194
  imageUrlOverride?: string | undefined;
187
195
  imageUrlsOverride?: string | undefined;
188
196
  avatarImageUrlOverride?: string | undefined;
@@ -232,6 +240,8 @@ declare const _default: import("vue").DefineComponent<{}, {
232
240
  id: string;
233
241
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
234
242
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
243
+ topPadding?: number | undefined;
244
+ bottomPadding?: number | undefined;
235
245
  imageUrlOverride?: string | undefined;
236
246
  imageUrlsOverride?: string | undefined;
237
247
  avatarImageUrlOverride?: string | undefined;
@@ -281,6 +291,8 @@ declare const _default: import("vue").DefineComponent<{}, {
281
291
  id: string;
282
292
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
283
293
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
294
+ topPadding?: number | undefined;
295
+ bottomPadding?: number | undefined;
284
296
  imageUrlOverride?: string | undefined;
285
297
  imageUrlsOverride?: string | undefined;
286
298
  avatarImageUrlOverride?: string | undefined;
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref } from 'vue';
1
+ import { defineComponent, ref, watch } from 'vue';
2
2
  import { formFieldsTr } from '@src/composables/useTranslate';
3
3
  export default defineComponent({
4
4
  props: {
@@ -45,16 +45,26 @@ export default defineComponent({
45
45
  type: 'phone',
46
46
  },
47
47
  ];
48
+ const valueWithState = ref(props.value.map((field) => ({
49
+ field,
50
+ isCollapsed: true,
51
+ isTypeDropdownOpen: false,
52
+ })));
53
+ // Re-sync when the store-bound value changes externally (e.g. undo/redo
54
+ // via history-store). Preserve per-row UI flags (isCollapsed,
55
+ // isTypeDropdownOpen) by index so an undo doesn't snap rows back to
56
+ // collapsed state.
57
+ watch(() => props.value, (newVal) => {
58
+ valueWithState.value = newVal.map((field, index) => ({
59
+ field,
60
+ isCollapsed: valueWithState.value[index]?.isCollapsed ?? true,
61
+ isTypeDropdownOpen: valueWithState.value[index]?.isTypeDropdownOpen ?? false,
62
+ }));
63
+ });
48
64
  return {
49
65
  formFieldsTr,
50
66
  typeList,
51
- valueWithState: ref(props.value.map((field) => {
52
- return {
53
- field: field,
54
- isCollapsed: true,
55
- isTypeDropdownOpen: false,
56
- };
57
- })),
67
+ valueWithState,
58
68
  };
59
69
  },
60
70
  methods: {
@@ -483,6 +483,73 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
483
483
  collapseAllSections(): void;
484
484
  setPreviousSelectedDisplayStyle(viewport: string, displayStyle: string): void;
485
485
  }>;
486
+ historyStore: import("pinia").Store<"history", Pick<{
487
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
488
+ currentIndex: import("vue").Ref<number, number>;
489
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
490
+ snapshotAppliedToken: import("vue").Ref<number, number>;
491
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
492
+ canUndo: import("vue").ComputedRef<boolean>;
493
+ canRedo: import("vue").ComputedRef<boolean>;
494
+ captureBaseline: () => void;
495
+ capture: (args: {
496
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
497
+ actor: "user" | "ai_builder";
498
+ label?: string | undefined;
499
+ }) => "committed" | "oversized" | "noop" | "skipped";
500
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
501
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
502
+ mergeNextMutation: () => void;
503
+ undo: () => Promise<void>;
504
+ redo: () => Promise<void>;
505
+ reset: () => void;
506
+ getCurrentSizeBytes: () => number;
507
+ getCurrentEntryCount: () => number;
508
+ }, "entries" | "currentIndex" | "isApplyingSnapshot" | "snapshotAppliedToken" | "baselineCaptured">, Pick<{
509
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
510
+ currentIndex: import("vue").Ref<number, number>;
511
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
512
+ snapshotAppliedToken: import("vue").Ref<number, number>;
513
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
514
+ canUndo: import("vue").ComputedRef<boolean>;
515
+ canRedo: import("vue").ComputedRef<boolean>;
516
+ captureBaseline: () => void;
517
+ capture: (args: {
518
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
519
+ actor: "user" | "ai_builder";
520
+ label?: string | undefined;
521
+ }) => "committed" | "oversized" | "noop" | "skipped";
522
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
523
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
524
+ mergeNextMutation: () => void;
525
+ undo: () => Promise<void>;
526
+ redo: () => Promise<void>;
527
+ reset: () => void;
528
+ getCurrentSizeBytes: () => number;
529
+ getCurrentEntryCount: () => number;
530
+ }, "canUndo" | "canRedo">, Pick<{
531
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
532
+ currentIndex: import("vue").Ref<number, number>;
533
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
534
+ snapshotAppliedToken: import("vue").Ref<number, number>;
535
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
536
+ canUndo: import("vue").ComputedRef<boolean>;
537
+ canRedo: import("vue").ComputedRef<boolean>;
538
+ captureBaseline: () => void;
539
+ capture: (args: {
540
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
541
+ actor: "user" | "ai_builder";
542
+ label?: string | undefined;
543
+ }) => "committed" | "oversized" | "noop" | "skipped";
544
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
545
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
546
+ mergeNextMutation: () => void;
547
+ undo: () => Promise<void>;
548
+ redo: () => Promise<void>;
549
+ reset: () => void;
550
+ getCurrentSizeBytes: () => number;
551
+ getCurrentEntryCount: () => number;
552
+ }, "reset" | "undo" | "redo" | "captureBaseline" | "capture" | "captureTemplateSwitch" | "captureAiChangeset" | "mergeNextMutation" | "getCurrentSizeBytes" | "getCurrentEntryCount">>;
486
553
  }, {
487
554
  selectedPaymentConfig: BrandPagePaymentConfig | undefined;
488
555
  isCurrencyUpdating: boolean;
@@ -4,6 +4,7 @@ import { useShopConfigStore } from '@shared/ecommerce-settings/store/shop-settin
4
4
  import { paymentConfigTr } from '@src/composables/useTranslate';
5
5
  import brandPageClient from '../../../../clients/brand-page-client';
6
6
  import { useUiPageSettingsStore } from '@shared/page-settings/store';
7
+ import { useHistoryStore } from '@brand-page-maker/stores/history/history-store';
7
8
  export default defineComponent({
8
9
  props: {
9
10
  id: {
@@ -29,6 +30,7 @@ export default defineComponent({
29
30
  const uiPageSettingsStore = useUiPageSettingsStore();
30
31
  const eventManagerStore = useEventManagerStore();
31
32
  const shopConfigStore = useShopConfigStore();
33
+ const historyStore = useHistoryStore();
32
34
  return {
33
35
  brandPageToken: computed(() => brandPageContainerStore.brandPageToken),
34
36
  isPaymentConfigSetupVisible: computed(() => !brandPageContainerStore.isPrePurchase),
@@ -36,6 +38,7 @@ export default defineComponent({
36
38
  eventManagerStore,
37
39
  shopConfigStore,
38
40
  uiPageSettingsStore,
41
+ historyStore,
39
42
  };
40
43
  },
41
44
  emits: ['update:modelValue'],
@@ -99,6 +102,9 @@ export default defineComponent({
99
102
  name: this.name,
100
103
  value,
101
104
  };
105
+ // Lazy paymentConfig hydration — fold into current head instead
106
+ // of pushing a phantom entry.
107
+ this.historyStore.mergeNextMutation();
102
108
  this.$emit('update:modelValue', payload);
103
109
  }
104
110
  },
@@ -39,6 +39,15 @@ export default defineComponent({
39
39
  sliderValue: value,
40
40
  };
41
41
  },
42
+ watch: {
43
+ // The value can change outside the slider (e.g. a layout switch
44
+ // re-applying default padding, or undo) — keep the display in sync.
45
+ value(newValue) {
46
+ this.sliderValue = this.valueConvertor
47
+ ? this.valueConvertor.convert(newValue)
48
+ : newValue;
49
+ },
50
+ },
42
51
  computed: {
43
52
  innerMinLength() {
44
53
  return this.minLength ?? 0;
@@ -51,6 +51,8 @@ export declare const useUiContentSettingsStore: import("pinia").StoreDefinition<
51
51
  id: string;
52
52
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
53
53
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
54
+ topPadding?: number | undefined;
55
+ bottomPadding?: number | undefined;
54
56
  imageUrlOverride?: string | undefined;
55
57
  imageUrlsOverride?: string | undefined;
56
58
  avatarImageUrlOverride?: string | undefined;
@@ -100,6 +102,8 @@ export declare const useUiContentSettingsStore: import("pinia").StoreDefinition<
100
102
  id: string;
101
103
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
102
104
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
105
+ topPadding?: number | undefined;
106
+ bottomPadding?: number | undefined;
103
107
  imageUrlOverride?: string | undefined;
104
108
  imageUrlsOverride?: string | undefined;
105
109
  avatarImageUrlOverride?: string | undefined;
@@ -149,6 +153,8 @@ export declare const useUiContentSettingsStore: import("pinia").StoreDefinition<
149
153
  id: string;
150
154
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
151
155
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
156
+ topPadding?: number | undefined;
157
+ bottomPadding?: number | undefined;
152
158
  imageUrlOverride?: string | undefined;
153
159
  imageUrlsOverride?: string | undefined;
154
160
  avatarImageUrlOverride?: string | undefined;
@@ -198,6 +204,8 @@ export declare const useUiContentSettingsStore: import("pinia").StoreDefinition<
198
204
  id: string;
199
205
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
200
206
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
207
+ topPadding?: number | undefined;
208
+ bottomPadding?: number | undefined;
201
209
  imageUrlOverride?: string | undefined;
202
210
  imageUrlsOverride?: string | undefined;
203
211
  avatarImageUrlOverride?: string | undefined;
@@ -247,6 +255,8 @@ export declare const useUiContentSettingsStore: import("pinia").StoreDefinition<
247
255
  id: string;
248
256
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
249
257
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
258
+ topPadding?: number | undefined;
259
+ bottomPadding?: number | undefined;
250
260
  imageUrlOverride?: string | undefined;
251
261
  imageUrlsOverride?: string | undefined;
252
262
  avatarImageUrlOverride?: string | undefined;
@@ -296,6 +306,8 @@ export declare const useUiContentSettingsStore: import("pinia").StoreDefinition<
296
306
  id: string;
297
307
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
298
308
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
309
+ topPadding?: number | undefined;
310
+ bottomPadding?: number | undefined;
299
311
  imageUrlOverride?: string | undefined;
300
312
  imageUrlsOverride?: string | undefined;
301
313
  avatarImageUrlOverride?: string | undefined;
@@ -93,6 +93,7 @@ declare const _default: import("vue").DefineComponent<{}, {
93
93
  logoTemplateMetadata: string;
94
94
  isLogoDraftSaved: boolean;
95
95
  isTextOnlyLogo: boolean;
96
+ variationsByDraftToken: Record<string, import("../store/editable-logo-store").EditableLogoVariation[]>;
96
97
  } & import("pinia").PiniaCustomStateProperties<import("../store/editable-logo-store").EditableLogoState>) => () => string | undefined;
97
98
  }, {
98
99
  setStateAsync(payload: {
@@ -110,6 +111,8 @@ declare const _default: import("vue").DefineComponent<{}, {
110
111
  getEditableLogoVariationByVariationId(id: number): any;
111
112
  getEditableLogoVariationByBase64(base64: string): any;
112
113
  updateEditableLogoImageUrlAsync(defaultPrimaryText?: string | undefined, overrideLogoVariation?: number | undefined, layout?: string | undefined): Promise<void>;
114
+ stampLogoBase64IntoBrandPageData(overrideLogoVariation?: number | undefined): void;
115
+ restoreVariationsForDraftToken(logoDraftToken: string): boolean;
113
116
  updateMetadataAsync(defaultPrimaryText?: string | undefined, resetLogoTemplateMetadata?: boolean, layout?: string | undefined): Promise<void>;
114
117
  updateEditableLogoImageByVariationAsync(editableLogoVariation: import("../store/editable-logo-store").EditableLogoVariation, defaultPrimaryText?: string | undefined, layout?: string | undefined): Promise<import("../../../clients/fabric-render-client").ModifyLogoDataResponse | null>;
115
118
  getDraftMetadata(logoDraftToken: string): string | undefined;
@@ -247,6 +250,22 @@ declare const _default: import("vue").DefineComponent<{}, {
247
250
  }>;
248
251
  eventTracker: {
249
252
  sendShippingToggleEvent: (isEnabled: boolean) => void;
253
+ sendUndoEvent: (props: {
254
+ entries_count: number;
255
+ actor: string | undefined;
256
+ }) => void;
257
+ sendRedoEvent: (props: {
258
+ entries_count: number;
259
+ actor: string | undefined;
260
+ }) => void;
261
+ sendHistoryCappedEvent: (props: {
262
+ entries_count: number;
263
+ size_bytes: number;
264
+ }) => void;
265
+ sendHistoryOversizedEvent: (props: {
266
+ attempted_bytes: number;
267
+ source: string;
268
+ }) => void;
250
269
  sendSaveContactEvent: () => void;
251
270
  sendStartForFreeEvent: () => void;
252
271
  sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
@@ -65,6 +65,17 @@ export default defineComponent({
65
65
  return 'tw-font-bold tw-text-xs';
66
66
  },
67
67
  },
68
+ watch: {
69
+ // Keeps the design/upload tab in sync with `enableEditMode` whenever it
70
+ // flips outside the user's tab clicks — undo/redo restoring a BYO upload
71
+ // (mode → false) or a designed logo (mode → true). User clicks within
72
+ // the same mode don't change `enableEditMode` and don't trigger this.
73
+ showEditLogoSetting(enabled) {
74
+ this.selectedTab = enabled
75
+ ? this.tabsWithTranslations[0]
76
+ : this.tabsWithTranslations[1];
77
+ },
78
+ },
68
79
  methods: {
69
80
  disableTextToggle(currentTextEnabled) {
70
81
  if (!this.isTextOnlyLogo || !currentTextEnabled) {
@@ -124,16 +124,21 @@ declare const _default: import("vue").DefineComponent<{}, {
124
124
  hideChangeTemplateConfirmModal(): void;
125
125
  onBackgroundChanged(): void;
126
126
  onChangeTemplateConfirmModalCancel(): void;
127
- onChangeTemplateConfirmModalConfirm(): void;
127
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
128
128
  onContentChanged(): void;
129
129
  onStyleChanged(): void;
130
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
130
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
131
131
  setSelectedTabName(payload: any): void;
132
132
  showNextNotificationMessage(): Promise<void>;
133
133
  updateContent<TContent extends import("../../../brand-page").Content, P extends {
134
134
  id: string;
135
135
  content: TContent;
136
136
  }>(payload: P): Promise<void>;
137
+ _captureTemplateSwitchIfEnabled(): void;
138
+ applyHistorySnapshot(snapshot: import("../../../brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
139
+ _syncLogoSettingsFromSnapshot(snapshot: import("../../../brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
140
+ _navigateToActivePage(activePageId?: string | undefined): void;
141
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../brand-page").BrandPageModel): void;
137
142
  export(): import("../../../brand-page").BrandPageModel;
138
143
  setBrandPageType({ brandPageType }: {
139
144
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -277,6 +282,7 @@ declare const _default: import("vue").DefineComponent<{}, {
277
282
  logoTemplateMetadata: string;
278
283
  isLogoDraftSaved: boolean;
279
284
  isTextOnlyLogo: boolean;
285
+ variationsByDraftToken: Record<string, import("../store").EditableLogoVariation[]>;
280
286
  } & import("pinia").PiniaCustomStateProperties<import("../store").EditableLogoState>) => () => string | undefined;
281
287
  }, {
282
288
  setStateAsync(payload: {
@@ -294,6 +300,8 @@ declare const _default: import("vue").DefineComponent<{}, {
294
300
  getEditableLogoVariationByVariationId(id: number): any;
295
301
  getEditableLogoVariationByBase64(base64: string): any;
296
302
  updateEditableLogoImageUrlAsync(defaultPrimaryText?: string | undefined, overrideLogoVariation?: number | undefined, layout?: string | undefined): Promise<void>;
303
+ stampLogoBase64IntoBrandPageData(overrideLogoVariation?: number | undefined): void;
304
+ restoreVariationsForDraftToken(logoDraftToken: string): boolean;
297
305
  updateMetadataAsync(defaultPrimaryText?: string | undefined, resetLogoTemplateMetadata?: boolean, layout?: string | undefined): Promise<void>;
298
306
  updateEditableLogoImageByVariationAsync(editableLogoVariation: import("../store").EditableLogoVariation, defaultPrimaryText?: string | undefined, layout?: string | undefined): Promise<import("../../../clients/fabric-render-client").ModifyLogoDataResponse | null>;
299
307
  getDraftMetadata(logoDraftToken: string): string | undefined;
@@ -74,8 +74,9 @@ export interface EditableLogoState {
74
74
  logoTemplateMetadata: string;
75
75
  isLogoDraftSaved: boolean;
76
76
  isTextOnlyLogo: boolean;
77
+ variationsByDraftToken: Record<string, EditableLogoVariation[]>;
77
78
  }
78
- export type SetStateAsyncPayload = Omit<EditableLogoState, 'enableEditMode' | 'editableLogoVariations'>;
79
+ export type SetStateAsyncPayload = Omit<EditableLogoState, 'enableEditMode' | 'editableLogoVariations' | 'variationsByDraftToken'>;
79
80
  export declare const useUiEditableLogoStore: import("pinia").StoreDefinition<"uiEditableLogo", EditableLogoState, {
80
81
  getLogoPrimaryText: (state: {
81
82
  enableEditMode: boolean;
@@ -167,6 +168,7 @@ export declare const useUiEditableLogoStore: import("pinia").StoreDefinition<"ui
167
168
  logoTemplateMetadata: string;
168
169
  isLogoDraftSaved: boolean;
169
170
  isTextOnlyLogo: boolean;
171
+ variationsByDraftToken: Record<string, EditableLogoVariation[]>;
170
172
  } & import("pinia").PiniaCustomStateProperties<EditableLogoState>) => () => string | undefined;
171
173
  }, {
172
174
  setStateAsync(payload: {
@@ -184,6 +186,8 @@ export declare const useUiEditableLogoStore: import("pinia").StoreDefinition<"ui
184
186
  getEditableLogoVariationByVariationId(id: number): any;
185
187
  getEditableLogoVariationByBase64(base64: string): any;
186
188
  updateEditableLogoImageUrlAsync(defaultPrimaryText?: string, overrideLogoVariation?: number | undefined, layout?: string): Promise<void>;
189
+ stampLogoBase64IntoBrandPageData(overrideLogoVariation?: number): void;
190
+ restoreVariationsForDraftToken(logoDraftToken: string): boolean;
187
191
  updateMetadataAsync(defaultPrimaryText?: string, resetLogoTemplateMetadata?: boolean, layout?: string): Promise<void>;
188
192
  updateEditableLogoImageByVariationAsync(editableLogoVariation: EditableLogoVariation, defaultPrimaryText?: string, layout?: string): Promise<ModifyLogoDataResponse | null>;
189
193
  getDraftMetadata(logoDraftToken: string): string | undefined;
@@ -74,6 +74,7 @@ export const useUiEditableLogoStore = defineStore('uiEditableLogo', {
74
74
  },
75
75
  makerFonts: [],
76
76
  isLogoDraftSaved: false,
77
+ variationsByDraftToken: {},
77
78
  }),
78
79
  actions: {
79
80
  async setStateAsync(payload) {
@@ -217,6 +218,17 @@ export const useUiEditableLogoStore = defineStore('uiEditableLogo', {
217
218
  async updateEditableLogoImageUrlAsync(defaultPrimaryText, overrideLogoVariation, layout) {
218
219
  const tasks = this.editableLogoVariations.map((x) => this.updateEditableLogoImageByVariationAsync(x, defaultPrimaryText, layout));
219
220
  await Promise.all(tasks);
221
+ this.stampLogoBase64IntoBrandPageData(overrideLogoVariation);
222
+ // Cache per draft token so BYO undo can restore without re-rendering.
223
+ if (this.logoDraftToken) {
224
+ this.variationsByDraftToken[this.logoDraftToken] =
225
+ this.editableLogoVariations.map((v) => ({ ...v }));
226
+ }
227
+ },
228
+ // Stamp editableLogoVariations[*].base64 across header/footer + every
229
+ // LogoContent. Called by the live edit path post-render, and by
230
+ // undo/redo to repopulate the stripped logoImageBase64Url fields.
231
+ stampLogoBase64IntoBrandPageData(overrideLogoVariation) {
220
232
  const pageSettingStore = useUiPageSettingsStore();
221
233
  [PAGE_SECTIONS.header, PAGE_SECTIONS.footer].forEach((section) => {
222
234
  [VIEWPORTS.desktop, VIEWPORTS.mobile].forEach((viewport) => {
@@ -243,6 +255,15 @@ export const useUiEditableLogoStore = defineStore('uiEditableLogo', {
243
255
  });
244
256
  });
245
257
  },
258
+ // Restore variations grid for a draft token from the per-token cache.
259
+ // Returns true on cache hit.
260
+ restoreVariationsForDraftToken(logoDraftToken) {
261
+ const cached = this.variationsByDraftToken[logoDraftToken];
262
+ if (!cached)
263
+ return false;
264
+ this.editableLogoVariations = cached.map((v) => ({ ...v }));
265
+ return true;
266
+ },
246
267
  async updateMetadataAsync(defaultPrimaryText, resetLogoTemplateMetadata = false, layout) {
247
268
  const result = await this.postEditableLogoRequestAsync({
248
269
  returnJson: true,
@@ -285,6 +306,13 @@ export const useUiEditableLogoStore = defineStore('uiEditableLogo', {
285
306
  const logoDraft = logoStore.getLogoDraftAssetByToken(this.logoDraftToken);
286
307
  if (logoDraft) {
287
308
  logoDraft.metadata = metadata;
309
+ // Refresh the template-asset stamp in case the active asset has
310
+ // changed since this draft was first registered (e.g. successive
311
+ // BYO uploads that share an existing draft token would otherwise
312
+ // keep pointing at an older template).
313
+ if (logoStore.logoTemplateAsset) {
314
+ logoDraft.templateAsset = { ...logoStore.logoTemplateAsset };
315
+ }
288
316
  }
289
317
  else {
290
318
  logoStore.addLogoDraftAsset({
@@ -293,6 +321,9 @@ export const useUiEditableLogoStore = defineStore('uiEditableLogo', {
293
321
  metadata,
294
322
  tick: Date.now(),
295
323
  isByo: logoStore.logoTemplateAsset?.isByo || false,
324
+ templateAsset: logoStore.logoTemplateAsset
325
+ ? { ...logoStore.logoTemplateAsset }
326
+ : undefined,
296
327
  },
297
328
  });
298
329
  }
@@ -21,6 +21,8 @@ declare const _default: import("vue").DefineComponent<{}, {
21
21
  id: string;
22
22
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
23
23
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
24
+ topPadding?: number | undefined;
25
+ bottomPadding?: number | undefined;
24
26
  imageUrlOverride?: string | undefined;
25
27
  imageUrlsOverride?: string | undefined;
26
28
  avatarImageUrlOverride?: string | undefined;
@@ -49,6 +51,8 @@ declare const _default: import("vue").DefineComponent<{}, {
49
51
  id: string;
50
52
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
51
53
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
54
+ topPadding?: number | undefined;
55
+ bottomPadding?: number | undefined;
52
56
  imageUrlOverride?: string | undefined;
53
57
  imageUrlsOverride?: string | undefined;
54
58
  avatarImageUrlOverride?: string | undefined;
@@ -3124,6 +3128,7 @@ declare const _default: import("vue").DefineComponent<{}, {
3124
3128
  canUseGettyVideos: boolean;
3125
3129
  canUseGoogleAdsense: boolean;
3126
3130
  googleAdsenseEnabled: boolean;
3131
+ canUseUndoRedo: boolean;
3127
3132
  }>;
3128
3133
  isAdmin: import("vue").ComputedRef<boolean>;
3129
3134
  isBrandSite: import("vue").ComputedRef<boolean>;
@@ -3835,16 +3840,21 @@ declare const _default: import("vue").DefineComponent<{}, {
3835
3840
  hideChangeTemplateConfirmModal(): void;
3836
3841
  onBackgroundChanged(): void;
3837
3842
  onChangeTemplateConfirmModalCancel(): void;
3838
- onChangeTemplateConfirmModalConfirm(): void;
3843
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
3839
3844
  onContentChanged(): void;
3840
3845
  onStyleChanged(): void;
3841
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
3846
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
3842
3847
  setSelectedTabName(payload: any): void;
3843
3848
  showNextNotificationMessage(): Promise<void>;
3844
3849
  updateContent<TContent extends Content, P extends {
3845
3850
  id: string;
3846
3851
  content: TContent;
3847
3852
  }>(payload: P): Promise<void>;
3853
+ _captureTemplateSwitchIfEnabled(): void;
3854
+ applyHistorySnapshot(snapshot: import("@brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
3855
+ _syncLogoSettingsFromSnapshot(snapshot: import("@brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
3856
+ _navigateToActivePage(activePageId?: string | undefined): void;
3857
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page").BrandPageModel): void;
3848
3858
  export(): import("@brand-page").BrandPageModel;
3849
3859
  setBrandPageType({ brandPageType }: {
3850
3860
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -4048,6 +4058,8 @@ declare const _default: import("vue").DefineComponent<{}, {
4048
4058
  id: string;
4049
4059
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
4050
4060
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
4061
+ topPadding?: number | undefined;
4062
+ bottomPadding?: number | undefined;
4051
4063
  imageUrlOverride?: string | undefined;
4052
4064
  imageUrlsOverride?: string | undefined;
4053
4065
  avatarImageUrlOverride?: string | undefined;
@@ -4097,6 +4109,8 @@ declare const _default: import("vue").DefineComponent<{}, {
4097
4109
  id: string;
4098
4110
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
4099
4111
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
4112
+ topPadding?: number | undefined;
4113
+ bottomPadding?: number | undefined;
4100
4114
  imageUrlOverride?: string | undefined;
4101
4115
  imageUrlsOverride?: string | undefined;
4102
4116
  avatarImageUrlOverride?: string | undefined;
@@ -4146,6 +4160,8 @@ declare const _default: import("vue").DefineComponent<{}, {
4146
4160
  id: string;
4147
4161
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
4148
4162
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
4163
+ topPadding?: number | undefined;
4164
+ bottomPadding?: number | undefined;
4149
4165
  imageUrlOverride?: string | undefined;
4150
4166
  imageUrlsOverride?: string | undefined;
4151
4167
  avatarImageUrlOverride?: string | undefined;
@@ -4195,6 +4211,8 @@ declare const _default: import("vue").DefineComponent<{}, {
4195
4211
  id: string;
4196
4212
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
4197
4213
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
4214
+ topPadding?: number | undefined;
4215
+ bottomPadding?: number | undefined;
4198
4216
  imageUrlOverride?: string | undefined;
4199
4217
  imageUrlsOverride?: string | undefined;
4200
4218
  avatarImageUrlOverride?: string | undefined;
@@ -4244,6 +4262,8 @@ declare const _default: import("vue").DefineComponent<{}, {
4244
4262
  id: string;
4245
4263
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
4246
4264
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
4265
+ topPadding?: number | undefined;
4266
+ bottomPadding?: number | undefined;
4247
4267
  imageUrlOverride?: string | undefined;
4248
4268
  imageUrlsOverride?: string | undefined;
4249
4269
  avatarImageUrlOverride?: string | undefined;
@@ -4293,6 +4313,8 @@ declare const _default: import("vue").DefineComponent<{}, {
4293
4313
  id: string;
4294
4314
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
4295
4315
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
4316
+ topPadding?: number | undefined;
4317
+ bottomPadding?: number | undefined;
4296
4318
  imageUrlOverride?: string | undefined;
4297
4319
  imageUrlsOverride?: string | undefined;
4298
4320
  avatarImageUrlOverride?: string | undefined;
@@ -4787,6 +4809,22 @@ declare const _default: import("vue").DefineComponent<{}, {
4787
4809
  onDraggingEnd: (ev?: any, routeId?: string, previousParentRouteId?: string) => void;
4788
4810
  eventTracker: {
4789
4811
  sendShippingToggleEvent: (isEnabled: boolean) => void;
4812
+ sendUndoEvent: (props: {
4813
+ entries_count: number;
4814
+ actor: string | undefined;
4815
+ }) => void;
4816
+ sendRedoEvent: (props: {
4817
+ entries_count: number;
4818
+ actor: string | undefined;
4819
+ }) => void;
4820
+ sendHistoryCappedEvent: (props: {
4821
+ entries_count: number;
4822
+ size_bytes: number;
4823
+ }) => void;
4824
+ sendHistoryOversizedEvent: (props: {
4825
+ attempted_bytes: number;
4826
+ source: string;
4827
+ }) => void;
4790
4828
  sendSaveContactEvent: () => void;
4791
4829
  sendStartForFreeEvent: () => void;
4792
4830
  sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;