@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
@@ -3,11 +3,12 @@ import { CONTENT_SETTINGS_CONFIGS, SIDE_BAR_TAB_NAMES, } from '../../../brand-pa
3
3
  import { RESERVED_FIELD_NAMES } from '../constants';
4
4
  import { UI_EVENT_SOURCES } from '../../models';
5
5
  import { CONTENT_SETTINGS_DISPLAY_MODES, ITEM_CATEGORIES, ITEM_CATEGORY_NAMES, } from '../../../brand-page-maker/models';
6
- import { useUiStore, useBrandPageMakerUserStore, useBrandPageMakerStore, } from '../../../brand-page-maker/stores';
6
+ import { useUiStore, useBrandPageMakerUserStore, useBrandPageMakerStore, useVideoStore, } from '../../../brand-page-maker/stores';
7
7
  import { useUiSideBarStore } from '../../side-bar/store';
8
8
  import { createDefaultContentItemGroupState, createDefaultContentItemState, } from '../../navigation-style-settings/store';
9
9
  import { adminValidatorsDict, dummyValidator, validatorDict, } from '../../../brand-page-maker/validators';
10
10
  import { vueDeepMerge } from '../../../helpers/vue.helper';
11
+ import {} from '../../../brand-page-maker/stores/video';
11
12
  const DEFAULT_TEXT_COLOR_DEPENDENT_TYPES = [
12
13
  'profile',
13
14
  'text',
@@ -131,6 +132,37 @@ export const useUiContentSettingsStore = defineStore('uiContentSettings', {
131
132
  aspectRatio,
132
133
  }, this.selectedItemIndex ?? undefined);
133
134
  },
135
+ _setSelectedItemMedia(selectedItemId, mediaPayload) {
136
+ const selectedItem = this.items.find((i) => i.id === selectedItemId);
137
+ if (!selectedItem) {
138
+ if (process.env.NODE_ENV !== 'production') {
139
+ throw new Error('unable to locate the selected item for setting video');
140
+ }
141
+ return;
142
+ }
143
+ if (!this.selectedItemFieldName) {
144
+ if (process.env.NODE_ENV !== 'production') {
145
+ throw new Error('selectedItemFieldName should be defined');
146
+ }
147
+ return;
148
+ }
149
+ const replaceImageSettings = selectedItem.settings.fields[this.selectedItemFieldName]
150
+ .replaceImageSettings;
151
+ if (!replaceImageSettings) {
152
+ if (process.env.NODE_ENV !== 'production') {
153
+ throw new Error('replaceImageSettings should be an object');
154
+ }
155
+ return;
156
+ }
157
+ replaceImageSettings.setContentMedia(selectedItem.settings.content, {
158
+ media: mediaPayload,
159
+ });
160
+ if (mediaPayload.type === 'getty-video') {
161
+ const gettyPayload = mediaPayload;
162
+ const videoStore = useVideoStore();
163
+ videoStore.setVideoUrlsWithToken(gettyPayload.token, gettyPayload.videoSrc, gettyPayload.imageSrc, gettyPayload.assetId);
164
+ }
165
+ },
134
166
  _setItems({ items }) {
135
167
  this.items = items;
136
168
  },
@@ -396,6 +428,10 @@ export const useUiContentSettingsStore = defineStore('uiContentSettings', {
396
428
  this._setSelectedItemImage(payload);
397
429
  this.onContentChanged();
398
430
  },
431
+ setSelectedItemMedia(selectedItemId, mediaPayload) {
432
+ this._setSelectedItemMedia(selectedItemId, mediaPayload);
433
+ this.onContentChanged();
434
+ },
399
435
  setItems(payload) {
400
436
  if (process.env.NODE_ENV !== 'production') {
401
437
  const idCountMap = payload.items.reduce((prev, item) => {
@@ -42,6 +42,7 @@ declare const _default: import("vue").DefineComponent<{}, {
42
42
  brandPageTemplate(): any;
43
43
  brandPageTitle(): string;
44
44
  brandPageViewModel(): import("../../../brand-page").BrandPageViewModel;
45
+ gettyVideoIds(): string[];
45
46
  isInteractivePreviewEnabled(): boolean;
46
47
  isProduction(): boolean;
47
48
  isPublishButtonEnabled(): boolean;
@@ -556,6 +557,7 @@ declare const _default: import("vue").DefineComponent<{}, {
556
557
  logoImageHeight: string | undefined;
557
558
  logoImageWidth: string | undefined;
558
559
  }): void;
560
+ updatePaymentConfigCurrency(updatedPaymentConfig: import("../../../brand-page").BrandPagePaymentConfig, newCurrency: import("../../../brand-page").BrandPagePaymentConfigCurrency): void;
559
561
  setPageTitle({ pageTitle, pageIndex, }: {
560
562
  pageTitle: string;
561
563
  pageIndex: number;
@@ -1,3 +1,4 @@
1
+ import type { MediaTypes } from '../../brand-page';
1
2
  interface UserMediaItemMedia {
2
3
  token: string;
3
4
  userToken: string;
@@ -18,4 +19,15 @@ export interface UserMediaItemWithDimensions extends UserMediaItem {
18
19
  width: number;
19
20
  height: number;
20
21
  }
22
+ export interface MediaBaseSelectedPayload {
23
+ type: MediaTypes;
24
+ }
25
+ export interface GettyVideoMediaSelectedPayload extends MediaBaseSelectedPayload {
26
+ assetId: string;
27
+ token: string;
28
+ mimeType: string;
29
+ autoPlay: boolean;
30
+ imageSrc: string;
31
+ videoSrc: string;
32
+ }
21
33
  export {};
@@ -55,6 +55,7 @@ declare const _default: import("vue").DefineComponent<{}, {
55
55
  logoImageHeight: string | undefined;
56
56
  logoImageWidth: string | undefined;
57
57
  }): void;
58
+ updatePaymentConfigCurrency(updatedPaymentConfig: import("../../../../brand-page").BrandPagePaymentConfig, newCurrency: import("../../../../brand-page").BrandPagePaymentConfigCurrency): void;
58
59
  setPageTitle({ pageTitle, pageIndex, }: {
59
60
  pageTitle: string;
60
61
  pageIndex: number;
@@ -3732,6 +3732,7 @@ declare const _default: import("vue").DefineComponent<{}, {
3732
3732
  brandPageTemplate(): any;
3733
3733
  brandPageTitle(): string;
3734
3734
  brandPageViewModel(): import("../../../../brand-page").BrandPageViewModel;
3735
+ gettyVideoIds(): string[];
3735
3736
  isInteractivePreviewEnabled(): boolean;
3736
3737
  isProduction(): boolean;
3737
3738
  isPublishButtonEnabled(): boolean;
@@ -3948,6 +3949,7 @@ declare const _default: import("vue").DefineComponent<{}, {
3948
3949
  logoImageHeight: string | undefined;
3949
3950
  logoImageWidth: string | undefined;
3950
3951
  }): void;
3952
+ updatePaymentConfigCurrency(updatedPaymentConfig: import("../../../../brand-page").BrandPagePaymentConfig, newCurrency: import("../../../../brand-page").BrandPagePaymentConfigCurrency): void;
3951
3953
  setPageTitle({ pageTitle, pageIndex, }: {
3952
3954
  pageTitle: string;
3953
3955
  pageIndex: number;
@@ -4307,6 +4309,7 @@ declare const _default: import("vue").DefineComponent<{}, {
4307
4309
  colorReplacements?: import("../../../../brand-page").ColorReplacement[] | undefined;
4308
4310
  aspectRatio?: number | null | undefined;
4309
4311
  }): void;
4312
+ _setSelectedItemMedia(selectedItemId: string | null, mediaPayload: import("../../../my-uploads/models").MediaBaseSelectedPayload): void;
4310
4313
  _setItems({ items }: {
4311
4314
  items: ContentItem<any>[];
4312
4315
  }): void;
@@ -4382,6 +4385,7 @@ declare const _default: import("vue").DefineComponent<{}, {
4382
4385
  colorReplacements?: import("../../../../brand-page").ColorReplacement[] | undefined;
4383
4386
  aspectRatio?: number | null | undefined;
4384
4387
  }): void;
4388
+ setSelectedItemMedia(selectedItemId: string | null, mediaPayload: import("../../../my-uploads/models").MediaBaseSelectedPayload): void;
4385
4389
  setItems(payload: {
4386
4390
  items: ContentItem<Content>[];
4387
4391
  }): void;
@@ -3267,6 +3267,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
3267
3267
  logoImageHeight: string | undefined;
3268
3268
  logoImageWidth: string | undefined;
3269
3269
  }): void;
3270
+ updatePaymentConfigCurrency(updatedPaymentConfig: import("../../../../brand-page").BrandPagePaymentConfig, newCurrency: import("../../../../brand-page").BrandPagePaymentConfigCurrency): void;
3270
3271
  setPageTitle({ pageTitle, pageIndex, }: {
3271
3272
  pageTitle: string;
3272
3273
  pageIndex: number;
@@ -3739,6 +3740,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
3739
3740
  colorReplacements?: import("../../../../brand-page").ColorReplacement[] | undefined;
3740
3741
  aspectRatio?: number | null | undefined;
3741
3742
  }): void;
3743
+ _setSelectedItemMedia(selectedItemId: string | null, mediaPayload: import("../../../my-uploads/models").MediaBaseSelectedPayload): void;
3742
3744
  _setItems({ items }: {
3743
3745
  items: import("../../../content-settings/models").ContentItem<any>[];
3744
3746
  }): void;
@@ -3814,6 +3816,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
3814
3816
  colorReplacements?: import("../../../../brand-page").ColorReplacement[] | undefined;
3815
3817
  aspectRatio?: number | null | undefined;
3816
3818
  }): void;
3819
+ setSelectedItemMedia(selectedItemId: string | null, mediaPayload: import("../../../my-uploads/models").MediaBaseSelectedPayload): void;
3817
3820
  setItems(payload: {
3818
3821
  items: import("../../../content-settings/models").ContentItem<import("../../../../brand-page").Content>[];
3819
3822
  }): void;
@@ -4232,6 +4235,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4232
4235
  brandPageTemplate(): any;
4233
4236
  brandPageTitle(): string;
4234
4237
  brandPageViewModel(): import("../../../../brand-page").BrandPageViewModel;
4238
+ gettyVideoIds(): string[];
4235
4239
  isInteractivePreviewEnabled(): boolean;
4236
4240
  isProduction(): boolean;
4237
4241
  isPublishButtonEnabled(): boolean;
@@ -1,6 +1,6 @@
1
1
  import type { ContentItem } from '../../content-settings/models';
2
2
  import { PageHeaderDesktop, PageHeaderMobile, PageFooterDesktop, PageFooterMobile, VIEWPORTS } from '../../../brand-page';
3
- import type { Content, ImageGalleryItem, LinksItem, LogoImageModel, ViewportsType, LogoTemplateImageModel } from '../../../brand-page';
3
+ import type { Content, ImageGalleryItem, LinksItem, LogoImageModel, ViewportsType, LogoTemplateImageModel, BrandPagePaymentConfig, BrandPagePaymentConfigCurrency } from '../../../brand-page';
4
4
  import type { ContentPage } from '../models';
5
5
  import { PAGE_SECTIONS } from '../models';
6
6
  export type PageSettingsStateSectionStyles = Partial<PageHeaderDesktop & PageHeaderMobile & PageFooterDesktop & PageFooterMobile>;
@@ -88,6 +88,7 @@ export declare const useUiPageSettingsStore: import("pinia").StoreDefinition<"ui
88
88
  logoImageHeight: string | undefined;
89
89
  logoImageWidth: string | undefined;
90
90
  }): void;
91
+ updatePaymentConfigCurrency(updatedPaymentConfig: BrandPagePaymentConfig, newCurrency: BrandPagePaymentConfigCurrency): void;
91
92
  setPageTitle({ pageTitle, pageIndex, }: {
92
93
  pageTitle: string;
93
94
  pageIndex: number;
@@ -7,6 +7,7 @@ import { useUiContentSettingsStore } from '../../content-settings/store';
7
7
  import { useBrandPageMakerStore, useBrandPageMakerUserStore, useBrandPageContainerStore, useUiStore, } from '../../../brand-page-maker/stores';
8
8
  import { useUiLogoSettingsStore } from '../../logo-settings/store';
9
9
  import { TRIGGER_TYPE, UPGRADE_CTA_LOCATIONS, useEventTracker, } from '../../../brand-page-maker/composables/useEventTracker';
10
+ import { useShopConfigStore } from '../../ecommerce-settings/store/shop-settings-store';
10
11
  export const PAGE_SECTIONS_PAGES = 'pages';
11
12
  export const PAGE_SETTINGS_SECTIONS = {
12
13
  ...PAGE_SECTIONS,
@@ -162,6 +163,40 @@ export const useUiPageSettingsStore = defineStore('uiPageSettings', {
162
163
  this.sections[sectionName][viewport].logoImageHeight = logoImageHeight;
163
164
  this.sections[sectionName][viewport].logoImageWidth = logoImageWidth;
164
165
  },
166
+ updatePaymentConfigCurrency(updatedPaymentConfig, newCurrency) {
167
+ const currencyUpdate = {
168
+ name: updatedPaymentConfig.name,
169
+ defaultCurrency: newCurrency.iso4127Code,
170
+ defaultCurrencySymbol: newCurrency.symbol,
171
+ };
172
+ this.pages.forEach((page) => {
173
+ page.contents.forEach((contentItem) => {
174
+ if (contentItem.type === 'support-me') {
175
+ if (contentItem.settings.content.supportMeConfig.paymentConfig?.id ===
176
+ updatedPaymentConfig.id) {
177
+ Object.assign(contentItem.settings.content.supportMeConfig.paymentConfig, currencyUpdate);
178
+ }
179
+ }
180
+ else if (contentItem.type === 'request-payment') {
181
+ if (contentItem.settings.content.requestPaymentConfig.paymentConfig
182
+ ?.id === updatedPaymentConfig.id) {
183
+ Object.assign(contentItem.settings.content.requestPaymentConfig.paymentConfig, currencyUpdate);
184
+ }
185
+ }
186
+ else if (contentItem.type === 'shop-section') {
187
+ if (contentItem.settings.content.shopPaymentConfig.paymentConfig
188
+ ?.id === updatedPaymentConfig.id) {
189
+ Object.assign(contentItem.settings.content.shopPaymentConfig.paymentConfig, currencyUpdate);
190
+ }
191
+ }
192
+ });
193
+ });
194
+ const shopConfigStore = useShopConfigStore();
195
+ if (shopConfigStore.paymentConfig &&
196
+ shopConfigStore.paymentConfig.id === updatedPaymentConfig.id) {
197
+ Object.assign(shopConfigStore.paymentConfig, currencyUpdate);
198
+ }
199
+ },
165
200
  setPageTitle({ pageTitle, pageIndex, }) {
166
201
  const slug = getPageSlugFromPageTitle(pageTitle, this.pages.filter((_p, i) => i !== pageIndex).map((p) => p.slug));
167
202
  this.setPageTitleAndSlug({
@@ -76,6 +76,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
76
76
  brandPageTemplate(): any;
77
77
  brandPageTitle(): string;
78
78
  brandPageViewModel(): import("../../brand-page").BrandPageViewModel;
79
+ gettyVideoIds(): string[];
79
80
  isInteractivePreviewEnabled(): boolean;
80
81
  isProduction(): boolean;
81
82
  isPublishButtonEnabled(): boolean;
@@ -482,6 +482,7 @@ declare const _default: import("vue").DefineComponent<{}, {
482
482
  brandPageTemplate(): any;
483
483
  brandPageTitle(): string;
484
484
  brandPageViewModel(): import("../../../brand-page").BrandPageViewModel;
485
+ gettyVideoIds(): string[];
485
486
  isInteractivePreviewEnabled(): boolean;
486
487
  isProduction(): boolean;
487
488
  isPublishButtonEnabled(): boolean;
@@ -171,11 +171,24 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
171
171
  return;
172
172
  }
173
173
  this._setPageCount({ pageCount: result.pageCount });
174
- const templates = (await Promise.all(result.paginatedItems.map(async (i) => {
175
- const template = await designTemplateClient.getTemplateByTemplateToken(i.designTemplateToken);
176
- return this.safeMapToTemplateSettingsTemplate(template);
177
- }))).filter((t) => Boolean(t));
178
- this._addTemplates({ templates });
174
+ const templates = await Promise.all(result.paginatedItems.map(async (i) => {
175
+ try {
176
+ if (brandPageContainerStore.isPrePurchase) {
177
+ const template = await designTemplateClient.getTemplateByTemplateToken(i.designTemplateToken);
178
+ return this.safeMapToTemplateSettingsTemplate(template);
179
+ }
180
+ else {
181
+ return {
182
+ id: i.designTemplateToken,
183
+ };
184
+ }
185
+ }
186
+ catch (error) {
187
+ return null;
188
+ }
189
+ }));
190
+ const validTemplates = templates.filter((template) => template !== null);
191
+ this._addTemplates({ templates: validTemplates });
179
192
  this._setPageNoLoaded({ pageNoLoaded: pageNo });
180
193
  }
181
194
  finally {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@designcrowd/library.brand-page",
3
3
  "description": "A collection of Maker/Designer applications",
4
- "version": "5.15.21",
4
+ "version": "5.15.24-ast-previews-2",
5
5
  "author": "Design.com Eng",
6
6
  "license": "UNLICENSED",
7
7
  "type": "module",
@@ -55,7 +55,7 @@
55
55
  },
56
56
  "dependencies": {
57
57
  "@ckpack/vue-color": "1.4.1",
58
- "@designcrowd/fe-shared-lib": "1.4.1",
58
+ "@designcrowd/fe-shared-lib": "1.4.3",
59
59
  "@pinia/nuxt": "0.11.0",
60
60
  "@storybook/react": "9.0.4",
61
61
  "@tiptap/extension-bubble-menu": "^2.14.0",
@@ -15,7 +15,8 @@
15
15
  v-if="
16
16
  (viewModel.isBigImageType &&
17
17
  !viewModel.backgroundStyle.backgroundColor) ||
18
- (viewModel.isBigImageType && viewModel.imageUrl)
18
+ (viewModel.isBigImageType && viewModel.imageUrl) ||
19
+ (viewModel.isBigImageType && viewModel.media)
19
20
  "
20
21
  :image-url="viewModel.imageUrl"
21
22
  :color-replacements="viewModel.colorReplacements"
@@ -28,6 +29,7 @@
28
29
  viewModel.isBigImageType,
29
30
  }"
30
31
  :content-index="contentIndex"
32
+ :media="viewModel.mediaViewModel"
31
33
  />
32
34
  <div
33
35
  class="tw-w-full tw-h-full tw-inset-0 tw-absolute"
@@ -63,6 +65,7 @@
63
65
  :role="viewModel.role"
64
66
  img-classes="tw-w-full tw-object-cover tw-aspect-square tw-rounded-md tw-relative"
65
67
  :content-index="contentIndex"
68
+ :media="viewModel.mediaViewModel"
66
69
  />
67
70
  </div>
68
71
  <div
@@ -158,6 +161,7 @@
158
161
  :role="viewModel.role"
159
162
  img-classes="tw-inset-0 tw-w-full tw-h-full full-square-image tw-relative"
160
163
  :content-index="contentIndex"
164
+ :media="viewModel.mediaViewModel"
161
165
  />
162
166
  </div>
163
167
  </div>
@@ -187,6 +191,7 @@
187
191
  :role="viewModel.role"
188
192
  img-classes="tw-w-full tw-object-cover tw-aspect-square tw-rounded-md tw-relative"
189
193
  :content-index="contentIndex"
194
+ :media="viewModel.mediaViewModel"
190
195
  />
191
196
  </div>
192
197
  <div
@@ -1,6 +1,7 @@
1
1
  import { defineComponent } from 'vue';
2
2
  import type { PropType } from 'vue';
3
3
  import type { BrandPageContext, ColorReplacement } from '../../models';
4
+ import type { MediaViewModel } from '../../../lib';
4
5
 
5
6
  export default defineComponent({
6
7
  props: {
@@ -62,6 +63,11 @@ export default defineComponent({
62
63
  required: false,
63
64
  default: undefined,
64
65
  },
66
+ media: {
67
+ type: Object as PropType<MediaViewModel>,
68
+ required: false,
69
+ default: undefined,
70
+ },
65
71
  },
66
72
  data() {
67
73
  return {
@@ -5,8 +5,22 @@
5
5
  'tw-h-full tw-w-full': mediaType === 'shape',
6
6
  }"
7
7
  >
8
+ <Video
9
+ v-if="media && media.type === 'getty-video'"
10
+ :media="media"
11
+ :class="{ 'tw-flex tw-justify-center': size }"
12
+ :video-classes="imgClasses"
13
+ :display-style="displayStyle"
14
+ :context="context"
15
+ :content-index="contentIndex"
16
+ />
8
17
  <FallbackImage
9
- v-if="imageUrl && (mediaType === 'image' || !mediaType) && !isImageBroken"
18
+ v-if="
19
+ imageUrl &&
20
+ (mediaType === 'image' || !mediaType) &&
21
+ !isImageBroken &&
22
+ !media
23
+ "
10
24
  :image-url="imageUrl"
11
25
  :alt="altText"
12
26
  :classes="imgClasses"
@@ -27,7 +41,7 @@
27
41
  />
28
42
  <Placeholder
29
43
  v-if="
30
- (context.isPreview && imageUrl === '') ||
44
+ (context.isPreview && !media && imageUrl === '') ||
31
45
  (context.isPreview && isImageBroken)
32
46
  "
33
47
  class="tw-w-full"
@@ -42,9 +56,10 @@ import Shape from './Shape.vue';
42
56
  import MediaMixin from './Media.mixin.ts';
43
57
  import Placeholder from '../placeholder/Placeholder.vue';
44
58
  import FallbackImage from '../fallback-image/FallbackImage.vue';
59
+ import Video from './Video.vue';
45
60
 
46
61
  export default {
47
- components: { Shape, Placeholder, FallbackImage },
62
+ components: { Shape, Placeholder, FallbackImage, Video },
48
63
  mixins: [MediaMixin],
49
64
  };
50
65
  </script>
@@ -0,0 +1,62 @@
1
+ <template>
2
+ <video
3
+ v-if="!context.options?.renderVideoAsImage"
4
+ ref="videoElement"
5
+ :class="videoClasses"
6
+ :src="media?.videoUrl"
7
+ autoplay
8
+ muted
9
+ loop
10
+ :controls="false"
11
+ playsinline
12
+ preload="metadata"
13
+ @canplay="attemptAutoplay"
14
+ />
15
+ <FallbackImage
16
+ v-else
17
+ :image-url="media?.previewImageUrl || ''"
18
+ :classes="videoClasses"
19
+ :styles="displayStyle"
20
+ :context="context"
21
+ :content-index="contentIndex"
22
+ loading="lazy"
23
+ />
24
+ </template>
25
+ <script setup lang="ts">
26
+ import { nextTick, onMounted, ref } from 'vue';
27
+ import { type BrandPageContext, type GettyVideoViewModel } from '../../../lib';
28
+ import FallbackImage from '../fallback-image/FallbackImage.vue';
29
+
30
+ interface Props {
31
+ media: GettyVideoViewModel;
32
+ contentIndex: number;
33
+ context: BrandPageContext;
34
+ videoClasses?: string;
35
+ displayStyle?: string;
36
+ }
37
+
38
+ const props = withDefaults(defineProps<Props>(), {
39
+ media: undefined,
40
+ videoClasses: '',
41
+ displayStyle: '',
42
+ });
43
+
44
+ const videoElement = ref<HTMLVideoElement>();
45
+
46
+ const attemptAutoplay = async () => {
47
+ if (props.context.options?.renderVideoAsImage || !videoElement.value) {
48
+ return;
49
+ }
50
+
51
+ try {
52
+ await videoElement.value.play();
53
+ } catch (error) {
54
+ console.error('Autoplay failed:', error);
55
+ }
56
+ };
57
+
58
+ onMounted(async () => {
59
+ await nextTick();
60
+ attemptAutoplay();
61
+ });
62
+ </script>
@@ -33,6 +33,7 @@ const pages = brandPageModel.pages.map((p) => ({
33
33
  mapToViewModel(
34
34
  brandPageModel.styles,
35
35
  brandPageModel.brandPageType || BRAND_PAGE_TYPES.default,
36
+ {},
36
37
  ),
37
38
  )
38
39
  .filter((x) => x !== undefined) as ContentViewModel[],
@@ -50,9 +50,9 @@
50
50
  'tw-cursor-pointer': context.isPreview,
51
51
  'brand-page__content--outline-selected': isHeaderSelected,
52
52
  }"
53
+ :is-mobile="true"
53
54
  @open-side-menu="openSideMenu"
54
55
  @header-container-click="onPageHeaderContainerClick"
55
- :is-mobile="true"
56
56
  />
57
57
  </template>
58
58
  </MediaQuery>
@@ -211,9 +211,9 @@
211
211
  isFooterSelected,
212
212
  }"
213
213
  :show-brand-crowd-logo="showBrandCrowdLogo"
214
+ :is-mobile="true"
214
215
  @footer-container-click="onPageFooterContainerClick"
215
216
  @on-logo-click="onLogoClick"
216
- :is-mobile="true"
217
217
  />
218
218
  </template>
219
219
  </MediaQuery>
@@ -89,6 +89,7 @@ export interface BrandPageContext {
89
89
  options?: {
90
90
  disableNavigationSideMenu?: boolean;
91
91
  mediaSizes?: MediaSizes;
92
+ renderVideoAsImage?: boolean;
92
93
  };
93
94
  abTests?: AbTest;
94
95
  /** Is brand page rendered for preview */
@@ -413,6 +413,7 @@ export interface BannerSectionContent extends Content {
413
413
  overlayColor: BrandPageCssStyle;
414
414
  overlayOpacity: number;
415
415
  aspectRatio?: number | null;
416
+ media?: AbstractMedia;
416
417
  }
417
418
 
418
419
  export const MEDIA_TYPES = {
@@ -832,6 +833,39 @@ export abstract class AbstractPageFooterStyles {
832
833
  }
833
834
  }
834
835
 
836
+ //jyao: START: Media related entities and classes
837
+ export type MediaTypes = 'getty-video' | 'user-upload-video' | 'image';
838
+
839
+ export abstract class AbstractMedia {
840
+ abstract type: MediaTypes;
841
+ }
842
+
843
+ type GettyVideoMediaType = Partial<GettyVideoMedia>;
844
+
845
+ export class GettyVideoMedia extends AbstractMedia {
846
+ type: MediaTypes = 'getty-video';
847
+ gettyToken: string;
848
+ gettyAssetId: string;
849
+ mimeType: string;
850
+
851
+ settings: {
852
+ autoPlay?: boolean;
853
+ };
854
+
855
+ constructor(options: GettyVideoMediaType = {}) {
856
+ options = cloneDeep(options);
857
+ super();
858
+
859
+ this.type = 'getty-video';
860
+ this.gettyToken = options.gettyToken || '';
861
+ this.gettyAssetId = options.gettyAssetId || '';
862
+ this.mimeType = options.mimeType || '';
863
+
864
+ this.settings = options.settings || {};
865
+ }
866
+ }
867
+ //jyao: END of media related entities and classes
868
+
835
869
  export class PageFooterDesktop extends AbstractPageFooterStyles {
836
870
  constructor(options: AbstractPageFooterStylesType = {}) {
837
871
  options = cloneDeep(options);
@@ -52,6 +52,14 @@ export interface PaymentConfig {
52
52
  paymentOptions: PaymentOption[];
53
53
  }
54
54
 
55
+ export interface BrandPagePaymentConfigCurrency {
56
+ id: string;
57
+ iso31662Code: string;
58
+ iso4127Code: string;
59
+ name: string;
60
+ symbol: string;
61
+ }
62
+
55
63
  export const PAYMENT_OPTION_DISPLAY_TYPES = {
56
64
  text: 'text',
57
65
  thumbnail: 'thumbnail',
@@ -1,12 +1,14 @@
1
- import {
2
- BRAND_PAGE_TYPES,
3
- DEFAULT_LOGO_HEIGHT,
4
- DEFAULT_LOGO_WIDTH,
1
+ import type {
5
2
  PageFooterDesktop,
6
3
  PageFooterMobile,
7
4
  PageHeaderDesktop,
8
5
  PageHeaderMobile,
9
6
  } from '../..';
7
+ import {
8
+ BRAND_PAGE_TYPES,
9
+ DEFAULT_LOGO_HEIGHT,
10
+ DEFAULT_LOGO_WIDTH,
11
+ } from '../..';
10
12
  import { FabricRenderClient } from '../../../clients/fabric-render-client';
11
13
  import { calculateLogoDimensions } from '../logo.util';
12
14
  import type { MigrationData } from '../migration.util';
@@ -172,7 +172,11 @@ describe('view model util', () => {
172
172
  };
173
173
 
174
174
  // Act
175
- const viewModel = mapToBannerSectionViewModel(bannerContent, pageStyles);
175
+ const viewModel = mapToBannerSectionViewModel(
176
+ bannerContent,
177
+ pageStyles,
178
+ {},
179
+ );
176
180
 
177
181
  // Assert
178
182
  const url = new URL(viewModel.imageUrl);
@@ -195,7 +199,11 @@ describe('view model util', () => {
195
199
  };
196
200
 
197
201
  // Act
198
- const viewModel = mapToBannerSectionViewModel(bannerContent, pageStyles);
202
+ const viewModel = mapToBannerSectionViewModel(
203
+ bannerContent,
204
+ pageStyles,
205
+ {},
206
+ );
199
207
 
200
208
  // Assert
201
209
  const url = new URL(viewModel.imageUrl);