@car-cutter/vue-webplayer 3.1.1 → 3.1.3

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/dist/index.d.ts CHANGED
@@ -17,9 +17,10 @@ hotspotsOn: () => any;
17
17
  hotspotsOff: () => any;
18
18
  galleryOpen: () => any;
19
19
  galleryClose: () => any;
20
- analyticsIdentify: (event: AnalyticsIdentifyEvent) => any;
21
- analyticsPage: (event: AnalyticsPageEvent) => any;
22
- analyticsTrack: (event: AnalyticsTrackEvent) => any;
20
+ analyticsLoad: (event: AnalyticsLoadEvent) => any;
21
+ analyticsDisplay: (event: AnalyticsDisplayEvent) => any;
22
+ analyticsInteraction: (event: AnalyticsInteractionEvent) => any;
23
+ analyticsError: (event: AnalyticsErrorEvent) => any;
23
24
  }, string, PublicProps, Readonly<WebPlayerProps> & Readonly<{
24
25
  onCompositionLoading?: ((url: string) => any) | undefined;
25
26
  onCompositionLoaded?: ((composition: Composition) => any) | undefined;
@@ -34,9 +35,10 @@ onHotspotsOn?: (() => any) | undefined;
34
35
  onHotspotsOff?: (() => any) | undefined;
35
36
  onGalleryOpen?: (() => any) | undefined;
36
37
  onGalleryClose?: (() => any) | undefined;
37
- onAnalyticsIdentify?: ((event: AnalyticsIdentifyEvent) => any) | undefined;
38
- onAnalyticsPage?: ((event: AnalyticsPageEvent) => any) | undefined;
39
- onAnalyticsTrack?: ((event: AnalyticsTrackEvent) => any) | undefined;
38
+ onAnalyticsLoad?: ((event: AnalyticsLoadEvent) => any) | undefined;
39
+ onAnalyticsDisplay?: ((event: AnalyticsDisplayEvent) => any) | undefined;
40
+ onAnalyticsInteraction?: ((event: AnalyticsInteractionEvent) => any) | undefined;
41
+ onAnalyticsError?: ((event: AnalyticsErrorEvent) => any) | undefined;
40
42
  }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
41
43
 
42
44
  declare const __VLS_component_2: DefineComponent<WebPlayerCustomMediaProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<WebPlayerCustomMediaProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
@@ -94,61 +96,59 @@ declare type __VLS_WithTemplateSlots_3<T, S> = T & {
94
96
  };
95
97
  };
96
98
 
97
- export declare const ANALYTICS_EVENT_IDENTIFY = "analytics-identify";
99
+ export declare const ANALYTICS_EVENT_DISPLAY = "analytics-display";
98
100
 
99
- export declare const ANALYTICS_EVENT_PAGE = "analytics-page";
101
+ export declare const ANALYTICS_EVENT_ERROR = "analytics-error";
100
102
 
101
- export declare const ANALYTICS_EVENT_TRACK = "analytics-track";
103
+ export declare const ANALYTICS_EVENT_INTERACTION = "analytics-interaction";
102
104
 
103
- declare type AnalyticsEventBase = {
104
- type: AnalyticsEventType;
105
+ export declare const ANALYTICS_EVENT_LOAD = "analytics-load";
106
+
107
+ declare type AnalyticsDisplayEvent = {
108
+ type: "display";
105
109
  timestamp: string;
106
- instance_id: string;
110
+ instance: WebplayerInstance;
111
+ item: WebplayerDisplayedItem;
107
112
  };
108
113
 
109
- declare type AnalyticsEventType =
110
- | AnalyticsEventTypeIdentify
111
- | AnalyticsEventTypePage
112
- | AnalyticsEventTypeTrack;
113
-
114
- declare type AnalyticsEventTypeIdentify = "identify";
115
-
116
- declare type AnalyticsEventTypePage = "page";
114
+ declare type AnalyticsErrorEvent = {
115
+ type: "error";
116
+ timestamp: string;
117
+ instance: WebplayerInstance;
118
+ current?: WebplayerDisplayedItem;
119
+ action?: WebplayerAction;
120
+ error: WebplayerError;
121
+ };
117
122
 
118
- declare type AnalyticsEventTypeTrack = "track";
123
+ declare type AnalyticsInteractionEvent = {
124
+ type: "interaction";
125
+ timestamp: string;
126
+ instance: WebplayerInstance;
127
+ current: WebplayerDisplayedItem;
128
+ action: WebplayerAction;
129
+ };
119
130
 
120
- declare type AnalyticsIdentifyEvent = Omit<AnalyticsEventBase, "type"> &
121
- AnalyticsIdentifyEventProps;
131
+ declare type AnalyticsLoadEvent = {
132
+ type: "load";
133
+ timestamp: string;
134
+ instance: WebplayerInstance;
135
+ config: AnalyticsLoadEventProps["config"];
136
+ };
122
137
 
123
- declare type AnalyticsIdentifyEventProps = {
124
- type: AnalyticsEventTypeIdentify;
125
- browser_id: string;
126
- session_id: string;
127
- referrer: string;
128
- origin: string;
129
- page_url: string;
130
- user_agent: string;
131
- wp_properties: {
138
+ declare type AnalyticsLoadEventProps = {
139
+ type: "load";
140
+ config: {
132
141
  composition_url: string;
133
-
134
- // Integration mode
135
142
  integration: boolean;
136
143
  max_items_shown: number;
137
-
138
- // Layout
139
144
  hide_categories_nav: boolean;
140
145
  infinite_carrousel: boolean;
141
146
  permanent_gallery: boolean;
142
-
143
- // Medias loading
144
147
  media_load_strategy: string;
145
148
  min_media_width: number;
146
- max_media_width: number;
147
149
  preload_range: number;
148
150
  auto_load_360: boolean;
149
151
  auto_load_interior_360: boolean;
150
-
151
- // Miscellaneous
152
152
  categories_filter: string;
153
153
  extend_behavior: string;
154
154
  event_prefix: string;
@@ -157,44 +157,6 @@ declare type AnalyticsIdentifyEventProps = {
157
157
  };
158
158
  };
159
159
 
160
- declare type AnalyticsPageEvent = Omit<AnalyticsEventBase, "type"> &
161
- AnalyticsPageEventProps;
162
-
163
- declare type AnalyticsPageEventProps = {
164
- type: AnalyticsEventTypePage;
165
- category_id: string;
166
- category_name: string;
167
- items_count: number;
168
- page_properties: {
169
- item_type: string;
170
- item_position: number;
171
- };
172
- };
173
-
174
- declare type AnalyticsTrackEvent = Omit<AnalyticsEventBase, "type"> &
175
- AnalyticsTrackEventProps;
176
-
177
- declare type AnalyticsTrackEventProps = {
178
- type: AnalyticsEventTypeTrack;
179
- category_id: string;
180
- category_name: string;
181
- item_type: string;
182
- item_position: number;
183
- action_properties: {
184
- action_name: string;
185
- action_field: string;
186
- action_value:
187
- | bigint
188
- | boolean
189
- | null
190
- | number
191
- | string
192
- | symbol
193
- | undefined
194
- | object;
195
- };
196
- };
197
-
198
160
  declare type AspectRatio = `${number}:${number}`;
199
161
 
200
162
  declare type Category = {
@@ -310,6 +272,12 @@ export declare const WEB_PLAYER_WC_TAG = "cc-webplayer";
310
272
 
311
273
  export declare const WebPlayer: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
312
274
 
275
+ declare type WebplayerAction = {
276
+ name: string;
277
+ field: string;
278
+ value: unknown;
279
+ };
280
+
313
281
  export declare const WebPlayerCustomMedia: __VLS_WithTemplateSlots_2<typeof __VLS_component_2, __VLS_TemplateResult_2["slots"]>;
314
282
 
315
283
  export declare type WebPlayerCustomMediaProps = {
@@ -317,6 +285,20 @@ export declare type WebPlayerCustomMediaProps = {
317
285
  thumbnailSrc?: string;
318
286
  };
319
287
 
288
+ declare type WebplayerDisplayedItem = {
289
+ category_id: string;
290
+ category_name: string;
291
+ item_type: string;
292
+ item_position: number;
293
+ items_count?: number;
294
+ };
295
+
296
+ declare type WebplayerError = {
297
+ name: string;
298
+ message: string;
299
+ stack?: string;
300
+ };
301
+
320
302
  export declare type WebPlayerEvents = {
321
303
  compositionLoading: [url: string];
322
304
  compositionLoaded: [composition: Composition];
@@ -331,9 +313,10 @@ export declare type WebPlayerEvents = {
331
313
  hotspotsOff: [];
332
314
  galleryOpen: [];
333
315
  galleryClose: [];
334
- analyticsIdentify: [event: AnalyticsIdentifyEvent];
335
- analyticsPage: [event: AnalyticsPageEvent];
336
- analyticsTrack: [event: AnalyticsTrackEvent];
316
+ analyticsLoad: [event: AnalyticsLoadEvent];
317
+ analyticsDisplay: [event: AnalyticsDisplayEvent];
318
+ analyticsInteraction: [event: AnalyticsInteractionEvent];
319
+ analyticsError: [event: AnalyticsErrorEvent];
337
320
  };
338
321
 
339
322
  export declare const WebPlayerIcon: __VLS_WithTemplateSlots_3<typeof __VLS_component_3, __VLS_TemplateResult_3["slots"]>;
@@ -366,6 +349,13 @@ export declare type WebPlayerIconProps = {
366
349
  name: WebPlayerIconName;
367
350
  };
368
351
 
352
+ declare type WebplayerInstance = {
353
+ instance_id: string;
354
+ browser_id?: string;
355
+ session_id?: string;
356
+ from_url?: string;
357
+ };
358
+
369
359
  export declare type WebPlayerProps = WebPlayerProps_2 & {
370
360
  class?: string;
371
361
  style?: HTMLElement["style"];
@@ -398,14 +388,21 @@ declare type WebPlayerProps_2 = {
398
388
  demoSpin?: boolean;
399
389
  reverse360?: boolean;
400
390
  spinCursor?: string;
391
+ themeConfig?: "autonation";
401
392
 
402
393
  // Analytics
403
394
  analyticsEventPrefix?: string;
395
+ /** @deprecated Prefer monitoring (enabled by default). When set, disables monitoring and sends analytics to this URL instead. */
404
396
  analyticsUrl?: string;
397
+ /** @deprecated Only used with analyticsUrl. Sets the Authorization bearer token for analytics requests. Ignored when analyticsSimpleRequestsOnly is true. */
405
398
  analyticsBearer?: string;
399
+ /** @deprecated Only used with analyticsUrl. When true, sends CORS simple requests only (disables custom headers including analyticsBearer). */
406
400
  analyticsSimpleRequestsOnly?: boolean;
407
401
  analyticsDryRun?: boolean;
408
402
  analyticsDebug?: boolean;
403
+
404
+ // Monitoring
405
+ monitoring?: boolean;
409
406
  };
410
407
 
411
408
  export { }
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
- import { defineComponent as d, onMounted as g, onUnmounted as h, openBlock as y, createElementBlock as u, mergeProps as S, unref as r, renderSlot as T, normalizeProps as O, guardReactiveProps as f } from "vue";
2
- import { D as B, a as x, E as D, b as R, c as V, d as W, e as w, f as F, g as Y, h as G, i as $, j as U, A as k, k as X, l as j } from "./utils-DkJWyyJQ.js";
3
- import { W as se, m as re, n as ie, o as ce } from "./utils-DkJWyyJQ.js";
4
- import { ensureCustomElementsDefinition as H, webPlayerPropsToAttributes as q, webPlayerCustomMediaPropsToAttributes as z, webPlayerIconPropsToAttributes as K } from "@car-cutter/wc-webplayer";
5
- const ee = /* @__PURE__ */ d({
1
+ import { defineComponent as d, onMounted as h, onUnmounted as M, openBlock as _, createElementBlock as u, mergeProps as S, unref as c, renderSlot as O, normalizeProps as T, guardReactiveProps as f } from "vue";
2
+ import { ensureCustomElementsDefinition as B, webPlayerPropsToAttributes as D, webPlayerCustomMediaPropsToAttributes as R, webPlayerIconPropsToAttributes as x } from "@car-cutter/wc-webplayer";
3
+ const ee = "cc-webplayer", te = "cc-webplayer-custom-media", oe = "cc-webplayer-icon", V = "composition-loading", w = "composition-loaded", W = "composition-load-error", Y = "item-change", $ = "extend-mode-on", F = "extend-mode-off", G = "hotspots-on", U = "hotspots-off", X = "gallery-open", j = "gallery-close", k = "analytics-load", H = "analytics-display", q = "analytics-interaction", z = "analytics-error", J = "cc-webplayer:", K = "cc-analytics:";
4
+ function ne(n, s) {
5
+ return `https://cdn.car-cutter.com/gallery/${n}/${s}/composition_v3.json`;
6
+ }
7
+ const ae = /* @__PURE__ */ d({
6
8
  __name: "WebPlayer",
7
9
  props: {
8
10
  compositionUrl: {},
@@ -23,107 +25,111 @@ const ee = /* @__PURE__ */ d({
23
25
  demoSpin: { type: Boolean },
24
26
  reverse360: { type: Boolean },
25
27
  spinCursor: {},
28
+ themeConfig: {},
26
29
  analyticsEventPrefix: {},
27
30
  analyticsUrl: {},
28
31
  analyticsBearer: {},
29
32
  analyticsSimpleRequestsOnly: { type: Boolean },
30
33
  analyticsDryRun: { type: Boolean },
31
34
  analyticsDebug: { type: Boolean },
35
+ monitoring: { type: Boolean },
32
36
  class: {},
33
37
  style: {}
34
38
  },
35
- emits: ["compositionLoading", "compositionLoaded", "compositionLoadError", "itemChange", "extendModeOn", "extendModeOff", "hotspotsOn", "hotspotsOff", "galleryOpen", "galleryClose", "analyticsIdentify", "analyticsPage", "analyticsTrack"],
36
- setup(n, { emit: i }) {
37
- H();
38
- const a = n, { class: s, style: c, ...N } = a, P = { display: "block", ...c ?? {} }, L = q(N), o = i, A = a.eventPrefix ?? B, C = a.analyticsEventPrefix ?? x, b = (e) => `${A}${e}`, v = (e) => `${C}${e}`, I = {
39
- [U]: (e) => o("compositionLoading", e),
40
- [$]: (e) => o("compositionLoaded", e),
41
- [G]: (e) => o("compositionLoadError", e),
42
- [Y]: (e) => o("itemChange", e),
43
- [F]: () => o("extendModeOn"),
44
- [w]: () => o("extendModeOff"),
45
- [W]: () => o("hotspotsOn"),
46
- [V]: () => o("hotspotsOff"),
47
- [R]: () => o("galleryOpen"),
48
- [D]: () => o("galleryClose")
49
- }, M = {
50
- [j]: (e) => o("analyticsIdentify", e),
51
- [X]: (e) => o("analyticsPage", e),
52
- [k]: (e) => o("analyticsTrack", e)
53
- }, l = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Map();
54
- return Object.entries(I).forEach(([e, t]) => {
55
- if (!t)
39
+ emits: ["compositionLoading", "compositionLoaded", "compositionLoadError", "itemChange", "extendModeOn", "extendModeOff", "hotspotsOn", "hotspotsOff", "galleryOpen", "galleryClose", "analyticsLoad", "analyticsDisplay", "analyticsInteraction", "analyticsError"],
40
+ setup(n, { emit: s }) {
41
+ B();
42
+ const a = n, { class: r, style: i, ...L } = a, N = { display: "block", ...i ?? {} }, P = D(L), t = s, A = a.eventPrefix ?? J, C = a.analyticsEventPrefix ?? K, b = (e) => `${A}${e}`, v = (e) => `${C}${e}`, I = {
43
+ [V]: (e) => t("compositionLoading", e),
44
+ [w]: (e) => t("compositionLoaded", e),
45
+ [W]: (e) => t("compositionLoadError", e),
46
+ [Y]: (e) => t("itemChange", e),
47
+ [$]: () => t("extendModeOn"),
48
+ [F]: () => t("extendModeOff"),
49
+ [G]: () => t("hotspotsOn"),
50
+ [U]: () => t("hotspotsOff"),
51
+ [X]: () => t("galleryOpen"),
52
+ [j]: () => t("galleryClose")
53
+ }, g = {
54
+ [k]: (e) => t("analyticsLoad", e),
55
+ [H]: (e) => t("analyticsDisplay", e),
56
+ [q]: (e) => t("analyticsInteraction", e),
57
+ [z]: (e) => t("analyticsError", e)
58
+ }, l = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map();
59
+ return Object.entries(I).forEach(([e, o]) => {
60
+ if (!o)
56
61
  return;
57
- const p = b(e), _ = (m) => t(m.detail);
58
- l.set(p, _);
59
- }), Object.entries(M).forEach(([e, t]) => {
60
- if (!t)
62
+ const E = b(e), y = (m) => o(m.detail);
63
+ l.set(E, y);
64
+ }), Object.entries(g).forEach(([e, o]) => {
65
+ if (!o)
61
66
  return;
62
- const p = v(e), _ = (m) => t(m.detail);
63
- E.set(p, _);
64
- }), g(() => {
65
- l.forEach((e, t) => {
66
- document.addEventListener(t, e);
67
- }), E.forEach((e, t) => {
68
- document.addEventListener(t, e);
69
- });
67
+ const E = v(e), y = (m) => o(m.detail);
68
+ p.set(E, y);
70
69
  }), h(() => {
71
- l.forEach((e, t) => {
72
- document.removeEventListener(t, e);
73
- }), E.forEach((e, t) => {
74
- document.removeEventListener(t, e);
70
+ l.forEach((e, o) => {
71
+ document.addEventListener(o, e);
72
+ }), p.forEach((e, o) => {
73
+ document.addEventListener(o, e);
74
+ });
75
+ }), M(() => {
76
+ l.forEach((e, o) => {
77
+ document.removeEventListener(o, e);
78
+ }), p.forEach((e, o) => {
79
+ document.removeEventListener(o, e);
75
80
  });
76
- }), (e, t) => (y(), u("cc-webplayer", S(r(L), {
77
- class: r(s),
78
- style: P
81
+ }), (e, o) => (_(), u("cc-webplayer", S(c(P), {
82
+ class: c(r),
83
+ style: N
79
84
  }), [
80
- T(e.$slots, "default")
85
+ O(e.$slots, "default")
81
86
  ], 16));
82
87
  }
83
- }), te = /* @__PURE__ */ d({
88
+ }), se = /* @__PURE__ */ d({
84
89
  __name: "WebPlayerCustomMedia",
85
90
  props: {
86
91
  index: {},
87
92
  thumbnailSrc: {}
88
93
  },
89
94
  setup(n) {
90
- const a = z(n);
91
- return (s, c) => (y(), u("cc-webplayer-custom-media", O(f(r(a))), [
92
- T(s.$slots, "default")
95
+ const a = R(n);
96
+ return (r, i) => (_(), u("cc-webplayer-custom-media", T(f(c(a))), [
97
+ O(r.$slots, "default")
93
98
  ], 16));
94
99
  }
95
- }), oe = /* @__PURE__ */ d({
100
+ }), re = /* @__PURE__ */ d({
96
101
  __name: "WebPlayerIcon",
97
102
  props: {
98
103
  name: {}
99
104
  },
100
105
  setup(n) {
101
- const a = K(n);
102
- return (s, c) => (y(), u("cc-webplayer-icon", O(f(r(a))), [
103
- T(s.$slots, "default")
106
+ const a = x(n);
107
+ return (r, i) => (_(), u("cc-webplayer-icon", T(f(c(a))), [
108
+ O(r.$slots, "default")
104
109
  ], 16));
105
110
  }
106
111
  });
107
112
  export {
108
- j as ANALYTICS_EVENT_IDENTIFY,
109
- X as ANALYTICS_EVENT_PAGE,
110
- k as ANALYTICS_EVENT_TRACK,
111
- B as DEFAULT_EVENT_PREFIX,
112
- $ as EVENT_COMPOSITION_LOADED,
113
- U as EVENT_COMPOSITION_LOADING,
114
- G as EVENT_COMPOSITION_LOAD_ERROR,
115
- w as EVENT_EXTEND_MODE_OFF,
116
- F as EVENT_EXTEND_MODE_ON,
117
- D as EVENT_GALLERY_CLOSE,
118
- R as EVENT_GALLERY_OPEN,
119
- V as EVENT_HOTSPOTS_OFF,
120
- W as EVENT_HOTSPOTS_ON,
113
+ H as ANALYTICS_EVENT_DISPLAY,
114
+ z as ANALYTICS_EVENT_ERROR,
115
+ q as ANALYTICS_EVENT_INTERACTION,
116
+ k as ANALYTICS_EVENT_LOAD,
117
+ J as DEFAULT_EVENT_PREFIX,
118
+ w as EVENT_COMPOSITION_LOADED,
119
+ V as EVENT_COMPOSITION_LOADING,
120
+ W as EVENT_COMPOSITION_LOAD_ERROR,
121
+ F as EVENT_EXTEND_MODE_OFF,
122
+ $ as EVENT_EXTEND_MODE_ON,
123
+ j as EVENT_GALLERY_CLOSE,
124
+ X as EVENT_GALLERY_OPEN,
125
+ U as EVENT_HOTSPOTS_OFF,
126
+ G as EVENT_HOTSPOTS_ON,
121
127
  Y as EVENT_ITEM_CHANGE,
122
- se as WEB_PLAYER_CUSTOM_MEDIA_WC_TAG,
123
- re as WEB_PLAYER_ICON_WC_TAG,
124
- ie as WEB_PLAYER_WC_TAG,
125
- ee as WebPlayer,
126
- te as WebPlayerCustomMedia,
127
- oe as WebPlayerIcon,
128
- ce as generateCompositionUrl
128
+ te as WEB_PLAYER_CUSTOM_MEDIA_WC_TAG,
129
+ oe as WEB_PLAYER_ICON_WC_TAG,
130
+ ee as WEB_PLAYER_WC_TAG,
131
+ ae as WebPlayer,
132
+ se as WebPlayerCustomMedia,
133
+ re as WebPlayerIcon,
134
+ ne as generateCompositionUrl
129
135
  };
@@ -0,0 +1 @@
1
+ (function(t,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("@car-cutter/wc-webplayer")):typeof define=="function"&&define.amd?define(["exports","vue","@car-cutter/wc-webplayer"],n):(t=typeof globalThis<"u"?globalThis:t||self,n(t.CarCutterWebplayerVue={},t.Vue,t.CarCutterWebplayerWC))})(this,(function(t,n,E){"use strict";const D="cc-webplayer",h="cc-webplayer-custom-media",g="cc-webplayer-icon",O="composition-loading",m="composition-loaded",N="composition-load-error",A="item-change",L="extend-mode-on",f="extend-mode-off",C="hotspots-on",P="hotspots-off",u="gallery-open",I="gallery-close",S="analytics-load",M="analytics-display",V="analytics-interaction",R="analytics-error",b="cc-webplayer:",B="cc-analytics:";function Y(s,c){return`https://cdn.car-cutter.com/gallery/${s}/${c}/composition_v3.json`}const W=n.defineComponent({__name:"WebPlayer",props:{compositionUrl:{},integration:{type:Boolean},maxItemsShown:{},hideCategoriesNav:{type:Boolean},infiniteCarrousel:{type:Boolean},permanentGallery:{type:Boolean},mediaLoadStrategy:{},minMediaWidth:{},maxMediaWidth:{},preloadRange:{},autoLoad360:{type:Boolean},autoLoadInterior360:{type:Boolean},categoriesFilter:{},extendBehavior:{},eventPrefix:{},demoSpin:{type:Boolean},reverse360:{type:Boolean},spinCursor:{},themeConfig:{},analyticsEventPrefix:{},analyticsUrl:{},analyticsBearer:{},analyticsSimpleRequestsOnly:{type:Boolean},analyticsDryRun:{type:Boolean},analyticsDebug:{type:Boolean},monitoring:{type:Boolean},class:{},style:{}},emits:["compositionLoading","compositionLoaded","compositionLoadError","itemChange","extendModeOn","extendModeOff","hotspotsOn","hotspotsOff","galleryOpen","galleryClose","analyticsLoad","analyticsDisplay","analyticsInteraction","analyticsError"],setup(s,{emit:c}){E.ensureCustomElementsDefinition();const i=s,{class:r,style:l,...G}=i,$={display:"block",...l??{}},U=E.webPlayerPropsToAttributes(G),o=c,v=i.eventPrefix??b,k=i.analyticsEventPrefix??B,X=e=>`${v}${e}`,H=e=>`${k}${e}`,j={[O]:e=>o("compositionLoading",e),[m]:e=>o("compositionLoaded",e),[N]:e=>o("compositionLoadError",e),[A]:e=>o("itemChange",e),[L]:()=>o("extendModeOn"),[f]:()=>o("extendModeOff"),[C]:()=>o("hotspotsOn"),[P]:()=>o("hotspotsOff"),[u]:()=>o("galleryOpen"),[I]:()=>o("galleryClose")},q={[S]:e=>o("analyticsLoad",e),[M]:e=>o("analyticsDisplay",e),[V]:e=>o("analyticsInteraction",e),[R]:e=>o("analyticsError",e)},_=new Map,d=new Map;return Object.entries(j).forEach(([e,a])=>{if(!a)return;const T=X(e),y=p=>a(p.detail);_.set(T,y)}),Object.entries(q).forEach(([e,a])=>{if(!a)return;const T=H(e),y=p=>a(p.detail);d.set(T,y)}),n.onMounted(()=>{_.forEach((e,a)=>{document.addEventListener(a,e)}),d.forEach((e,a)=>{document.addEventListener(a,e)})}),n.onUnmounted(()=>{_.forEach((e,a)=>{document.removeEventListener(a,e)}),d.forEach((e,a)=>{document.removeEventListener(a,e)})}),(e,a)=>(n.openBlock(),n.createElementBlock("cc-webplayer",n.mergeProps(n.unref(U),{class:n.unref(r),style:$}),[n.renderSlot(e.$slots,"default")],16))}}),w=n.defineComponent({__name:"WebPlayerCustomMedia",props:{index:{},thumbnailSrc:{}},setup(s){const c=s,i=E.webPlayerCustomMediaPropsToAttributes(c);return(r,l)=>(n.openBlock(),n.createElementBlock("cc-webplayer-custom-media",n.normalizeProps(n.guardReactiveProps(n.unref(i))),[n.renderSlot(r.$slots,"default")],16))}}),F=n.defineComponent({__name:"WebPlayerIcon",props:{name:{}},setup(s){const c=s,i=E.webPlayerIconPropsToAttributes(c);return(r,l)=>(n.openBlock(),n.createElementBlock("cc-webplayer-icon",n.normalizeProps(n.guardReactiveProps(n.unref(i))),[n.renderSlot(r.$slots,"default")],16))}});t.ANALYTICS_EVENT_DISPLAY=M,t.ANALYTICS_EVENT_ERROR=R,t.ANALYTICS_EVENT_INTERACTION=V,t.ANALYTICS_EVENT_LOAD=S,t.DEFAULT_EVENT_PREFIX=b,t.EVENT_COMPOSITION_LOADED=m,t.EVENT_COMPOSITION_LOADING=O,t.EVENT_COMPOSITION_LOAD_ERROR=N,t.EVENT_EXTEND_MODE_OFF=f,t.EVENT_EXTEND_MODE_ON=L,t.EVENT_GALLERY_CLOSE=I,t.EVENT_GALLERY_OPEN=u,t.EVENT_HOTSPOTS_OFF=P,t.EVENT_HOTSPOTS_ON=C,t.EVENT_ITEM_CHANGE=A,t.WEB_PLAYER_CUSTOM_MEDIA_WC_TAG=h,t.WEB_PLAYER_ICON_WC_TAG=g,t.WEB_PLAYER_WC_TAG=D,t.WebPlayer=W,t.WebPlayerCustomMedia=w,t.WebPlayerIcon=F,t.generateCompositionUrl=Y,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@car-cutter/vue-webplayer",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "license": "Apache-2.0",
5
5
  "author": {
6
6
  "name": "CarCutter",
@@ -26,11 +26,6 @@
26
26
  "types": "./dist/index.d.ts",
27
27
  "import": "./dist/index.js",
28
28
  "require": "./dist/index.cjs"
29
- },
30
- "./vue2": {
31
- "types": "./dist/vue2.d.ts",
32
- "import": "./dist/vue2.js",
33
- "require": "./dist/vue2.cjs"
34
29
  }
35
30
  },
36
31
  "files": [
@@ -45,20 +40,20 @@
45
40
  "analyze": "vite-bundle-visualizer"
46
41
  },
47
42
  "dependencies": {
48
- "@car-cutter/wc-webplayer": "3.1.1"
43
+ "@car-cutter/wc-webplayer": "3.1.3"
49
44
  },
50
45
  "peerDependencies": {
51
- "vue": ">=2"
46
+ "vue": "^3"
52
47
  },
53
48
  "devDependencies": {
54
49
  "@car-cutter/eslint-config": "*",
55
50
  "@car-cutter/typescript-config": "*",
56
- "@vitejs/plugin-vue": "^5.1.3",
51
+ "@vitejs/plugin-vue": "^6.0.0",
57
52
  "browserslist": "^4.23.3",
58
53
  "browserslist-to-esbuild": "^2.1.1",
59
54
  "eslint": "^8.57.0",
60
55
  "typescript": "^5.5.4",
61
- "vite": "^5.4.21",
56
+ "vite": "^6.2.0",
62
57
  "vite-bundle-visualizer": "^1.2.1",
63
58
  "vite-plugin-dts": "^4.2.1",
64
59
  "vue": "^3.5.6",
package/dist/index.cjs DELETED
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("vue"),e=require("./utils-Bfc4MSUL.cjs"),i=require("@car-cutter/wc-webplayer"),S=n.defineComponent({__name:"WebPlayer",props:{compositionUrl:{},integration:{type:Boolean},maxItemsShown:{},hideCategoriesNav:{type:Boolean},infiniteCarrousel:{type:Boolean},permanentGallery:{type:Boolean},mediaLoadStrategy:{},minMediaWidth:{},maxMediaWidth:{},preloadRange:{},autoLoad360:{type:Boolean},autoLoadInterior360:{type:Boolean},categoriesFilter:{},extendBehavior:{},eventPrefix:{},demoSpin:{type:Boolean},reverse360:{type:Boolean},spinCursor:{},analyticsEventPrefix:{},analyticsUrl:{},analyticsBearer:{},analyticsSimpleRequestsOnly:{type:Boolean},analyticsDryRun:{type:Boolean},analyticsDebug:{type:Boolean},class:{},style:{}},emits:["compositionLoading","compositionLoaded","compositionLoadError","itemChange","extendModeOn","extendModeOff","hotspotsOn","hotspotsOff","galleryOpen","galleryClose","analyticsIdentify","analyticsPage","analyticsTrack"],setup(r,{emit:s}){i.ensureCustomElementsDefinition();const a=r,{class:_,style:c,...A}=a,d={display:"block",...c??{}},L=i.webPlayerPropsToAttributes(A),E=s,m=a.eventPrefix??e.DEFAULT_EVENT_PREFIX,y=a.analyticsEventPrefix??e.DEFAULT_ANALYTICS_EVENT_PREFIX,P=t=>`${m}${t}`,C=t=>`${y}${t}`,I={[e.EVENT_COMPOSITION_LOADING]:t=>E("compositionLoading",t),[e.EVENT_COMPOSITION_LOADED]:t=>E("compositionLoaded",t),[e.EVENT_COMPOSITION_LOAD_ERROR]:t=>E("compositionLoadError",t),[e.EVENT_ITEM_CHANGE]:t=>E("itemChange",t),[e.EVENT_EXTEND_MODE_ON]:()=>E("extendModeOn"),[e.EVENT_EXTEND_MODE_OFF]:()=>E("extendModeOff"),[e.EVENT_HOTSPOTS_ON]:()=>E("hotspotsOn"),[e.EVENT_HOTSPOTS_OFF]:()=>E("hotspotsOff"),[e.EVENT_GALLERY_OPEN]:()=>E("galleryOpen"),[e.EVENT_GALLERY_CLOSE]:()=>E("galleryClose")},u={[e.ANALYTICS_EVENT_IDENTIFY]:t=>E("analyticsIdentify",t),[e.ANALYTICS_EVENT_PAGE]:t=>E("analyticsPage",t),[e.ANALYTICS_EVENT_TRACK]:t=>E("analyticsTrack",t)},T=new Map,l=new Map;return Object.entries(I).forEach(([t,o])=>{if(!o)return;const N=P(t),O=p=>o(p.detail);T.set(N,O)}),Object.entries(u).forEach(([t,o])=>{if(!o)return;const N=C(t),O=p=>o(p.detail);l.set(N,O)}),n.onMounted(()=>{T.forEach((t,o)=>{document.addEventListener(o,t)}),l.forEach((t,o)=>{document.addEventListener(o,t)})}),n.onUnmounted(()=>{T.forEach((t,o)=>{document.removeEventListener(o,t)}),l.forEach((t,o)=>{document.removeEventListener(o,t)})}),(t,o)=>(n.openBlock(),n.createElementBlock("cc-webplayer",n.mergeProps(n.unref(L),{class:n.unref(_),style:d}),[n.renderSlot(t.$slots,"default")],16))}}),V=n.defineComponent({__name:"WebPlayerCustomMedia",props:{index:{},thumbnailSrc:{}},setup(r){const s=r,a=i.webPlayerCustomMediaPropsToAttributes(s);return(_,c)=>(n.openBlock(),n.createElementBlock("cc-webplayer-custom-media",n.normalizeProps(n.guardReactiveProps(n.unref(a))),[n.renderSlot(_.$slots,"default")],16))}}),f=n.defineComponent({__name:"WebPlayerIcon",props:{name:{}},setup(r){const s=r,a=i.webPlayerIconPropsToAttributes(s);return(_,c)=>(n.openBlock(),n.createElementBlock("cc-webplayer-icon",n.normalizeProps(n.guardReactiveProps(n.unref(a))),[n.renderSlot(_.$slots,"default")],16))}});exports.ANALYTICS_EVENT_IDENTIFY=e.ANALYTICS_EVENT_IDENTIFY;exports.ANALYTICS_EVENT_PAGE=e.ANALYTICS_EVENT_PAGE;exports.ANALYTICS_EVENT_TRACK=e.ANALYTICS_EVENT_TRACK;exports.DEFAULT_EVENT_PREFIX=e.DEFAULT_EVENT_PREFIX;exports.EVENT_COMPOSITION_LOADED=e.EVENT_COMPOSITION_LOADED;exports.EVENT_COMPOSITION_LOADING=e.EVENT_COMPOSITION_LOADING;exports.EVENT_COMPOSITION_LOAD_ERROR=e.EVENT_COMPOSITION_LOAD_ERROR;exports.EVENT_EXTEND_MODE_OFF=e.EVENT_EXTEND_MODE_OFF;exports.EVENT_EXTEND_MODE_ON=e.EVENT_EXTEND_MODE_ON;exports.EVENT_GALLERY_CLOSE=e.EVENT_GALLERY_CLOSE;exports.EVENT_GALLERY_OPEN=e.EVENT_GALLERY_OPEN;exports.EVENT_HOTSPOTS_OFF=e.EVENT_HOTSPOTS_OFF;exports.EVENT_HOTSPOTS_ON=e.EVENT_HOTSPOTS_ON;exports.EVENT_ITEM_CHANGE=e.EVENT_ITEM_CHANGE;exports.WEB_PLAYER_CUSTOM_MEDIA_WC_TAG=e.WEB_PLAYER_CUSTOM_MEDIA_WC_TAG;exports.WEB_PLAYER_ICON_WC_TAG=e.WEB_PLAYER_ICON_WC_TAG;exports.WEB_PLAYER_WC_TAG=e.WEB_PLAYER_WC_TAG;exports.generateCompositionUrl=e.generateCompositionUrl;exports.WebPlayer=S;exports.WebPlayerCustomMedia=V;exports.WebPlayerIcon=f;
@@ -1 +0,0 @@
1
- "use strict";const T="cc-webplayer",N="cc-webplayer-custom-media",o="cc-webplayer-icon",O="composition-loading",A="composition-loaded",t="composition-load-error",c="item-change",n="extend-mode-on",s="extend-mode-off",I="hotspots-on",e="hotspots-off",L="gallery-open",C="gallery-close",V="analytics-identify",S="analytics-page",a="analytics-track",i="cc-webplayer:",D="cc-analytics:";function P(E,_){return`https://cdn.car-cutter.com/gallery/${E}/${_}/composition_v3.json`}exports.ANALYTICS_EVENT_IDENTIFY=V;exports.ANALYTICS_EVENT_PAGE=S;exports.ANALYTICS_EVENT_TRACK=a;exports.DEFAULT_ANALYTICS_EVENT_PREFIX=D;exports.DEFAULT_EVENT_PREFIX=i;exports.EVENT_COMPOSITION_LOADED=A;exports.EVENT_COMPOSITION_LOADING=O;exports.EVENT_COMPOSITION_LOAD_ERROR=t;exports.EVENT_EXTEND_MODE_OFF=s;exports.EVENT_EXTEND_MODE_ON=n;exports.EVENT_GALLERY_CLOSE=C;exports.EVENT_GALLERY_OPEN=L;exports.EVENT_HOTSPOTS_OFF=e;exports.EVENT_HOTSPOTS_ON=I;exports.EVENT_ITEM_CHANGE=c;exports.WEB_PLAYER_CUSTOM_MEDIA_WC_TAG=N;exports.WEB_PLAYER_ICON_WC_TAG=o;exports.WEB_PLAYER_WC_TAG=T;exports.generateCompositionUrl=P;
@@ -1,25 +0,0 @@
1
- const s = "cc-webplayer", c = "cc-webplayer-custom-media", _ = "cc-webplayer-icon", t = "composition-loading", a = "composition-loaded", n = "composition-load-error", T = "item-change", e = "extend-mode-on", N = "extend-mode-off", O = "hotspots-on", A = "hotspots-off", i = "gallery-open", l = "gallery-close", r = "analytics-identify", I = "analytics-page", L = "analytics-track", C = "cc-webplayer:", p = "cc-analytics:";
2
- function V(E, o) {
3
- return `https://cdn.car-cutter.com/gallery/${E}/${o}/composition_v3.json`;
4
- }
5
- export {
6
- L as A,
7
- C as D,
8
- l as E,
9
- c as W,
10
- p as a,
11
- i as b,
12
- A as c,
13
- O as d,
14
- N as e,
15
- e as f,
16
- T as g,
17
- n as h,
18
- a as i,
19
- t as j,
20
- I as k,
21
- r as l,
22
- _ as m,
23
- s as n,
24
- V as o
25
- };
package/dist/vue2.cjs DELETED
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),e=require("./utils-Bfc4MSUL.cjs"),a=require("@car-cutter/wc-webplayer");a.ensureCustomElementsDefinition();const T=r.defineComponent({props:{compositionUrl:{type:String,required:!0},hideCategoriesNav:Boolean,infiniteCarrousel:Boolean,permanentGallery:Boolean,mediaLoadStrategy:String,minMediaWidth:Number,maxMediaWidth:Number,preloadRange:Number,autoLoad360:Boolean,autoLoadInterior360:Boolean,categoriesFilter:String,extendBehavior:String,eventPrefix:String,demoSpin:Boolean,reverse360:Boolean,spinCursor:String,analyticsEventPrefix:String,analyticsUrl:String,analyticsBearer:String,analyticsSimpleRequestsOnly:Boolean,analyticsDryRun:Boolean,analyticsDebug:Boolean},data(){return{eventCbMap:new Map,analyticsEventCbMap:new Map}},computed:{attributes(){return a.webPlayerPropsToAttributes(this.$props)}},methods:{generateEventName(n){return`${this.eventPrefix||e.DEFAULT_EVENT_PREFIX}${n}`},setupEventListeners(){const n={[e.EVENT_COMPOSITION_LOADING]:t=>this.$emit("compositionLoading",t),[e.EVENT_COMPOSITION_LOADED]:t=>this.$emit("compositionLoaded",t),[e.EVENT_COMPOSITION_LOAD_ERROR]:t=>this.$emit("compositionLoadError",t),[e.EVENT_ITEM_CHANGE]:t=>this.$emit("itemChange",t),[e.EVENT_EXTEND_MODE_ON]:()=>this.$emit("extendModeOn"),[e.EVENT_EXTEND_MODE_OFF]:()=>this.$emit("extendModeOff"),[e.EVENT_HOTSPOTS_ON]:()=>this.$emit("hotspotsOn"),[e.EVENT_HOTSPOTS_OFF]:()=>this.$emit("hotspotsOff"),[e.EVENT_GALLERY_OPEN]:()=>this.$emit("galleryOpen"),[e.EVENT_GALLERY_CLOSE]:()=>this.$emit("galleryClose")};Object.entries(n).forEach(([t,E])=>{if(!E)return;const i=this.generateEventName(t),o=s=>E(s.detail);this.eventCbMap.set(i,o),document.addEventListener(i,o)})},generateAnalyticsEventName(n){return`${this.analyticsEventPrefix||e.DEFAULT_ANALYTICS_EVENT_PREFIX}${n}`},setupAnalyticsEventListeners(){const n={[e.ANALYTICS_EVENT_IDENTIFY]:t=>this.$emit("analyticsIdentify",t),[e.ANALYTICS_EVENT_PAGE]:t=>this.$emit("analyticsPage",t),[e.ANALYTICS_EVENT_TRACK]:t=>this.$emit("analyticsTrack",t)};Object.entries(n).forEach(([t,E])=>{if(!E)return;const i=this.generateAnalyticsEventName(t),o=s=>E(s.detail);this.analyticsEventCbMap.set(i,o),document.addEventListener(i,o)})}},mounted(){this.setupEventListeners(),this.setupAnalyticsEventListeners()},beforeDestroy(){this.eventCbMap.forEach((n,t)=>{document.removeEventListener(t,n)}),this.analyticsEventCbMap.forEach((n,t)=>{document.removeEventListener(t,n)})}}),_=(n,t)=>{const E=n.__vccOpts||n;for(const[i,o]of t)E[i]=o;return E};function N(n,t,E,i,o,s){return r.openBlock(),r.createElementBlock("cc-webplayer",r.normalizeProps(r.guardReactiveProps(n.attributes)),[r.renderSlot(n.$slots,"default")],16)}const c=_(T,[["render",N]]),O=r.defineComponent({props:{index:{type:Number,required:!0},thumbnailSrc:String},computed:{attributes(){return a.webPlayerCustomMediaPropsToAttributes(this.$props)}}});function l(n,t,E,i,o,s){return r.openBlock(),r.createElementBlock("cc-webplayer-custom-media",r.normalizeProps(r.guardReactiveProps(n.attributes)),[r.renderSlot(n.$slots,"default")],16)}const p=_(O,[["render",l]]),u=r.defineComponent({props:{name:{type:String,required:!0}},computed:{attributes(){return a.webPlayerIconPropsToAttributes(this.$props)}}});function m(n,t,E,i,o,s){return r.openBlock(),r.createElementBlock("cc-webplayer-icon",r.normalizeProps(r.guardReactiveProps(n.attributes)),[r.renderSlot(n.$slots,"default")],16)}const A=_(u,[["render",m]]);exports.ANALYTICS_EVENT_IDENTIFY=e.ANALYTICS_EVENT_IDENTIFY;exports.ANALYTICS_EVENT_PAGE=e.ANALYTICS_EVENT_PAGE;exports.ANALYTICS_EVENT_TRACK=e.ANALYTICS_EVENT_TRACK;exports.DEFAULT_EVENT_PREFIX=e.DEFAULT_EVENT_PREFIX;exports.EVENT_COMPOSITION_LOADED=e.EVENT_COMPOSITION_LOADED;exports.EVENT_COMPOSITION_LOADING=e.EVENT_COMPOSITION_LOADING;exports.EVENT_COMPOSITION_LOAD_ERROR=e.EVENT_COMPOSITION_LOAD_ERROR;exports.EVENT_EXTEND_MODE_OFF=e.EVENT_EXTEND_MODE_OFF;exports.EVENT_EXTEND_MODE_ON=e.EVENT_EXTEND_MODE_ON;exports.EVENT_GALLERY_CLOSE=e.EVENT_GALLERY_CLOSE;exports.EVENT_GALLERY_OPEN=e.EVENT_GALLERY_OPEN;exports.EVENT_HOTSPOTS_OFF=e.EVENT_HOTSPOTS_OFF;exports.EVENT_HOTSPOTS_ON=e.EVENT_HOTSPOTS_ON;exports.EVENT_ITEM_CHANGE=e.EVENT_ITEM_CHANGE;exports.WEB_PLAYER_CUSTOM_MEDIA_WC_TAG=e.WEB_PLAYER_CUSTOM_MEDIA_WC_TAG;exports.WEB_PLAYER_ICON_WC_TAG=e.WEB_PLAYER_ICON_WC_TAG;exports.WEB_PLAYER_WC_TAG=e.WEB_PLAYER_WC_TAG;exports.generateCompositionUrl=e.generateCompositionUrl;exports.WebPlayer=c;exports.WebPlayerCustomMedia=p;exports.WebPlayerIcon=A;
package/dist/vue2.d.ts DELETED
@@ -1,313 +0,0 @@
1
- import { ComponentOptionsMixin } from 'vue';
2
- import { ComponentProvideOptions } from 'vue';
3
- import { DefineComponent } from 'vue';
4
- import { ExtractPropTypes } from 'vue';
5
- import { PublicProps } from 'vue';
6
-
7
- export declare const ANALYTICS_EVENT_IDENTIFY = "analytics-identify";
8
-
9
- export declare const ANALYTICS_EVENT_PAGE = "analytics-page";
10
-
11
- export declare const ANALYTICS_EVENT_TRACK = "analytics-track";
12
-
13
- declare type AspectRatio = `${number}:${number}`;
14
-
15
- declare type CamelToDashed<S extends string> = S extends `${infer T}${infer U}`
16
- ? `${T extends Lowercase<T> ? "" : "-"}${Lowercase<T>}${CamelToDashed<U>}`
17
- : S;
18
-
19
- declare type Category = {
20
- id: string;
21
- title: string;
22
- items: Item[];
23
- };
24
-
25
- export declare type Composition = {
26
- aspectRatio: AspectRatio;
27
- imageHdWidth: MediaWidth;
28
- imageSubWidths: MediaWidth[];
29
- categories: Category[];
30
- };
31
-
32
- export declare const DEFAULT_EVENT_PREFIX = "cc-webplayer:" satisfies string;
33
-
34
- export declare const EVENT_COMPOSITION_LOAD_ERROR = "composition-load-error";
35
-
36
- export declare const EVENT_COMPOSITION_LOADED = "composition-loaded";
37
-
38
- export declare const EVENT_COMPOSITION_LOADING = "composition-loading";
39
-
40
- export declare const EVENT_EXTEND_MODE_OFF = "extend-mode-off";
41
-
42
- export declare const EVENT_EXTEND_MODE_ON = "extend-mode-on";
43
-
44
- export declare const EVENT_GALLERY_CLOSE = "gallery-close";
45
-
46
- export declare const EVENT_GALLERY_OPEN = "gallery-open";
47
-
48
- export declare const EVENT_HOTSPOTS_OFF = "hotspots-off";
49
-
50
- export declare const EVENT_HOTSPOTS_ON = "hotspots-on";
51
-
52
- export declare const EVENT_ITEM_CHANGE = "item-change";
53
-
54
- declare type ExtendBehavior = "full_screen" | "event" | "none";
55
-
56
- /**
57
- * Generates a URL for fetching the composition JSON for a given customer and vehicle.
58
- *
59
- * @param {string} customerToken - The CarCutter Customer Token (computed by hashing the Customer ID with SHA-256).
60
- * @param {string} vin - The Vehicle Identification Number.
61
- * @returns {string} The URL to fetch the composition JSON.
62
- */
63
- export declare function generateCompositionUrl(
64
- customerToken: string,
65
- vin: string
66
- ): string {
67
- return `https://cdn.car-cutter.com/gallery/${customerToken}/${vin}/composition_v3.json`;
68
- }
69
-
70
- declare type Hotspot = {
71
- title: string;
72
- icon?: string;
73
- description?: string;
74
- type?: "damage" | "feature";
75
- position: {
76
- x: number;
77
- y: number;
78
- };
79
- detail?: {
80
- type: "image" | "link" | "pdf";
81
- src: string;
82
- };
83
- };
84
-
85
- declare type ImageItem = { type: "image" } & ImageWithHotspots;
86
-
87
- declare type ImageWithHotspots = {
88
- src: string;
89
- hotspots?: Hotspot[];
90
- };
91
-
92
- declare type InteriorThreeSixtyItem = {
93
- type: "interior-360";
94
- poster?: string;
95
- } & ImageWithHotspots;
96
-
97
- export declare type Item =
98
- | ImageItem
99
- | VideoItem
100
- | ThreeSixtyItem
101
- | NextGenThreeSixtyItem
102
- | InteriorThreeSixtyItem;
103
-
104
- export declare type MediaLoadStrategy = "quality" | "balanced" | "speed";
105
-
106
- declare type MediaWidth = number;
107
-
108
- declare type NextGenThreeSixtyItem = {
109
- type: "next360";
110
- images: ImageWithHotspots[];
111
- };
112
-
113
- declare type PropsToAttributes<T> = {
114
- [K in keyof T as CamelToDashed<string & K>]: ToStringOrOptional<T[K]>;
115
- };
116
-
117
- declare type ThreeSixtyItem = {
118
- type: "360";
119
- images: ImageWithHotspots[];
120
- };
121
-
122
- declare type ToStringOrOptional<T> = T extends undefined
123
- ? string | undefined
124
- : string;
125
-
126
- declare type VideoItem = {
127
- type: "video";
128
- src: string;
129
- poster?: string;
130
- };
131
-
132
- export declare const WEB_PLAYER_CUSTOM_MEDIA_WC_TAG = "cc-webplayer-custom-media";
133
-
134
- export declare const WEB_PLAYER_ICON_WC_TAG = "cc-webplayer-icon";
135
-
136
- export declare const WEB_PLAYER_WC_TAG = "cc-webplayer";
137
-
138
- export declare const WebPlayer: DefineComponent<ExtractPropTypes< {
139
- compositionUrl: {
140
- type: StringConstructor;
141
- required: true;
142
- };
143
- hideCategoriesNav: BooleanConstructor;
144
- infiniteCarrousel: BooleanConstructor;
145
- permanentGallery: BooleanConstructor;
146
- mediaLoadStrategy: StringConstructor;
147
- minMediaWidth: NumberConstructor;
148
- maxMediaWidth: NumberConstructor;
149
- preloadRange: NumberConstructor;
150
- autoLoad360: BooleanConstructor;
151
- autoLoadInterior360: BooleanConstructor;
152
- categoriesFilter: StringConstructor;
153
- extendBehavior: StringConstructor;
154
- eventPrefix: StringConstructor;
155
- demoSpin: BooleanConstructor;
156
- reverse360: BooleanConstructor;
157
- spinCursor: StringConstructor;
158
- analyticsEventPrefix: StringConstructor;
159
- analyticsUrl: StringConstructor;
160
- analyticsBearer: StringConstructor;
161
- analyticsSimpleRequestsOnly: BooleanConstructor;
162
- analyticsDryRun: BooleanConstructor;
163
- analyticsDebug: BooleanConstructor;
164
- }>, {}, {
165
- eventCbMap: Map<string, EventListener>;
166
- analyticsEventCbMap: Map<string, EventListener>;
167
- }, {
168
- attributes(): PropsToAttributes<WebPlayerProps>;
169
- }, {
170
- generateEventName(event: string): string;
171
- setupEventListeners(): void;
172
- generateAnalyticsEventName(event: string): string;
173
- setupAnalyticsEventListeners(): void;
174
- }, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes< {
175
- compositionUrl: {
176
- type: StringConstructor;
177
- required: true;
178
- };
179
- hideCategoriesNav: BooleanConstructor;
180
- infiniteCarrousel: BooleanConstructor;
181
- permanentGallery: BooleanConstructor;
182
- mediaLoadStrategy: StringConstructor;
183
- minMediaWidth: NumberConstructor;
184
- maxMediaWidth: NumberConstructor;
185
- preloadRange: NumberConstructor;
186
- autoLoad360: BooleanConstructor;
187
- autoLoadInterior360: BooleanConstructor;
188
- categoriesFilter: StringConstructor;
189
- extendBehavior: StringConstructor;
190
- eventPrefix: StringConstructor;
191
- demoSpin: BooleanConstructor;
192
- reverse360: BooleanConstructor;
193
- spinCursor: StringConstructor;
194
- analyticsEventPrefix: StringConstructor;
195
- analyticsUrl: StringConstructor;
196
- analyticsBearer: StringConstructor;
197
- analyticsSimpleRequestsOnly: BooleanConstructor;
198
- analyticsDryRun: BooleanConstructor;
199
- analyticsDebug: BooleanConstructor;
200
- }>> & Readonly<{}>, {
201
- hideCategoriesNav: boolean;
202
- infiniteCarrousel: boolean;
203
- permanentGallery: boolean;
204
- autoLoad360: boolean;
205
- autoLoadInterior360: boolean;
206
- demoSpin: boolean;
207
- reverse360: boolean;
208
- analyticsSimpleRequestsOnly: boolean;
209
- analyticsDryRun: boolean;
210
- analyticsDebug: boolean;
211
- }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
212
-
213
- export declare const WebPlayerCustomMedia: DefineComponent<ExtractPropTypes< {
214
- index: {
215
- type: NumberConstructor;
216
- required: true;
217
- };
218
- thumbnailSrc: StringConstructor;
219
- }>, {}, {}, {
220
- attributes(): PropsToAttributes<WebPlayerCustomMediaProps>;
221
- }, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes< {
222
- index: {
223
- type: NumberConstructor;
224
- required: true;
225
- };
226
- thumbnailSrc: StringConstructor;
227
- }>> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
228
-
229
- export declare type WebPlayerCustomMediaProps = {
230
- index: number;
231
- thumbnailSrc?: string;
232
- };
233
-
234
- export declare const WebPlayerIcon: DefineComponent<ExtractPropTypes< {
235
- name: {
236
- type: StringConstructor;
237
- required: true;
238
- };
239
- }>, {}, {}, {
240
- attributes(): PropsToAttributes<WebPlayerIconProps>;
241
- }, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes< {
242
- name: {
243
- type: StringConstructor;
244
- required: true;
245
- };
246
- }>> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
247
-
248
- declare type WebPlayerIconName =
249
- | "UI_ARROW_RIGHT" // Right arrow navigation (is mirrored on X axis for left arrow)
250
- | "UI_BURGER" // Toggle Burger menu
251
- | "UI_CLOSE" // Exit zoom, details or full screen
252
- | "UI_EXTEND" // Extend the view (and go full screen if possible)
253
- | "UI_GALLERY" // Toggle gallery view
254
- | "UI_HOTSPOTS" // Toggle Hotspots
255
- | "UI_IMAGE" // Hotspot with detail image
256
- | "UI_MINUS" // Reduce zoom
257
- | "UI_PAUSE" // Pause video
258
- | "UI_PLAY" // Play video
259
- | "UI_PLUS" // Increase zoom
260
- | "UI_REDUCE" // Reducing an extended view
261
- | "UI_360" // Exterior 360 view
262
- | "UI_360_PLAY" // Play exterior 360
263
- | "UI_INTERIOR_360" // Interior 360 view
264
- | "UI_INTERIOR_360_PLAY" // Play interior 360 view
265
- | "UI_VOLUME" // Video volume
266
- | "UI_VOLUME_OFF" // Muted video
267
- | "CONTROLS_PREV" // Go to previous media
268
- | "CONTROLS_NEXT" // Go to next media
269
- // eslint-disable-next-line @typescript-eslint/ban-types
270
- | (string & {});
271
-
272
- export declare type WebPlayerIconProps = {
273
- name: WebPlayerIconName;
274
- };
275
-
276
- export declare type WebPlayerProps = {
277
- compositionUrl: string;
278
-
279
- // Integration mode
280
- integration?: boolean;
281
- maxItemsShown?: number;
282
-
283
- // Layout
284
- hideCategoriesNav?: boolean;
285
- infiniteCarrousel?: boolean;
286
- permanentGallery?: boolean;
287
-
288
- // Medias loading
289
- mediaLoadStrategy?: MediaLoadStrategy;
290
- minMediaWidth?: MediaWidth;
291
- maxMediaWidth?: MediaWidth;
292
- preloadRange?: number;
293
- autoLoad360?: boolean;
294
- autoLoadInterior360?: boolean;
295
-
296
- // Miscellaneous
297
- categoriesFilter?: string;
298
- extendBehavior?: ExtendBehavior;
299
- eventPrefix?: string;
300
- demoSpin?: boolean;
301
- reverse360?: boolean;
302
- spinCursor?: string;
303
-
304
- // Analytics
305
- analyticsEventPrefix?: string;
306
- analyticsUrl?: string;
307
- analyticsBearer?: string;
308
- analyticsSimpleRequestsOnly?: boolean;
309
- analyticsDryRun?: boolean;
310
- analyticsDebug?: boolean;
311
- };
312
-
313
- export { }
package/dist/vue2.js DELETED
@@ -1,158 +0,0 @@
1
- import { defineComponent as i, openBlock as o, createElementBlock as c, normalizeProps as E, guardReactiveProps as p, renderSlot as m } from "vue";
2
- import { a as u, D as _, A as d, k as h, l as f, E as N, b as T, c as v, d as $, e as y, f as O, g as L, h as b, i as A, j as P } from "./utils-DkJWyyJQ.js";
3
- import { W as X, m as j, n as H, o as z } from "./utils-DkJWyyJQ.js";
4
- import { ensureCustomElementsDefinition as C, webPlayerPropsToAttributes as g, webPlayerCustomMediaPropsToAttributes as S, webPlayerIconPropsToAttributes as M } from "@car-cutter/wc-webplayer";
5
- C();
6
- const I = i({
7
- props: {
8
- compositionUrl: { type: String, required: !0 },
9
- hideCategoriesNav: Boolean,
10
- infiniteCarrousel: Boolean,
11
- permanentGallery: Boolean,
12
- mediaLoadStrategy: String,
13
- minMediaWidth: Number,
14
- maxMediaWidth: Number,
15
- preloadRange: Number,
16
- autoLoad360: Boolean,
17
- autoLoadInterior360: Boolean,
18
- categoriesFilter: String,
19
- extendBehavior: String,
20
- eventPrefix: String,
21
- demoSpin: Boolean,
22
- reverse360: Boolean,
23
- spinCursor: String,
24
- analyticsEventPrefix: String,
25
- analyticsUrl: String,
26
- analyticsBearer: String,
27
- analyticsSimpleRequestsOnly: Boolean,
28
- analyticsDryRun: Boolean,
29
- analyticsDebug: Boolean
30
- },
31
- data() {
32
- return {
33
- eventCbMap: /* @__PURE__ */ new Map(),
34
- analyticsEventCbMap: /* @__PURE__ */ new Map()
35
- };
36
- },
37
- computed: {
38
- attributes() {
39
- return g(this.$props);
40
- }
41
- },
42
- methods: {
43
- // Functional events
44
- generateEventName(t) {
45
- return `${this.eventPrefix || _}${t}`;
46
- },
47
- setupEventListeners() {
48
- const t = {
49
- [P]: (e) => this.$emit("compositionLoading", e),
50
- [A]: (e) => this.$emit("compositionLoaded", e),
51
- [b]: (e) => this.$emit("compositionLoadError", e),
52
- [L]: (e) => this.$emit("itemChange", e),
53
- [O]: () => this.$emit("extendModeOn"),
54
- [y]: () => this.$emit("extendModeOff"),
55
- [$]: () => this.$emit("hotspotsOn"),
56
- [v]: () => this.$emit("hotspotsOff"),
57
- [T]: () => this.$emit("galleryOpen"),
58
- [N]: () => this.$emit("galleryClose")
59
- };
60
- Object.entries(t).forEach(([e, n]) => {
61
- if (!n) return;
62
- const r = this.generateEventName(e), s = (a) => n(a.detail);
63
- this.eventCbMap.set(r, s), document.addEventListener(r, s);
64
- });
65
- },
66
- // Analytics events
67
- generateAnalyticsEventName(t) {
68
- return `${this.analyticsEventPrefix || u}${t}`;
69
- },
70
- setupAnalyticsEventListeners() {
71
- const t = {
72
- [f]: (e) => this.$emit("analyticsIdentify", e),
73
- [h]: (e) => this.$emit("analyticsPage", e),
74
- [d]: (e) => this.$emit("analyticsTrack", e)
75
- };
76
- Object.entries(t).forEach(([e, n]) => {
77
- if (!n) return;
78
- const r = this.generateAnalyticsEventName(e), s = (a) => n(a.detail);
79
- this.analyticsEventCbMap.set(r, s), document.addEventListener(r, s);
80
- });
81
- }
82
- },
83
- mounted() {
84
- this.setupEventListeners(), this.setupAnalyticsEventListeners();
85
- },
86
- beforeDestroy() {
87
- this.eventCbMap.forEach((t, e) => {
88
- document.removeEventListener(e, t);
89
- }), this.analyticsEventCbMap.forEach((t, e) => {
90
- document.removeEventListener(e, t);
91
- });
92
- }
93
- }), l = (t, e) => {
94
- const n = t.__vccOpts || t;
95
- for (const [r, s] of e)
96
- n[r] = s;
97
- return n;
98
- };
99
- function B(t, e, n, r, s, a) {
100
- return o(), c("cc-webplayer", E(p(t.attributes)), [
101
- m(t.$slots, "default")
102
- ], 16);
103
- }
104
- const G = /* @__PURE__ */ l(I, [["render", B]]), D = i({
105
- props: {
106
- index: { type: Number, required: !0 },
107
- thumbnailSrc: String
108
- },
109
- computed: {
110
- attributes() {
111
- return S(this.$props);
112
- }
113
- }
114
- });
115
- function R(t, e, n, r, s, a) {
116
- return o(), c("cc-webplayer-custom-media", E(p(t.attributes)), [
117
- m(t.$slots, "default")
118
- ], 16);
119
- }
120
- const w = /* @__PURE__ */ l(D, [["render", R]]), V = i({
121
- props: {
122
- name: { type: String, required: !0 }
123
- },
124
- computed: {
125
- attributes() {
126
- return M(this.$props);
127
- }
128
- }
129
- });
130
- function x(t, e, n, r, s, a) {
131
- return o(), c("cc-webplayer-icon", E(p(t.attributes)), [
132
- m(t.$slots, "default")
133
- ], 16);
134
- }
135
- const U = /* @__PURE__ */ l(V, [["render", x]]);
136
- export {
137
- f as ANALYTICS_EVENT_IDENTIFY,
138
- h as ANALYTICS_EVENT_PAGE,
139
- d as ANALYTICS_EVENT_TRACK,
140
- _ as DEFAULT_EVENT_PREFIX,
141
- A as EVENT_COMPOSITION_LOADED,
142
- P as EVENT_COMPOSITION_LOADING,
143
- b as EVENT_COMPOSITION_LOAD_ERROR,
144
- y as EVENT_EXTEND_MODE_OFF,
145
- O as EVENT_EXTEND_MODE_ON,
146
- N as EVENT_GALLERY_CLOSE,
147
- T as EVENT_GALLERY_OPEN,
148
- v as EVENT_HOTSPOTS_OFF,
149
- $ as EVENT_HOTSPOTS_ON,
150
- L as EVENT_ITEM_CHANGE,
151
- X as WEB_PLAYER_CUSTOM_MEDIA_WC_TAG,
152
- j as WEB_PLAYER_ICON_WC_TAG,
153
- H as WEB_PLAYER_WC_TAG,
154
- G as WebPlayer,
155
- w as WebPlayerCustomMedia,
156
- U as WebPlayerIcon,
157
- z as generateCompositionUrl
158
- };