@designcrowd/library.brand-page 5.15.21 → 5.15.24-ast-previews-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DZ5Vucii.js → CreatedOnBrandCrowd-de-de-eUKSDWA0.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-DknGL3Zu.js → CreatedOnBrandCrowd-en-us-C_uqDCbw.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-NwtO4oKe.js → CreatedOnBrandCrowd-es-es-D00N7D1y.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-DfUf3ajR.js → CreatedOnBrandCrowd-fr-ca-C_Y11ve1.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-DfUf3ajR.js → CreatedOnBrandCrowd-fr-fr-C_Y11ve1.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-TjO5ceZp.js → CreatedOnBrandCrowd-pt-br-b-NirRyH.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-TjO5ceZp.js → CreatedOnBrandCrowd-pt-pt-b-NirRyH.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-CiEaeern.js → CreatedOnDcom-de-de-DGenvk6d.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-BsQTy39u.js → CreatedOnDcom-en-us-BNO9QrD0.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-BgUs8RD2.js → CreatedOnDcom-es-es-BG_gd286.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-5Rt16LTN.js → CreatedOnDcom-fr-ca-DLBcHowo.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DRajgiLq.js → CreatedOnDcom-fr-fr-jInQfULX.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-CpGsGCmj.js → CreatedOnDcom-pt-br-Di1Kb5Xa.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-C1CjD8Ks.js → CreatedOnDcom-pt-pt-BWZ0TIJv.js} +1 -1
  15. package/lib/src/brand-page/components/media/Media.mixin.d.ts +12 -0
  16. package/lib/src/brand-page/components/media/Media.mixin.js +5 -0
  17. package/lib/src/brand-page/components/page/Page.stories.js +1 -1
  18. package/lib/src/brand-page/components/payment/__fixtures__/request-payment.d.ts +1 -0
  19. package/lib/src/brand-page/components/payment/__fixtures__/support-me.d.ts +1 -0
  20. package/lib/src/brand-page/models/brand-page-context.model.d.ts +1 -0
  21. package/lib/src/brand-page/models/index.d.ts +16 -0
  22. package/lib/src/brand-page/models/index.js +19 -0
  23. package/lib/src/brand-page/models/payment.model.d.ts +7 -0
  24. package/lib/src/brand-page/utils/migration/migration-07.js +1 -1
  25. package/lib/src/brand-page/utils/view-model.util.d.ts +16 -5
  26. package/lib/src/brand-page/utils/view-model.util.js +48 -8
  27. package/lib/src/brand-page/view-models.d.ts +19 -1
  28. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +1 -0
  29. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +4 -0
  30. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.js +1 -0
  31. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +1 -0
  32. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +4 -0
  33. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +1 -0
  34. package/lib/src/brand-page-maker/components/preview/Preview.mixin.js +1 -0
  35. package/lib/src/brand-page-maker/components/preview/Preview.stories.js +1 -1
  36. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +1 -0
  37. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +1 -0
  38. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +1 -0
  39. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +228 -0
  40. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.js +72 -6
  41. package/lib/src/brand-page-maker/constants/config-settings-constant.js +28 -11
  42. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +12 -0
  43. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +20 -3
  44. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +1 -0
  45. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +35 -4
  46. package/lib/src/brand-page-maker/stores/index.d.ts +1 -0
  47. package/lib/src/brand-page-maker/stores/index.js +1 -0
  48. package/lib/src/brand-page-maker/stores/video/index.d.ts +1 -0
  49. package/lib/src/brand-page-maker/stores/video/index.js +1 -0
  50. package/lib/src/brand-page-maker/stores/video/video-store.d.ts +27 -0
  51. package/lib/src/brand-page-maker/stores/video/video-store.js +27 -0
  52. package/lib/src/{bundled-translations-wzmaFfsm.js → bundled-translations-D9iHE5G9.js} +1 -1
  53. package/lib/src/bundled-translations-DfL3kp2E.js +27 -0
  54. package/lib/src/bundled-translations.de-DE-C-Q--DoV.js +27 -0
  55. package/lib/src/bundled-translations.de-DE-DW3iDx_G.js +161 -0
  56. package/lib/src/bundled-translations.es-ES-C2bDEZN2.js +27 -0
  57. package/lib/src/bundled-translations.es-ES-C9I8wDyq.js +161 -0
  58. package/lib/src/bundled-translations.fr-CA-BT6vKgDQ.js +27 -0
  59. package/lib/src/bundled-translations.fr-CA-C0NN8DsO.js +161 -0
  60. package/lib/src/bundled-translations.fr-FR-BekT99Kc.js +27 -0
  61. package/lib/src/bundled-translations.fr-FR-oKV5NyE1.js +161 -0
  62. package/lib/src/bundled-translations.pt-BR-CTvCfv1X.js +161 -0
  63. package/lib/src/bundled-translations.pt-BR-DjzgcAmv.js +27 -0
  64. package/lib/src/bundled-translations.pt-PT-CbwxwRY1.js +161 -0
  65. package/lib/src/bundled-translations.pt-PT-ZxaU_1Hw.js +27 -0
  66. package/lib/src/bundles/bundled-translations.de-DE.json +4 -0
  67. package/lib/src/bundles/bundled-translations.es-ES.json +4 -0
  68. package/lib/src/bundles/bundled-translations.fr-CA.json +4 -0
  69. package/lib/src/bundles/bundled-translations.fr-FR.json +4 -0
  70. package/lib/src/bundles/bundled-translations.json +4 -0
  71. package/lib/src/bundles/bundled-translations.pt-BR.json +4 -0
  72. package/lib/src/bundles/bundled-translations.pt-PT.json +4 -0
  73. package/lib/src/clients/brand-page-client.d.ts +1 -0
  74. package/lib/src/clients/brand-page-client.js +11 -1
  75. package/lib/src/clients/gettyimages-client.js +1 -1
  76. package/lib/src/css/library.brand-page-brandCrowd.min.css +59 -44
  77. package/lib/src/css/library.brand-page-brandPage.min.css +59 -44
  78. package/lib/src/css/library.brand-page-designCom.min.css +59 -44
  79. package/lib/src/css/library.brand-page-preview.min.css +59 -44
  80. package/lib/src/helpers/ts.helper.d.ts +1 -0
  81. package/lib/src/helpers/ts.helper.js +22 -0
  82. package/lib/src/index.d.ts +1 -1
  83. package/lib/src/index.mjs +183 -180
  84. package/lib/src/{lib-BpQH-xbj.js → lib-Crz0R1bS.js} +20226 -19710
  85. package/lib/src/lib.js +1 -1
  86. package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +1 -1
  87. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +4 -0
  88. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +6 -1
  89. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.js +4 -0
  90. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +2 -0
  91. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.js +1 -0
  92. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +4 -0
  93. package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +1 -1
  94. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +2 -0
  95. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +1 -0
  96. package/lib/src/shared/content-settings/components/image-field/ImageField.mixin.d.ts +23 -1
  97. package/lib/src/shared/content-settings/components/image-field/ImageField.mixin.js +25 -1
  98. package/lib/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.mixin.d.ts +1 -0
  99. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +79 -1
  100. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.js +16 -0
  101. package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +1 -1
  102. package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +1 -1
  103. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +1 -1
  104. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +1 -1
  105. package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +1 -1
  106. package/lib/src/shared/content-settings/models.d.ts +2 -0
  107. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +3 -0
  108. package/lib/src/shared/content-settings/store/content-settings-store.js +37 -1
  109. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +2 -0
  110. package/lib/src/shared/my-uploads/models.d.ts +12 -0
  111. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +1 -0
  112. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +4 -0
  113. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +4 -0
  114. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +2 -1
  115. package/lib/src/shared/page-settings/store/page-settings-store.js +35 -0
  116. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +1 -0
  117. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +1 -0
  118. package/lib/src/shared/template-settings/store/template-settings-store.js +18 -5
  119. package/package.json +2 -2
  120. package/src/brand-page/components/banner-section/BannerSection.vue +6 -1
  121. package/src/brand-page/components/media/Media.mixin.ts +6 -0
  122. package/src/brand-page/components/media/Media.vue +18 -3
  123. package/src/brand-page/components/media/Video.vue +62 -0
  124. package/src/brand-page/components/page/Page.stories.ts +1 -0
  125. package/src/brand-page/components/page/Page.vue +2 -2
  126. package/src/brand-page/models/brand-page-context.model.ts +1 -0
  127. package/src/brand-page/models/index.ts +34 -0
  128. package/src/brand-page/models/payment.model.ts +8 -0
  129. package/src/brand-page/utils/migration/migration-07.ts +6 -4
  130. package/src/brand-page/utils/view-model.util.test.ts +10 -2
  131. package/src/brand-page/utils/view-model.util.ts +93 -7
  132. package/src/brand-page/view-models.ts +24 -0
  133. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.ts +1 -0
  134. package/src/brand-page-maker/components/preview/Preview.mixin.ts +1 -0
  135. package/src/brand-page-maker/components/preview/Preview.stories.ts +1 -0
  136. package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.ts +93 -5
  137. package/src/brand-page-maker/components/template-preview/TemplatePreview.vue +40 -4
  138. package/src/brand-page-maker/components/template-preview-with-state/TemplatePreviewWithState.vue +4 -6
  139. package/src/brand-page-maker/constants/config-settings-constant.ts +30 -10
  140. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +46 -1
  141. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +41 -1
  142. package/src/brand-page-maker/stores/index.ts +1 -0
  143. package/src/brand-page-maker/stores/video/index.ts +1 -0
  144. package/src/brand-page-maker/stores/video/video-store.ts +47 -0
  145. package/src/bundles/bundled-translations.de-DE.json +4 -0
  146. package/src/bundles/bundled-translations.es-ES.json +4 -0
  147. package/src/bundles/bundled-translations.fr-CA.json +4 -0
  148. package/src/bundles/bundled-translations.fr-FR.json +4 -0
  149. package/src/bundles/bundled-translations.json +4 -0
  150. package/src/bundles/bundled-translations.pt-BR.json +4 -0
  151. package/src/bundles/bundled-translations.pt-PT.json +4 -0
  152. package/src/clients/brand-page-client.ts +20 -1
  153. package/src/clients/gettyimages-client.js +1 -1
  154. package/src/helpers/ts.helper.ts +30 -0
  155. package/src/lib.ts +1 -0
  156. package/src/shared/common/i18n/common.de-DE.json +1 -0
  157. package/src/shared/common/i18n/common.es-ES.json +1 -0
  158. package/src/shared/common/i18n/common.fr-CA.json +1 -0
  159. package/src/shared/common/i18n/common.fr-FR.json +1 -0
  160. package/src/shared/common/i18n/common.json +2 -0
  161. package/src/shared/common/i18n/common.pt-BR.json +1 -0
  162. package/src/shared/common/i18n/common.pt-PT.json +1 -0
  163. package/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.ts +12 -1
  164. package/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.vue +1 -0
  165. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +3 -0
  166. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +3 -0
  167. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +3 -0
  168. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +3 -0
  169. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +4 -0
  170. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +3 -0
  171. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +3 -0
  172. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.ts +1 -0
  173. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +1 -0
  174. package/src/shared/content-settings/components/image-field/ImageField.mixin.ts +31 -1
  175. package/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.ts +34 -0
  176. package/src/shared/content-settings/components/payment-config-field/PaymentConfigField.vue +23 -8
  177. package/src/shared/content-settings/components/replace-image-base-settings/ReplaceImageBaseSettings.vue +10 -2
  178. package/src/shared/content-settings/models.ts +3 -0
  179. package/src/shared/content-settings/store/content-settings-store.ts +68 -0
  180. package/src/shared/my-uploads/models.ts +16 -0
  181. package/src/shared/page-settings/store/page-settings-store.ts +58 -0
  182. package/src/shared/template-settings/store/template-settings-store.ts +27 -14
  183. package/src/shared/video-library/VideoLibrary.vue +32 -11
  184. package/lib/src/bundled-translations-BMr0LtzI.js +0 -27
  185. package/lib/src/bundled-translations.de-DE-BDSwnN6z.js +0 -27
  186. package/lib/src/bundled-translations.de-DE-BNwDY0Gw.js +0 -161
  187. package/lib/src/bundled-translations.es-ES-B4FHib2V.js +0 -27
  188. package/lib/src/bundled-translations.es-ES-DTvCIjvS.js +0 -161
  189. package/lib/src/bundled-translations.fr-CA-5oL4PLEx.js +0 -161
  190. package/lib/src/bundled-translations.fr-CA-SQDJwXv_.js +0 -27
  191. package/lib/src/bundled-translations.fr-FR-B84T67W5.js +0 -27
  192. package/lib/src/bundled-translations.fr-FR-DWL7DJQp.js +0 -161
  193. package/lib/src/bundled-translations.pt-BR-C9ZYeoLd.js +0 -27
  194. package/lib/src/bundled-translations.pt-BR-CDj0L4EF.js +0 -161
  195. package/lib/src/bundled-translations.pt-PT-BB4hTIYd.js +0 -27
  196. package/lib/src/bundled-translations.pt-PT-M916KJYD.js +0 -161
@@ -15,6 +15,8 @@ interface TemplatePreviewData {
15
15
  renderHeight: number;
16
16
  renderWidth: number;
17
17
  rootStyles: BrandPageCssStyle;
18
+ imageLoadError: boolean;
19
+ imageLoading: boolean;
18
20
  }
19
21
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
20
22
  logoImage: {
@@ -61,6 +63,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
61
63
  };
62
64
  }>, {
63
65
  selectedTemplateId: import("vue").ComputedRef<string | false>;
66
+ isPrePurchase: import("vue").ComputedRef<boolean>;
64
67
  brandPageMakerStore: import("pinia").Store<"brandPageMaker", import("../../stores").BrandPageMakerState, {
65
68
  contentErrorCount(): number;
66
69
  brandPageBaseUrl(): string;
@@ -72,6 +75,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
72
75
  brandPageTemplate(): any;
73
76
  brandPageTitle(): string;
74
77
  brandPageViewModel(): BrandPageViewModel;
78
+ gettyVideoIds(): string[];
75
79
  isInteractivePreviewEnabled(): boolean;
76
80
  isProduction(): boolean;
77
81
  isPublishButtonEnabled(): boolean;
@@ -186,6 +190,224 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
186
190
  showStripeOnboardingModal(): Promise<void>;
187
191
  selectInitialCategories(payload: import("../../../shared/template-settings/models").InitialCategories): void;
188
192
  }>;
193
+ brandPageContainerStore: import("pinia").Store<"brandPageContainer", import("../../stores").BrandPageContainerState, {
194
+ brandPageContentTypes(): string[];
195
+ isAdmin(): boolean;
196
+ isPublished: (state: {
197
+ availableTaxes: any[];
198
+ brandPageBaseUrl: string;
199
+ baseFabricRenderUrl: string;
200
+ brandPageDescription: string;
201
+ brandPageDisplayName: string;
202
+ sensitiveContent: number;
203
+ brandPageSlug: string;
204
+ brandPageStatus: string;
205
+ brandPageToken: string | undefined;
206
+ brandPageTitle: string;
207
+ customDomain: {
208
+ id: string;
209
+ created: Date;
210
+ updated: Date;
211
+ brandPageToken: string;
212
+ domainName: string;
213
+ status: "active" | "pending" | "failed" | "renewFailed" | "deleted";
214
+ dnsConfigurationStatus: "request_expired" | "missing_expected_dns_records" | "invalid_multiple_dns_records_exist" | "unexpected_aaaa_record" | "completed";
215
+ triggerOrigin?: string | undefined;
216
+ } | null;
217
+ createCustomDomainErrorMessage: string | null;
218
+ customDomainConfig?: {
219
+ dns: {
220
+ ipAddresses: string[];
221
+ };
222
+ } | undefined;
223
+ designDraftToken?: string | undefined;
224
+ designTemplateToken: string;
225
+ isCustomDomainEnabled: boolean;
226
+ isBrandPageSlugEditMode: boolean;
227
+ isPublishModalVisible: boolean;
228
+ isUpgradeModalVisible: boolean;
229
+ isPublishing: boolean;
230
+ isProduction: boolean;
231
+ isSellDomainNameEnabled: boolean;
232
+ isStripeOnboardingModalVisible: boolean;
233
+ isReactivationModal: boolean;
234
+ isPublishUpgradeModal: boolean;
235
+ isSaving: boolean;
236
+ backButtonLabel: string;
237
+ manageWebsiteDesignsUrl: string;
238
+ publishErrorMessage: string;
239
+ upgradeUrl: string;
240
+ reactivationUrl: string;
241
+ runtimeEnvironment: string;
242
+ selectedTaxId: number | undefined;
243
+ slug: string;
244
+ standalone: boolean;
245
+ triggerSaveSuccessMessage: boolean;
246
+ isDesignCom: boolean;
247
+ isPrePurchase: boolean;
248
+ makerFonts: any[];
249
+ eventButtonLocation?: string | undefined;
250
+ websiteUpsellModalViewModel?: any;
251
+ showPublishOptionModal?: boolean | undefined;
252
+ abTests: Record<string, string>;
253
+ isSubsequentPublish: boolean;
254
+ } & import("pinia").PiniaCustomStateProperties<import("../../stores").BrandPageContainerState>) => boolean;
255
+ isUserDraft: (state: {
256
+ availableTaxes: any[];
257
+ brandPageBaseUrl: string;
258
+ baseFabricRenderUrl: string;
259
+ brandPageDescription: string;
260
+ brandPageDisplayName: string;
261
+ sensitiveContent: number;
262
+ brandPageSlug: string;
263
+ brandPageStatus: string;
264
+ brandPageToken: string | undefined;
265
+ brandPageTitle: string;
266
+ customDomain: {
267
+ id: string;
268
+ created: Date;
269
+ updated: Date;
270
+ brandPageToken: string;
271
+ domainName: string;
272
+ status: "active" | "pending" | "failed" | "renewFailed" | "deleted";
273
+ dnsConfigurationStatus: "request_expired" | "missing_expected_dns_records" | "invalid_multiple_dns_records_exist" | "unexpected_aaaa_record" | "completed";
274
+ triggerOrigin?: string | undefined;
275
+ } | null;
276
+ createCustomDomainErrorMessage: string | null;
277
+ customDomainConfig?: {
278
+ dns: {
279
+ ipAddresses: string[];
280
+ };
281
+ } | undefined;
282
+ designDraftToken?: string | undefined;
283
+ designTemplateToken: string;
284
+ isCustomDomainEnabled: boolean;
285
+ isBrandPageSlugEditMode: boolean;
286
+ isPublishModalVisible: boolean;
287
+ isUpgradeModalVisible: boolean;
288
+ isPublishing: boolean;
289
+ isProduction: boolean;
290
+ isSellDomainNameEnabled: boolean;
291
+ isStripeOnboardingModalVisible: boolean;
292
+ isReactivationModal: boolean;
293
+ isPublishUpgradeModal: boolean;
294
+ isSaving: boolean;
295
+ backButtonLabel: string;
296
+ manageWebsiteDesignsUrl: string;
297
+ publishErrorMessage: string;
298
+ upgradeUrl: string;
299
+ reactivationUrl: string;
300
+ runtimeEnvironment: string;
301
+ selectedTaxId: number | undefined;
302
+ slug: string;
303
+ standalone: boolean;
304
+ triggerSaveSuccessMessage: boolean;
305
+ isDesignCom: boolean;
306
+ isPrePurchase: boolean;
307
+ makerFonts: any[];
308
+ eventButtonLocation?: string | undefined;
309
+ websiteUpsellModalViewModel?: any;
310
+ showPublishOptionModal?: boolean | undefined;
311
+ abTests: Record<string, string>;
312
+ isSubsequentPublish: boolean;
313
+ } & import("pinia").PiniaCustomStateProperties<import("../../stores").BrandPageContainerState>) => boolean;
314
+ }, {
315
+ initialise(payload: import("../../stores/brandpage-container").InitialisePayload): void;
316
+ setDesignTemplateToken(payload: any): void;
317
+ setDesignDraftToken(payload: any): void;
318
+ setIsBrandPageSlugEditMode(payload: any): void;
319
+ setIsPublishing(payload: any): void;
320
+ setIsPublishModalVisible(payload: any): void;
321
+ setIsPublishUpgradeModal(payload: any): void;
322
+ setIsSaving(payload: any): void;
323
+ setIsUpgradeModalVisible(payload: any): void;
324
+ setPublishErrorMessage(payload: any): void;
325
+ setTriggerSaveSuccessMessage(payload: any): void;
326
+ setSlug(payload: any): void;
327
+ updateBrandPageMeta(payload: any): void;
328
+ updateBrandPageSensitiveContent(payload: any): void;
329
+ setLogoDraftToken(payload: {
330
+ logoDraftToken: string;
331
+ }): void;
332
+ setBackUrl(payload: any): void;
333
+ setIsStripeOnboardingModalVisible(payload: any): void;
334
+ setSelectedTaxId(payload: any): void;
335
+ setBrandPageCustomDomainConfig({ customDomainConfig }: {
336
+ customDomainConfig: any;
337
+ }): void;
338
+ setBrandPageCustomDomain(payload: {
339
+ customDomain: import("../../models").CustomDomainModel | null;
340
+ }): void;
341
+ setCreateCustomDomainErrorMessage(payload: any): void;
342
+ setBrandPageIsCustomDomainEnabled(payload: any): void;
343
+ setIsSubsequentPublish(payload: any): void;
344
+ clearPublishErrorMessage(): void;
345
+ closePublishModal(payload?: {
346
+ skipShowNextNotificationMessage?: boolean | undefined;
347
+ }): Promise<void>;
348
+ closeUpgradeModal(): Promise<void>;
349
+ endBrandPageSlugEditMode(): void;
350
+ publishBrandPage({ shouldPublish, slug }: {
351
+ shouldPublish: any;
352
+ slug: any;
353
+ }): Promise<false | {
354
+ success: boolean;
355
+ websiteUpsellModalViewModel: any;
356
+ }>;
357
+ publishBrandPageWithCustomDomainAsync({ shouldPublish, slug, domain, isPurchasedDomain, }: {
358
+ shouldPublish: any;
359
+ slug: any;
360
+ domain: any;
361
+ isPurchasedDomain: any;
362
+ }): Promise<boolean | undefined>;
363
+ checkWebsiteSlugAsync(slug: string): Promise<import("../../models/api.model").WebsiteSlugCheckResponse | null>;
364
+ redirectToLogoEditPage(logoEditUrl: string, locale: string): Promise<void>;
365
+ redirectToCreateNewDesignPage(): Promise<void>;
366
+ redirectToStripeOnboarding(): Promise<void>;
367
+ exportDesignAsync(): Promise<any>;
368
+ saveBrandPage(payload?: {
369
+ isPublish?: boolean | undefined;
370
+ eventButtonLocation?: string | undefined;
371
+ }): Promise<false | {
372
+ saved: boolean;
373
+ canPublish: boolean;
374
+ websiteUpsellModalViewModel: any;
375
+ }>;
376
+ saveAndPublishBrandPage(eventButtonLocation: string): Promise<void>;
377
+ saveTemplate(): Promise<void>;
378
+ setBrandPageStatus(status: any): Promise<void>;
379
+ showPublishModal(eventButtonLocation?: string | undefined, websiteUpsellModalViewModel?: any, isSubsequentPublish?: boolean | undefined): void;
380
+ showBrandPageSlugEditModal(eventButtonLocation: string): Promise<void>;
381
+ showUpgradeModalAndSaveAsync(): Promise<void>;
382
+ showStripeOnboardingModal(): void;
383
+ closeStripeOnboardingModal(): void;
384
+ showSaveSuccessMessage(): Promise<void>;
385
+ startBrandPageSlugEditMode(): void;
386
+ triggerLockedContentClickedEvent(contentType: string): Promise<void>;
387
+ unpublishBrandPage(): Promise<void>;
388
+ updateBrandPageSettings({ description, title }: {
389
+ description: any;
390
+ title: any;
391
+ }): Promise<void>;
392
+ updateSensitiveContent({ sensitiveContent }: {
393
+ sensitiveContent: any;
394
+ }): Promise<void>;
395
+ createBrandPageCustomDomain({ domainName }: {
396
+ domainName: any;
397
+ }): Promise<false | undefined>;
398
+ createBrandPageWithPurchasedDomain({ domainName }: {
399
+ domainName: any;
400
+ }): Promise<false | undefined>;
401
+ deleteBrandPageCustomDomain({ designDraftToken, customDomainId }: {
402
+ designDraftToken: any;
403
+ customDomainId: any;
404
+ }): Promise<void>;
405
+ refreshBrandPageCustomDomainConfig(): Promise<void>;
406
+ refreshBrandPageCustomDomain(): Promise<void>;
407
+ updateBrandPageIsCustomDomainEnabled({ isCustomDomainEnabled }: {
408
+ isCustomDomainEnabled: any;
409
+ }): Promise<void>;
410
+ }>;
189
411
  }, TemplatePreviewData, {
190
412
  context(): BrandPageContext;
191
413
  previewViewport(): string;
@@ -193,10 +415,16 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
193
415
  innerContainerStyle(): BrandPageCssStyle;
194
416
  isPersonalisable(): boolean;
195
417
  cssVariablesStyle(): Record<string, string>;
418
+ previewImageUrl(): string;
196
419
  }, {
197
420
  onOverlayClicked(): void;
198
421
  onResize(): void;
199
422
  onSetPreviewStyles(styles: BrandPageCssStyle): void;
423
+ onImageError(): void;
424
+ onImageLoad(): void;
425
+ generatePreviewImageUrl(): string;
426
+ getPreviewBaseUrl(): string;
427
+ regeneratePreview(): void;
200
428
  updateViewModel(forceUpdate?: boolean): Promise<void>;
201
429
  }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "template-selected"[], "template-selected", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
202
430
  logoImage: {
@@ -4,16 +4,20 @@ import { applyLogoThemeToBrandPageModel, applyUserPersonalisationToBrandPageMode
4
4
  import { STYLE_THEME_KEYS } from '../../../brand-page/constants';
5
5
  import debounce from 'lodash.debounce';
6
6
  import { MOBILE_HEIGHT, MOBILE_WIDTH } from '../../constants';
7
- import { useBrandPageMakerStore } from '../../stores';
7
+ import { useBrandPageContainerStore, useBrandPageMakerStore, } from '../../stores';
8
8
  import { applyLogoImageBase64UrlToBrandPageTemplateModel, applyLogoImageToBrandPageTemplateModel, applyLogoTemplateImageToBrandPageTemplateModel, } from '../../../brand-page/utils/logo.util';
9
+ import { useVideoStore } from '../../../lib';
9
10
  const DEBOUNCE_IN_MS = 250;
10
11
  export default defineComponent({
11
12
  emits: ['template-selected'],
12
13
  setup() {
13
14
  const brandPageMakerStore = useBrandPageMakerStore();
15
+ const brandPageContainerStore = useBrandPageContainerStore();
14
16
  return {
15
17
  selectedTemplateId: computed(() => brandPageMakerStore.selectedTemplateId),
18
+ isPrePurchase: computed(() => brandPageContainerStore.isPrePurchase),
16
19
  brandPageMakerStore,
20
+ brandPageContainerStore,
17
21
  };
18
22
  },
19
23
  props: {
@@ -72,6 +76,8 @@ export default defineComponent({
72
76
  renderWidth: 400,
73
77
  rootStyles: {},
74
78
  viewModel: undefined,
79
+ imageLoadError: false,
80
+ imageLoading: true,
75
81
  };
76
82
  return data;
77
83
  },
@@ -100,6 +106,7 @@ export default defineComponent({
100
106
  options: {
101
107
  disableNavigationSideMenu: true,
102
108
  mediaSizes: MEDIA_SIZES.sizeThumb,
109
+ renderVideoAsImage: true,
103
110
  },
104
111
  isCapturingPreview: false,
105
112
  };
@@ -145,16 +152,40 @@ export default defineComponent({
145
152
  });
146
153
  return cssVariables;
147
154
  },
155
+ previewImageUrl() {
156
+ return this.generatePreviewImageUrl();
157
+ },
148
158
  },
149
159
  watch: {
150
- logoTheme: {
151
- handler() {
160
+ template() {
161
+ if (this.isPrePurchase) {
152
162
  this.updateViewModel();
163
+ }
164
+ },
165
+ logoImage: {
166
+ handler() {
167
+ if (this.isPrePurchase) {
168
+ this.regeneratePreview();
169
+ }
153
170
  },
154
171
  deep: true,
155
172
  },
156
- template() {
157
- this.updateViewModel();
173
+ logoTemplateImage: {
174
+ handler() {
175
+ // Only regenerate preview in pre-purchase mode
176
+ if (this.isPrePurchase) {
177
+ this.regeneratePreview();
178
+ }
179
+ },
180
+ deep: true,
181
+ },
182
+ logoTheme: {
183
+ handler() {
184
+ if (this.isPrePurchase) {
185
+ this.updateViewModel();
186
+ }
187
+ },
188
+ deep: true,
158
189
  },
159
190
  },
160
191
  created() {
@@ -195,7 +226,39 @@ export default defineComponent({
195
226
  onSetPreviewStyles(styles) {
196
227
  this.rootStyles = styles;
197
228
  },
229
+ onImageError() {
230
+ console.warn(`Failed to load preview image for template ${this.template.id}`);
231
+ this.imageLoadError = true;
232
+ this.imageLoading = false;
233
+ },
234
+ onImageLoad() {
235
+ this.imageLoadError = false;
236
+ this.imageLoading = false;
237
+ },
238
+ generatePreviewImageUrl() {
239
+ const baseUrl = this.getPreviewBaseUrl();
240
+ const logoDraftToken = this.logoImage?.logoDraftToken ||
241
+ '0B660926-D94A-4E29-99D1-F07E67AA6E49';
242
+ const deviceType = this.brandPageMakerStore.brandPageType === 'brandSite'
243
+ ? 'desktop'
244
+ : 'mobile';
245
+ return `${baseUrl}/preview/template/${this.template.id}/${logoDraftToken}?deviceType=${deviceType}`;
246
+ },
247
+ getPreviewBaseUrl() {
248
+ const domainSuffix = '.brand.page';
249
+ const envPrefix = window.location.hostname.split('.')[0];
250
+ return `https://preview-${envPrefix}${domainSuffix}`;
251
+ },
252
+ regeneratePreview() {
253
+ this.imageLoadError = false;
254
+ this.imageLoading = true;
255
+ this.$forceUpdate();
256
+ },
198
257
  async updateViewModel(forceUpdate = true) {
258
+ if (!this.isPrePurchase) {
259
+ return;
260
+ }
261
+ const videoStore = useVideoStore();
199
262
  let model = this.template.brandPageModel;
200
263
  if (this.logoImageBase64Url) {
201
264
  model = applyLogoImageBase64UrlToBrandPageTemplateModel(model, this.logoImageBase64Url);
@@ -211,7 +274,10 @@ export default defineComponent({
211
274
  model = result.model;
212
275
  }
213
276
  model = applyLogoThemeToBrandPageModel(this.logoTheme, model).model;
214
- this.viewModel = await getBrandPageViewModelFromBrandPageModel(model, undefined, false);
277
+ this.viewModel = await getBrandPageViewModelFromBrandPageModel(model, undefined, false, {
278
+ useOldLogoRenderSize: false,
279
+ getVideoUrls: videoStore.getS3VideoUrlsForToken,
280
+ });
215
281
  if (forceUpdate) {
216
282
  this.$forceUpdate();
217
283
  }
@@ -1,4 +1,4 @@
1
- import { SOCIAL_LINKS_ICON_DISPLAY_STYLES, BRAND_PAGE_TYPES, DIVIDER_STYLES, MEDIA_TYPES, BUTTON_LINK_TYPE, FONT_SIZE_BODY, LINE_HEIGHT_BODY, MIN_TEXT_SIZE_PX, MAX_TEXT_SIZE_PX, TEXT_COLUMNS, DEFAULT_SHAPE_SIZE, PAYMENT_OPTION_DISPLAY_TYPES, PAYMENT_OPTION_IMAGE_TYPES, } from '../../brand-page';
1
+ import { SOCIAL_LINKS_ICON_DISPLAY_STYLES, BRAND_PAGE_TYPES, DIVIDER_STYLES, MEDIA_TYPES, BUTTON_LINK_TYPE, FONT_SIZE_BODY, LINE_HEIGHT_BODY, MIN_TEXT_SIZE_PX, MAX_TEXT_SIZE_PX, TEXT_COLUMNS, DEFAULT_SHAPE_SIZE, PAYMENT_OPTION_DISPLAY_TYPES, PAYMENT_OPTION_IMAGE_TYPES, GettyVideoMedia, } from '../../brand-page';
2
2
  import { createInitialButtonContent, createInitialImageContent, createInitialProfileContent, createInitialTextContent, createInitialVideoContent, createInitialLogoContent, createInitialMapContent, createInitialImageGalleryContent, createInitialGeneralLinkContent, createInitialMailingListContent, createInitialRequestPaymentContent, createInitialSupportMeContent, createInitialContactFormContent, CONTENT_SETTINGS_DISPLAY_MODES, createInitialBannerSectionContent, createInitialSocialLinksContent, createInitialImagesSectionContent, createInitialTestimonialSectionContent, createInitialAboutSectionContent, createInitialDividerSectionContent, createInitialShapesSectionContent, VARIANT_DISPLAY_MODES, createInitialShopContent, createInitialBookingSectionContent, } from '../models';
3
3
  import { colorConvertor, backgroundColorConvertor, borderColorConvertor, displayStyleConvertor, galleryTypeConvertor, imageAspectRatioConvertor, textAlignmentOptionsConvertor, videoContentStateConvertor, fillColorConvertor, bannerAlignDisplayStyleConvertor, aboutDisplayStyleConvertor, dividerStyleConvertor, shapeSizeOptionsConvertor, buttonLinkStyleConvertor, textSizeValueConvertor, textColumnStyleConvertor, contactLayoutStyleConvertor, paymentLinkDisplayStyleConvertor, shopDisplayConvertor, shopAspectRatioConvertor, } from '../convertors';
4
4
  import { ALIGN_CENTERED, DISPLAY_STYLE_COLLAPSED, DISPLAY_STYLE_PREVIEW, } from '../../brand-page';
@@ -225,11 +225,12 @@ const shopReplaceImageSettings = () => ({
225
225
  desiredHeight: undefined,
226
226
  desiredWidth: undefined,
227
227
  });
228
+ // TOOD(jyao): This should be reworked to bannerSectionReplaceMediaSettings
228
229
  const bannerSectionReplaceImageSettings = () => ({
229
230
  tabs: ['MY_UPLOADS', 'IMAGE_LIBRARY', 'VIDEO_LIBRARY', 'SHAPE_LIBRARY'],
230
- buttonTitleAdd: contentSettingsTr(`addImageButtonTitle`),
231
- titleAdd: contentSettingsTr(`addImageHeaderTitle`),
232
- titleReplace: contentSettingsTr(`imageReplaceTitle`),
231
+ buttonTitleAdd: contentSettingsTr(`addMediaTitle`),
232
+ titleAdd: contentSettingsTr(`addMediaTitle`),
233
+ titleReplace: contentSettingsTr(`replaceMediaTitle`),
233
234
  contentMediaFieldName: MediaFieldNames.avatarImageUrl,
234
235
  openByDefault: false,
235
236
  mediaType: MEDIA_TYPES.image,
@@ -238,12 +239,28 @@ const bannerSectionReplaceImageSettings = () => ({
238
239
  desiredHeight: undefined,
239
240
  desiredWidth: undefined,
240
241
  setContentMedia: (content, value) => {
241
- content.imageUrl = value.imageUrl;
242
- content.mediaType = MEDIA_TYPES.image;
243
- if (isValidSvgUrl(content.imageUrl)) {
244
- content.size = DEFAULT_SHAPE_SIZE;
245
- content.mediaType = MEDIA_TYPES.shape;
246
- content.colorReplacements = value.colorReplacements || [];
242
+ if (value.media && value.media.type === 'getty-video') {
243
+ const gettyMedia = value.media;
244
+ content.media = new GettyVideoMedia({
245
+ gettyToken: gettyMedia.token,
246
+ gettyAssetId: gettyMedia.assetId,
247
+ mimeType: gettyMedia.mimeType,
248
+ settings: {
249
+ autoPlay: gettyMedia.autoPlay,
250
+ },
251
+ });
252
+ content.imageUrl = '';
253
+ }
254
+ else {
255
+ content.imageUrl = value.imageUrl;
256
+ content.mediaType = MEDIA_TYPES.image;
257
+ // Note(jyao): Temporarily here until we move all images/shapes to media
258
+ content.media = undefined;
259
+ if (isValidSvgUrl(content.imageUrl)) {
260
+ content.size = DEFAULT_SHAPE_SIZE;
261
+ content.mediaType = MEDIA_TYPES.shape;
262
+ content.colorReplacements = value.colorReplacements || [];
263
+ }
247
264
  }
248
265
  },
249
266
  });
@@ -1836,7 +1853,7 @@ export const BANNER_SECTION_SETTINGS_CONFIG = () => ({
1836
1853
  imageUrl: {
1837
1854
  type: 'image',
1838
1855
  replaceImageSettings: bannerSectionReplaceImageSettings(),
1839
- title: contentSettingsTr(`imageTitle`),
1856
+ title: contentSettingsTr(`media`),
1840
1857
  groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
1841
1858
  },
1842
1859
  imageUrlOverride: {
@@ -47,12 +47,24 @@ export interface BrandPageContainerState {
47
47
  abTests: Record<string, string>;
48
48
  isSubsequentPublish: boolean;
49
49
  }
50
+ export type GettyVideoEditorViewModelResponse = {
51
+ assetId: string;
52
+ token: string;
53
+ isGettyAsset: string;
54
+ videoPreviewAsset: {
55
+ uri: string;
56
+ };
57
+ imagePreviewAsset: {
58
+ uri: string;
59
+ };
60
+ };
50
61
  export type InitialisePayload = Omit<BrandPageContainerState, 'customDomain' | 'customDomainConfig'> & {
51
62
  logoDraftToken?: string;
52
63
  brandPageCustomDomain?: CustomDomainModel;
53
64
  isBrandPageCustomDomainEnabled: boolean;
54
65
  logoTemplateAsset: LogoTemplateAsset | undefined;
55
66
  logoDraftAssets: LogoDraftAsset[];
67
+ gettyVideos: GettyVideoEditorViewModelResponse[];
56
68
  };
57
69
  export declare const BRANDPAGE_STATUS: Readonly<{
58
70
  Published: "Published";
@@ -1,6 +1,6 @@
1
1
  import { defineStore } from 'pinia';
2
2
  import brandPageClient from '../../../clients/brand-page-client';
3
- import { useBrandPageMakerStore, useBrandPageMakerUserStore, useLocalisedRouteStore, useLogoStore, useUiStore, } from '../../stores';
3
+ import { useBrandPageMakerStore, useBrandPageMakerUserStore, useLocalisedRouteStore, useLogoStore, useUiStore, useVideoStore, } from '../../stores';
4
4
  import { SIDE_BAR_TAB_NAMES } from '../../constants';
5
5
  import { BRAND_PAGE_TYPES, SENSITIVE_CONTENT_TYPES, getAbTestResults, getValueType, } from '../../../brand-page';
6
6
  import { isLogoContent } from '../../../brand-page/utils';
@@ -11,6 +11,7 @@ import { useShopConfigStore } from '../../../shared/ecommerce-settings/store/sho
11
11
  import { TRIGGER_TYPE, UPGRADE_CTA_LOCATIONS, useEventTracker, } from '../../composables/useEventTracker';
12
12
  import { navigationTr } from '../../../composables/useTranslate';
13
13
  import { errorTr, constantsTr } from '../../../composables/useTranslate';
14
+ import { findValuesByKey } from '../../../helpers/ts.helper';
14
15
  export const BRANDPAGE_STATUS = Object.freeze({
15
16
  Published: 'Published',
16
17
  Unpublished: 'Unpublished',
@@ -67,6 +68,7 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
67
68
  actions: {
68
69
  initialise(payload) {
69
70
  const localisedRouteStore = useLocalisedRouteStore();
71
+ const videoStore = useVideoStore();
70
72
  if (process.env.NODE_ENV !== 'production') {
71
73
  if (typeof localisedRouteStore.baseBrandPageDomain !== 'string') {
72
74
  console.error('brandPageBaseUrl should not be undefined');
@@ -128,6 +130,7 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
128
130
  if (payload.logoDraftToken) {
129
131
  uiStore.setLogoDraftToken({ logoDraftToken: payload.logoDraftToken });
130
132
  }
133
+ payload?.gettyVideos?.forEach((video) => videoStore.setVideoUrlsWithToken(video.token, video.videoPreviewAsset.uri, video.imagePreviewAsset.uri, video.assetId));
131
134
  },
132
135
  setDesignTemplateToken(payload) {
133
136
  this.designTemplateToken = payload.designTemplateToken;
@@ -241,11 +244,13 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
241
244
  return false;
242
245
  }
243
246
  this.setIsPublishing({ isPublishing: true });
247
+ const gettyVideoIds = brandPageMakerStore.gettyVideoIds;
244
248
  try {
245
249
  const response = await brandPageClient.setBrandPageSlugAsync(brandPageMakerStore.brandPageType, this.designDraftToken, {
246
250
  slug,
247
251
  shouldPublish,
248
252
  brandPageContentTypes: this.brandPageContentTypes,
253
+ gettyVideoIds,
249
254
  });
250
255
  if (!response) {
251
256
  throw new Error('Failed to set brand page slug');
@@ -341,11 +346,13 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
341
346
  return;
342
347
  }
343
348
  this.setBrandPageCustomDomain({ customDomain: customDomainResponse });
349
+ const gettyVideoIds = brandPageMakerStore.gettyVideoIds;
344
350
  if (customDomainResponse) {
345
351
  const response = await brandPageClient.setBrandPageSlugAsync(brandPageMakerStore.brandPageType, this.designDraftToken, {
346
352
  slug: bpSlug,
347
353
  shouldPublish,
348
354
  brandPageContentTypes: this.brandPageContentTypes,
355
+ gettyVideoIds,
349
356
  });
350
357
  if (!response) {
351
358
  throw new Error('Failed to set brand page slug');
@@ -519,6 +526,7 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
519
526
  .map((x) => x.logoImage.logoDraftToken)
520
527
  .filter((x) => !!x));
521
528
  }
529
+ const gettyAssetIds = findValuesByKey(brandPageData, 'gettyAssetId');
522
530
  return {
523
531
  designTemplateToken: this.designTemplateToken,
524
532
  logoDraftToken: uiStore.logoDraftToken, // TODO: remove this property after the release as second release for smooth release transition use below `logoDraftTokens`
@@ -529,6 +537,7 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
529
537
  : undefined,
530
538
  brandPageContentTypes: this.brandPageContentTypes,
531
539
  shouldPublish: this.isPublished,
540
+ gettyAssetIds,
532
541
  ...prepurchaseExportData,
533
542
  };
534
543
  },
@@ -662,11 +671,19 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
662
671
  if (!userStore.isAdmin) {
663
672
  throw new Error('saveTemplate is not allowed in non admin mode');
664
673
  }
665
- const data = JSON.stringify(brandPageMakerStore.brandPageTemplate);
674
+ const dataObject = brandPageMakerStore.brandPageTemplate;
675
+ const data = JSON.stringify(dataObject);
666
676
  if (typeof window?.parent?.saveTemplate !== 'function') {
667
677
  throw new Error('required saveTemplate function is undefined');
668
678
  }
669
- const success = await window.parent.saveTemplate(!this.designTemplateToken, data);
679
+ const gettyAssetIds = findValuesByKey(dataObject, 'gettyAssetId');
680
+ const exportedOptions = {
681
+ designAttributes: {
682
+ gettyAssetIds: gettyAssetIds,
683
+ hasGettyVideos: gettyAssetIds.length > 0,
684
+ },
685
+ };
686
+ const success = await window.parent.saveTemplate(!this.designTemplateToken, data, exportedOptions);
670
687
  if (success) {
671
688
  await brandPageMakerStore.enqueueSaveSuccessMessage({
672
689
  description: 'Template saved',
@@ -94,6 +94,7 @@ export declare const useBrandPageMakerStore: import("pinia").StoreDefinition<"br
94
94
  brandPageTemplate(): BrandPageData;
95
95
  brandPageTitle(): string;
96
96
  brandPageViewModel(): BrandPageViewModel;
97
+ gettyVideoIds(): string[];
97
98
  isInteractivePreviewEnabled(): boolean;
98
99
  isProduction(): boolean;
99
100
  isPublishButtonEnabled(): boolean;