@designcrowd/library.brand-page 5.18.4 → 5.18.5

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 (162) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DQLtpdLe.js → CreatedOnBrandCrowd-de-de-ciKpCAd9.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-CvEhlADd.js → CreatedOnBrandCrowd-en-us-CZbTS1AZ.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-pYQeTTC0.js → CreatedOnBrandCrowd-es-es-C8MExng5.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CcE-iCEq.js → CreatedOnBrandCrowd-fr-ca-CO0L9NK2.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CcE-iCEq.js → CreatedOnBrandCrowd-fr-fr-CO0L9NK2.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-OyhWWWyO.js → CreatedOnBrandCrowd-pt-br-zVDvBF2H.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-OyhWWWyO.js → CreatedOnBrandCrowd-pt-pt-zVDvBF2H.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-DH98FFLS.js → CreatedOnDcom-de-de-WrUSQdjf.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-DK67NN1r.js → CreatedOnDcom-en-us-BqC9YtkL.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-9-QU4BU6.js → CreatedOnDcom-es-es-BzH32Oya.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-U9J9H9VB.js → CreatedOnDcom-fr-ca-D7TYfCW0.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DqdzB1DJ.js → CreatedOnDcom-fr-fr-DVlyfBtb.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-c4UiWtkB.js → CreatedOnDcom-pt-br-CSRB91ey.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-Do2qJsYp.js → CreatedOnDcom-pt-pt-9KMj5gpc.js} +1 -1
  15. package/lib/src/brand-page/models/navigation-styles.model.d.ts +7 -0
  16. package/lib/src/brand-page/models/navigation-styles.model.js +25 -2
  17. package/lib/src/brand-page/utils/migration/migration-16.d.ts +2 -0
  18. package/lib/src/brand-page/utils/migration/migration-16.js +47 -0
  19. package/lib/src/brand-page/utils/migration.util.js +7 -0
  20. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +7 -2
  21. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +7 -2
  22. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +8 -0
  23. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +7 -2
  24. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +1 -0
  25. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +87 -2
  26. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +5 -0
  27. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +7 -2
  28. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +3 -0
  29. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.js +11 -0
  30. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +7 -2
  31. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +7 -2
  32. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +7 -2
  33. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +7 -2
  34. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +9 -0
  35. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +20 -1
  36. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +20 -0
  37. package/lib/src/brand-page-maker/composables/useEventTracker.js +17 -0
  38. package/lib/src/brand-page-maker/composables/useUndoRedoFlag.d.ts +17 -0
  39. package/lib/src/brand-page-maker/composables/useUndoRedoFlag.js +25 -0
  40. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +41 -2
  41. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +308 -14
  42. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +83 -0
  43. package/lib/src/brand-page-maker/stores/history/history-store.js +495 -0
  44. package/lib/src/brand-page-maker/stores/logo-store/logo-store.d.ts +1 -0
  45. package/lib/src/brand-page-maker/stores/user/user-store.js +1 -0
  46. package/lib/src/bundled-translations-D1q3rSEz.js +175 -0
  47. package/lib/src/bundled-translations.de-DE-BxqLLwbh.js +175 -0
  48. package/lib/src/bundled-translations.es-ES-uh249NlJ.js +175 -0
  49. package/lib/src/bundled-translations.fr-CA-BEQmv2fX.js +175 -0
  50. package/lib/src/bundled-translations.fr-FR-BnNuCojH.js +175 -0
  51. package/lib/src/bundled-translations.pt-BR-CJUOxVlq.js +175 -0
  52. package/lib/src/bundled-translations.pt-PT-Ds9cMEqK.js +175 -0
  53. package/lib/src/bundles/bundled-translations.de-DE.json +3 -1
  54. package/lib/src/bundles/bundled-translations.es-ES.json +3 -1
  55. package/lib/src/bundles/bundled-translations.fr-CA.json +3 -1
  56. package/lib/src/bundles/bundled-translations.fr-FR.json +3 -1
  57. package/lib/src/bundles/bundled-translations.json +3 -1
  58. package/lib/src/bundles/bundled-translations.pt-BR.json +3 -1
  59. package/lib/src/bundles/bundled-translations.pt-PT.json +3 -1
  60. package/lib/src/constants/ui.d.ts +1 -0
  61. package/lib/src/css/library.brand-page-brandCrowd.min.css +77 -82
  62. package/lib/src/css/library.brand-page-brandPage.min.css +77 -83
  63. package/lib/src/css/library.brand-page-designCom.min.css +77 -82
  64. package/lib/src/css/library.brand-page-preview.min.css +77 -82
  65. package/lib/src/index.mjs +62 -60
  66. package/lib/src/{lib-BI3J4Mbk.js → lib-BXbo_N88.js} +35072 -34447
  67. package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +13 -0
  68. package/lib/src/metadata-builder/builders/reorder-pages-builder.js +49 -0
  69. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +87 -2
  70. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +5 -0
  71. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.stories.js +1 -0
  72. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +23 -2
  73. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +16 -0
  74. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +7 -2
  75. package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.d.ts +3 -0
  76. package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.js +19 -2
  77. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.js +18 -8
  78. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +64 -0
  79. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.js +6 -0
  80. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +19 -0
  81. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +11 -0
  82. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +10 -2
  83. package/lib/src/shared/logo-settings/store/editable-logo-store.d.ts +5 -1
  84. package/lib/src/shared/logo-settings/store/editable-logo-store.js +31 -0
  85. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.js +10 -8
  86. package/lib/src/shared/navigation-style-settings/store/index.js +1 -12
  87. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +24 -2
  88. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +10 -2
  89. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +23 -2
  90. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +16 -0
  91. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +23 -2
  92. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +16 -0
  93. package/package.json +1 -1
  94. package/src/brand-page/components/button/Button.vue +2 -10
  95. package/src/brand-page/components/contact-form/ContactForm.vue +2 -2
  96. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue +4 -1
  97. package/src/brand-page/models/navigation-styles.model.ts +39 -1
  98. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -3
  99. package/src/brand-page/utils/migration/migration-16.test.ts +319 -0
  100. package/src/brand-page/utils/migration/migration-16.ts +75 -0
  101. package/src/brand-page/utils/migration.util.ts +8 -0
  102. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +9 -0
  103. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +2 -3
  104. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +1 -0
  105. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +5 -0
  106. package/src/brand-page-maker/components/color-palette/BpColorPalette.vue +9 -7
  107. package/src/brand-page-maker/components/cookie-collection/CookieSettings.vue +18 -17
  108. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.ts +13 -0
  109. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.vue +26 -3
  110. package/src/brand-page-maker/components/quick-link-bar/RedoButton.vue +66 -0
  111. package/src/brand-page-maker/components/quick-link-bar/UndoButton.vue +66 -0
  112. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.de-DE.json +6 -4
  113. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.es-ES.json +6 -4
  114. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-CA.json +6 -4
  115. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-FR.json +6 -4
  116. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.json +3 -1
  117. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.pt-BR.json +6 -4
  118. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.pt-PT.json +6 -4
  119. package/src/brand-page-maker/components/quick-link-bar/undo-redo-buttons.test.ts +116 -0
  120. package/src/brand-page-maker/components/save-contact/SaveContact.vue +12 -19
  121. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +10 -0
  122. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +24 -1
  123. package/src/brand-page-maker/composables/useEventTracker.ts +29 -0
  124. package/src/brand-page-maker/composables/useUndoRedoFlag.ts +30 -0
  125. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +377 -0
  126. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +371 -18
  127. package/src/brand-page-maker/stores/history/history-store.test.ts +1120 -0
  128. package/src/brand-page-maker/stores/history/history-store.ts +660 -0
  129. package/src/brand-page-maker/stores/logo-store/logo-store.ts +5 -0
  130. package/src/brand-page-maker/stores/user/user-store.ts +1 -0
  131. package/src/bundles/bundled-translations.de-DE.json +3 -1
  132. package/src/bundles/bundled-translations.es-ES.json +3 -1
  133. package/src/bundles/bundled-translations.fr-CA.json +3 -1
  134. package/src/bundles/bundled-translations.fr-FR.json +3 -1
  135. package/src/bundles/bundled-translations.json +3 -1
  136. package/src/bundles/bundled-translations.pt-BR.json +3 -1
  137. package/src/bundles/bundled-translations.pt-PT.json +3 -1
  138. package/src/constants/ui.ts +1 -0
  139. package/src/metadata-builder/builders/reorder-pages-builder.ts +80 -0
  140. package/src/shared/content-settings/components/color-field/ColorField.vue +10 -5
  141. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +5 -0
  142. package/src/shared/content-settings/components/content-settings/ContentSettings.stories.ts +1 -0
  143. package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.ts +19 -2
  144. package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.vue +1 -1
  145. package/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.ts +26 -10
  146. package/src/shared/content-settings/components/logo-selection-field/LogoSelection.vue +63 -48
  147. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +4 -0
  148. package/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.ts +7 -0
  149. package/src/shared/content-settings/components/text-field/TextField.vue +1 -0
  150. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +33 -4
  151. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +11 -0
  152. package/src/shared/logo-settings/store/editable-logo-store.ts +42 -1
  153. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.ts +17 -11
  154. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +4 -1
  155. package/src/shared/navigation-style-settings/store/index.ts +1 -21
  156. package/lib/src/bundled-translations-B5Fkt3qd.js +0 -175
  157. package/lib/src/bundled-translations.de-DE-DpdVePM9.js +0 -175
  158. package/lib/src/bundled-translations.es-ES-BsIcrzZF.js +0 -175
  159. package/lib/src/bundled-translations.fr-CA-G1XCp2Qh.js +0 -175
  160. package/lib/src/bundled-translations.fr-FR-BdwLXOnB.js +0 -175
  161. package/lib/src/bundled-translations.pt-BR-Bvn5ePe7.js +0 -175
  162. package/lib/src/bundled-translations.pt-PT-CDtkb2k1.js +0 -175
@@ -0,0 +1,13 @@
1
+ import type { BrandPageModel } from '../../brand-page/models';
2
+ import { BaseMetadataBuilder, type BuilderResult, type MetadataBuilderRequest } from '../models';
3
+ import type { Logger } from '../logger';
4
+ export interface ReorderPagesPayload {
5
+ pageOrder: string[];
6
+ }
7
+ export declare class ReorderPagesBuilder extends BaseMetadataBuilder<ReorderPagesPayload> {
8
+ constructor(request: MetadataBuilderRequest<ReorderPagesPayload>, logger?: Logger);
9
+ validateAsync(): Promise<{
10
+ errors: string[];
11
+ }>;
12
+ buildAsync(model: BrandPageModel): Promise<BuilderResult>;
13
+ }
@@ -0,0 +1,49 @@
1
+ import { BaseMetadataBuilder, } from '../models';
2
+ export class ReorderPagesBuilder extends BaseMetadataBuilder {
3
+ constructor(request, logger) {
4
+ super(request, logger);
5
+ }
6
+ async validateAsync() {
7
+ const errors = [];
8
+ const payload = this.request.payload;
9
+ if (!payload?.pageOrder?.length) {
10
+ errors.push('page_order is required for reorder_pages');
11
+ }
12
+ return { errors };
13
+ }
14
+ async buildAsync(model) {
15
+ this.log('Build called');
16
+ const validation = await this.validateAsync();
17
+ if (validation.errors.length) {
18
+ return { request: this.request, model, errors: validation.errors };
19
+ }
20
+ const { pageOrder } = this.request.payload;
21
+ // Build pageId → routeId lookup from nav.routes
22
+ const pageIdToRouteId = new Map();
23
+ for (const route of model.nav.routes) {
24
+ pageIdToRouteId.set(route.pageId, route.id);
25
+ }
26
+ // Build new nav.orders from the flat page_order (array of pageIds)
27
+ const newOrders = [];
28
+ const seenRouteIds = new Set();
29
+ for (const pageId of pageOrder) {
30
+ const routeId = pageIdToRouteId.get(pageId);
31
+ if (!routeId)
32
+ continue;
33
+ newOrders.push({ routeId, subRoutes: [] });
34
+ seenRouteIds.add(routeId);
35
+ }
36
+ // Safety: append any routes not mentioned (don't lose pages)
37
+ for (const route of model.nav.routes) {
38
+ const routeId = pageIdToRouteId.get(route.pageId);
39
+ if (routeId && !seenRouteIds.has(routeId)) {
40
+ newOrders.push({ routeId, subRoutes: [] });
41
+ }
42
+ }
43
+ model.nav.orders = newOrders;
44
+ this.log({
45
+ message: `Reordered pages: ${pageOrder.join(', ')}`,
46
+ });
47
+ return { request: this.request, model };
48
+ }
49
+ }
@@ -134,16 +134,21 @@ declare const _default: import("vue").DefineComponent<{}, {
134
134
  hideChangeTemplateConfirmModal(): void;
135
135
  onBackgroundChanged(): void;
136
136
  onChangeTemplateConfirmModalCancel(): void;
137
- onChangeTemplateConfirmModalConfirm(): void;
137
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
138
138
  onContentChanged(): void;
139
139
  onStyleChanged(): void;
140
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
140
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
141
141
  setSelectedTabName(payload: any): void;
142
142
  showNextNotificationMessage(): Promise<void>;
143
143
  updateContent<TContent extends Content, P extends {
144
144
  id: string;
145
145
  content: TContent;
146
146
  }>(payload: P): Promise<void>;
147
+ _captureTemplateSwitchIfEnabled(): void;
148
+ applyHistorySnapshot(snapshot: import("@brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
149
+ _syncLogoSettingsFromSnapshot(snapshot: import("@brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
150
+ _navigateToActivePage(activePageId?: string | undefined): void;
151
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page").BrandPageModel): void;
147
152
  export(): import("@brand-page").BrandPageModel;
148
153
  setBrandPageType({ brandPageType }: {
149
154
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -784,6 +789,22 @@ declare const _default: import("vue").DefineComponent<{}, {
784
789
  }>;
785
790
  eventTracker: {
786
791
  sendShippingToggleEvent: (isEnabled: boolean) => void;
792
+ sendUndoEvent: (props: {
793
+ entries_count: number;
794
+ actor: string | undefined;
795
+ }) => void;
796
+ sendRedoEvent: (props: {
797
+ entries_count: number;
798
+ actor: string | undefined;
799
+ }) => void;
800
+ sendHistoryCappedEvent: (props: {
801
+ entries_count: number;
802
+ size_bytes: number;
803
+ }) => void;
804
+ sendHistoryOversizedEvent: (props: {
805
+ attempted_bytes: number;
806
+ source: string;
807
+ }) => void;
787
808
  sendSaveContactEvent: () => void;
788
809
  sendStartForFreeEvent: () => void;
789
810
  sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
@@ -823,6 +844,70 @@ declare const _default: import("vue").DefineComponent<{}, {
823
844
  sendAiSendPromptEvent: (ctaLocation: string) => void;
824
845
  sendAiStopGenerationEvent: (ctaLocation: string) => void;
825
846
  };
847
+ historyStore: import("pinia").Store<"history", Pick<{
848
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
849
+ currentIndex: import("vue").Ref<number, number>;
850
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
851
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
852
+ canUndo: import("vue").ComputedRef<boolean>;
853
+ canRedo: import("vue").ComputedRef<boolean>;
854
+ captureBaseline: () => void;
855
+ capture: (args: {
856
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
857
+ actor: "user" | "ai_builder";
858
+ label?: string | undefined;
859
+ }) => "committed" | "oversized" | "noop" | "skipped";
860
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
861
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
862
+ mergeNextMutation: () => void;
863
+ undo: () => Promise<void>;
864
+ redo: () => Promise<void>;
865
+ reset: () => void;
866
+ getCurrentSizeBytes: () => number;
867
+ getCurrentEntryCount: () => number;
868
+ }, "entries" | "currentIndex" | "isApplyingSnapshot" | "baselineCaptured">, Pick<{
869
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
870
+ currentIndex: import("vue").Ref<number, number>;
871
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
872
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
873
+ canUndo: import("vue").ComputedRef<boolean>;
874
+ canRedo: import("vue").ComputedRef<boolean>;
875
+ captureBaseline: () => void;
876
+ capture: (args: {
877
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
878
+ actor: "user" | "ai_builder";
879
+ label?: string | undefined;
880
+ }) => "committed" | "oversized" | "noop" | "skipped";
881
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
882
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
883
+ mergeNextMutation: () => void;
884
+ undo: () => Promise<void>;
885
+ redo: () => Promise<void>;
886
+ reset: () => void;
887
+ getCurrentSizeBytes: () => number;
888
+ getCurrentEntryCount: () => number;
889
+ }, "canUndo" | "canRedo">, Pick<{
890
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
891
+ currentIndex: import("vue").Ref<number, number>;
892
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
893
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
894
+ canUndo: import("vue").ComputedRef<boolean>;
895
+ canRedo: import("vue").ComputedRef<boolean>;
896
+ captureBaseline: () => void;
897
+ capture: (args: {
898
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
899
+ actor: "user" | "ai_builder";
900
+ label?: string | undefined;
901
+ }) => "committed" | "oversized" | "noop" | "skipped";
902
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
903
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
904
+ mergeNextMutation: () => void;
905
+ undo: () => Promise<void>;
906
+ redo: () => Promise<void>;
907
+ reset: () => void;
908
+ getCurrentSizeBytes: () => number;
909
+ getCurrentEntryCount: () => number;
910
+ }, "reset" | "undo" | "redo" | "captureBaseline" | "capture" | "captureTemplateSwitch" | "captureAiChangeset" | "mergeNextMutation" | "getCurrentSizeBytes" | "getCurrentEntryCount">>;
826
911
  externalEditor: import("@tiptap/vue-3").Editor;
827
912
  }, {
828
913
  categoryTabs: CategoryTab[];
@@ -11,6 +11,7 @@ import { useExternalRichTextEditor } from '@brand-page-maker/composables/rich-te
11
11
  import { switchAllContentToRTE, transformToRTE, RTE_ALLOWED_SECTION_TYPES, } from '@brand-page-maker/utils';
12
12
  import { useUiStyleSettingsStore } from '../../../style-settings/store';
13
13
  import { usePageNavigationStore } from '../../../../shared/page-navigation/store/page-navigation-store';
14
+ import { useHistoryStore } from '@brand-page-maker/stores/history/history-store';
14
15
  export default defineComponent({
15
16
  setup() {
16
17
  const brandPageMakerStore = useBrandPageMakerStore();
@@ -20,6 +21,7 @@ export default defineComponent({
20
21
  const styleSettingsStore = useUiStyleSettingsStore();
21
22
  const userStore = useBrandPageMakerUserStore();
22
23
  const eventTracker = useEventTracker();
24
+ const historyStore = useHistoryStore();
23
25
  const { externalEditor } = useExternalRichTextEditor();
24
26
  return {
25
27
  mode: computed(() => contentSettingsStore.mode),
@@ -36,6 +38,7 @@ export default defineComponent({
36
38
  pageSettingsStore,
37
39
  styleSettingsStore,
38
40
  eventTracker,
41
+ historyStore,
39
42
  externalEditor,
40
43
  };
41
44
  },
@@ -52,6 +55,8 @@ export default defineComponent({
52
55
  },
53
56
  mounted() {
54
57
  if (this.canUseRichTextEditor) {
58
+ // RTE rewrap on tab mount — fold into current head.
59
+ this.historyStore.mergeNextMutation();
55
60
  switchAllContentToRTE(this.pageSettingsStore, this.externalEditor, this.styleSettingsStore);
56
61
  }
57
62
  },
@@ -26,6 +26,7 @@ export const Sample = () => {
26
26
  canUseGettyVideos: true,
27
27
  canUseGoogleAdsense: false,
28
28
  googleAdsenseEnabled: false,
29
+ canUseUndoRedo: false,
29
30
  };
30
31
  const pinia = setupStoryPinia();
31
32
  const contentSettingsStore = useUiContentSettingsStore();
@@ -650,16 +650,21 @@ declare const _default: import("vue").DefineComponent<{}, {
650
650
  hideChangeTemplateConfirmModal(): void;
651
651
  onBackgroundChanged(): void;
652
652
  onChangeTemplateConfirmModalCancel(): void;
653
- onChangeTemplateConfirmModalConfirm(): void;
653
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
654
654
  onContentChanged(): void;
655
655
  onStyleChanged(): void;
656
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
656
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
657
657
  setSelectedTabName(payload: any): void;
658
658
  showNextNotificationMessage(): Promise<void>;
659
659
  updateContent<TContent extends import("@brand-page").Content, P extends {
660
660
  id: string;
661
661
  content: TContent;
662
662
  }>(payload: P): Promise<void>;
663
+ _captureTemplateSwitchIfEnabled(): void;
664
+ applyHistorySnapshot(snapshot: import("@brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
665
+ _syncLogoSettingsFromSnapshot(snapshot: import("@brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
666
+ _navigateToActivePage(activePageId?: string | undefined): void;
667
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page").BrandPageModel): void;
663
668
  export(): import("@brand-page").BrandPageModel;
664
669
  setBrandPageType({ brandPageType }: {
665
670
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -732,6 +737,22 @@ declare const _default: import("vue").DefineComponent<{}, {
732
737
  }>;
733
738
  bpEventTracker: {
734
739
  sendShippingToggleEvent: (isEnabled: boolean) => void;
740
+ sendUndoEvent: (props: {
741
+ entries_count: number;
742
+ actor: string | undefined;
743
+ }) => void;
744
+ sendRedoEvent: (props: {
745
+ entries_count: number;
746
+ actor: string | undefined;
747
+ }) => void;
748
+ sendHistoryCappedEvent: (props: {
749
+ entries_count: number;
750
+ size_bytes: number;
751
+ }) => void;
752
+ sendHistoryOversizedEvent: (props: {
753
+ attempted_bytes: number;
754
+ source: string;
755
+ }) => void;
735
756
  sendSaveContactEvent: () => void;
736
757
  sendStartForFreeEvent: () => void;
737
758
  sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
@@ -474,6 +474,22 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
474
474
  }>;
475
475
  eventTracker: {
476
476
  sendShippingToggleEvent: (isEnabled: boolean) => void;
477
+ sendUndoEvent: (props: {
478
+ entries_count: number;
479
+ actor: string | undefined;
480
+ }) => void;
481
+ sendRedoEvent: (props: {
482
+ entries_count: number;
483
+ actor: string | undefined;
484
+ }) => void;
485
+ sendHistoryCappedEvent: (props: {
486
+ entries_count: number;
487
+ size_bytes: number;
488
+ }) => void;
489
+ sendHistoryOversizedEvent: (props: {
490
+ attempted_bytes: number;
491
+ source: string;
492
+ }) => void;
477
493
  sendSaveContactEvent: () => void;
478
494
  sendStartForFreeEvent: () => void;
479
495
  sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
@@ -597,16 +597,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
597
597
  hideChangeTemplateConfirmModal(): void;
598
598
  onBackgroundChanged(): void;
599
599
  onChangeTemplateConfirmModalCancel(): void;
600
- onChangeTemplateConfirmModalConfirm(): void;
600
+ onChangeTemplateConfirmModalConfirm(): Promise<void>;
601
601
  onContentChanged(): void;
602
602
  onStyleChanged(): void;
603
- onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void;
603
+ onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
604
604
  setSelectedTabName(payload: any): void;
605
605
  showNextNotificationMessage(): Promise<void>;
606
606
  updateContent<TContent extends Content, P extends {
607
607
  id: string;
608
608
  content: TContent;
609
609
  }>(payload: P): Promise<void>;
610
+ _captureTemplateSwitchIfEnabled(): void;
611
+ applyHistorySnapshot(snapshot: import("@brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
612
+ _syncLogoSettingsFromSnapshot(snapshot: import("@brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
613
+ _navigateToActivePage(activePageId?: string | undefined): void;
614
+ _fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page").BrandPageModel): void;
610
615
  export(): import("@brand-page").BrandPageModel;
611
616
  setBrandPageType({ brandPageType }: {
612
617
  brandPageType: "default" | "brandSite" | "brandContact";
@@ -59,6 +59,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
59
59
  schema: string;
60
60
  textIcon: string;
61
61
  textIcons: string[];
62
+ focusedIndex: number | null;
63
+ focusedDisplay: string;
62
64
  }, {
63
65
  items: {
64
66
  get(): DraggableItem[];
@@ -79,6 +81,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
79
81
  setItemValue(index: number, itemValue: string): void;
80
82
  onColorReplacementsChange(payload: UpdateItemValuePayload<ColorReplacement[]>, index: number): void;
81
83
  onFocusOverride(index: number, itemValue: string): void;
84
+ inputDisplayValue(index: number): string;
82
85
  onBlurOverride(index: number, itemValue: string): void;
83
86
  isImageUrl(url: string): boolean;
84
87
  }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:model-value" | "on-intent-image-replace" | "on-color-replacements-change")[], "update:model-value" | "on-intent-image-replace" | "on-color-replacements-change", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -70,6 +70,12 @@ export default defineComponent({
70
70
  schema: 'https',
71
71
  textIcon: 'globe',
72
72
  textIcons: [],
73
+ // Display-only override for the focused URL input. While a row is
74
+ // focused we strip the schema visually but MUST NOT mutate modelValue —
75
+ // doing so would land in the store and trigger a spurious undo/redo
76
+ // history entry between focus and blur (BP-5506).
77
+ focusedIndex: null,
78
+ focusedDisplay: '',
73
79
  }),
74
80
  computed: {
75
81
  items: {
@@ -143,14 +149,25 @@ export default defineComponent({
143
149
  this.$emit('on-color-replacements-change', payload, index);
144
150
  },
145
151
  onFocusOverride(index, itemValue) {
146
- const value = [...this.modelValue];
147
152
  const match = URL_RE.exec(itemValue);
148
153
  if (match) {
149
154
  this.schema = match[1];
150
- value[index][this.valuePropName] = match[2];
155
+ this.focusedIndex = index;
156
+ this.focusedDisplay = match[2];
157
+ }
158
+ else {
159
+ this.focusedIndex = index;
160
+ this.focusedDisplay = itemValue;
151
161
  }
152
162
  },
163
+ inputDisplayValue(index) {
164
+ return this.focusedIndex === index
165
+ ? this.focusedDisplay
166
+ : this.itemValue(index);
167
+ },
153
168
  onBlurOverride(index, itemValue) {
169
+ this.focusedIndex = null;
170
+ this.focusedDisplay = '';
154
171
  const value = [...this.modelValue];
155
172
  let isValid = true;
156
173
  if (isEmail(itemValue)) {
@@ -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,70 @@ 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
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
491
+ canUndo: import("vue").ComputedRef<boolean>;
492
+ canRedo: import("vue").ComputedRef<boolean>;
493
+ captureBaseline: () => void;
494
+ capture: (args: {
495
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
496
+ actor: "user" | "ai_builder";
497
+ label?: string | undefined;
498
+ }) => "committed" | "oversized" | "noop" | "skipped";
499
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
500
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
501
+ mergeNextMutation: () => void;
502
+ undo: () => Promise<void>;
503
+ redo: () => Promise<void>;
504
+ reset: () => void;
505
+ getCurrentSizeBytes: () => number;
506
+ getCurrentEntryCount: () => number;
507
+ }, "entries" | "currentIndex" | "isApplyingSnapshot" | "baselineCaptured">, Pick<{
508
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
509
+ currentIndex: import("vue").Ref<number, number>;
510
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
511
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
512
+ canUndo: import("vue").ComputedRef<boolean>;
513
+ canRedo: import("vue").ComputedRef<boolean>;
514
+ captureBaseline: () => void;
515
+ capture: (args: {
516
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
517
+ actor: "user" | "ai_builder";
518
+ label?: string | undefined;
519
+ }) => "committed" | "oversized" | "noop" | "skipped";
520
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
521
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
522
+ mergeNextMutation: () => void;
523
+ undo: () => Promise<void>;
524
+ redo: () => Promise<void>;
525
+ reset: () => void;
526
+ getCurrentSizeBytes: () => number;
527
+ getCurrentEntryCount: () => number;
528
+ }, "canUndo" | "canRedo">, Pick<{
529
+ entries: import("vue").ShallowRef<import("@brand-page-maker/stores/history/history-store").HistoryEntry[], import("@brand-page-maker/stores/history/history-store").HistoryEntry[]>;
530
+ currentIndex: import("vue").Ref<number, number>;
531
+ isApplyingSnapshot: import("vue").Ref<boolean, boolean>;
532
+ baselineCaptured: import("vue").Ref<boolean, boolean>;
533
+ canUndo: import("vue").ComputedRef<boolean>;
534
+ canRedo: import("vue").ComputedRef<boolean>;
535
+ captureBaseline: () => void;
536
+ capture: (args: {
537
+ source: "manual_edit" | "template_switch" | "ai_changeset" | "rich_text";
538
+ actor: "user" | "ai_builder";
539
+ label?: string | undefined;
540
+ }) => "committed" | "oversized" | "noop" | "skipped";
541
+ captureTemplateSwitch: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
542
+ captureAiChangeset: (label?: string | undefined) => "committed" | "oversized" | "noop" | "skipped";
543
+ mergeNextMutation: () => void;
544
+ undo: () => Promise<void>;
545
+ redo: () => Promise<void>;
546
+ reset: () => void;
547
+ getCurrentSizeBytes: () => number;
548
+ getCurrentEntryCount: () => number;
549
+ }, "reset" | "undo" | "redo" | "captureBaseline" | "capture" | "captureTemplateSwitch" | "captureAiChangeset" | "mergeNextMutation" | "getCurrentSizeBytes" | "getCurrentEntryCount">>;
486
550
  }, {
487
551
  selectedPaymentConfig: BrandPagePaymentConfig | undefined;
488
552
  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
  },
@@ -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;