@designcrowd/library.brand-page 5.18.3-snapshot-imp → 5.18.3-undo-35
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.
- package/lib/src/{CreatedOnBrandCrowd-de-de-ChzmotnG.js → CreatedOnBrandCrowd-de-de-nGPiEkaH.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-ZdFzOWbY.js → CreatedOnBrandCrowd-en-us-D3ibxOrN.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-CuDl4NR4.js → CreatedOnBrandCrowd-es-es-BAq0PV5c.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-BAvtNfrv.js → CreatedOnBrandCrowd-fr-ca-9foHt2a-.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-BAvtNfrv.js → CreatedOnBrandCrowd-fr-fr-9foHt2a-.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-b4itoYT_.js → CreatedOnBrandCrowd-pt-br-DO739Uxl.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-b4itoYT_.js → CreatedOnBrandCrowd-pt-pt-DO739Uxl.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-G5gGEkB6.js → CreatedOnDcom-de-de-CFbNW8tl.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-BpguOdZJ.js → CreatedOnDcom-en-us-BL34V8eu.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-BRgcye-V.js → CreatedOnDcom-es-es-BKXWvHkV.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-CFbsr6oq.js → CreatedOnDcom-fr-ca-DCyU-m6J.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-DUmO5M1Y.js → CreatedOnDcom-fr-fr-DEciA_zh.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-CmF0vR2v.js → CreatedOnDcom-pt-br-BVB2zdvU.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-CuEzlMh3.js → CreatedOnDcom-pt-pt-DatUuIK6.js} +1 -1
- package/lib/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.d.ts +1 -1
- package/lib/src/brand-page/components/media/Media.mixin.d.ts +2 -2
- package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +7 -2
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +7 -2
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +10 -0
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +7 -2
- package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +1 -0
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +23 -2
- package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +7 -2
- package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +3 -0
- package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.js +11 -0
- package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +7 -2
- package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +7 -2
- package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +7 -2
- package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +7 -2
- package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +12 -16
- package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +20 -1
- package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +20 -0
- package/lib/src/brand-page-maker/composables/useEventTracker.js +17 -0
- package/lib/src/brand-page-maker/composables/useUndoRedoFlag.d.ts +16 -0
- package/lib/src/brand-page-maker/composables/useUndoRedoFlag.js +22 -0
- package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +41 -2
- package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +307 -5
- package/lib/src/brand-page-maker/stores/history/history-store.d.ts +83 -0
- package/lib/src/brand-page-maker/stores/history/history-store.js +488 -0
- package/lib/src/brand-page-maker/stores/logo-store/logo-store.d.ts +1 -0
- package/lib/src/brand-page-maker/stores/user/user-store.js +1 -0
- package/lib/src/bundled-translations-D1q3rSEz.js +175 -0
- package/lib/src/{bundled-translations.de-DE-2Ys7epLO.js → bundled-translations.de-DE-DpdVePM9.js} +1 -1
- package/lib/src/bundled-translations.es-ES-BsIcrzZF.js +175 -0
- package/lib/src/bundled-translations.fr-CA-G1XCp2Qh.js +175 -0
- package/lib/src/bundled-translations.fr-FR-BdwLXOnB.js +175 -0
- package/lib/src/bundled-translations.pt-BR-Bvn5ePe7.js +175 -0
- package/lib/src/bundled-translations.pt-PT-CDtkb2k1.js +175 -0
- package/lib/src/bundles/bundled-translations.de-DE.json +2 -0
- package/lib/src/bundles/bundled-translations.es-ES.json +2 -0
- package/lib/src/bundles/bundled-translations.fr-CA.json +2 -0
- package/lib/src/bundles/bundled-translations.fr-FR.json +2 -0
- package/lib/src/bundles/bundled-translations.json +5 -1
- package/lib/src/bundles/bundled-translations.pt-BR.json +2 -0
- package/lib/src/bundles/bundled-translations.pt-PT.json +2 -0
- package/lib/src/composables/useSnapshot.js +21 -233
- package/lib/src/constants/ui.d.ts +1 -0
- package/lib/src/css/library.brand-page-brandCrowd.min.css +70 -18
- package/lib/src/css/library.brand-page-brandPage.min.css +70 -19
- package/lib/src/css/library.brand-page-designCom.min.css +70 -18
- package/lib/src/css/library.brand-page-preview.min.css +70 -18
- package/lib/src/index.mjs +1 -1
- package/lib/src/{lib-ChiCt_bx.js → lib-C_Pc-5bF.js} +35301 -34780
- package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +13 -0
- package/lib/src/metadata-builder/builders/reorder-pages-builder.js +49 -0
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +87 -2
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +5 -0
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.stories.js +1 -0
- package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +23 -2
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +16 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +7 -2
- package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.d.ts +3 -0
- package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.js +19 -2
- package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.js +18 -8
- package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +64 -0
- package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.js +6 -0
- package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +19 -0
- package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +11 -0
- package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +10 -2
- package/lib/src/shared/logo-settings/store/editable-logo-store.d.ts +5 -1
- package/lib/src/shared/logo-settings/store/editable-logo-store.js +31 -0
- package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +24 -2
- package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +10 -2
- package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +23 -2
- package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +16 -0
- package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +23 -2
- package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +16 -0
- package/package.json +1 -1
- package/src/brand-page-maker/components/ai-website-builder/AiWebsiteBuilder.vue +4 -3
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +11 -0
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +3 -11
- package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +1 -0
- package/src/brand-page-maker/components/brandpage-settings/BrandPageSettings.vue +8 -0
- package/src/brand-page-maker/components/cookie-collection/CookieSettings.vue +18 -17
- package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.ts +13 -0
- package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.vue +26 -3
- package/src/brand-page-maker/components/quick-link-bar/RedoButton.vue +66 -0
- package/src/brand-page-maker/components/quick-link-bar/UndoButton.vue +66 -0
- package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.json +3 -1
- package/src/brand-page-maker/components/quick-link-bar/undo-redo-buttons.test.ts +116 -0
- package/src/brand-page-maker/components/save-contact/SaveContact.vue +12 -19
- package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +14 -19
- package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +24 -1
- package/src/brand-page-maker/composables/useEventTracker.ts +29 -0
- package/src/brand-page-maker/composables/useUndoRedoFlag.ts +26 -0
- package/src/brand-page-maker/constants/i18n/constants.de-DE.json +2 -0
- package/src/brand-page-maker/constants/i18n/constants.es-ES.json +2 -0
- package/src/brand-page-maker/constants/i18n/constants.fr-CA.json +2 -0
- package/src/brand-page-maker/constants/i18n/constants.fr-FR.json +2 -0
- package/src/brand-page-maker/constants/i18n/constants.json +2 -0
- package/src/brand-page-maker/constants/i18n/constants.pt-BR.json +2 -0
- package/src/brand-page-maker/constants/i18n/constants.pt-PT.json +2 -0
- package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +335 -0
- package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +371 -4
- package/src/brand-page-maker/stores/history/history-store.test.ts +1120 -0
- package/src/brand-page-maker/stores/history/history-store.ts +651 -0
- package/src/brand-page-maker/stores/logo-store/logo-store.ts +5 -0
- package/src/brand-page-maker/stores/user/user-store.ts +1 -0
- package/src/bundles/bundled-translations.de-DE.json +2 -0
- package/src/bundles/bundled-translations.es-ES.json +2 -0
- package/src/bundles/bundled-translations.fr-CA.json +2 -0
- package/src/bundles/bundled-translations.fr-FR.json +2 -0
- package/src/bundles/bundled-translations.json +5 -1
- package/src/bundles/bundled-translations.pt-BR.json +2 -0
- package/src/bundles/bundled-translations.pt-PT.json +2 -0
- package/src/composables/useSnapshot.ts +31 -316
- package/src/constants/ui.ts +1 -0
- package/src/metadata-builder/builders/reorder-pages-builder.ts +80 -0
- package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +5 -0
- package/src/shared/content-settings/components/content-settings/ContentSettings.stories.ts +1 -0
- package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.ts +19 -2
- package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.vue +1 -1
- package/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.ts +26 -10
- package/src/shared/content-settings/components/logo-selection-field/LogoSelection.vue +63 -48
- package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +4 -0
- package/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.ts +7 -0
- package/src/shared/content-settings/components/text-field/TextField.vue +1 -0
- package/src/shared/content-settings/components/text-image-field/TextImageField.vue +33 -4
- package/src/shared/font-family-selector/FontPicker.vue +91 -4
- package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +11 -0
- package/src/shared/logo-settings/store/editable-logo-store.ts +42 -1
- package/lib/src/bundled-translations-CnareLWC.js +0 -175
- package/lib/src/bundled-translations.es-ES-Cjp-G8rT.js +0 -175
- package/lib/src/bundled-translations.fr-CA-CsaW4Oae.js +0 -175
- package/lib/src/bundled-translations.fr-FR-DIT2dd8J.js +0 -175
- package/lib/src/bundled-translations.pt-BR-BamoBpDW.js +0 -175
- package/lib/src/bundled-translations.pt-PT-C9A4hY_e.js +0 -175
|
@@ -63,7 +63,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
63
63
|
}>> & Readonly<{
|
|
64
64
|
"onImage-click"?: ((...args: any[]) => any) | undefined;
|
|
65
65
|
}>, {
|
|
66
|
-
gap: number;
|
|
67
66
|
contentIndex: number;
|
|
67
|
+
gap: number;
|
|
68
68
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
69
69
|
export default _default;
|
|
@@ -141,10 +141,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
141
141
|
size: string;
|
|
142
142
|
displayStyle: string;
|
|
143
143
|
role: string;
|
|
144
|
-
minHeight: number | boolean;
|
|
145
|
-
minWidth: number | boolean;
|
|
146
144
|
contentIndex: number;
|
|
147
145
|
altText: string;
|
|
148
146
|
imgClasses: string | Record<string, any>;
|
|
147
|
+
minHeight: number | boolean;
|
|
148
|
+
minWidth: number | boolean;
|
|
149
149
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
150
150
|
export default _default;
|
|
@@ -107,16 +107,21 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
107
107
|
hideChangeTemplateConfirmModal(): void;
|
|
108
108
|
onBackgroundChanged(): void;
|
|
109
109
|
onChangeTemplateConfirmModalCancel(): void;
|
|
110
|
-
onChangeTemplateConfirmModalConfirm(): void
|
|
110
|
+
onChangeTemplateConfirmModalConfirm(): Promise<void>;
|
|
111
111
|
onContentChanged(): void;
|
|
112
112
|
onStyleChanged(): void;
|
|
113
|
-
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void
|
|
113
|
+
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
|
|
114
114
|
setSelectedTabName(payload: any): void;
|
|
115
115
|
showNextNotificationMessage(): Promise<void>;
|
|
116
116
|
updateContent<TContent extends import("@brand-page/models").Content, P extends {
|
|
117
117
|
id: string;
|
|
118
118
|
content: TContent;
|
|
119
119
|
}>(payload: P): Promise<void>;
|
|
120
|
+
_captureTemplateSwitchIfEnabled(): void;
|
|
121
|
+
applyHistorySnapshot(snapshot: import("@brand-page/models").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
|
|
122
|
+
_syncLogoSettingsFromSnapshot(snapshot: import("@brand-page/models").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
|
|
123
|
+
_navigateToActivePage(activePageId?: string | undefined): void;
|
|
124
|
+
_fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page/models").BrandPageModel): void;
|
|
120
125
|
export(): import("@brand-page/models").BrandPageModel;
|
|
121
126
|
setBrandPageType({ brandPageType }: {
|
|
122
127
|
brandPageType: "default" | "brandSite" | "brandContact";
|
|
@@ -152,16 +152,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
152
152
|
hideChangeTemplateConfirmModal(): void;
|
|
153
153
|
onBackgroundChanged(): void;
|
|
154
154
|
onChangeTemplateConfirmModalCancel(): void;
|
|
155
|
-
onChangeTemplateConfirmModalConfirm(): void
|
|
155
|
+
onChangeTemplateConfirmModalConfirm(): Promise<void>;
|
|
156
156
|
onContentChanged(): void;
|
|
157
157
|
onStyleChanged(): void;
|
|
158
|
-
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void
|
|
158
|
+
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
|
|
159
159
|
setSelectedTabName(payload: any): void;
|
|
160
160
|
showNextNotificationMessage(): Promise<void>;
|
|
161
161
|
updateContent<TContent extends import("@brand-page").Content, P extends {
|
|
162
162
|
id: string;
|
|
163
163
|
content: TContent;
|
|
164
164
|
}>(payload: P): Promise<void>;
|
|
165
|
+
_captureTemplateSwitchIfEnabled(): void;
|
|
166
|
+
applyHistorySnapshot(snapshot: import("@brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
|
|
167
|
+
_syncLogoSettingsFromSnapshot(snapshot: import("@brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
|
|
168
|
+
_navigateToActivePage(activePageId?: string | undefined): void;
|
|
169
|
+
_fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page").BrandPageModel): void;
|
|
165
170
|
export(): import("@brand-page").BrandPageModel;
|
|
166
171
|
setBrandPageType({ brandPageType }: {
|
|
167
172
|
brandPageType: "default" | "brandSite" | "brandContact";
|
|
@@ -11,6 +11,8 @@ import { navigateToPageByPageId } from '../../routing';
|
|
|
11
11
|
import { useBrandPageContainerStore } from '@brand-page-maker/stores';
|
|
12
12
|
import { UI_DEVICE_MODES, UI_SCREENSIZE_MODES, } from '@shared/models';
|
|
13
13
|
import { useBrandPageMakerStore, useBrandPageMakerUserStore, useLocalisedRouteStore, useUiStore, useSnapshotStore, useVideoStore, } from '@brand-page-maker/stores';
|
|
14
|
+
import { useHistoryStore } from '@brand-page-maker/stores/history/history-store';
|
|
15
|
+
import { useUndoRedoFlag } from '@brand-page-maker/composables/useUndoRedoFlag';
|
|
14
16
|
import { useUiContentSettingsStore } from '@shared/content-settings/store';
|
|
15
17
|
import { useUiTemplateSettingsStore } from '@shared/template-settings/store';
|
|
16
18
|
import { useUiPageSettingsStore } from '@shared/page-settings/store';
|
|
@@ -189,6 +191,14 @@ export default defineComponent({
|
|
|
189
191
|
}
|
|
190
192
|
// Mark brand page as fully loaded
|
|
191
193
|
this.brandPageMakerStore.setIsBrandPageLoaded(true);
|
|
194
|
+
// Capture baseline for undo/redo when the feature is active for this
|
|
195
|
+
// session. `useUndoRedoFlag` requires both the LaunchDarkly feature
|
|
196
|
+
// (`userStore.features.canUseUndoRedo`) AND the maker being a brand-site
|
|
197
|
+
// — V1 scope is brand-site only; brand-page and brand-contact don't get
|
|
198
|
+
// undo/redo. See useUndoRedoFlag.ts for the rationale.
|
|
199
|
+
if (useUndoRedoFlag().value) {
|
|
200
|
+
useHistoryStore().captureBaseline();
|
|
201
|
+
}
|
|
192
202
|
this.$emit(EVENTS.Initialised);
|
|
193
203
|
},
|
|
194
204
|
mounted() {
|
|
@@ -96,16 +96,21 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
96
96
|
hideChangeTemplateConfirmModal(): void;
|
|
97
97
|
onBackgroundChanged(): void;
|
|
98
98
|
onChangeTemplateConfirmModalCancel(): void;
|
|
99
|
-
onChangeTemplateConfirmModalConfirm(): void
|
|
99
|
+
onChangeTemplateConfirmModalConfirm(): Promise<void>;
|
|
100
100
|
onContentChanged(): void;
|
|
101
101
|
onStyleChanged(): void;
|
|
102
|
-
onTemplateSelected(payload: import("../../stores").OnTemplateSelectedPayload): void
|
|
102
|
+
onTemplateSelected(payload: import("../../stores").OnTemplateSelectedPayload): Promise<void>;
|
|
103
103
|
setSelectedTabName(payload: any): void;
|
|
104
104
|
showNextNotificationMessage(): Promise<void>;
|
|
105
105
|
updateContent<TContent extends import("../../../lib").Content, P extends {
|
|
106
106
|
id: string;
|
|
107
107
|
content: TContent;
|
|
108
108
|
}>(payload: P): Promise<void>;
|
|
109
|
+
_captureTemplateSwitchIfEnabled(): void;
|
|
110
|
+
applyHistorySnapshot(snapshot: import("../../../lib").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
|
|
111
|
+
_syncLogoSettingsFromSnapshot(snapshot: import("../../../lib").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
|
|
112
|
+
_navigateToActivePage(activePageId?: string | undefined): void;
|
|
113
|
+
_fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../lib").BrandPageModel): void;
|
|
109
114
|
export(): import("../../../lib").BrandPageModel;
|
|
110
115
|
setBrandPageType({ brandPageType }: {
|
|
111
116
|
brandPageType: "default" | "brandSite" | "brandContact";
|
package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts
CHANGED
|
@@ -602,16 +602,21 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
602
602
|
hideChangeTemplateConfirmModal(): void;
|
|
603
603
|
onBackgroundChanged(): void;
|
|
604
604
|
onChangeTemplateConfirmModalCancel(): void;
|
|
605
|
-
onChangeTemplateConfirmModalConfirm(): void
|
|
605
|
+
onChangeTemplateConfirmModalConfirm(): Promise<void>;
|
|
606
606
|
onContentChanged(): void;
|
|
607
607
|
onStyleChanged(): void;
|
|
608
|
-
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void
|
|
608
|
+
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
|
|
609
609
|
setSelectedTabName(payload: any): void;
|
|
610
610
|
showNextNotificationMessage(): Promise<void>;
|
|
611
611
|
updateContent<TContent extends Content, P extends {
|
|
612
612
|
id: string;
|
|
613
613
|
content: TContent;
|
|
614
614
|
}>(payload: P): Promise<void>;
|
|
615
|
+
_captureTemplateSwitchIfEnabled(): void;
|
|
616
|
+
applyHistorySnapshot(snapshot: import("@brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
|
|
617
|
+
_syncLogoSettingsFromSnapshot(snapshot: import("@brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
|
|
618
|
+
_navigateToActivePage(activePageId?: string | undefined): void;
|
|
619
|
+
_fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page").BrandPageModel): void;
|
|
615
620
|
export(): import("@brand-page").BrandPageModel;
|
|
616
621
|
setBrandPageType({ brandPageType }: {
|
|
617
622
|
brandPageType: "default" | "brandSite" | "brandContact";
|
|
@@ -1046,6 +1051,22 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
1046
1051
|
}>;
|
|
1047
1052
|
eventTracker: {
|
|
1048
1053
|
sendShippingToggleEvent: (isEnabled: boolean) => void;
|
|
1054
|
+
sendUndoEvent: (props: {
|
|
1055
|
+
entries_count: number;
|
|
1056
|
+
actor: string | undefined;
|
|
1057
|
+
}) => void;
|
|
1058
|
+
sendRedoEvent: (props: {
|
|
1059
|
+
entries_count: number;
|
|
1060
|
+
actor: string | undefined;
|
|
1061
|
+
}) => void;
|
|
1062
|
+
sendHistoryCappedEvent: (props: {
|
|
1063
|
+
entries_count: number;
|
|
1064
|
+
size_bytes: number;
|
|
1065
|
+
}) => void;
|
|
1066
|
+
sendHistoryOversizedEvent: (props: {
|
|
1067
|
+
attempted_bytes: number;
|
|
1068
|
+
source: string;
|
|
1069
|
+
}) => void;
|
|
1049
1070
|
sendSaveContactEvent: () => void;
|
|
1050
1071
|
sendStartForFreeEvent: () => void;
|
|
1051
1072
|
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
@@ -102,16 +102,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
102
102
|
hideChangeTemplateConfirmModal(): void;
|
|
103
103
|
onBackgroundChanged(): void;
|
|
104
104
|
onChangeTemplateConfirmModalCancel(): void;
|
|
105
|
-
onChangeTemplateConfirmModalConfirm(): void
|
|
105
|
+
onChangeTemplateConfirmModalConfirm(): Promise<void>;
|
|
106
106
|
onContentChanged(): void;
|
|
107
107
|
onStyleChanged(): void;
|
|
108
|
-
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void
|
|
108
|
+
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
|
|
109
109
|
setSelectedTabName(payload: any): void;
|
|
110
110
|
showNextNotificationMessage(): Promise<void>;
|
|
111
111
|
updateContent<TContent extends import("../../../brand-page").Content, P extends {
|
|
112
112
|
id: string;
|
|
113
113
|
content: TContent;
|
|
114
114
|
}>(payload: P): Promise<void>;
|
|
115
|
+
_captureTemplateSwitchIfEnabled(): void;
|
|
116
|
+
applyHistorySnapshot(snapshot: import("../../../brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
|
|
117
|
+
_syncLogoSettingsFromSnapshot(snapshot: import("../../../brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
|
|
118
|
+
_navigateToActivePage(activePageId?: string | undefined): void;
|
|
119
|
+
_fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../brand-page").BrandPageModel): void;
|
|
115
120
|
export(): import("../../../brand-page").BrandPageModel;
|
|
116
121
|
setBrandPageType({ brandPageType }: {
|
|
117
122
|
brandPageType: "default" | "brandSite" | "brandContact";
|
|
@@ -291,9 +291,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
291
291
|
pushManageWebPageUpdateSensitiveContentClickEvent(): Promise<void>;
|
|
292
292
|
pushManageWebPageUnpublishClickEvent(): Promise<void>;
|
|
293
293
|
}>;
|
|
294
|
+
undoRedoEnabled: import("vue").ComputedRef<boolean>;
|
|
294
295
|
}, {
|
|
295
296
|
copied: boolean;
|
|
296
297
|
}, {
|
|
298
|
+
isPublished(): boolean;
|
|
299
|
+
shouldShowBar(): boolean;
|
|
297
300
|
brandPageUrl(): string;
|
|
298
301
|
copyButtonLabel(): string;
|
|
299
302
|
}, {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { defineComponent } from 'vue';
|
|
2
2
|
import { CUSTOM_DOMAIN_STATUSES } from '@brand-page-maker/constants';
|
|
3
3
|
import { useBrandPageContainerStore, useEventManagerStore, } from '@brand-page-maker/stores';
|
|
4
|
+
import { useUndoRedoFlag } from '@brand-page-maker/composables/useUndoRedoFlag';
|
|
4
5
|
import { quickLinkBarTr } from '@src/composables/useTranslate';
|
|
5
6
|
export default defineComponent({
|
|
6
7
|
props: {
|
|
@@ -17,6 +18,7 @@ export default defineComponent({
|
|
|
17
18
|
return {
|
|
18
19
|
brandPageContainerStore: useBrandPageContainerStore(),
|
|
19
20
|
eventManagerStore: useEventManagerStore(),
|
|
21
|
+
undoRedoEnabled: useUndoRedoFlag(),
|
|
20
22
|
};
|
|
21
23
|
},
|
|
22
24
|
data() {
|
|
@@ -25,6 +27,15 @@ export default defineComponent({
|
|
|
25
27
|
};
|
|
26
28
|
},
|
|
27
29
|
computed: {
|
|
30
|
+
isPublished() {
|
|
31
|
+
return this.brandPageContainerStore.isPublished;
|
|
32
|
+
},
|
|
33
|
+
// Only render the bar when at least one inner cluster has something to
|
|
34
|
+
// show. Otherwise we'd render an empty white strip — e.g. on an
|
|
35
|
+
// unpublished page with the undo flag off.
|
|
36
|
+
shouldShowBar() {
|
|
37
|
+
return Boolean(this.undoRedoEnabled) || this.isPublished;
|
|
38
|
+
},
|
|
28
39
|
brandPageUrl() {
|
|
29
40
|
if (this.brandPageContainerStore.isCustomDomainEnabled &&
|
|
30
41
|
this.brandPageContainerStore.customDomain &&
|
|
@@ -380,16 +380,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
380
380
|
hideChangeTemplateConfirmModal(): void;
|
|
381
381
|
onBackgroundChanged(): void;
|
|
382
382
|
onChangeTemplateConfirmModalCancel(): void;
|
|
383
|
-
onChangeTemplateConfirmModalConfirm(): void
|
|
383
|
+
onChangeTemplateConfirmModalConfirm(): Promise<void>;
|
|
384
384
|
onContentChanged(): void;
|
|
385
385
|
onStyleChanged(): void;
|
|
386
|
-
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void
|
|
386
|
+
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
|
|
387
387
|
setSelectedTabName(payload: any): void;
|
|
388
388
|
showNextNotificationMessage(): Promise<void>;
|
|
389
389
|
updateContent<TContent extends import("../../../brand-page").Content, P extends {
|
|
390
390
|
id: string;
|
|
391
391
|
content: TContent;
|
|
392
392
|
}>(payload: P): Promise<void>;
|
|
393
|
+
_captureTemplateSwitchIfEnabled(): void;
|
|
394
|
+
applyHistorySnapshot(snapshot: import("../../../brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
|
|
395
|
+
_syncLogoSettingsFromSnapshot(snapshot: import("../../../brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
|
|
396
|
+
_navigateToActivePage(activePageId?: string | undefined): void;
|
|
397
|
+
_fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../brand-page").BrandPageModel): void;
|
|
393
398
|
export(): import("../../../brand-page").BrandPageModel;
|
|
394
399
|
setBrandPageType({ brandPageType }: {
|
|
395
400
|
brandPageType: "default" | "brandSite" | "brandContact";
|
|
@@ -381,16 +381,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
381
381
|
hideChangeTemplateConfirmModal(): void;
|
|
382
382
|
onBackgroundChanged(): void;
|
|
383
383
|
onChangeTemplateConfirmModalCancel(): void;
|
|
384
|
-
onChangeTemplateConfirmModalConfirm(): void
|
|
384
|
+
onChangeTemplateConfirmModalConfirm(): Promise<void>;
|
|
385
385
|
onContentChanged(): void;
|
|
386
386
|
onStyleChanged(): void;
|
|
387
|
-
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void
|
|
387
|
+
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
|
|
388
388
|
setSelectedTabName(payload: any): void;
|
|
389
389
|
showNextNotificationMessage(): Promise<void>;
|
|
390
390
|
updateContent<TContent extends import("../../../brand-page").Content, P extends {
|
|
391
391
|
id: string;
|
|
392
392
|
content: TContent;
|
|
393
393
|
}>(payload: P): Promise<void>;
|
|
394
|
+
_captureTemplateSwitchIfEnabled(): void;
|
|
395
|
+
applyHistorySnapshot(snapshot: import("../../../brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
|
|
396
|
+
_syncLogoSettingsFromSnapshot(snapshot: import("../../../brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
|
|
397
|
+
_navigateToActivePage(activePageId?: string | undefined): void;
|
|
398
|
+
_fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../brand-page").BrandPageModel): void;
|
|
394
399
|
export(): import("../../../brand-page").BrandPageModel;
|
|
395
400
|
setBrandPageType({ brandPageType }: {
|
|
396
401
|
brandPageType: "default" | "brandSite" | "brandContact";
|
|
@@ -112,16 +112,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
112
112
|
hideChangeTemplateConfirmModal(): void;
|
|
113
113
|
onBackgroundChanged(): void;
|
|
114
114
|
onChangeTemplateConfirmModalCancel(): void;
|
|
115
|
-
onChangeTemplateConfirmModalConfirm(): void
|
|
115
|
+
onChangeTemplateConfirmModalConfirm(): Promise<void>;
|
|
116
116
|
onContentChanged(): void;
|
|
117
117
|
onStyleChanged(): void;
|
|
118
|
-
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void
|
|
118
|
+
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
|
|
119
119
|
setSelectedTabName(payload: any): void;
|
|
120
120
|
showNextNotificationMessage(): Promise<void>;
|
|
121
121
|
updateContent<TContent extends import("../../../brand-page").Content, P extends {
|
|
122
122
|
id: string;
|
|
123
123
|
content: TContent;
|
|
124
124
|
}>(payload: P): Promise<void>;
|
|
125
|
+
_captureTemplateSwitchIfEnabled(): void;
|
|
126
|
+
applyHistorySnapshot(snapshot: import("../../../brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
|
|
127
|
+
_syncLogoSettingsFromSnapshot(snapshot: import("../../../brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
|
|
128
|
+
_navigateToActivePage(activePageId?: string | undefined): void;
|
|
129
|
+
_fallbackSidebarIfSelectedContentMissing(snapshot: import("../../../brand-page").BrandPageModel): void;
|
|
125
130
|
export(): import("../../../brand-page").BrandPageModel;
|
|
126
131
|
setBrandPageType({ brandPageType }: {
|
|
127
132
|
brandPageType: "default" | "brandSite" | "brandContact";
|
|
@@ -432,16 +432,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
432
432
|
hideChangeTemplateConfirmModal(): void;
|
|
433
433
|
onBackgroundChanged(): void;
|
|
434
434
|
onChangeTemplateConfirmModalCancel(): void;
|
|
435
|
-
onChangeTemplateConfirmModalConfirm(): void
|
|
435
|
+
onChangeTemplateConfirmModalConfirm(): Promise<void>;
|
|
436
436
|
onContentChanged(): void;
|
|
437
437
|
onStyleChanged(): void;
|
|
438
|
-
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): void
|
|
438
|
+
onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
|
|
439
439
|
setSelectedTabName(payload: any): void;
|
|
440
440
|
showNextNotificationMessage(): Promise<void>;
|
|
441
441
|
updateContent<TContent extends import("@brand-page").Content, P extends {
|
|
442
442
|
id: string;
|
|
443
443
|
content: TContent;
|
|
444
444
|
}>(payload: P): Promise<void>;
|
|
445
|
+
_captureTemplateSwitchIfEnabled(): void;
|
|
446
|
+
applyHistorySnapshot(snapshot: import("@brand-page").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
|
|
447
|
+
_syncLogoSettingsFromSnapshot(snapshot: import("@brand-page").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
|
|
448
|
+
_navigateToActivePage(activePageId?: string | undefined): void;
|
|
449
|
+
_fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page").BrandPageModel): void;
|
|
445
450
|
export(): import("@brand-page").BrandPageModel;
|
|
446
451
|
setBrandPageType({ brandPageType }: {
|
|
447
452
|
brandPageType: "default" | "brandSite" | "brandContact";
|
|
@@ -10,6 +10,8 @@ import { usePageNavigationStore } from '../../../shared/page-navigation/store/pa
|
|
|
10
10
|
import { navigateToPageByPageId } from '../../routing';
|
|
11
11
|
import { useSnapshotStore, useAiWebsiteBuilderThreadStore, useAiCheckpointStore, useBrandPageContainerStore, useUiStore, } from '../../stores';
|
|
12
12
|
import { useBrandPageMakerStore } from '../../stores';
|
|
13
|
+
import { useHistoryStore } from '../../stores/history/history-store';
|
|
14
|
+
import { useUndoRedoFlag } from '../useUndoRedoFlag';
|
|
13
15
|
import { useBrandPageMakerUserStore } from '../../stores/user/user-store';
|
|
14
16
|
import { useAiMetadataBuilder } from './useAiMetadataBuilder';
|
|
15
17
|
import { pickErrorMessage, pickWsErrorMessage, buildSubmitErrorReport, } from './aiErrorCopy';
|
|
@@ -23,6 +25,8 @@ export function useAiWebsiteBuilderChat() {
|
|
|
23
25
|
const aiThreadStore = useAiWebsiteBuilderThreadStore();
|
|
24
26
|
const snapshotStore = useSnapshotStore();
|
|
25
27
|
const brandPageMakerStore = useBrandPageMakerStore();
|
|
28
|
+
const historyStore = useHistoryStore();
|
|
29
|
+
const undoRedoEnabled = useUndoRedoFlag();
|
|
26
30
|
const containerStore = useBrandPageContainerStore();
|
|
27
31
|
const userStore = useBrandPageMakerUserStore();
|
|
28
32
|
const uiStore = useUiStore();
|
|
@@ -298,6 +302,13 @@ export function useAiWebsiteBuilderChat() {
|
|
|
298
302
|
navigateToPageByPageId(pageNavigationStore.activePageId);
|
|
299
303
|
}
|
|
300
304
|
await nextTick();
|
|
305
|
+
// One history entry per AI prompt (US-E1). `captureAiChangeset` cancels
|
|
306
|
+
// the auto-watcher's pending flush so the apply doesn't double-capture.
|
|
307
|
+
if (undoRedoEnabled.value) {
|
|
308
|
+
historyStore.captureAiChangeset();
|
|
309
|
+
}
|
|
310
|
+
// Re-capture snapshot so subsequent messages reflect the updated page
|
|
311
|
+
await snapshotStore.refreshSnapshotAsync();
|
|
301
312
|
return {
|
|
302
313
|
shouldContinue: toolResults.length > 0 && aiThreadStore.runId !== null,
|
|
303
314
|
toolResults,
|
|
@@ -465,6 +476,7 @@ export function useAiWebsiteBuilderChat() {
|
|
|
465
476
|
settled = true;
|
|
466
477
|
clearTimeout(timeout);
|
|
467
478
|
finishBuild();
|
|
479
|
+
await snapshotStore.refreshSnapshotAsync();
|
|
468
480
|
resolve({
|
|
469
481
|
text: aiResponse.message || lastAiMessage || '',
|
|
470
482
|
});
|
|
@@ -633,22 +645,6 @@ export function useAiWebsiteBuilderChat() {
|
|
|
633
645
|
try {
|
|
634
646
|
aiLogger.startGroup();
|
|
635
647
|
aiLogger.log('sendMessageAsync', { messageOptions });
|
|
636
|
-
// Capture a fresh, full-page snapshot before building the request payload,
|
|
637
|
-
// so every turn — including the first message and any manual edits between
|
|
638
|
-
// turns — carries an up-to-date snapshot. Done here (after the user/typing
|
|
639
|
-
// bubbles are already on screen) so a slow or failed capture never delays
|
|
640
|
-
// or blocks the message from appearing in the thread.
|
|
641
|
-
//
|
|
642
|
-
// Best-effort: the snapshot is optional context, so a capture failure must
|
|
643
|
-
// never fail the AI request. Swallow any error and proceed — the pipeline
|
|
644
|
-
// handles a missing websiteSnapshot, and `callApiBuildAsync` already falls
|
|
645
|
-
// back to `undefined` when the store has no snapshot.
|
|
646
|
-
try {
|
|
647
|
-
await snapshotStore.refreshSnapshotAsync();
|
|
648
|
-
}
|
|
649
|
-
catch (snapshotError) {
|
|
650
|
-
console.error('Snapshot capture failed; sending message without it:', snapshotError);
|
|
651
|
-
}
|
|
652
648
|
const result = await callApiBuildAsync(text || '', userMessage.id);
|
|
653
649
|
if (isStopped.value)
|
|
654
650
|
return;
|
|
@@ -21,6 +21,7 @@ import { buildInitialMarks, emToPx, isStyleChanged, pxToEm, sanitiseClientSideRT
|
|
|
21
21
|
import { HYPERLINK_TYPE, } from '@brand-page';
|
|
22
22
|
import { letterSpacingValueConvertor, colorConvertor, backgroundColorConvertor, } from '@brand-page-maker/convertors';
|
|
23
23
|
import { useUiContentSettingsStore } from '@shared/content-settings/store';
|
|
24
|
+
import { useHistoryStore } from '@brand-page-maker/stores/history/history-store';
|
|
24
25
|
import { AllSelection } from 'prosemirror-state';
|
|
25
26
|
import { MaxLength } from './extensions/MaxLength';
|
|
26
27
|
import { AutoLink } from './extensions/AutoLink';
|
|
@@ -72,6 +73,10 @@ export const useExternalRichTextEditor = () => {
|
|
|
72
73
|
};
|
|
73
74
|
};
|
|
74
75
|
export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDropdownRef, selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyleTypeOptions, markedText, isHyperlinkPopupOpen, selectedLinkTypeValue) => {
|
|
76
|
+
const historyStore = useHistoryStore();
|
|
77
|
+
// TipTap rehydrates and writes back canonical HTML on mount — fold
|
|
78
|
+
// that into the current head instead of pushing a phantom entry.
|
|
79
|
+
historyStore.mergeNextMutation();
|
|
75
80
|
const editor = new Editor({
|
|
76
81
|
content: model.value ?? '',
|
|
77
82
|
editable: !props.readOnly,
|
|
@@ -229,7 +234,14 @@ export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDro
|
|
|
229
234
|
}
|
|
230
235
|
});
|
|
231
236
|
watch(() => model.value, (newValue) => {
|
|
232
|
-
|
|
237
|
+
// Re-seed the editor when the model has been mutated from outside
|
|
238
|
+
// (history undo/redo, template switch, reorder). `!editor.isFocused`
|
|
239
|
+
// distinguishes "external mutation" from "user is typing in me" — the
|
|
240
|
+
// latter would wipe the user's cursor if we called setContent.
|
|
241
|
+
// `updateRichTextEditor.value` is retained as an explicit override for
|
|
242
|
+
// callers (reorder) that need to force a re-seed while focused.
|
|
243
|
+
const isExternalMutation = updateRichTextEditor.value || !editor.isFocused;
|
|
244
|
+
if (isExternalMutation && editor.getHTML() !== newValue) {
|
|
233
245
|
editor.commands.setContent(newValue, false);
|
|
234
246
|
updateRichTextEditor.value = false;
|
|
235
247
|
//text style type is not switching when reordering
|
|
@@ -256,6 +268,13 @@ export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDro
|
|
|
256
268
|
emit('update:modelValue', sanitizedData.sanitizedHtml);
|
|
257
269
|
});
|
|
258
270
|
editor.on('selectionUpdate', () => {
|
|
271
|
+
// Skip while a history snapshot is being applied — `setContent` fires
|
|
272
|
+
// selectionUpdate before the editor has fully rehydrated, which causes
|
|
273
|
+
// toolbar buttons (alignment, letter-spacing) to flash through bogus
|
|
274
|
+
// active states before settling. The editor emits a final selectionUpdate
|
|
275
|
+
// after apply completes, which lands the correct values (BP-5506).
|
|
276
|
+
if (historyStore.isApplyingSnapshot)
|
|
277
|
+
return;
|
|
259
278
|
const textStyleAttributes = editor.getAttributes('textStyle');
|
|
260
279
|
const highlightAttributes = editor.getAttributes('highlight');
|
|
261
280
|
const focusedAlignment = editor.getAttributes(editor.state.selection.$anchor.node().type.name);
|
|
@@ -55,6 +55,10 @@ export declare const EVENTS: {
|
|
|
55
55
|
WEBSITE_MAKER_DIGITAL_BUSINESS_CARDS_HIDE_POPUP: string;
|
|
56
56
|
WEBSITE_MAKER_GETTY_VIDEO: string;
|
|
57
57
|
WEBSITE_MAKER_SHIPPING_TOGGLE: string;
|
|
58
|
+
WEBSITE_MAKER_UNDO: string;
|
|
59
|
+
WEBSITE_MAKER_REDO: string;
|
|
60
|
+
WEBSITE_MAKER_HISTORY_CAPPED: string;
|
|
61
|
+
WEBSITE_MAKER_HISTORY_OVERSIZED: string;
|
|
58
62
|
};
|
|
59
63
|
export declare const SELECT_LOCATIONS: {
|
|
60
64
|
MAKER_PREVIEW: string;
|
|
@@ -107,6 +111,22 @@ export declare const PUBLISH_OPTION_MODAL_CONTINUATION_EVENTS: {
|
|
|
107
111
|
};
|
|
108
112
|
declare const useEventTracker: () => {
|
|
109
113
|
sendShippingToggleEvent: (isEnabled: boolean) => void;
|
|
114
|
+
sendUndoEvent: (props: {
|
|
115
|
+
entries_count: number;
|
|
116
|
+
actor: string | undefined;
|
|
117
|
+
}) => void;
|
|
118
|
+
sendRedoEvent: (props: {
|
|
119
|
+
entries_count: number;
|
|
120
|
+
actor: string | undefined;
|
|
121
|
+
}) => void;
|
|
122
|
+
sendHistoryCappedEvent: (props: {
|
|
123
|
+
entries_count: number;
|
|
124
|
+
size_bytes: number;
|
|
125
|
+
}) => void;
|
|
126
|
+
sendHistoryOversizedEvent: (props: {
|
|
127
|
+
attempted_bytes: number;
|
|
128
|
+
source: string;
|
|
129
|
+
}) => void;
|
|
110
130
|
sendSaveContactEvent: () => void;
|
|
111
131
|
sendStartForFreeEvent: () => void;
|
|
112
132
|
sendFooterLinkClickEvent: (linkType: 'watermark_logo' | 'create_your_website') => void;
|