@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.
- package/lib/src/{CreatedOnBrandCrowd-de-de-DlYq1LAT.js → CreatedOnBrandCrowd-de-de-Cn8zNuGM.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-BssRIQqn.js → CreatedOnBrandCrowd-en-us-CP8xAFc-.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-BGF9pptH.js → CreatedOnBrandCrowd-es-es-Ds8NijwP.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-Caupqu2Z.js → CreatedOnBrandCrowd-fr-ca-BiVV_7lj.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-Caupqu2Z.js → CreatedOnBrandCrowd-fr-fr-BiVV_7lj.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-s9q4uJ4u.js → CreatedOnBrandCrowd-pt-br-CjjrYojo.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-s9q4uJ4u.js → CreatedOnBrandCrowd-pt-pt-CjjrYojo.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-UnYnZbA7.js → CreatedOnDcom-de-de-ChR5jvlP.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-rDv6H12L.js → CreatedOnDcom-en-us-C4rO1BMA.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-DKPLaT6o.js → CreatedOnDcom-es-es-DxGMS6JK.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-DAv34bG7.js → CreatedOnDcom-fr-ca-n31u4t7u.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-DsOHnS8q.js → CreatedOnDcom-fr-fr-gwdsX7YV.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-DpjDBCLj.js → CreatedOnDcom-pt-br-iZjFp--s.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-rFG0unf1.js → CreatedOnDcom-pt-pt-B3Z3-RLC.js} +1 -1
- package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +4 -0
- package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +8 -4
- package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.d.ts +4 -0
- package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.js +4 -0
- package/lib/src/brand-page/components/mailing-list/MailingList.mixin.d.ts +4 -0
- package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +4 -1
- package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.d.ts +4 -0
- package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.js +4 -0
- package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.d.ts +4 -0
- package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.js +4 -1
- package/lib/src/brand-page/components/video/Video.mixin.d.ts +4 -0
- package/lib/src/brand-page/components/video/Video.mixin.js +4 -0
- package/lib/src/brand-page/constants/misc.constants.d.ts +26 -0
- package/lib/src/brand-page/constants/misc.constants.js +42 -0
- package/lib/src/brand-page/models/content.model.d.ts +2 -0
- package/lib/src/brand-page/utils/content-padding.util.d.ts +13 -0
- package/lib/src/brand-page/utils/content-padding.util.js +10 -0
- package/lib/src/brand-page/utils/index.d.ts +1 -0
- package/lib/src/brand-page/utils/index.js +1 -0
- package/lib/src/brand-page/utils/migration/migration-17.d.ts +2 -0
- package/lib/src/brand-page/utils/migration/migration-17.js +48 -0
- package/lib/src/brand-page/utils/migration.util.js +10 -0
- package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +7 -2
- package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +2 -0
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +19 -2
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +8 -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 +104 -2
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +5 -0
- 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 +9 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +21 -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 +17 -0
- package/lib/src/brand-page-maker/composables/useUndoRedoFlag.js +25 -0
- package/lib/src/brand-page-maker/constants/config-settings-constant.js +38 -0
- package/lib/src/brand-page-maker/convertors/about-display-style.convertor.js +9 -1
- package/lib/src/brand-page-maker/convertors/banner-align-display-style.convertor.js +7 -1
- package/lib/src/brand-page-maker/convertors/contact-layout-style.convertor.js +6 -1
- package/lib/src/brand-page-maker/models/content-settings.js +36 -2
- package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +12 -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 +86 -0
- package/lib/src/brand-page-maker/stores/history/history-store.js +501 -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-BUyt4scr.js +175 -0
- package/lib/src/bundled-translations.de-DE-DEw_OVai.js +175 -0
- package/lib/src/bundled-translations.es-ES-CFKWmkgY.js +175 -0
- package/lib/src/bundled-translations.fr-CA-DCl5LJS4.js +175 -0
- package/lib/src/bundled-translations.fr-FR-B5BjgllA.js +175 -0
- package/lib/src/bundled-translations.pt-BR-5PWpMPuM.js +175 -0
- package/lib/src/bundled-translations.pt-PT-B9_wN0HR.js +175 -0
- package/lib/src/bundles/bundled-translations.de-DE.json +5 -1
- package/lib/src/bundles/bundled-translations.es-ES.json +5 -1
- package/lib/src/bundles/bundled-translations.fr-CA.json +5 -1
- package/lib/src/bundles/bundled-translations.fr-FR.json +5 -1
- package/lib/src/bundles/bundled-translations.json +5 -1
- package/lib/src/bundles/bundled-translations.pt-BR.json +5 -1
- package/lib/src/bundles/bundled-translations.pt-PT.json +5 -1
- package/lib/src/constants/ui.d.ts +1 -0
- package/lib/src/css/library.brand-page-brandCrowd.min.css +128 -131
- package/lib/src/css/library.brand-page-brandPage.min.css +128 -132
- package/lib/src/css/library.brand-page-designCom.min.css +128 -131
- package/lib/src/css/library.brand-page-preview.min.css +128 -131
- package/lib/src/index.mjs +1 -1
- package/lib/src/{lib-ngdDRkSL.js → lib-CIj_C38s.js} +36378 -35591
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +104 -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 +37 -2
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +28 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +19 -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/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +12 -0
- 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 +67 -0
- package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.js +6 -0
- package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.js +9 -0
- package/lib/src/shared/content-settings/store/content-settings-store.d.ts +12 -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 +40 -2
- package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +24 -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/lib/src/utils/minify-brand-page-metadata.js +11 -1
- package/package.json +1 -1
- package/src/brand-page/components/about-section/AboutSection.vue +10 -4
- package/src/brand-page/components/banner-section/BannerSection.vue +11 -4
- package/src/brand-page/components/booking-section/BookingSection.vue +11 -3
- package/src/brand-page/components/contact-form/ContactForm.mixin.ts +12 -6
- package/src/brand-page/components/contact-form/ContactForm.vue +105 -104
- package/src/brand-page/components/image-gallery/ImageGallery.mixin.ts +5 -0
- package/src/brand-page/components/image-gallery/ImageGallery.vue +1 -1
- package/src/brand-page/components/mailing-list/MailingList.mixin.ts +8 -1
- package/src/brand-page/components/mailing-list/MailingList.vue +1 -1
- package/src/brand-page/components/map/Map.vue +5 -1
- package/src/brand-page/components/payment/request-payment/RequestPayment.mixin.ts +5 -0
- package/src/brand-page/components/payment/request-payment/RequestPayment.vue +1 -0
- package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +8 -1
- package/src/brand-page/components/payment/support-me/SupportMe.vue +1 -0
- package/src/brand-page/components/shop/Shop.vue +7 -2
- package/src/brand-page/components/social-links/SocialLinks.vue +7 -3
- package/src/brand-page/components/text/Text.vue +12 -5
- package/src/brand-page/components/text-media-section/TextMediaSection.vue +11 -3
- package/src/brand-page/components/video/Video.mixin.ts +5 -0
- package/src/brand-page/components/video/Video.vue +1 -1
- package/src/brand-page/constants/misc.constants.ts +48 -0
- package/src/brand-page/models/content.model.ts +2 -0
- package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +9 -3
- package/src/brand-page/utils/content-padding.util.test.ts +29 -0
- package/src/brand-page/utils/content-padding.util.ts +13 -0
- package/src/brand-page/utils/index.ts +1 -0
- package/src/brand-page/utils/migration/migration-17.ts +65 -0
- package/src/brand-page/utils/migration.util.test.ts +195 -0
- package/src/brand-page/utils/migration.util.ts +11 -0
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +9 -0
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +2 -3
- package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +1 -0
- package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +5 -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.de-DE.json +6 -4
- package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.es-ES.json +6 -4
- package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-CA.json +6 -4
- package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-FR.json +6 -4
- 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/i18n/quick-link-bar.pt-BR.json +6 -4
- package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.pt-PT.json +6 -4
- 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 +10 -0
- package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +28 -1
- package/src/brand-page-maker/composables/useEventTracker.ts +29 -0
- package/src/brand-page-maker/composables/useUndoRedoFlag.ts +30 -0
- package/src/brand-page-maker/constants/config-settings-constant.ts +44 -0
- package/src/brand-page-maker/convertors/about-display-style.convertor.ts +10 -0
- package/src/brand-page-maker/convertors/banner-align-display-style.convertor.ts +8 -0
- package/src/brand-page-maker/convertors/contact-layout-style.convertor.test.ts +50 -0
- package/src/brand-page-maker/convertors/contact-layout-style.convertor.ts +8 -0
- package/src/brand-page-maker/models/content-settings.ts +38 -2
- package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +334 -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 +666 -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 +5 -1
- package/src/bundles/bundled-translations.es-ES.json +5 -1
- package/src/bundles/bundled-translations.fr-CA.json +5 -1
- package/src/bundles/bundled-translations.fr-FR.json +5 -1
- package/src/bundles/bundled-translations.json +5 -1
- package/src/bundles/bundled-translations.pt-BR.json +5 -1
- package/src/bundles/bundled-translations.pt-PT.json +5 -1
- package/src/constants/ui.ts +1 -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/content-settings/i18n/content-settings.de-DE.json +2 -0
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +2 -0
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +2 -0
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +2 -0
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +2 -0
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +2 -0
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +2 -0
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.vue +1 -1
- 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/focused-content-item-settings/FocusedContentItemSettings.vue +2 -2
- 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/slider-field/SliderField.mixin.ts +9 -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/logo-settings/components/EditLogoSettings.mixin.ts +11 -0
- package/src/shared/logo-settings/store/editable-logo-store.ts +42 -1
- package/src/utils/minify-brand-page-metadata.ts +11 -1
- package/lib/src/bundled-translations-B5Fkt3qd.js +0 -175
- package/lib/src/bundled-translations.de-DE-DpdVePM9.js +0 -175
- package/lib/src/bundled-translations.es-ES-BsIcrzZF.js +0 -175
- package/lib/src/bundled-translations.fr-CA-G1XCp2Qh.js +0 -175
- package/lib/src/bundled-translations.fr-FR-BdwLXOnB.js +0 -175
- package/lib/src/bundled-translations.pt-BR-Bvn5ePe7.js +0 -175
- 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;
|
package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.js
CHANGED
|
@@ -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
|
|
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;
|
package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.js
CHANGED
|
@@ -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;
|