@jaaq/jaaq-sdk-js 1.1.1 → 1.2.0-dev-ec79f7e-20260605

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 (45) hide show
  1. package/README.md +18 -7
  2. package/dist/embed/embed-collection.html +17 -4
  3. package/dist/embed/embed.html +15 -3
  4. package/dist/index.cjs +57 -11
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.d.ts +100 -24
  7. package/dist/index.mjs +56 -12
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/jaaq-sdk.min.js +1 -1
  10. package/dist/jaaq-sdk.min.js.map +1 -1
  11. package/dist/ui/index.cjs +102 -17
  12. package/dist/ui/index.cjs.map +1 -1
  13. package/dist/ui/index.d.ts +89 -10
  14. package/dist/ui/index.mjs +102 -17
  15. package/dist/ui/index.mjs.map +1 -1
  16. package/dist/ui/jaaq-ui-bundled.min.js +2 -2
  17. package/dist/ui/jaaq-ui-bundled.min.js.map +1 -1
  18. package/dist/ui/jaaq-ui.min.js +2 -2
  19. package/dist/ui/jaaq-ui.min.js.map +1 -1
  20. package/dist/ui/react/index.cjs +78 -18
  21. package/dist/ui/react/index.cjs.map +1 -1
  22. package/dist/ui/react/index.d.ts +84 -7
  23. package/dist/ui/react/index.mjs +78 -18
  24. package/dist/ui/react/index.mjs.map +1 -1
  25. package/dist/ui/react/jaaq-ui-react.min.js +2 -2
  26. package/dist/ui/react/jaaq-ui-react.min.js.map +1 -1
  27. package/dist/ui/vanilla/index.cjs +102 -17
  28. package/dist/ui/vanilla/index.cjs.map +1 -1
  29. package/dist/ui/vanilla/index.d.ts +89 -10
  30. package/dist/ui/vanilla/index.mjs +102 -17
  31. package/dist/ui/vanilla/index.mjs.map +1 -1
  32. package/dist/ui/vanilla/jaaq-vanilla-bundled.min.js +2 -2
  33. package/dist/ui/vanilla/jaaq-vanilla-bundled.min.js.map +1 -1
  34. package/dist/ui/vanilla/jaaq-vanilla.min.js +2 -2
  35. package/dist/ui/vanilla/jaaq-vanilla.min.js.map +1 -1
  36. package/dist/ui/webcomponents/index.cjs +74 -14
  37. package/dist/ui/webcomponents/index.cjs.map +1 -1
  38. package/dist/ui/webcomponents/index.d.ts +86 -9
  39. package/dist/ui/webcomponents/index.mjs +74 -14
  40. package/dist/ui/webcomponents/index.mjs.map +1 -1
  41. package/dist/ui/webcomponents/jaaq-webcomponents-bundled.min.js +2 -2
  42. package/dist/ui/webcomponents/jaaq-webcomponents-bundled.min.js.map +1 -1
  43. package/dist/ui/webcomponents/jaaq-webcomponents.min.js +2 -2
  44. package/dist/ui/webcomponents/jaaq-webcomponents.min.js.map +1 -1
  45. package/package.json +38 -35
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/core/httpClient.ts","../../../src/resources/videos.ts","../../../src/resources/collections.ts","../../../src/index.ts","../../../src/ui/shared/controls.ts","../../src/ui/shared/styles.css","../../src/ui/vanilla/styles.css","../../../src/ui/vanilla/VideoPlayer.ts","../../node_modules/.pnpm/@splidejs+splide@4.1.4/node_modules/@splidejs/splide/dist/js/splide.esm.js","../../node_modules/.pnpm/@splidejs+splide@4.1.4/node_modules/@splidejs/splide/dist/css/splide.min.css","../../../src/ui/vanilla/CollectionPlayer.ts","../../../src/ui/vanilla/autoInit.ts","../../src/ui/webcomponents/CollectionPlayer.css","../../../src/ui/webcomponents/CollectionPlayer.ts","../../../src/ui/webcomponents/VideoPlayer.ts","../../../src/ui/webcomponents/register.ts"],"sourcesContent":["export type FetchLike = typeof globalThis.fetch;\ntype RequestOptions = Parameters<typeof globalThis.fetch>[1];\ntype FetchResponse = Awaited<ReturnType<FetchLike>>;\n\nexport interface HttpClientConfig {\n baseUrl: string;\n apiKey: string;\n clientId: string;\n fetch?: FetchLike;\n timeoutMs?: number;\n}\n\nexport interface HttpClient {\n get<T>(_path: string, _init?: RequestOptions): Promise<T>;\n post<T>(_path: string, _body?: unknown, _init?: RequestOptions): Promise<T>;\n put<T>(_path: string, _body?: unknown, _init?: RequestOptions): Promise<T>;\n patch<T>(_path: string, _body?: unknown, _init?: RequestOptions): Promise<T>;\n delete<T>(_path: string, _init?: RequestOptions): Promise<T>;\n}\n\nasync function parseJson<T>(res: FetchResponse): Promise<T> {\n if (!res.ok) {\n const text = await res.text().catch(() => '');\n throw new Error(`HTTP ${res.status}: ${text || res.statusText}`);\n }\n if (res.status === 204) return undefined as unknown as T;\n return res.json() as Promise<T>;\n}\n\nfunction joinUrl(baseUrl: string, clientId: string, path: string): string {\n // return path if it is an absolute URL\n if (/^https?:\\/\\//i.test(path)) return path;\n const base = baseUrl.replace(/\\/+$/, '');\n const relative = path.replace(/^\\/+/, '');\n return `${base}/b2b/v1/subscription/${encodeURIComponent(clientId)}${relative.startsWith('/') ? relative : `/${relative}`}`;\n}\n\nexport function createHttpClient(config: HttpClientConfig): HttpClient {\n const { baseUrl, apiKey, clientId, fetch: fetchImpl } = config;\n\n const f: FetchLike | undefined = fetchImpl ?? (globalThis.fetch as FetchLike | undefined);\n if (!f) {\n throw new Error('No fetch implementation found. Provide one in SDKConfig.fetch for Node or custom environments.');\n }\n\n const baseHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n };\n\n const fullUrl = (path: string) => joinUrl(baseUrl, clientId, path);\n\n const request = async <T>(method: string, path: string, init?: RequestOptions, body?: unknown) => {\n const reqInit: RequestOptions = {\n method,\n headers: {\n ...baseHeaders,\n ...(init?.headers as Record<string, string> | undefined),\n },\n ...init,\n };\n if (body !== undefined) reqInit.body = JSON.stringify(body);\n const res = await f(fullUrl(path), reqInit);\n return parseJson<T>(res);\n };\n\n return {\n get: <T>(path: string, init?: RequestOptions) => request<T>('GET', path, init),\n post: <T>(path: string, body?: unknown, init?: RequestOptions) => request<T>('POST', path, init, body),\n put: <T>(path: string, body?: unknown, init?: RequestOptions) => request<T>('PUT', path, init, body),\n patch: <T>(path: string, body?: unknown, init?: RequestOptions) => request<T>('PATCH', path, init, body),\n delete: <T>(path: string, init?: RequestOptions) => request<T>('DELETE', path, init),\n };\n}\n","import type { HttpClient } from '@core/httpClient';\nimport type { VideoDTO } from '@src/types/videos';\n\nexport type VideosResource = {\n getById(_id: string): Promise<VideoDTO>;\n};\n\nexport function createVideosResource(http: HttpClient): VideosResource {\n return {\n async getById(id: string) {\n const path = `/videos/${encodeURIComponent(id)}`;\n const response = await http.get<{ video: VideoDTO }>(path);\n return response.video;\n },\n };\n}\n","import type { HttpClient } from '@core/httpClient';\nimport type { CollectionDTO } from '@src/types/collection';\n\nexport type CollectionsResource = {\n list(): Promise<CollectionDTO[]>;\n getById(_id: string): Promise<CollectionDTO>;\n};\n\nexport function createCollectionsResource(http: HttpClient): CollectionsResource {\n return {\n async list() {\n const path = '/collections';\n const response = await http.get<{ collections: CollectionDTO[] }>(path);\n return response.collections;\n },\n async getById(id: string) {\n const path = `/collections/${encodeURIComponent(id)}`;\n const response = await http.get<{ collection: CollectionDTO }>(path);\n return response.collection;\n },\n };\n}\n","import { createHttpClient, type HttpClient, type FetchLike } from '@core/httpClient';\nimport { createVideosResource, type VideosResource } from '@resources/videos';\nimport { createCollectionsResource, type CollectionsResource } from '@resources/collections';\n\n// Public type exports for consumers (barrel)\nexport * from '@src/types';\n\nexport const BASE_URL = process.env.JAAQ_API_URL || 'https://api.jaaq.app';\n\nexport interface SDKConfig {\n baseUrl?: string; // Pending to approve\n apiKey: string; // Provided by backend per client\n clientId: string; // Provided by each consuming company at init\n fetch?: FetchLike; // Optional fetch injection (Node/custom envs) // Pending to approve\n timeoutMs?: number;\n}\n\nexport class JaaqClient {\n public readonly videos: VideosResource;\n public readonly collections: CollectionsResource;\n\n // Keep constructor private to enforce controlled instantiation.\n private constructor(http: HttpClient) {\n this.videos = createVideosResource(http);\n this.collections = createCollectionsResource(http);\n }\n\n /**\n * Public \"friend\" constructor that remains inside the class boundary.\n * This method is callable from the module-level build function\n * without exposing `new JaaqClient(...)` to consumers.\n */\n static fromHttp(http: HttpClient): JaaqClient {\n return new JaaqClient(http);\n }\n\n /**\n * OO-friendly static initializer.\n * Delegates to the single source of truth: `buildClient`.\n */\n static init(config: SDKConfig): JaaqClient {\n return buildClient(config);\n }\n}\n\n/**\n * Canonical factory (idiomatic for JS/TS).\n * Delegates to the single source of truth: `buildClient`.\n */\nexport function createJaaqClient(config: SDKConfig): JaaqClient {\n return buildClient(config);\n}\n\n/**\n * Single source of truth for constructing the client.\n * Both `createJaaqClient` and `JaaqClient.init` call this function.\n * The constructor stays private; instantiation is funneled via `JaaqClient.fromHttp`.\n */\nfunction buildClient(config: SDKConfig): JaaqClient {\n const { baseUrl = BASE_URL, apiKey, clientId, fetch: fetchImpl } = config;\n\n const http = createHttpClient({\n baseUrl,\n apiKey,\n clientId,\n fetch: fetchImpl ?? (globalThis.fetch as FetchLike | undefined),\n });\n\n return JaaqClient.fromHttp(http);\n}\n","/**\n * Formats a time value in seconds to a human-readable string (M:SS format)\n * @param seconds - Time in seconds to format\n * @returns Formatted time string in M:SS format, or \"0:00\" if invalid\n * @example\n * formatTime(65) // \"1:05\"\n * formatTime(0) // \"0:00\"\n * formatTime(125) // \"2:05\"\n */\nexport function formatTime(seconds: number): string {\n if (isNaN(seconds) || !isFinite(seconds)) {\n return '0:00';\n }\n\n const minutes = Math.floor(seconds / 60);\n const secs = Math.floor(seconds % 60);\n return `${minutes}:${secs.toString().padStart(2, '0')}`;\n}\n\n/**\n * Checks if a video URL is an HLS (HTTP Live Streaming) source\n * @param url - Video URL to check\n * @returns True if the URL contains .m3u8 extension, false otherwise\n */\nexport function isHLSSource(url: string): boolean {\n return url.includes('.m3u8');\n}\n\n/**\n * Toggles fullscreen mode for the given element\n * If not in fullscreen, requests fullscreen for the element\n * If already in fullscreen, exits fullscreen mode\n * @param element - HTML element to toggle fullscreen for\n * @returns Promise that resolves when fullscreen state changes\n */\nexport function toggleFullscreen(element: HTMLElement): Promise<void> {\n if (!document.fullscreenElement) {\n return element.requestFullscreen();\n } else {\n return document.exitFullscreen();\n }\n}\n\n/**\n * Clamps a numeric value between a minimum and maximum value\n * @param value - Value to clamp\n * @param min - Minimum allowed value\n * @param max - Maximum allowed value\n * @returns The clamped value\n * @example\n * clamp(5, 0, 10) // 5\n * clamp(-5, 0, 10) // 0\n * clamp(15, 0, 10) // 10\n */\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n",".jaaq-video-player {\n position: relative;\n width: 100%;\n max-width: none;\n margin: 0;\n background: #000;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n aspect-ratio: 9 / 16;\n}\n\n.jaaq-video-player video {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: block;\n background: #000;\n object-fit: cover;\n}\n\n.jaaq-video-player.fullscreen {\n max-width: 100%;\n border-radius: 0;\n aspect-ratio: auto;\n}\n\n.jaaq-controls {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent);\n padding: 40px 16px 16px;\n opacity: 1;\n z-index: 5;\n}\n\n.jaaq-progress-bar {\n width: 100%;\n flex: 1 1 0;\n min-width: 80px;\n height: 4px;\n background: rgba(255, 255, 255, 0.3);\n border-radius: 2px;\n cursor: pointer;\n position: relative;\n}\n\n.jaaq-progress-filled {\n height: 100%;\n background: #007bff;\n border-radius: 2px;\n width: 0%;\n transition: width 0.1s linear;\n}\n\n.jaaq-progress-bar:hover .jaaq-progress-filled {\n background: #0056b3;\n}\n\n.jaaq-controls-bottom {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n color: white;\n}\n\n.jaaq-control-btn {\n background: transparent;\n border: none;\n color: white;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n font-size: 20px;\n line-height: 1;\n}\n\n.jaaq-control-btn:hover {\n transform: scale(1.1);\n}\n\n.jaaq-control-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.jaaq-loading {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 50px;\n height: 50px;\n border: 4px solid rgba(255, 255, 255, 0.3);\n border-top-color: #007bff;\n border-radius: 50%;\n animation: jaaq-spin 1s linear infinite;\n}\n\n@keyframes jaaq-spin {\n to {\n transform: translate(-50%, -50%) rotate(360deg);\n }\n}\n\n.jaaq-error {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: rgba(220, 53, 69, 0.9);\n color: white;\n padding: 16px 24px;\n border-radius: 8px;\n max-width: 80%;\n text-align: center;\n font-size: 14px;\n}\n\n.jaaq-video-info {\n padding: 16px;\n background: #f8f9fa;\n border-radius: 0 0 12px 12px;\n margin-top: -12px;\n}\n\n.jaaq-video-info h3 {\n margin: 0 0 8px 0;\n color: #333;\n font-size: 18px;\n font-weight: 600;\n}\n\n.jaaq-video-info p {\n margin: 4px 0;\n color: #666;\n font-size: 14px;\n}\n\n.jaaq-video-info strong {\n color: #333;\n}\n\n.jaaq-logo {\n position: absolute;\n top: 20px;\n left: 22px;\n color: white;\n font-size: 16px;\n font-weight: 600;\n z-index: 10;\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n letter-spacing: 0.5px;\n pointer-events: none;\n}\n\n.jaaq-center-play-btn {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 84px;\n height: 84px;\n background: transparent;\n border: none;\n cursor: pointer;\n z-index: 15;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n padding: 0;\n}\n\n.jaaq-center-play-btn:hover {\n transform: translate(-50%, -50%) scale(1.1);\n}\n\n.jaaq-center-play-btn svg {\n width: 100%;\n height: 100%;\n filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.3));\n}\n\n.jaaq-video-player.is-playing .jaaq-center-play-btn {\n display: none;\n}\n\n.jaaq-gradient-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background: linear-gradient(180deg, transparent 0%, #0f0f0f 100%);\n padding: 80px 22px 85px;\n pointer-events: none;\n z-index: 5;\n}\n\n.jaaq-caption-display {\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n font-weight: 400;\n font-size: 16px;\n line-height: 20px;\n color: white;\n background: rgba(0, 0, 0, 0.8);\n padding: 8px 16px;\n margin-bottom: 12px;\n border-radius: 4px;\n text-align: center;\n max-width: 90%;\n margin-left: auto;\n margin-right: auto;\n}\n\n.jaaq-video-title {\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n font-weight: 600;\n font-size: 18.695px;\n line-height: 21.5px;\n color: white;\n margin-bottom: 8px;\n letter-spacing: 0.37px;\n}\n\n.jaaq-video-author {\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n font-weight: 500;\n font-size: 14.021px;\n line-height: 16.825px;\n color: white;\n opacity: 0.7;\n margin-bottom: 8px;\n letter-spacing: -0.14px;\n}\n\n.jaaq-video-description {\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n font-weight: 400;\n font-size: 11px;\n line-height: 16px;\n color: #aaa8aa;\n letter-spacing: -0.11px;\n}\n\n.jaaq-description-text {\n color: #aaa8aa;\n}\n\n.jaaq-read-more {\n color: white;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.jaaq-read-more:hover {\n text-decoration: underline;\n}\n\n.jaaq-progress-bar {\n background: rgba(255, 255, 255, 0.2);\n}\n\n.jaaq-progress-filled {\n background: white;\n}\n\n.jaaq-captions-btn {\n font-size: 14px;\n font-weight: 600;\n border: 1.5px solid white;\n border-radius: 3px;\n padding: 4px 6px;\n line-height: 1;\n}\n\n.jaaq-captions-btn.active {\n background: white;\n color: #000;\n}\n",".jaaq-vanilla-player {\n user-select: none;\n}\n\n.jaaq-vanilla-player video {\n outline: none;\n}\n\n.jaaq-collection-player {\n width: 100%;\n max-width: 1400px;\n margin: 0 auto;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n}\n\n.jaaq-collection-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 400px;\n}\n\n.jaaq-collection-spinner {\n width: 50px;\n height: 50px;\n border: 4px solid rgba(0, 123, 255, 0.3);\n border-top-color: #007bff;\n border-radius: 50%;\n animation: jaaq-collection-spin 1s linear infinite;\n}\n\n@keyframes jaaq-collection-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.jaaq-collection-error {\n background: rgba(220, 53, 69, 0.9);\n color: white;\n padding: 16px 24px;\n border-radius: 8px;\n text-align: center;\n font-size: 14px;\n margin: 20px;\n}\n\n.jaaq-collection-carousel .splide__track {\n padding: 40px 0;\n}\n\n.jaaq-collection-carousel .splide__slide {\n opacity: 0.7;\n transition: all 0.3s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.jaaq-collection-carousel .splide__slide.is-active {\n opacity: 1;\n}\n\n.jaaq-collection-carousel .splide__slide jaaq-video-player {\n width: 100%;\n max-width: 600px;\n transition: all 0.3s ease;\n}\n\n.jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 800px;\n}\n\n.jaaq-collection-carousel .splide__arrow {\n background: rgba(0, 0, 0, 0.5);\n border: none;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n color: white;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n}\n\n.jaaq-collection-carousel .splide__arrow:hover {\n background: rgba(0, 0, 0, 0.8);\n transform: scale(1.1);\n}\n\n.jaaq-collection-carousel .splide__arrow:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n\n.jaaq-collection-carousel .splide__arrow svg {\n fill: white;\n width: 20px;\n height: 20px;\n}\n\n.jaaq-collection-carousel .splide__pagination {\n bottom: -30px;\n}\n\n.jaaq-collection-carousel .splide__pagination__page {\n background: #ccc;\n border: none;\n width: 10px;\n height: 10px;\n margin: 0 4px;\n border-radius: 50%;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.jaaq-collection-carousel .splide__pagination__page.is-active {\n background: #007bff;\n transform: scale(1.3);\n}\n\n@media (max-width: 1024px) {\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 500px;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 650px;\n }\n}\n\n@media (max-width: 768px) {\n .jaaq-collection-carousel .splide__track {\n padding: 20px 0;\n }\n\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 400px;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 500px;\n }\n\n .jaaq-collection-carousel .splide__arrow {\n width: 40px;\n height: 40px;\n }\n}\n\n@media (max-width: 480px) {\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 100%;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 100%;\n }\n}\n","import Hls from 'hls.js';\nimport { createJaaqClient, type JaaqClient } from '@src/index';\nimport { isHLSSource, toggleFullscreen, clamp } from '@ui/shared/controls';\nimport type { PlayerConfig, PlayerEventMap, PlayerEventCallback, PlayerState } from '@ui/shared/types';\nimport type { VideoDTO } from '@src/types';\nimport '@ui/shared/styles.css';\nimport './styles.css';\n\n/**\n * Vanilla JavaScript video player with custom controls, HLS support, and event system\n * @example\n * const player = new JaaqVideoPlayer('#container', {\n * videoId: 'video-id',\n * apiKey: 'api-key',\n * clientId: 'client-id',\n * autoplay: false\n * });\n *\n * player.on('play', () => console.log('Playing'));\n * player.on('pause', () => console.log('Paused'));\n */\ntype CaptionCue = {\n start: number;\n end: number;\n text: string;\n};\n\nexport class JaaqVideoPlayer {\n private container: HTMLElement;\n private config: PlayerConfig;\n private client: JaaqClient | null = null;\n private hls: Hls | null = null;\n private videoElement: HTMLVideoElement | null = null;\n private state: PlayerState;\n private listeners: Map<keyof PlayerEventMap, Set<PlayerEventCallback<unknown>>> = new Map();\n private captionCues: CaptionCue[] = [];\n private elements: {\n player?: HTMLDivElement;\n controls?: HTMLDivElement;\n progressBar?: HTMLDivElement;\n progressFilled?: HTMLDivElement;\n playPauseBtn?: HTMLButtonElement;\n volumeBtn?: HTMLButtonElement;\n fullscreenBtn?: HTMLButtonElement;\n captionsBtn?: HTMLButtonElement;\n loading?: HTMLDivElement;\n error?: HTMLDivElement;\n logo?: HTMLDivElement;\n centerPlayBtn?: HTMLButtonElement;\n gradientOverlay?: HTMLDivElement;\n captionDisplay?: HTMLDivElement;\n videoTitle?: HTMLDivElement;\n videoAuthor?: HTMLDivElement;\n videoDescription?: HTMLDivElement;\n } = {};\n\n /**\n * Creates a new video player instance\n * @param container - HTML element or CSS selector to render the player into\n * @param config - Player configuration options\n * @throws {Error} If container element is not found or if authentication credentials are missing\n */\n constructor(container: HTMLElement | string, config: PlayerConfig) {\n this.container = typeof container === 'string' ? document.querySelector(container)! : container;\n\n if (!this.container) {\n throw new Error('Container element not found');\n }\n\n this.config = config;\n this.state = {\n isPlaying: false,\n currentTime: 0,\n duration: 0,\n volume: 1,\n isMuted: config.startMuted === true,\n isFullscreen: false,\n isLoading: true,\n error: null,\n videoData: null,\n captionsEnabled: false,\n };\n\n if (config.client) {\n this.client = config.client;\n } else if (config.apiKey && config.clientId) {\n this.client = createJaaqClient({\n apiKey: config.apiKey,\n clientId: config.clientId,\n baseUrl: config.baseUrl,\n });\n } else {\n throw new Error('Please provide either a client instance or apiKey and clientId');\n }\n\n this.init();\n }\n\n private async init(): Promise<void> {\n this.createDOM();\n await this.loadVideo();\n this.attachEventListeners();\n if (this.config.startMuted === true) {\n this.updateVolumeUI();\n }\n }\n\n private createDOM(): void {\n this.container.innerHTML = '';\n\n const wrapper = document.createElement('div');\n wrapper.style.width = this.config.width || '100%';\n wrapper.style.height = this.config.height || 'auto';\n\n const player = document.createElement('div');\n player.className = `jaaq-video-player jaaq-vanilla-player ${this.config.className || ''}`;\n this.elements.player = player;\n\n const video = document.createElement('video');\n this.videoElement = video;\n if (this.config.startMuted === true) {\n video.muted = true;\n video.setAttribute('muted', '');\n }\n player.appendChild(video);\n\n const logo = document.createElement('div');\n logo.className = 'jaaq-logo';\n logo.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"50\" height=\"15\" viewBox=\"0 0 50 15\" fill=\"none\">\n <path d=\"M48.0329 10.7826C48.7578 9.6622 49.1402 8.37108 49.1402 7.02322C49.1402 3.19784 46.0283 0.0859375 42.2029 0.0859375C38.3775 0.0859375 35.2656 3.19784 35.2656 7.02322C35.2656 10.8486 38.3753 13.9578 42.1985 13.9605C42.1991 13.9605 42.2002 13.9605 42.2007 13.9605H42.2029C43.8475 13.9605 45.4305 13.3687 46.6698 12.3285L49.9971 14.56V12.0999L48.0334 10.7826H48.0329ZM37.309 7.02322C37.309 4.32479 39.5045 2.12927 42.2035 2.12927C44.9024 2.12927 47.0974 4.32479 47.0974 7.02322C47.0974 7.96252 46.8345 8.862 46.3359 9.64475L43.9817 8.06561C43.4531 7.71378 42.8373 7.52778 42.2002 7.52778C40.4394 7.52778 39.0054 8.95036 38.9846 10.7062C37.9586 9.80839 37.3084 8.49053 37.3084 7.02322H37.309ZM42.2035 11.9172C42.2035 11.9172 42.2002 11.9172 42.1985 11.9172C41.5527 11.9161 41.0274 11.3903 41.0274 10.7439C41.0274 10.0975 41.5538 9.57056 42.2007 9.57056C42.4331 9.57056 42.6578 9.6382 42.8493 9.76584L44.8714 11.1224C44.0853 11.633 43.1586 11.9172 42.2029 11.9172H42.2035Z\" fill=\"white\"/>\n <path d=\"M31.0751 0.686201C30.9856 0.579834 30.8858 0.483286 30.7767 0.39983C30.4374 0.138004 30.0283 0 29.5946 0C29.161 0 28.7524 0.138549 28.4126 0.39983C28.2304 0.540561 28.0755 0.711838 27.9533 0.909844C27.8835 1.02276 27.8257 1.14003 27.7815 1.25785L23.1172 13.7317H25.4551L29.5946 2.66135L33.7342 13.7317H36.0721L31.4078 1.25785C31.3303 1.05003 31.218 0.858024 31.0745 0.686746L31.0751 0.686201Z\" fill=\"white\"/>\n <path d=\"M17.4969 0.686201C17.4075 0.579834 17.3076 0.483286 17.1986 0.39983C16.8593 0.138004 16.4502 0 16.0165 0C15.5829 0 15.1743 0.138549 14.8345 0.39983C14.6523 0.540561 14.4974 0.711838 14.3752 0.909844C14.3054 1.02276 14.2476 1.14003 14.2034 1.25785L9.53906 13.7317H11.8769L16.0165 2.66135L20.1561 13.7317H22.494L17.8302 1.25731C17.7527 1.04948 17.6404 0.857478 17.4969 0.686201Z\" fill=\"white\"/>\n <path d=\"M9.86046 0.511825V0.371094H7.82204V9.02333C7.82204 10.6248 6.51891 11.928 4.91741 11.928C3.47028 11.928 2.23261 10.849 2.03897 9.41771L2.01988 9.27807L1.88024 9.29716L0.13964 9.5328L0 9.5519L0.0190914 9.69154C0.348555 12.1292 2.45462 13.9669 4.91741 13.9669C7.64313 13.9669 9.86046 11.7496 9.86046 9.02388V0.511825Z\" fill=\"white\"/>\n </svg>\n `;\n this.elements.logo = logo;\n player.appendChild(logo);\n\n const centerPlayBtn = document.createElement('button');\n centerPlayBtn.className = 'jaaq-center-play-btn';\n centerPlayBtn.innerHTML = `\n <svg viewBox=\"0 0 84 84\" fill=\"none\">\n <circle cx=\"42\" cy=\"42\" r=\"42\" fill=\"white\" fill-opacity=\"0.9\"/>\n <path d=\"M33 28L56 42L33 56V28Z\" fill=\"#000\"/>\n </svg>\n `;\n centerPlayBtn.setAttribute('aria-label', 'Play video');\n this.elements.centerPlayBtn = centerPlayBtn;\n player.appendChild(centerPlayBtn);\n\n const gradientOverlay = document.createElement('div');\n gradientOverlay.className = 'jaaq-gradient-overlay';\n this.elements.gradientOverlay = gradientOverlay;\n\n const captionDisplay = document.createElement('div');\n captionDisplay.className = 'jaaq-caption-display';\n captionDisplay.style.display = 'none';\n this.elements.captionDisplay = captionDisplay;\n gradientOverlay.appendChild(captionDisplay);\n\n const videoTitle = document.createElement('div');\n videoTitle.className = 'jaaq-video-title';\n this.elements.videoTitle = videoTitle;\n gradientOverlay.appendChild(videoTitle);\n\n const videoAuthor = document.createElement('div');\n videoAuthor.className = 'jaaq-video-author';\n this.elements.videoAuthor = videoAuthor;\n gradientOverlay.appendChild(videoAuthor);\n\n const videoDescription = document.createElement('div');\n videoDescription.className = 'jaaq-video-description';\n this.elements.videoDescription = videoDescription;\n gradientOverlay.appendChild(videoDescription);\n\n player.appendChild(gradientOverlay);\n\n const loading = document.createElement('div');\n loading.className = 'jaaq-loading';\n this.elements.loading = loading;\n player.appendChild(loading);\n\n const error = document.createElement('div');\n error.className = 'jaaq-error';\n error.style.display = 'none';\n this.elements.error = error;\n player.appendChild(error);\n\n const controls = document.createElement('div');\n controls.className = 'jaaq-controls';\n this.elements.controls = controls;\n\n const controlsBottom = document.createElement('div');\n controlsBottom.className = 'jaaq-controls-bottom';\n\n const playPauseBtn = document.createElement('button');\n playPauseBtn.className = 'jaaq-control-btn';\n playPauseBtn.textContent = '▶';\n playPauseBtn.setAttribute('aria-label', 'Play');\n this.elements.playPauseBtn = playPauseBtn;\n controlsBottom.appendChild(playPauseBtn);\n\n const volumeBtn = document.createElement('button');\n volumeBtn.className = 'jaaq-control-btn';\n volumeBtn.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"20\" viewBox=\"0 0 22 20\" fill=\"none\">\n <path d=\"M11.2168 19.9287L4.20801 13.7031H0V6.22559H4.20898L11.2168 0V19.9287ZM14.0215 0.150391C16.2405 0.150468 18.1409 1.39074 19.4385 3.17676C20.7365 4.9634 21.499 7.36811 21.499 9.96484C21.499 12.5613 20.7363 14.9654 19.4385 16.752C18.1409 18.538 16.2405 19.7792 14.0215 19.7793V17.1025C15.2032 17.1025 16.3824 16.4464 17.3135 15.165C18.2442 13.8839 18.8593 12.0493 18.8594 9.96484C18.8594 7.88034 18.2442 6.04581 17.3135 4.76465C16.3824 3.4832 15.2033 2.82723 14.0215 2.82715V0.150391ZM14.0215 5.75879C15.5701 5.75896 16.8252 7.64189 16.8252 9.96484C16.8251 12.2877 15.57 14.1707 14.0215 14.1709V5.75879Z\" fill=\"white\"/>\n </svg>\n `;\n volumeBtn.setAttribute('aria-label', 'Mute');\n this.elements.volumeBtn = volumeBtn;\n controlsBottom.appendChild(volumeBtn);\n\n const progressBar = document.createElement('div');\n progressBar.className = 'jaaq-progress-bar';\n this.elements.progressBar = progressBar;\n\n const progressFilled = document.createElement('div');\n progressFilled.className = 'jaaq-progress-filled';\n this.elements.progressFilled = progressFilled;\n progressBar.appendChild(progressFilled);\n controlsBottom.appendChild(progressBar);\n\n const captionsBtn = document.createElement('button');\n captionsBtn.className = 'jaaq-control-btn jaaq-captions-btn';\n captionsBtn.innerHTML = 'CC';\n captionsBtn.setAttribute('aria-label', 'Captions');\n this.elements.captionsBtn = captionsBtn;\n controlsBottom.appendChild(captionsBtn);\n\n const fullscreenBtn = document.createElement('button');\n fullscreenBtn.className = 'jaaq-control-btn';\n fullscreenBtn.textContent = '⛶';\n fullscreenBtn.setAttribute('aria-label', 'Fullscreen');\n this.elements.fullscreenBtn = fullscreenBtn;\n controlsBottom.appendChild(fullscreenBtn);\n\n controls.appendChild(controlsBottom);\n player.appendChild(controls);\n\n wrapper.appendChild(player);\n this.container.appendChild(wrapper);\n\n this.updateControlsVisibility();\n }\n\n private updateControlsVisibility(): void {\n const showControls = this.config.controls !== false;\n if (this.elements.controls) {\n this.elements.controls.style.display = showControls ? '' : 'none';\n }\n }\n\n private async loadVideo(): Promise<void> {\n if (!this.client || !this.videoElement) return;\n\n try {\n this.setState({ isLoading: true, error: null });\n\n const video = await this.client.videos.getById(this.config.videoId);\n this.setState({ videoData: video });\n\n if (video.subtitle) {\n this.captionCues = this.parseWebVTT(video.subtitle);\n }\n\n this.updateOverlayContent(video);\n this.emit('loaded', video);\n\n const videoUrl = video.videoUrl;\n\n if (isHLSSource(videoUrl)) {\n if (Hls.isSupported()) {\n if (this.hls) {\n this.hls.destroy();\n }\n\n const hls = new Hls({\n enableWorker: true,\n lowLatencyMode: true,\n });\n\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n }\n\n hls.loadSource(videoUrl);\n hls.attachMedia(this.videoElement);\n\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n }\n\n hls.on(Hls.Events.MANIFEST_PARSED, () => {\n this.setState({ isLoading: false });\n if (this.elements.loading) {\n this.elements.loading.style.display = 'none';\n }\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n if (this.config.autoplay) {\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.play();\n }\n });\n\n hls.on(Hls.Events.ERROR, (_event: unknown, data: { fatal?: boolean; type?: string; details?: string }) => {\n if (data.fatal) {\n const errorMsg = `HLS Error: ${data.type} - ${data.details}`;\n this.showError(errorMsg);\n this.emit('error', new Error(errorMsg));\n }\n });\n\n this.hls = hls;\n } else if (this.videoElement.canPlayType('application/vnd.apple.mpegurl')) {\n this.videoElement.src = videoUrl;\n if (this.config.startMuted === true) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.setState({ isLoading: false });\n if (this.elements.loading) {\n this.elements.loading.style.display = 'none';\n }\n if (this.config.autoplay) {\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.play();\n }\n } else {\n throw new Error('HLS is not supported in this browser');\n }\n } else {\n this.videoElement.src = videoUrl;\n if (this.config.startMuted === true) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.setState({ isLoading: false });\n if (this.elements.loading) {\n this.elements.loading.style.display = 'none';\n }\n if (this.config.autoplay) {\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.play();\n }\n }\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : 'Failed to load video';\n this.showError(errorMsg);\n this.setState({ isLoading: false });\n this.emit('error', err instanceof Error ? err : new Error(errorMsg));\n }\n }\n\n private parseWebVTT(webvtt: string): CaptionCue[] {\n const cues: CaptionCue[] = [];\n const lines = webvtt.split('\\n');\n\n let i = 0;\n while (i < lines.length) {\n const line = lines[i].trim();\n\n if (line.includes('-->')) {\n const [startTime, endTime] = line.split('-->').map((t) => t.trim());\n\n const parseTimestamp = (timestamp: string): number => {\n const parts = timestamp.split(':');\n if (parts.length === 3) {\n const hours = parseFloat(parts[0]);\n const minutes = parseFloat(parts[1]);\n const seconds = parseFloat(parts[2]);\n return hours * 3600 + minutes * 60 + seconds;\n } else if (parts.length === 2) {\n const minutes = parseFloat(parts[0]);\n const seconds = parseFloat(parts[1]);\n return minutes * 60 + seconds;\n }\n return 0;\n };\n\n const start = parseTimestamp(startTime);\n const end = parseTimestamp(endTime);\n\n i++;\n const textLines: string[] = [];\n while (i < lines.length && lines[i].trim() !== '') {\n textLines.push(lines[i].trim());\n i++;\n }\n\n if (textLines.length > 0) {\n cues.push({\n start,\n end,\n text: textLines.join(' '),\n });\n }\n }\n\n i++;\n }\n\n return cues;\n }\n\n private updateOverlayContent(video: VideoDTO): void {\n const showLogo = this.config.showLogo !== false;\n const showTitle = this.config.showTitle !== false;\n const showAuthor = this.config.showAuthor !== false;\n const showDescription = this.config.showDescription !== false;\n const showCaptions = this.config.showCaptions !== false;\n\n if (this.elements.logo) {\n this.elements.logo.style.display = showLogo ? 'block' : 'none';\n }\n\n if (this.elements.videoTitle) {\n const question = video.question || '';\n const creator = video.creator || '';\n const titleText = creator ? `${question} - ${creator}` : question;\n this.elements.videoTitle.textContent = titleText;\n this.elements.videoTitle.style.display = showTitle && question ? 'block' : 'none';\n }\n\n if (this.elements.videoAuthor) {\n const authorData = (video as any).author || (video as any).creator || (video as any).userName || '';\n this.elements.videoAuthor.textContent = authorData;\n this.elements.videoAuthor.style.display = showAuthor && authorData ? 'block' : 'none';\n }\n\n if (this.elements.videoDescription) {\n const descriptionText = video.creatorBiography || video.description || '';\n if (descriptionText) {\n const maxLength = 150;\n const truncated = descriptionText.length > maxLength ? descriptionText.substring(0, maxLength) + '...' : descriptionText;\n this.elements.videoDescription.innerHTML = `\n <span class=\"jaaq-description-text\">${truncated}</span>\n ${descriptionText.length > maxLength ? '<span class=\"jaaq-read-more\"> Read more</span>' : ''}\n `;\n }\n this.elements.videoDescription.style.display = showDescription && descriptionText ? 'block' : 'none';\n }\n\n if (this.elements.captionsBtn) {\n this.elements.captionsBtn.style.display = showCaptions ? 'flex' : 'none';\n }\n }\n\n private attachEventListeners(): void {\n if (!this.videoElement) return;\n\n this.videoElement.addEventListener('play', () => {\n this.setState({ isPlaying: true });\n this.updatePlayPauseButton();\n if (this.elements.centerPlayBtn) {\n this.elements.centerPlayBtn.style.display = 'none';\n }\n this.emit('play', undefined);\n });\n\n this.videoElement.addEventListener('pause', () => {\n this.setState({ isPlaying: false });\n this.updatePlayPauseButton();\n if (this.elements.centerPlayBtn) {\n this.elements.centerPlayBtn.style.display = 'flex';\n }\n this.emit('pause', undefined);\n });\n\n this.videoElement.addEventListener('timeupdate', () => {\n this.setState({ currentTime: this.videoElement!.currentTime });\n this.updateProgress();\n this.updateCaptions();\n this.emit('timeupdate', this.videoElement!.currentTime);\n });\n\n this.videoElement.addEventListener('durationchange', () => {\n this.setState({ duration: this.videoElement!.duration });\n });\n\n this.videoElement.addEventListener('volumechange', () => {\n this.setState({\n volume: this.videoElement!.volume,\n isMuted: this.videoElement!.muted,\n });\n this.updateVolumeUI();\n this.emit('volumechange', this.videoElement!.volume);\n });\n\n this.videoElement.addEventListener('ended', () => {\n this.emit('ended', undefined);\n });\n\n this.elements.playPauseBtn?.addEventListener('click', () => {\n this.togglePlayPause();\n });\n\n this.elements.centerPlayBtn?.addEventListener('click', () => {\n this.play();\n if (this.elements.centerPlayBtn) {\n this.elements.centerPlayBtn.style.display = 'none';\n }\n });\n\n this.elements.progressBar?.addEventListener('click', (e) => {\n this.handleSeek(e);\n });\n\n this.elements.volumeBtn?.addEventListener('click', () => {\n this.toggleMute();\n });\n\n this.elements.captionsBtn?.addEventListener('click', () => {\n this.toggleCaptions();\n });\n\n this.elements.fullscreenBtn?.addEventListener('click', () => {\n this.toggleFullscreen();\n });\n\n document.addEventListener('fullscreenchange', () => {\n const isFullscreen = !!document.fullscreenElement;\n this.setState({ isFullscreen });\n this.elements.player?.classList.toggle('fullscreen', isFullscreen);\n this.emit('fullscreenchange', isFullscreen);\n });\n\n this.elements.player?.addEventListener('mousemove', () => {\n this.elements.player?.classList.remove('is-paused');\n });\n\n this.videoElement.addEventListener('pause', () => {\n this.elements.player?.classList.add('is-paused');\n });\n\n this.videoElement.addEventListener('play', () => {\n this.elements.player?.classList.remove('is-paused');\n });\n }\n\n private setState(newState: Partial<PlayerState>): void {\n this.state = { ...this.state, ...newState };\n }\n\n private updatePlayPauseButton(): void {\n if (this.elements.playPauseBtn) {\n this.elements.playPauseBtn.textContent = this.state.isPlaying ? '⏸' : '▶';\n this.elements.playPauseBtn.setAttribute('aria-label', this.state.isPlaying ? 'Pause' : 'Play');\n }\n }\n\n private updateProgress(): void {\n if (this.elements.progressFilled && this.state.duration > 0) {\n const progress = (this.state.currentTime / this.state.duration) * 100;\n this.elements.progressFilled.style.width = `${progress}%`;\n }\n }\n\n private updateVolumeUI(): void {\n if (this.elements.volumeBtn) {\n const { isMuted, volume } = this.state;\n\n if (isMuted || volume === 0) {\n this.elements.volumeBtn.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"20\" viewBox=\"0 0 22 20\" fill=\"none\">\n <path d=\"M11.2168 19.9287L4.20801 13.7031H0V6.22559H4.20898L11.2168 0V19.9287Z\" fill=\"white\"/>\n </svg>\n `;\n } else {\n this.elements.volumeBtn.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"20\" viewBox=\"0 0 22 20\" fill=\"none\">\n <path d=\"M11.2168 19.9287L4.20801 13.7031H0V6.22559H4.20898L11.2168 0V19.9287ZM14.0215 0.150391C16.2405 0.150468 18.1409 1.39074 19.4385 3.17676C20.7365 4.9634 21.499 7.36811 21.499 9.96484C21.499 12.5613 20.7363 14.9654 19.4385 16.752C18.1409 18.538 16.2405 19.7792 14.0215 19.7793V17.1025C15.2032 17.1025 16.3824 16.4464 17.3135 15.165C18.2442 13.8839 18.8593 12.0493 18.8594 9.96484C18.8594 7.88034 18.2442 6.04581 17.3135 4.76465C16.3824 3.4832 15.2033 2.82723 14.0215 2.82715V0.150391ZM14.0215 5.75879C15.5701 5.75896 16.8252 7.64189 16.8252 9.96484C16.8251 12.2877 15.57 14.1707 14.0215 14.1709V5.75879Z\" fill=\"white\"/>\n </svg>\n `;\n }\n }\n }\n\n private updateCaptions(): void {\n if (!this.elements.captionDisplay || !this.state.captionsEnabled) {\n if (this.elements.captionDisplay) {\n this.elements.captionDisplay.style.display = 'none';\n }\n return;\n }\n\n const currentTime = this.state.currentTime;\n const currentCue = this.captionCues.find((cue) => currentTime >= cue.start && currentTime <= cue.end);\n\n if (currentCue) {\n this.elements.captionDisplay.textContent = currentCue.text;\n this.elements.captionDisplay.style.display = 'block';\n } else {\n this.elements.captionDisplay.style.display = 'none';\n }\n }\n\n private handleSeek(e: MouseEvent): void {\n if (!this.videoElement || !this.state.duration || !this.elements.progressBar) return;\n\n const rect = this.elements.progressBar.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n this.videoElement.currentTime = this.state.duration * clamp(percent, 0, 1);\n }\n\n private showError(message: string): void {\n this.setState({ error: message, isLoading: false });\n if (this.elements.error) {\n this.elements.error.textContent = message;\n this.elements.error.style.display = 'block';\n }\n if (this.elements.loading) {\n this.elements.loading.style.display = 'none';\n }\n }\n\n private togglePlayPause(): void {\n if (this.state.isPlaying) {\n this.pause();\n } else {\n this.play();\n }\n }\n\n private toggleCaptions(): void {\n this.setState({ captionsEnabled: !this.state.captionsEnabled });\n this.updateCaptionsButton();\n this.updateCaptions();\n }\n\n private updateCaptionsButton(): void {\n if (this.elements.captionsBtn) {\n if (this.state.captionsEnabled) {\n this.elements.captionsBtn.classList.add('active');\n } else {\n this.elements.captionsBtn.classList.remove('active');\n }\n }\n }\n\n private toggleFullscreen(): void {\n if (this.elements.player) {\n toggleFullscreen(this.elements.player);\n }\n }\n\n /**\n * Starts or resumes video playback\n */\n public play(): void {\n if (this.videoElement) {\n if (this.config.startMuted === true && !this.videoElement.muted) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n }\n this.videoElement.play();\n }\n }\n\n /**\n * Pauses video playback\n */\n public pause(): void {\n this.videoElement?.pause();\n }\n\n /**\n * Sets the playback volume\n * @param volume - Volume level between 0 (silent) and 1 (maximum)\n */\n public setVolume(volume: number): void {\n if (this.videoElement) {\n this.videoElement.volume = clamp(volume, 0, 1);\n this.videoElement.muted = volume === 0;\n }\n }\n\n /**\n * Toggles audio mute state\n */\n public toggleMute(): void {\n if (this.videoElement) {\n this.videoElement.muted = !this.videoElement.muted;\n }\n }\n\n /**\n * Seeks to a specific time in the video\n * @param time - Target time in seconds\n */\n public seek(time: number): void {\n if (this.videoElement) {\n this.videoElement.currentTime = clamp(time, 0, this.state.duration);\n }\n }\n\n public setFeatures(\n features: Partial<\n Pick<PlayerConfig, 'showLogo' | 'showTitle' | 'showAuthor' | 'showDescription' | 'showCaptions' | 'controls' | 'startMuted'>\n >,\n ): void {\n this.config = { ...this.config, ...features };\n\n if (features.controls !== undefined) {\n this.updateControlsVisibility();\n }\n\n if (features.startMuted !== undefined && this.videoElement) {\n this.videoElement.muted = features.startMuted === true;\n if (features.startMuted === true) {\n this.videoElement.setAttribute('muted', '');\n } else {\n this.videoElement.removeAttribute('muted');\n }\n this.setState({ isMuted: features.startMuted === true });\n this.updateVolumeUI();\n }\n\n if (this.state.videoData) {\n this.updateOverlayContent(this.state.videoData);\n } else {\n if (features.showLogo !== undefined && this.elements.logo) {\n this.elements.logo.style.display = features.showLogo ? 'block' : 'none';\n }\n if (features.showCaptions !== undefined && this.elements.captionsBtn) {\n this.elements.captionsBtn.style.display = features.showCaptions ? 'flex' : 'none';\n }\n }\n }\n\n /**\n * Returns a copy of the current player state\n * @returns Current player state object\n */\n public getState(): PlayerState {\n return { ...this.state };\n }\n\n /**\n * Registers an event listener for player events\n * @param event - Event name to listen for\n * @param callback - Function to call when event fires\n */\n public on<K extends keyof PlayerEventMap>(event: K, callback: PlayerEventCallback<PlayerEventMap[K]>): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n this.listeners.get(event)!.add(callback as PlayerEventCallback<unknown>);\n }\n\n /**\n * Removes an event listener for player events\n * @param event - Event name to stop listening for\n * @param callback - Function to remove from listeners\n */\n public off<K extends keyof PlayerEventMap>(event: K, callback: PlayerEventCallback<PlayerEventMap[K]>): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.delete(callback as PlayerEventCallback<unknown>);\n }\n }\n\n private emit<K extends keyof PlayerEventMap>(event: K, data: PlayerEventMap[K]): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.forEach((callback) => callback(data));\n }\n }\n\n /**\n * Destroys the player instance and cleans up resources\n * Removes all event listeners, stops playback, and clears the DOM\n */\n public destroy(): void {\n if (this.hls) {\n this.hls.destroy();\n this.hls = null;\n }\n\n if (this.videoElement) {\n this.videoElement.pause();\n this.videoElement.src = '';\n this.videoElement = null;\n }\n\n this.listeners.clear();\n this.container.innerHTML = '';\n }\n}\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*!\n * Splide.js\n * Version : 4.1.4\n * License : MIT\n * Copyright: 2022 Naotoshi Fujita\n */\nvar MEDIA_PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nvar CREATED = 1;\nvar MOUNTED = 2;\nvar IDLE = 3;\nvar MOVING = 4;\nvar SCROLLING = 5;\nvar DRAGGING = 6;\nvar DESTROYED = 7;\nvar STATES = {\n CREATED: CREATED,\n MOUNTED: MOUNTED,\n IDLE: IDLE,\n MOVING: MOVING,\n SCROLLING: SCROLLING,\n DRAGGING: DRAGGING,\n DESTROYED: DESTROYED\n};\n\nfunction empty(array) {\n array.length = 0;\n}\n\nfunction slice(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply(func) {\n return func.bind.apply(func, [null].concat(slice(arguments, 1)));\n}\n\nvar nextTick = setTimeout;\n\nvar noop = function noop() {};\n\nfunction raf(func) {\n return requestAnimationFrame(func);\n}\n\nfunction typeOf(type, subject) {\n return typeof subject === type;\n}\n\nfunction isObject(subject) {\n return !isNull(subject) && typeOf(\"object\", subject);\n}\n\nvar isArray = Array.isArray;\nvar isFunction = apply(typeOf, \"function\");\nvar isString = apply(typeOf, \"string\");\nvar isUndefined = apply(typeOf, \"undefined\");\n\nfunction isNull(subject) {\n return subject === null;\n}\n\nfunction isHTMLElement(subject) {\n try {\n return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;\n } catch (e) {\n return false;\n }\n}\n\nfunction toArray(value) {\n return isArray(value) ? value : [value];\n}\n\nfunction forEach(values, iteratee) {\n toArray(values).forEach(iteratee);\n}\n\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\n\nfunction push(array, items) {\n array.push.apply(array, toArray(items));\n return array;\n}\n\nfunction toggleClass(elm, classes, add) {\n if (elm) {\n forEach(classes, function (name) {\n if (name) {\n elm.classList[add ? \"add\" : \"remove\"](name);\n }\n });\n }\n}\n\nfunction addClass(elm, classes) {\n toggleClass(elm, isString(classes) ? classes.split(\" \") : classes, true);\n}\n\nfunction append(parent, children) {\n forEach(children, parent.appendChild.bind(parent));\n}\n\nfunction before(nodes, ref) {\n forEach(nodes, function (node) {\n var parent = (ref || node).parentNode;\n\n if (parent) {\n parent.insertBefore(node, ref);\n }\n });\n}\n\nfunction matches(elm, selector) {\n return isHTMLElement(elm) && (elm[\"msMatchesSelector\"] || elm.matches).call(elm, selector);\n}\n\nfunction children(parent, selector) {\n var children2 = parent ? slice(parent.children) : [];\n return selector ? children2.filter(function (child) {\n return matches(child, selector);\n }) : children2;\n}\n\nfunction child(parent, selector) {\n return selector ? children(parent, selector)[0] : parent.firstElementChild;\n}\n\nvar ownKeys = Object.keys;\n\nfunction forOwn(object, iteratee, right) {\n if (object) {\n (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {\n key !== \"__proto__\" && iteratee(object[key], key);\n });\n }\n\n return object;\n}\n\nfunction assign(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n object[key] = source[key];\n });\n });\n return object;\n}\n\nfunction merge(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n if (isArray(value)) {\n object[key] = value.slice();\n } else if (isObject(value)) {\n object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);\n } else {\n object[key] = value;\n }\n });\n });\n return object;\n}\n\nfunction omit(object, keys) {\n forEach(keys || ownKeys(object), function (key) {\n delete object[key];\n });\n}\n\nfunction removeAttribute(elms, attrs) {\n forEach(elms, function (elm) {\n forEach(attrs, function (attr) {\n elm && elm.removeAttribute(attr);\n });\n });\n}\n\nfunction setAttribute(elms, attrs, value) {\n if (isObject(attrs)) {\n forOwn(attrs, function (value2, name) {\n setAttribute(elms, name, value2);\n });\n } else {\n forEach(elms, function (elm) {\n isNull(value) || value === \"\" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n });\n }\n}\n\nfunction create(tag, attrs, parent) {\n var elm = document.createElement(tag);\n\n if (attrs) {\n isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);\n }\n\n parent && append(parent, elm);\n return elm;\n}\n\nfunction style(elm, prop, value) {\n if (isUndefined(value)) {\n return getComputedStyle(elm)[prop];\n }\n\n if (!isNull(value)) {\n elm.style[prop] = \"\" + value;\n }\n}\n\nfunction display(elm, display2) {\n style(elm, \"display\", display2);\n}\n\nfunction focus(elm) {\n elm[\"setActive\"] && elm[\"setActive\"]() || elm.focus({\n preventScroll: true\n });\n}\n\nfunction getAttribute(elm, attr) {\n return elm.getAttribute(attr);\n}\n\nfunction hasClass(elm, className) {\n return elm && elm.classList.contains(className);\n}\n\nfunction rect(target) {\n return target.getBoundingClientRect();\n}\n\nfunction remove(nodes) {\n forEach(nodes, function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n}\n\nfunction parseHtml(html) {\n return child(new DOMParser().parseFromString(html, \"text/html\").body);\n}\n\nfunction prevent(e, stopPropagation) {\n e.preventDefault();\n\n if (stopPropagation) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n}\n\nfunction query(parent, selector) {\n return parent && parent.querySelector(selector);\n}\n\nfunction queryAll(parent, selector) {\n return selector ? slice(parent.querySelectorAll(selector)) : [];\n}\n\nfunction removeClass(elm, classes) {\n toggleClass(elm, classes, false);\n}\n\nfunction timeOf(e) {\n return e.timeStamp;\n}\n\nfunction unit(value) {\n return isString(value) ? value : value ? value + \"px\" : \"\";\n}\n\nvar PROJECT_CODE = \"splide\";\nvar DATA_ATTRIBUTE = \"data-\" + PROJECT_CODE;\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(\"[\" + PROJECT_CODE + \"] \" + (message || \"\"));\n }\n}\n\nvar min = Math.min,\n max = Math.max,\n floor = Math.floor,\n ceil = Math.ceil,\n abs = Math.abs;\n\nfunction approximatelyEqual(x, y, epsilon) {\n return abs(x - y) < epsilon;\n}\n\nfunction between(number, x, y, exclusive) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;\n}\n\nfunction clamp(number, x, y) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return min(max(minimum, number), maximum);\n}\n\nfunction sign(x) {\n return +(x > 0) - +(x < 0);\n}\n\nfunction camelToKebab(string) {\n return string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction format(string, replacements) {\n forEach(replacements, function (replacement) {\n string = string.replace(\"%s\", \"\" + replacement);\n });\n return string;\n}\n\nfunction pad(number) {\n return number < 10 ? \"0\" + number : \"\" + number;\n}\n\nvar ids = {};\n\nfunction uniqueId(prefix) {\n return \"\" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);\n}\n\nfunction EventBinder() {\n var listeners = [];\n\n function bind(targets, events, callback, options) {\n forEachEvent(targets, events, function (target, event, namespace) {\n var isEventTarget = (\"addEventListener\" in target);\n var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target[\"removeListener\"].bind(target, callback);\n isEventTarget ? target.addEventListener(event, callback, options) : target[\"addListener\"](callback);\n listeners.push([target, event, namespace, callback, remover]);\n });\n }\n\n function unbind(targets, events, callback) {\n forEachEvent(targets, events, function (target, event, namespace) {\n listeners = listeners.filter(function (listener) {\n if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {\n listener[4]();\n return false;\n }\n\n return true;\n });\n });\n }\n\n function dispatch(target, type, detail) {\n var e;\n var bubbles = true;\n\n if (typeof CustomEvent === \"function\") {\n e = new CustomEvent(type, {\n bubbles: bubbles,\n detail: detail\n });\n } else {\n e = document.createEvent(\"CustomEvent\");\n e.initCustomEvent(type, bubbles, false, detail);\n }\n\n target.dispatchEvent(e);\n return e;\n }\n\n function forEachEvent(targets, events, iteratee) {\n forEach(targets, function (target) {\n target && forEach(events, function (events2) {\n events2.split(\" \").forEach(function (eventNS) {\n var fragment = eventNS.split(\".\");\n iteratee(target, fragment[0], fragment[1]);\n });\n });\n });\n }\n\n function destroy() {\n listeners.forEach(function (data) {\n data[4]();\n });\n empty(listeners);\n }\n\n return {\n bind: bind,\n unbind: unbind,\n dispatch: dispatch,\n destroy: destroy\n };\n}\n\nvar EVENT_MOUNTED = \"mounted\";\nvar EVENT_READY = \"ready\";\nvar EVENT_MOVE = \"move\";\nvar EVENT_MOVED = \"moved\";\nvar EVENT_CLICK = \"click\";\nvar EVENT_ACTIVE = \"active\";\nvar EVENT_INACTIVE = \"inactive\";\nvar EVENT_VISIBLE = \"visible\";\nvar EVENT_HIDDEN = \"hidden\";\nvar EVENT_REFRESH = \"refresh\";\nvar EVENT_UPDATED = \"updated\";\nvar EVENT_RESIZE = \"resize\";\nvar EVENT_RESIZED = \"resized\";\nvar EVENT_DRAG = \"drag\";\nvar EVENT_DRAGGING = \"dragging\";\nvar EVENT_DRAGGED = \"dragged\";\nvar EVENT_SCROLL = \"scroll\";\nvar EVENT_SCROLLED = \"scrolled\";\nvar EVENT_OVERFLOW = \"overflow\";\nvar EVENT_DESTROY = \"destroy\";\nvar EVENT_ARROWS_MOUNTED = \"arrows:mounted\";\nvar EVENT_ARROWS_UPDATED = \"arrows:updated\";\nvar EVENT_PAGINATION_MOUNTED = \"pagination:mounted\";\nvar EVENT_PAGINATION_UPDATED = \"pagination:updated\";\nvar EVENT_NAVIGATION_MOUNTED = \"navigation:mounted\";\nvar EVENT_AUTOPLAY_PLAY = \"autoplay:play\";\nvar EVENT_AUTOPLAY_PLAYING = \"autoplay:playing\";\nvar EVENT_AUTOPLAY_PAUSE = \"autoplay:pause\";\nvar EVENT_LAZYLOAD_LOADED = \"lazyload:loaded\";\nvar EVENT_SLIDE_KEYDOWN = \"sk\";\nvar EVENT_SHIFTED = \"sh\";\nvar EVENT_END_INDEX_CHANGED = \"ei\";\n\nfunction EventInterface(Splide2) {\n var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n var binder = EventBinder();\n\n function on(events, callback) {\n binder.bind(bus, toArray(events).join(\" \"), function (e) {\n callback.apply(callback, isArray(e.detail) ? e.detail : []);\n });\n }\n\n function emit(event) {\n binder.dispatch(bus, event, slice(arguments, 1));\n }\n\n if (Splide2) {\n Splide2.event.on(EVENT_DESTROY, binder.destroy);\n }\n\n return assign(binder, {\n bus: bus,\n on: on,\n off: apply(binder.unbind, bus),\n emit: emit\n });\n}\n\nfunction RequestInterval(interval, onInterval, onUpdate, limit) {\n var now = Date.now;\n var startTime;\n var rate = 0;\n var id;\n var paused = true;\n var count = 0;\n\n function update() {\n if (!paused) {\n rate = interval ? min((now() - startTime) / interval, 1) : 1;\n onUpdate && onUpdate(rate);\n\n if (rate >= 1) {\n onInterval();\n startTime = now();\n\n if (limit && ++count >= limit) {\n return pause();\n }\n }\n\n id = raf(update);\n }\n }\n\n function start(resume) {\n resume || cancel();\n startTime = now() - (resume ? rate * interval : 0);\n paused = false;\n id = raf(update);\n }\n\n function pause() {\n paused = true;\n }\n\n function rewind() {\n startTime = now();\n rate = 0;\n\n if (onUpdate) {\n onUpdate(rate);\n }\n }\n\n function cancel() {\n id && cancelAnimationFrame(id);\n rate = 0;\n id = 0;\n paused = true;\n }\n\n function set(time) {\n interval = time;\n }\n\n function isPaused() {\n return paused;\n }\n\n return {\n start: start,\n rewind: rewind,\n pause: pause,\n cancel: cancel,\n set: set,\n isPaused: isPaused\n };\n}\n\nfunction State(initialState) {\n var state = initialState;\n\n function set(value) {\n state = value;\n }\n\n function is(states) {\n return includes(toArray(states), state);\n }\n\n return {\n set: set,\n is: is\n };\n}\n\nfunction Throttle(func, duration) {\n var interval = RequestInterval(duration || 0, func, null, 1);\n return function () {\n interval.isPaused() && interval.start();\n };\n}\n\nfunction Media(Splide2, Components2, options) {\n var state = Splide2.state;\n var breakpoints = options.breakpoints || {};\n var reducedMotion = options.reducedMotion || {};\n var binder = EventBinder();\n var queries = [];\n\n function setup() {\n var isMin = options.mediaQuery === \"min\";\n ownKeys(breakpoints).sort(function (n, m) {\n return isMin ? +n - +m : +m - +n;\n }).forEach(function (key) {\n register(breakpoints[key], \"(\" + (isMin ? \"min\" : \"max\") + \"-width:\" + key + \"px)\");\n });\n register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);\n update();\n }\n\n function destroy(completely) {\n if (completely) {\n binder.destroy();\n }\n }\n\n function register(options2, query) {\n var queryList = matchMedia(query);\n binder.bind(queryList, \"change\", update);\n queries.push([options2, queryList]);\n }\n\n function update() {\n var destroyed = state.is(DESTROYED);\n var direction = options.direction;\n var merged = queries.reduce(function (merged2, entry) {\n return merge(merged2, entry[1].matches ? entry[0] : {});\n }, {});\n omit(options);\n set(merged);\n\n if (options.destroy) {\n Splide2.destroy(options.destroy === \"completely\");\n } else if (destroyed) {\n destroy(true);\n Splide2.mount();\n } else {\n direction !== options.direction && Splide2.refresh();\n }\n }\n\n function reduce(enable) {\n if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {\n enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));\n }\n }\n\n function set(opts, base, notify) {\n merge(options, opts);\n base && merge(Object.getPrototypeOf(options), opts);\n\n if (notify || !state.is(CREATED)) {\n Splide2.emit(EVENT_UPDATED, options);\n }\n }\n\n return {\n setup: setup,\n destroy: destroy,\n reduce: reduce,\n set: set\n };\n}\n\nvar ARROW = \"Arrow\";\nvar ARROW_LEFT = ARROW + \"Left\";\nvar ARROW_RIGHT = ARROW + \"Right\";\nvar ARROW_UP = ARROW + \"Up\";\nvar ARROW_DOWN = ARROW + \"Down\";\nvar LTR = \"ltr\";\nvar RTL = \"rtl\";\nvar TTB = \"ttb\";\nvar ORIENTATION_MAP = {\n width: [\"height\"],\n left: [\"top\", \"right\"],\n right: [\"bottom\", \"left\"],\n x: [\"y\"],\n X: [\"Y\"],\n Y: [\"X\"],\n ArrowLeft: [ARROW_UP, ARROW_RIGHT],\n ArrowRight: [ARROW_DOWN, ARROW_LEFT]\n};\n\nfunction Direction(Splide2, Components2, options) {\n function resolve(prop, axisOnly, direction) {\n direction = direction || options.direction;\n var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;\n return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) {\n var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;\n return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;\n });\n }\n\n function orient(value) {\n return value * (options.direction === RTL ? 1 : -1);\n }\n\n return {\n resolve: resolve,\n orient: orient\n };\n}\n\nvar ROLE = \"role\";\nvar TAB_INDEX = \"tabindex\";\nvar DISABLED = \"disabled\";\nvar ARIA_PREFIX = \"aria-\";\nvar ARIA_CONTROLS = ARIA_PREFIX + \"controls\";\nvar ARIA_CURRENT = ARIA_PREFIX + \"current\";\nvar ARIA_SELECTED = ARIA_PREFIX + \"selected\";\nvar ARIA_LABEL = ARIA_PREFIX + \"label\";\nvar ARIA_LABELLEDBY = ARIA_PREFIX + \"labelledby\";\nvar ARIA_HIDDEN = ARIA_PREFIX + \"hidden\";\nvar ARIA_ORIENTATION = ARIA_PREFIX + \"orientation\";\nvar ARIA_ROLEDESCRIPTION = ARIA_PREFIX + \"roledescription\";\nvar ARIA_LIVE = ARIA_PREFIX + \"live\";\nvar ARIA_BUSY = ARIA_PREFIX + \"busy\";\nvar ARIA_ATOMIC = ARIA_PREFIX + \"atomic\";\nvar ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];\nvar CLASS_PREFIX = PROJECT_CODE + \"__\";\nvar STATUS_CLASS_PREFIX = \"is-\";\nvar CLASS_ROOT = PROJECT_CODE;\nvar CLASS_TRACK = CLASS_PREFIX + \"track\";\nvar CLASS_LIST = CLASS_PREFIX + \"list\";\nvar CLASS_SLIDE = CLASS_PREFIX + \"slide\";\nvar CLASS_CLONE = CLASS_SLIDE + \"--clone\";\nvar CLASS_CONTAINER = CLASS_SLIDE + \"__container\";\nvar CLASS_ARROWS = CLASS_PREFIX + \"arrows\";\nvar CLASS_ARROW = CLASS_PREFIX + \"arrow\";\nvar CLASS_ARROW_PREV = CLASS_ARROW + \"--prev\";\nvar CLASS_ARROW_NEXT = CLASS_ARROW + \"--next\";\nvar CLASS_PAGINATION = CLASS_PREFIX + \"pagination\";\nvar CLASS_PAGINATION_PAGE = CLASS_PAGINATION + \"__page\";\nvar CLASS_PROGRESS = CLASS_PREFIX + \"progress\";\nvar CLASS_PROGRESS_BAR = CLASS_PROGRESS + \"__bar\";\nvar CLASS_TOGGLE = CLASS_PREFIX + \"toggle\";\nvar CLASS_TOGGLE_PLAY = CLASS_TOGGLE + \"__play\";\nvar CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + \"__pause\";\nvar CLASS_SPINNER = CLASS_PREFIX + \"spinner\";\nvar CLASS_SR = CLASS_PREFIX + \"sr\";\nvar CLASS_INITIALIZED = STATUS_CLASS_PREFIX + \"initialized\";\nvar CLASS_ACTIVE = STATUS_CLASS_PREFIX + \"active\";\nvar CLASS_PREV = STATUS_CLASS_PREFIX + \"prev\";\nvar CLASS_NEXT = STATUS_CLASS_PREFIX + \"next\";\nvar CLASS_VISIBLE = STATUS_CLASS_PREFIX + \"visible\";\nvar CLASS_LOADING = STATUS_CLASS_PREFIX + \"loading\";\nvar CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + \"focus-in\";\nvar CLASS_OVERFLOW = STATUS_CLASS_PREFIX + \"overflow\";\nvar STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];\nvar CLASSES = {\n slide: CLASS_SLIDE,\n clone: CLASS_CLONE,\n arrows: CLASS_ARROWS,\n arrow: CLASS_ARROW,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n pagination: CLASS_PAGINATION,\n page: CLASS_PAGINATION_PAGE,\n spinner: CLASS_SPINNER\n};\n\nfunction closest(from, selector) {\n if (isFunction(from.closest)) {\n return from.closest(selector);\n }\n\n var elm = from;\n\n while (elm && elm.nodeType === 1) {\n if (matches(elm, selector)) {\n break;\n }\n\n elm = elm.parentElement;\n }\n\n return elm;\n}\n\nvar FRICTION = 5;\nvar LOG_INTERVAL = 200;\nvar POINTER_DOWN_EVENTS = \"touchstart mousedown\";\nvar POINTER_MOVE_EVENTS = \"touchmove mousemove\";\nvar POINTER_UP_EVENTS = \"touchend touchcancel mouseup click\";\n\nfunction Elements(Splide2, Components2, options) {\n var _EventInterface = EventInterface(Splide2),\n on = _EventInterface.on,\n bind = _EventInterface.bind;\n\n var root = Splide2.root;\n var i18n = options.i18n;\n var elements = {};\n var slides = [];\n var rootClasses = [];\n var trackClasses = [];\n var track;\n var list;\n var isUsingKey;\n\n function setup() {\n collect();\n init();\n update();\n }\n\n function mount() {\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, setup);\n on(EVENT_UPDATED, update);\n bind(document, POINTER_DOWN_EVENTS + \" keydown\", function (e) {\n isUsingKey = e.type === \"keydown\";\n }, {\n capture: true\n });\n bind(root, \"focusin\", function () {\n toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);\n });\n }\n\n function destroy(completely) {\n var attrs = ALL_ATTRIBUTES.concat(\"style\");\n empty(slides);\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n removeAttribute([track, list], attrs);\n removeAttribute(root, completely ? attrs : [\"style\", ARIA_ROLEDESCRIPTION]);\n }\n\n function update() {\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n rootClasses = getClasses(CLASS_ROOT);\n trackClasses = getClasses(CLASS_TRACK);\n addClass(root, rootClasses);\n addClass(track, trackClasses);\n setAttribute(root, ARIA_LABEL, options.label);\n setAttribute(root, ARIA_LABELLEDBY, options.labelledby);\n }\n\n function collect() {\n track = find(\".\" + CLASS_TRACK);\n list = child(track, \".\" + CLASS_LIST);\n assert(track && list, \"A track/list element is missing.\");\n push(slides, children(list, \".\" + CLASS_SLIDE + \":not(.\" + CLASS_CLONE + \")\"));\n forOwn({\n arrows: CLASS_ARROWS,\n pagination: CLASS_PAGINATION,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n bar: CLASS_PROGRESS_BAR,\n toggle: CLASS_TOGGLE\n }, function (className, key) {\n elements[key] = find(\".\" + className);\n });\n assign(elements, {\n root: root,\n track: track,\n list: list,\n slides: slides\n });\n }\n\n function init() {\n var id = root.id || uniqueId(PROJECT_CODE);\n var role = options.role;\n root.id = id;\n track.id = track.id || id + \"-track\";\n list.id = list.id || id + \"-list\";\n\n if (!getAttribute(root, ROLE) && root.tagName !== \"SECTION\" && role) {\n setAttribute(root, ROLE, role);\n }\n\n setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);\n setAttribute(list, ROLE, \"presentation\");\n }\n\n function find(selector) {\n var elm = query(root, selector);\n return elm && closest(elm, \".\" + CLASS_ROOT) === root ? elm : void 0;\n }\n\n function getClasses(base) {\n return [base + \"--\" + options.type, base + \"--\" + options.direction, options.drag && base + \"--draggable\", options.isNavigation && base + \"--nav\", base === CLASS_ROOT && CLASS_ACTIVE];\n }\n\n return assign(elements, {\n setup: setup,\n mount: mount,\n destroy: destroy\n });\n}\n\nvar SLIDE = \"slide\";\nvar LOOP = \"loop\";\nvar FADE = \"fade\";\n\nfunction Slide$1(Splide2, index, slideIndex, slide) {\n var event = EventInterface(Splide2);\n var on = event.on,\n emit = event.emit,\n bind = event.bind;\n var Components = Splide2.Components,\n root = Splide2.root,\n options = Splide2.options;\n var isNavigation = options.isNavigation,\n updateOnMove = options.updateOnMove,\n i18n = options.i18n,\n pagination = options.pagination,\n slideFocus = options.slideFocus;\n var resolve = Components.Direction.resolve;\n var styles = getAttribute(slide, \"style\");\n var label = getAttribute(slide, ARIA_LABEL);\n var isClone = slideIndex > -1;\n var container = child(slide, \".\" + CLASS_CONTAINER);\n var destroyed;\n\n function mount() {\n if (!isClone) {\n slide.id = root.id + \"-slide\" + pad(index + 1);\n setAttribute(slide, ROLE, pagination ? \"tabpanel\" : \"group\");\n setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);\n setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));\n }\n\n listen();\n }\n\n function listen() {\n bind(slide, \"click\", apply(emit, EVENT_CLICK, self));\n bind(slide, \"keydown\", apply(emit, EVENT_SLIDE_KEYDOWN, self));\n on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);\n on(EVENT_NAVIGATION_MOUNTED, initNavigation);\n\n if (updateOnMove) {\n on(EVENT_MOVE, onMove);\n }\n }\n\n function destroy() {\n destroyed = true;\n event.destroy();\n removeClass(slide, STATUS_CLASSES);\n removeAttribute(slide, ALL_ATTRIBUTES);\n setAttribute(slide, \"style\", styles);\n setAttribute(slide, ARIA_LABEL, label || \"\");\n }\n\n function initNavigation() {\n var controls = Splide2.splides.map(function (target) {\n var Slide2 = target.splide.Components.Slides.getAt(index);\n return Slide2 ? Slide2.slide.id : \"\";\n }).join(\" \");\n setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));\n setAttribute(slide, ARIA_CONTROLS, controls);\n setAttribute(slide, ROLE, slideFocus ? \"button\" : \"\");\n slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);\n }\n\n function onMove() {\n if (!destroyed) {\n update();\n }\n }\n\n function update() {\n if (!destroyed) {\n var curr = Splide2.index;\n updateActivity();\n updateVisibility();\n toggleClass(slide, CLASS_PREV, index === curr - 1);\n toggleClass(slide, CLASS_NEXT, index === curr + 1);\n }\n }\n\n function updateActivity() {\n var active = isActive();\n\n if (active !== hasClass(slide, CLASS_ACTIVE)) {\n toggleClass(slide, CLASS_ACTIVE, active);\n setAttribute(slide, ARIA_CURRENT, isNavigation && active || \"\");\n emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);\n }\n }\n\n function updateVisibility() {\n var visible = isVisible();\n var hidden = !visible && (!isActive() || isClone);\n\n if (!Splide2.state.is([MOVING, SCROLLING])) {\n setAttribute(slide, ARIA_HIDDEN, hidden || \"\");\n }\n\n setAttribute(queryAll(slide, options.focusableNodes || \"\"), TAB_INDEX, hidden ? -1 : \"\");\n\n if (slideFocus) {\n setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);\n }\n\n if (visible !== hasClass(slide, CLASS_VISIBLE)) {\n toggleClass(slide, CLASS_VISIBLE, visible);\n emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);\n }\n\n if (!visible && document.activeElement === slide) {\n var Slide2 = Components.Slides.getAt(Splide2.index);\n Slide2 && focus(Slide2.slide);\n }\n }\n\n function style$1(prop, value, useContainer) {\n style(useContainer && container || slide, prop, value);\n }\n\n function isActive() {\n var curr = Splide2.index;\n return curr === index || options.cloneStatus && curr === slideIndex;\n }\n\n function isVisible() {\n if (Splide2.is(FADE)) {\n return isActive();\n }\n\n var trackRect = rect(Components.Elements.track);\n var slideRect = rect(slide);\n var left = resolve(\"left\", true);\n var right = resolve(\"right\", true);\n return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]);\n }\n\n function isWithin(from, distance) {\n var diff = abs(from - index);\n\n if (!isClone && (options.rewind || Splide2.is(LOOP))) {\n diff = min(diff, Splide2.length - diff);\n }\n\n return diff <= distance;\n }\n\n var self = {\n index: index,\n slideIndex: slideIndex,\n slide: slide,\n container: container,\n isClone: isClone,\n mount: mount,\n destroy: destroy,\n update: update,\n style: style$1,\n isWithin: isWithin\n };\n return self;\n}\n\nfunction Slides(Splide2, Components2, options) {\n var _EventInterface2 = EventInterface(Splide2),\n on = _EventInterface2.on,\n emit = _EventInterface2.emit,\n bind = _EventInterface2.bind;\n\n var _Components2$Elements = Components2.Elements,\n slides = _Components2$Elements.slides,\n list = _Components2$Elements.list;\n var Slides2 = [];\n\n function mount() {\n init();\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, init);\n }\n\n function init() {\n slides.forEach(function (slide, index) {\n register(slide, index, -1);\n });\n }\n\n function destroy() {\n forEach$1(function (Slide2) {\n Slide2.destroy();\n });\n empty(Slides2);\n }\n\n function update() {\n forEach$1(function (Slide2) {\n Slide2.update();\n });\n }\n\n function register(slide, index, slideIndex) {\n var object = Slide$1(Splide2, index, slideIndex, slide);\n object.mount();\n Slides2.push(object);\n Slides2.sort(function (Slide1, Slide2) {\n return Slide1.index - Slide2.index;\n });\n }\n\n function get(excludeClones) {\n return excludeClones ? filter(function (Slide2) {\n return !Slide2.isClone;\n }) : Slides2;\n }\n\n function getIn(page) {\n var Controller = Components2.Controller;\n var index = Controller.toIndex(page);\n var max = Controller.hasFocus() ? 1 : options.perPage;\n return filter(function (Slide2) {\n return between(Slide2.index, index, index + max - 1);\n });\n }\n\n function getAt(index) {\n return filter(index)[0];\n }\n\n function add(items, index) {\n forEach(items, function (slide) {\n if (isString(slide)) {\n slide = parseHtml(slide);\n }\n\n if (isHTMLElement(slide)) {\n var ref = slides[index];\n ref ? before(slide, ref) : append(list, slide);\n addClass(slide, options.classes.slide);\n observeImages(slide, apply(emit, EVENT_RESIZE));\n }\n });\n emit(EVENT_REFRESH);\n }\n\n function remove$1(matcher) {\n remove(filter(matcher).map(function (Slide2) {\n return Slide2.slide;\n }));\n emit(EVENT_REFRESH);\n }\n\n function forEach$1(iteratee, excludeClones) {\n get(excludeClones).forEach(iteratee);\n }\n\n function filter(matcher) {\n return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) {\n return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);\n });\n }\n\n function style(prop, value, useContainer) {\n forEach$1(function (Slide2) {\n Slide2.style(prop, value, useContainer);\n });\n }\n\n function observeImages(elm, callback) {\n var images = queryAll(elm, \"img\");\n var length = images.length;\n\n if (length) {\n images.forEach(function (img) {\n bind(img, \"load error\", function () {\n if (! --length) {\n callback();\n }\n });\n });\n } else {\n callback();\n }\n }\n\n function getLength(excludeClones) {\n return excludeClones ? slides.length : Slides2.length;\n }\n\n function isEnough() {\n return Slides2.length > options.perPage;\n }\n\n return {\n mount: mount,\n destroy: destroy,\n update: update,\n register: register,\n get: get,\n getIn: getIn,\n getAt: getAt,\n add: add,\n remove: remove$1,\n forEach: forEach$1,\n filter: filter,\n style: style,\n getLength: getLength,\n isEnough: isEnough\n };\n}\n\nfunction Layout(Splide2, Components2, options) {\n var _EventInterface3 = EventInterface(Splide2),\n on = _EventInterface3.on,\n bind = _EventInterface3.bind,\n emit = _EventInterface3.emit;\n\n var Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var _Components2$Elements2 = Components2.Elements,\n root = _Components2$Elements2.root,\n track = _Components2$Elements2.track,\n list = _Components2$Elements2.list;\n var getAt = Slides.getAt,\n styleSlides = Slides.style;\n var vertical;\n var rootRect;\n var overflow;\n\n function mount() {\n init();\n bind(window, \"resize load\", Throttle(apply(emit, EVENT_RESIZE)));\n on([EVENT_UPDATED, EVENT_REFRESH], init);\n on(EVENT_RESIZE, resize);\n }\n\n function init() {\n vertical = options.direction === TTB;\n style(root, \"maxWidth\", unit(options.width));\n style(track, resolve(\"paddingLeft\"), cssPadding(false));\n style(track, resolve(\"paddingRight\"), cssPadding(true));\n resize(true);\n }\n\n function resize(force) {\n var newRect = rect(root);\n\n if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {\n style(track, \"height\", cssTrackHeight());\n styleSlides(resolve(\"marginRight\"), unit(options.gap));\n styleSlides(\"width\", cssSlideWidth());\n styleSlides(\"height\", cssSlideHeight(), true);\n rootRect = newRect;\n emit(EVENT_RESIZED);\n\n if (overflow !== (overflow = isOverflow())) {\n toggleClass(root, CLASS_OVERFLOW, overflow);\n emit(EVENT_OVERFLOW, overflow);\n }\n }\n }\n\n function cssPadding(right) {\n var padding = options.padding;\n var prop = resolve(right ? \"right\" : \"left\");\n return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || \"0px\";\n }\n\n function cssTrackHeight() {\n var height = \"\";\n\n if (vertical) {\n height = cssHeight();\n assert(height, \"height or heightRatio is missing.\");\n height = \"calc(\" + height + \" - \" + cssPadding(false) + \" - \" + cssPadding(true) + \")\";\n }\n\n return height;\n }\n\n function cssHeight() {\n return unit(options.height || rect(list).width * options.heightRatio);\n }\n\n function cssSlideWidth() {\n return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? \"\" : cssSlideSize());\n }\n\n function cssSlideHeight() {\n return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());\n }\n\n function cssSlideSize() {\n var gap = unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n }\n\n function listSize() {\n return rect(list)[resolve(\"width\")];\n }\n\n function slideSize(index, withoutGap) {\n var Slide = getAt(index || 0);\n return Slide ? rect(Slide.slide)[resolve(\"width\")] + (withoutGap ? 0 : getGap()) : 0;\n }\n\n function totalSize(index, withoutGap) {\n var Slide = getAt(index);\n\n if (Slide) {\n var right = rect(Slide.slide)[resolve(\"right\")];\n var left = rect(list)[resolve(\"left\")];\n return abs(right - left) + (withoutGap ? 0 : getGap());\n }\n\n return 0;\n }\n\n function sliderSize(withoutGap) {\n return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);\n }\n\n function getGap() {\n var Slide = getAt(0);\n return Slide && parseFloat(style(Slide.slide, resolve(\"marginRight\"))) || 0;\n }\n\n function getPadding(right) {\n return parseFloat(style(track, resolve(\"padding\" + (right ? \"Right\" : \"Left\")))) || 0;\n }\n\n function isOverflow() {\n return Splide2.is(FADE) || sliderSize(true) > listSize();\n }\n\n return {\n mount: mount,\n resize: resize,\n listSize: listSize,\n slideSize: slideSize,\n sliderSize: sliderSize,\n totalSize: totalSize,\n getPadding: getPadding,\n isOverflow: isOverflow\n };\n}\n\nvar MULTIPLIER = 2;\n\nfunction Clones(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on;\n var Elements = Components2.Elements,\n Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var clones = [];\n var cloneCount;\n\n function mount() {\n on(EVENT_REFRESH, remount);\n on([EVENT_UPDATED, EVENT_RESIZE], observe);\n\n if (cloneCount = computeCloneCount()) {\n generate(cloneCount);\n Components2.Layout.resize(true);\n }\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function destroy() {\n remove(clones);\n empty(clones);\n event.destroy();\n }\n\n function observe() {\n var count = computeCloneCount();\n\n if (cloneCount !== count) {\n if (cloneCount < count || !count) {\n event.emit(EVENT_REFRESH);\n }\n }\n }\n\n function generate(count) {\n var slides = Slides.get().slice();\n var length = slides.length;\n\n if (length) {\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) {\n var isHead = index < count;\n var clone = cloneDeep(Slide.slide, index);\n isHead ? before(clone, slides[0].slide) : append(Elements.list, clone);\n push(clones, clone);\n Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);\n });\n }\n }\n\n function cloneDeep(elm, index) {\n var clone = elm.cloneNode(true);\n addClass(clone, options.classes.clone);\n clone.id = Splide2.root.id + \"-clone\" + pad(index + 1);\n return clone;\n }\n\n function computeCloneCount() {\n var clones2 = options.clones;\n\n if (!Splide2.is(LOOP)) {\n clones2 = 0;\n } else if (isUndefined(clones2)) {\n var fixedSize = options[resolve(\"fixedWidth\")] && Components2.Layout.slideSize(0);\n var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve(\"width\")] / fixedSize);\n clones2 = fixedCount || options[resolve(\"autoWidth\")] && Splide2.length || options.perPage * MULTIPLIER;\n }\n\n return clones2;\n }\n\n return {\n mount: mount,\n destroy: destroy\n };\n}\n\nfunction Move(Splide2, Components2, options) {\n var _EventInterface4 = EventInterface(Splide2),\n on = _EventInterface4.on,\n emit = _EventInterface4.emit;\n\n var set = Splide2.state.set;\n var _Components2$Layout = Components2.Layout,\n slideSize = _Components2$Layout.slideSize,\n getPadding = _Components2$Layout.getPadding,\n totalSize = _Components2$Layout.totalSize,\n listSize = _Components2$Layout.listSize,\n sliderSize = _Components2$Layout.sliderSize;\n var _Components2$Directio = Components2.Direction,\n resolve = _Components2$Directio.resolve,\n orient = _Components2$Directio.orient;\n var _Components2$Elements3 = Components2.Elements,\n list = _Components2$Elements3.list,\n track = _Components2$Elements3.track;\n var Transition;\n\n function mount() {\n Transition = Components2.Transition;\n on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);\n }\n\n function reposition() {\n if (!Components2.Controller.isBusy()) {\n Components2.Scroll.cancel();\n jump(Splide2.index);\n Components2.Slides.update();\n }\n }\n\n function move(dest, index, prev, callback) {\n if (dest !== index && canShift(dest > prev)) {\n cancel();\n translate(shift(getPosition(), dest > prev), true);\n }\n\n set(MOVING);\n emit(EVENT_MOVE, index, prev, dest);\n Transition.start(index, function () {\n set(IDLE);\n emit(EVENT_MOVED, index, prev, dest);\n callback && callback();\n });\n }\n\n function jump(index) {\n translate(toPosition(index, true));\n }\n\n function translate(position, preventLoop) {\n if (!Splide2.is(FADE)) {\n var destination = preventLoop ? position : loop(position);\n style(list, \"transform\", \"translate\" + resolve(\"X\") + \"(\" + destination + \"px)\");\n position !== destination && emit(EVENT_SHIFTED);\n }\n }\n\n function loop(position) {\n if (Splide2.is(LOOP)) {\n var index = toIndex(position);\n var exceededMax = index > Components2.Controller.getEnd();\n var exceededMin = index < 0;\n\n if (exceededMin || exceededMax) {\n position = shift(position, exceededMax);\n }\n }\n\n return position;\n }\n\n function shift(position, backwards) {\n var excess = position - getLimit(backwards);\n var size = sliderSize();\n position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);\n return position;\n }\n\n function cancel() {\n translate(getPosition(), true);\n Transition.cancel();\n }\n\n function toIndex(position) {\n var Slides = Components2.Slides.get();\n var index = 0;\n var minDistance = Infinity;\n\n for (var i = 0; i < Slides.length; i++) {\n var slideIndex = Slides[i].index;\n var distance = abs(toPosition(slideIndex, true) - position);\n\n if (distance <= minDistance) {\n minDistance = distance;\n index = slideIndex;\n } else {\n break;\n }\n }\n\n return index;\n }\n\n function toPosition(index, trimming) {\n var position = orient(totalSize(index - 1) - offset(index));\n return trimming ? trim(position) : position;\n }\n\n function getPosition() {\n var left = resolve(\"left\");\n return rect(list)[left] - rect(track)[left] + orient(getPadding(false));\n }\n\n function trim(position) {\n if (options.trimSpace && Splide2.is(SLIDE)) {\n position = clamp(position, 0, orient(sliderSize(true) - listSize()));\n }\n\n return position;\n }\n\n function offset(index) {\n var focus = options.focus;\n return focus === \"center\" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0;\n }\n\n function getLimit(max) {\n return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);\n }\n\n function canShift(backwards) {\n var shifted = orient(shift(getPosition(), backwards));\n return backwards ? shifted >= 0 : shifted <= list[resolve(\"scrollWidth\")] - rect(track)[resolve(\"width\")];\n }\n\n function exceededLimit(max, position) {\n position = isUndefined(position) ? getPosition() : position;\n var exceededMin = max !== true && orient(position) < orient(getLimit(false));\n var exceededMax = max !== false && orient(position) > orient(getLimit(true));\n return exceededMin || exceededMax;\n }\n\n return {\n mount: mount,\n move: move,\n jump: jump,\n translate: translate,\n shift: shift,\n cancel: cancel,\n toIndex: toIndex,\n toPosition: toPosition,\n getPosition: getPosition,\n getLimit: getLimit,\n exceededLimit: exceededLimit,\n reposition: reposition\n };\n}\n\nfunction Controller(Splide2, Components2, options) {\n var _EventInterface5 = EventInterface(Splide2),\n on = _EventInterface5.on,\n emit = _EventInterface5.emit;\n\n var Move = Components2.Move;\n var getPosition = Move.getPosition,\n getLimit = Move.getLimit,\n toPosition = Move.toPosition;\n var _Components2$Slides = Components2.Slides,\n isEnough = _Components2$Slides.isEnough,\n getLength = _Components2$Slides.getLength;\n var omitEnd = options.omitEnd;\n var isLoop = Splide2.is(LOOP);\n var isSlide = Splide2.is(SLIDE);\n var getNext = apply(getAdjacent, false);\n var getPrev = apply(getAdjacent, true);\n var currIndex = options.start || 0;\n var endIndex;\n var prevIndex = currIndex;\n var slideCount;\n var perMove;\n var perPage;\n\n function mount() {\n init();\n on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);\n on(EVENT_RESIZED, onResized);\n }\n\n function init() {\n slideCount = getLength(true);\n perMove = options.perMove;\n perPage = options.perPage;\n endIndex = getEnd();\n var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);\n\n if (index !== currIndex) {\n currIndex = index;\n Move.reposition();\n }\n }\n\n function onResized() {\n if (endIndex !== getEnd()) {\n emit(EVENT_END_INDEX_CHANGED);\n }\n }\n\n function go(control, allowSameIndex, callback) {\n if (!isBusy()) {\n var dest = parse(control);\n var index = loop(dest);\n\n if (index > -1 && (allowSameIndex || index !== currIndex)) {\n setIndex(index);\n Move.move(dest, index, prevIndex, callback);\n }\n }\n }\n\n function scroll(destination, duration, snap, callback) {\n Components2.Scroll.scroll(destination, duration, snap, function () {\n var index = loop(Move.toIndex(getPosition()));\n setIndex(omitEnd ? min(index, endIndex) : index);\n callback && callback();\n });\n }\n\n function parse(control) {\n var index = currIndex;\n\n if (isString(control)) {\n var _ref = control.match(/([+\\-<>])(\\d+)?/) || [],\n indicator = _ref[1],\n number = _ref[2];\n\n if (indicator === \"+\" || indicator === \"-\") {\n index = computeDestIndex(currIndex + +(\"\" + indicator + (+number || 1)), currIndex);\n } else if (indicator === \">\") {\n index = number ? toIndex(+number) : getNext(true);\n } else if (indicator === \"<\") {\n index = getPrev(true);\n }\n } else {\n index = isLoop ? control : clamp(control, 0, endIndex);\n }\n\n return index;\n }\n\n function getAdjacent(prev, destination) {\n var number = perMove || (hasFocus() ? 1 : perPage);\n var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));\n\n if (dest === -1 && isSlide) {\n if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {\n return prev ? 0 : endIndex;\n }\n }\n\n return destination ? dest : loop(dest);\n }\n\n function computeDestIndex(dest, from, snapPage) {\n if (isEnough() || hasFocus()) {\n var index = computeMovableDestIndex(dest);\n\n if (index !== dest) {\n from = dest;\n dest = index;\n snapPage = false;\n }\n\n if (dest < 0 || dest > endIndex) {\n if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {\n dest = toIndex(toPage(dest));\n } else {\n if (isLoop) {\n dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;\n } else if (options.rewind) {\n dest = dest < 0 ? endIndex : 0;\n } else {\n dest = -1;\n }\n }\n } else {\n if (snapPage && dest !== from) {\n dest = toIndex(toPage(from) + (dest < from ? -1 : 1));\n }\n }\n } else {\n dest = -1;\n }\n\n return dest;\n }\n\n function computeMovableDestIndex(dest) {\n if (isSlide && options.trimSpace === \"move\" && dest !== currIndex) {\n var position = getPosition();\n\n while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {\n dest < currIndex ? --dest : ++dest;\n }\n }\n\n return dest;\n }\n\n function loop(index) {\n return isLoop ? (index + slideCount) % slideCount || 0 : index;\n }\n\n function getEnd() {\n var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);\n\n while (omitEnd && end-- > 0) {\n if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {\n end++;\n break;\n }\n }\n\n return clamp(end, 0, slideCount - 1);\n }\n\n function toIndex(page) {\n return clamp(hasFocus() ? page : perPage * page, 0, endIndex);\n }\n\n function toPage(index) {\n return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);\n }\n\n function toDest(destination) {\n var closest = Move.toIndex(destination);\n return isSlide ? clamp(closest, 0, endIndex) : closest;\n }\n\n function setIndex(index) {\n if (index !== currIndex) {\n prevIndex = currIndex;\n currIndex = index;\n }\n }\n\n function getIndex(prev) {\n return prev ? prevIndex : currIndex;\n }\n\n function hasFocus() {\n return !isUndefined(options.focus) || options.isNavigation;\n }\n\n function isBusy() {\n return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;\n }\n\n return {\n mount: mount,\n go: go,\n scroll: scroll,\n getNext: getNext,\n getPrev: getPrev,\n getAdjacent: getAdjacent,\n getEnd: getEnd,\n setIndex: setIndex,\n getIndex: getIndex,\n toIndex: toIndex,\n toPage: toPage,\n toDest: toDest,\n hasFocus: hasFocus,\n isBusy: isBusy\n };\n}\n\nvar XML_NAME_SPACE = \"http://www.w3.org/2000/svg\";\nvar PATH = \"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z\";\nvar SIZE = 40;\n\nfunction Arrows(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on,\n bind = event.bind,\n emit = event.emit;\n var classes = options.classes,\n i18n = options.i18n;\n var Elements = Components2.Elements,\n Controller = Components2.Controller;\n var placeholder = Elements.arrows,\n track = Elements.track;\n var wrapper = placeholder;\n var prev = Elements.prev;\n var next = Elements.next;\n var created;\n var wrapperClasses;\n var arrows = {};\n\n function mount() {\n init();\n on(EVENT_UPDATED, remount);\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function init() {\n var enabled = options.arrows;\n\n if (enabled && !(prev && next)) {\n createArrows();\n }\n\n if (prev && next) {\n assign(arrows, {\n prev: prev,\n next: next\n });\n display(wrapper, enabled ? \"\" : \"none\");\n addClass(wrapper, wrapperClasses = CLASS_ARROWS + \"--\" + options.direction);\n\n if (enabled) {\n listen();\n update();\n setAttribute([prev, next], ARIA_CONTROLS, track.id);\n emit(EVENT_ARROWS_MOUNTED, prev, next);\n }\n }\n }\n\n function destroy() {\n event.destroy();\n removeClass(wrapper, wrapperClasses);\n\n if (created) {\n remove(placeholder ? [prev, next] : wrapper);\n prev = next = null;\n } else {\n removeAttribute([prev, next], ALL_ATTRIBUTES);\n }\n }\n\n function listen() {\n on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);\n bind(next, \"click\", apply(go, \">\"));\n bind(prev, \"click\", apply(go, \"<\"));\n }\n\n function go(control) {\n Controller.go(control, true);\n }\n\n function createArrows() {\n wrapper = placeholder || create(\"div\", classes.arrows);\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n append(wrapper, [prev, next]);\n !placeholder && before(wrapper, track);\n }\n\n function createArrow(prev2) {\n var arrow = \"<button class=\\\"\" + classes.arrow + \" \" + (prev2 ? classes.prev : classes.next) + \"\\\" type=\\\"button\\\"><svg xmlns=\\\"\" + XML_NAME_SPACE + \"\\\" viewBox=\\\"0 0 \" + SIZE + \" \" + SIZE + \"\\\" width=\\\"\" + SIZE + \"\\\" height=\\\"\" + SIZE + \"\\\" focusable=\\\"false\\\"><path d=\\\"\" + (options.arrowPath || PATH) + \"\\\" />\";\n return parseHtml(arrow);\n }\n\n function update() {\n if (prev && next) {\n var index = Splide2.index;\n var prevIndex = Controller.getPrev();\n var nextIndex = Controller.getNext();\n var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev;\n var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next;\n prev.disabled = prevIndex < 0;\n next.disabled = nextIndex < 0;\n setAttribute(prev, ARIA_LABEL, prevLabel);\n setAttribute(next, ARIA_LABEL, nextLabel);\n emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex);\n }\n }\n\n return {\n arrows: arrows,\n mount: mount,\n destroy: destroy,\n update: update\n };\n}\n\nvar INTERVAL_DATA_ATTRIBUTE = DATA_ATTRIBUTE + \"-interval\";\n\nfunction Autoplay(Splide2, Components2, options) {\n var _EventInterface6 = EventInterface(Splide2),\n on = _EventInterface6.on,\n bind = _EventInterface6.bind,\n emit = _EventInterface6.emit;\n\n var interval = RequestInterval(options.interval, Splide2.go.bind(Splide2, \">\"), onAnimationFrame);\n var isPaused = interval.isPaused;\n var Elements = Components2.Elements,\n _Components2$Elements4 = Components2.Elements,\n root = _Components2$Elements4.root,\n toggle = _Components2$Elements4.toggle;\n var autoplay = options.autoplay;\n var hovered;\n var focused;\n var stopped = autoplay === \"pause\";\n\n function mount() {\n if (autoplay) {\n listen();\n toggle && setAttribute(toggle, ARIA_CONTROLS, Elements.track.id);\n stopped || play();\n update();\n }\n }\n\n function listen() {\n if (options.pauseOnHover) {\n bind(root, \"mouseenter mouseleave\", function (e) {\n hovered = e.type === \"mouseenter\";\n autoToggle();\n });\n }\n\n if (options.pauseOnFocus) {\n bind(root, \"focusin focusout\", function (e) {\n focused = e.type === \"focusin\";\n autoToggle();\n });\n }\n\n if (toggle) {\n bind(toggle, \"click\", function () {\n stopped ? play() : pause(true);\n });\n }\n\n on([EVENT_MOVE, EVENT_SCROLL, EVENT_REFRESH], interval.rewind);\n on(EVENT_MOVE, onMove);\n }\n\n function play() {\n if (isPaused() && Components2.Slides.isEnough()) {\n interval.start(!options.resetProgress);\n focused = hovered = stopped = false;\n update();\n emit(EVENT_AUTOPLAY_PLAY);\n }\n }\n\n function pause(stop) {\n if (stop === void 0) {\n stop = true;\n }\n\n stopped = !!stop;\n update();\n\n if (!isPaused()) {\n interval.pause();\n emit(EVENT_AUTOPLAY_PAUSE);\n }\n }\n\n function autoToggle() {\n if (!stopped) {\n hovered || focused ? pause(false) : play();\n }\n }\n\n function update() {\n if (toggle) {\n toggleClass(toggle, CLASS_ACTIVE, !stopped);\n setAttribute(toggle, ARIA_LABEL, options.i18n[stopped ? \"play\" : \"pause\"]);\n }\n }\n\n function onAnimationFrame(rate) {\n var bar = Elements.bar;\n bar && style(bar, \"width\", rate * 100 + \"%\");\n emit(EVENT_AUTOPLAY_PLAYING, rate);\n }\n\n function onMove(index) {\n var Slide = Components2.Slides.getAt(index);\n interval.set(Slide && +getAttribute(Slide.slide, INTERVAL_DATA_ATTRIBUTE) || options.interval);\n }\n\n return {\n mount: mount,\n destroy: interval.cancel,\n play: play,\n pause: pause,\n isPaused: isPaused\n };\n}\n\nfunction Cover(Splide2, Components2, options) {\n var _EventInterface7 = EventInterface(Splide2),\n on = _EventInterface7.on;\n\n function mount() {\n if (options.cover) {\n on(EVENT_LAZYLOAD_LOADED, apply(toggle, true));\n on([EVENT_MOUNTED, EVENT_UPDATED, EVENT_REFRESH], apply(cover, true));\n }\n }\n\n function cover(cover2) {\n Components2.Slides.forEach(function (Slide) {\n var img = child(Slide.container || Slide.slide, \"img\");\n\n if (img && img.src) {\n toggle(cover2, img, Slide);\n }\n });\n }\n\n function toggle(cover2, img, Slide) {\n Slide.style(\"background\", cover2 ? \"center/cover no-repeat url(\\\"\" + img.src + \"\\\")\" : \"\", true);\n display(img, cover2 ? \"none\" : \"\");\n }\n\n return {\n mount: mount,\n destroy: apply(cover, false)\n };\n}\n\nvar BOUNCE_DIFF_THRESHOLD = 10;\nvar BOUNCE_DURATION = 600;\nvar FRICTION_FACTOR = 0.6;\nvar BASE_VELOCITY = 1.5;\nvar MIN_DURATION = 800;\n\nfunction Scroll(Splide2, Components2, options) {\n var _EventInterface8 = EventInterface(Splide2),\n on = _EventInterface8.on,\n emit = _EventInterface8.emit;\n\n var set = Splide2.state.set;\n var Move = Components2.Move;\n var getPosition = Move.getPosition,\n getLimit = Move.getLimit,\n exceededLimit = Move.exceededLimit,\n translate = Move.translate;\n var isSlide = Splide2.is(SLIDE);\n var interval;\n var callback;\n var friction = 1;\n\n function mount() {\n on(EVENT_MOVE, clear);\n on([EVENT_UPDATED, EVENT_REFRESH], cancel);\n }\n\n function scroll(destination, duration, snap, onScrolled, noConstrain) {\n var from = getPosition();\n clear();\n\n if (snap && (!isSlide || !exceededLimit())) {\n var size = Components2.Layout.sliderSize();\n var offset = sign(destination) * size * floor(abs(destination) / size) || 0;\n destination = Move.toPosition(Components2.Controller.toDest(destination % size)) + offset;\n }\n\n var noDistance = approximatelyEqual(from, destination, 1);\n friction = 1;\n duration = noDistance ? 0 : duration || max(abs(destination - from) / BASE_VELOCITY, MIN_DURATION);\n callback = onScrolled;\n interval = RequestInterval(duration, onEnd, apply(update, from, destination, noConstrain), 1);\n set(SCROLLING);\n emit(EVENT_SCROLL);\n interval.start();\n }\n\n function onEnd() {\n set(IDLE);\n callback && callback();\n emit(EVENT_SCROLLED);\n }\n\n function update(from, to, noConstrain, rate) {\n var position = getPosition();\n var target = from + (to - from) * easing(rate);\n var diff = (target - position) * friction;\n translate(position + diff);\n\n if (isSlide && !noConstrain && exceededLimit()) {\n friction *= FRICTION_FACTOR;\n\n if (abs(diff) < BOUNCE_DIFF_THRESHOLD) {\n scroll(getLimit(exceededLimit(true)), BOUNCE_DURATION, false, callback, true);\n }\n }\n }\n\n function clear() {\n if (interval) {\n interval.cancel();\n }\n }\n\n function cancel() {\n if (interval && !interval.isPaused()) {\n clear();\n onEnd();\n }\n }\n\n function easing(t) {\n var easingFunc = options.easingFunc;\n return easingFunc ? easingFunc(t) : 1 - Math.pow(1 - t, 4);\n }\n\n return {\n mount: mount,\n destroy: clear,\n scroll: scroll,\n cancel: cancel\n };\n}\n\nvar SCROLL_LISTENER_OPTIONS = {\n passive: false,\n capture: true\n};\n\nfunction Drag(Splide2, Components2, options) {\n var _EventInterface9 = EventInterface(Splide2),\n on = _EventInterface9.on,\n emit = _EventInterface9.emit,\n bind = _EventInterface9.bind,\n unbind = _EventInterface9.unbind;\n\n var state = Splide2.state;\n var Move = Components2.Move,\n Scroll = Components2.Scroll,\n Controller = Components2.Controller,\n track = Components2.Elements.track,\n reduce = Components2.Media.reduce;\n var _Components2$Directio2 = Components2.Direction,\n resolve = _Components2$Directio2.resolve,\n orient = _Components2$Directio2.orient;\n var getPosition = Move.getPosition,\n exceededLimit = Move.exceededLimit;\n var basePosition;\n var baseEvent;\n var prevBaseEvent;\n var isFree;\n var dragging;\n var exceeded = false;\n var clickPrevented;\n var disabled;\n var target;\n\n function mount() {\n bind(track, POINTER_MOVE_EVENTS, noop, SCROLL_LISTENER_OPTIONS);\n bind(track, POINTER_UP_EVENTS, noop, SCROLL_LISTENER_OPTIONS);\n bind(track, POINTER_DOWN_EVENTS, onPointerDown, SCROLL_LISTENER_OPTIONS);\n bind(track, \"click\", onClick, {\n capture: true\n });\n bind(track, \"dragstart\", prevent);\n on([EVENT_MOUNTED, EVENT_UPDATED], init);\n }\n\n function init() {\n var drag = options.drag;\n disable(!drag);\n isFree = drag === \"free\";\n }\n\n function onPointerDown(e) {\n clickPrevented = false;\n\n if (!disabled) {\n var isTouch = isTouchEvent(e);\n\n if (isDraggable(e.target) && (isTouch || !e.button)) {\n if (!Controller.isBusy()) {\n target = isTouch ? track : window;\n dragging = state.is([MOVING, SCROLLING]);\n prevBaseEvent = null;\n bind(target, POINTER_MOVE_EVENTS, onPointerMove, SCROLL_LISTENER_OPTIONS);\n bind(target, POINTER_UP_EVENTS, onPointerUp, SCROLL_LISTENER_OPTIONS);\n Move.cancel();\n Scroll.cancel();\n save(e);\n } else {\n prevent(e, true);\n }\n }\n }\n }\n\n function onPointerMove(e) {\n if (!state.is(DRAGGING)) {\n state.set(DRAGGING);\n emit(EVENT_DRAG);\n }\n\n if (e.cancelable) {\n if (dragging) {\n Move.translate(basePosition + constrain(diffCoord(e)));\n var expired = diffTime(e) > LOG_INTERVAL;\n var hasExceeded = exceeded !== (exceeded = exceededLimit());\n\n if (expired || hasExceeded) {\n save(e);\n }\n\n clickPrevented = true;\n emit(EVENT_DRAGGING);\n prevent(e);\n } else if (isSliderDirection(e)) {\n dragging = shouldStart(e);\n prevent(e);\n }\n }\n }\n\n function onPointerUp(e) {\n if (state.is(DRAGGING)) {\n state.set(IDLE);\n emit(EVENT_DRAGGED);\n }\n\n if (dragging) {\n move(e);\n prevent(e);\n }\n\n unbind(target, POINTER_MOVE_EVENTS, onPointerMove);\n unbind(target, POINTER_UP_EVENTS, onPointerUp);\n dragging = false;\n }\n\n function onClick(e) {\n if (!disabled && clickPrevented) {\n prevent(e, true);\n }\n }\n\n function save(e) {\n prevBaseEvent = baseEvent;\n baseEvent = e;\n basePosition = getPosition();\n }\n\n function move(e) {\n var velocity = computeVelocity(e);\n var destination = computeDestination(velocity);\n var rewind = options.rewind && options.rewindByDrag;\n reduce(false);\n\n if (isFree) {\n Controller.scroll(destination, 0, options.snap);\n } else if (Splide2.is(FADE)) {\n Controller.go(orient(sign(velocity)) < 0 ? rewind ? \"<\" : \"-\" : rewind ? \">\" : \"+\");\n } else if (Splide2.is(SLIDE) && exceeded && rewind) {\n Controller.go(exceededLimit(true) ? \">\" : \"<\");\n } else {\n Controller.go(Controller.toDest(destination), true);\n }\n\n reduce(true);\n }\n\n function shouldStart(e) {\n var thresholds = options.dragMinThreshold;\n var isObj = isObject(thresholds);\n var mouse = isObj && thresholds.mouse || 0;\n var touch = (isObj ? thresholds.touch : +thresholds) || 10;\n return abs(diffCoord(e)) > (isTouchEvent(e) ? touch : mouse);\n }\n\n function isSliderDirection(e) {\n return abs(diffCoord(e)) > abs(diffCoord(e, true));\n }\n\n function computeVelocity(e) {\n if (Splide2.is(LOOP) || !exceeded) {\n var time = diffTime(e);\n\n if (time && time < LOG_INTERVAL) {\n return diffCoord(e) / time;\n }\n }\n\n return 0;\n }\n\n function computeDestination(velocity) {\n return getPosition() + sign(velocity) * min(abs(velocity) * (options.flickPower || 600), isFree ? Infinity : Components2.Layout.listSize() * (options.flickMaxPages || 1));\n }\n\n function diffCoord(e, orthogonal) {\n return coordOf(e, orthogonal) - coordOf(getBaseEvent(e), orthogonal);\n }\n\n function diffTime(e) {\n return timeOf(e) - timeOf(getBaseEvent(e));\n }\n\n function getBaseEvent(e) {\n return baseEvent === e && prevBaseEvent || baseEvent;\n }\n\n function coordOf(e, orthogonal) {\n return (isTouchEvent(e) ? e.changedTouches[0] : e)[\"page\" + resolve(orthogonal ? \"Y\" : \"X\")];\n }\n\n function constrain(diff) {\n return diff / (exceeded && Splide2.is(SLIDE) ? FRICTION : 1);\n }\n\n function isDraggable(target2) {\n var noDrag = options.noDrag;\n return !matches(target2, \".\" + CLASS_PAGINATION_PAGE + \", .\" + CLASS_ARROW) && (!noDrag || !matches(target2, noDrag));\n }\n\n function isTouchEvent(e) {\n return typeof TouchEvent !== \"undefined\" && e instanceof TouchEvent;\n }\n\n function isDragging() {\n return dragging;\n }\n\n function disable(value) {\n disabled = value;\n }\n\n return {\n mount: mount,\n disable: disable,\n isDragging: isDragging\n };\n}\n\nvar NORMALIZATION_MAP = {\n Spacebar: \" \",\n Right: ARROW_RIGHT,\n Left: ARROW_LEFT,\n Up: ARROW_UP,\n Down: ARROW_DOWN\n};\n\nfunction normalizeKey(key) {\n key = isString(key) ? key : key.key;\n return NORMALIZATION_MAP[key] || key;\n}\n\nvar KEYBOARD_EVENT = \"keydown\";\n\nfunction Keyboard(Splide2, Components2, options) {\n var _EventInterface10 = EventInterface(Splide2),\n on = _EventInterface10.on,\n bind = _EventInterface10.bind,\n unbind = _EventInterface10.unbind;\n\n var root = Splide2.root;\n var resolve = Components2.Direction.resolve;\n var target;\n var disabled;\n\n function mount() {\n init();\n on(EVENT_UPDATED, destroy);\n on(EVENT_UPDATED, init);\n on(EVENT_MOVE, onMove);\n }\n\n function init() {\n var keyboard = options.keyboard;\n\n if (keyboard) {\n target = keyboard === \"global\" ? window : root;\n bind(target, KEYBOARD_EVENT, onKeydown);\n }\n }\n\n function destroy() {\n unbind(target, KEYBOARD_EVENT);\n }\n\n function disable(value) {\n disabled = value;\n }\n\n function onMove() {\n var _disabled = disabled;\n disabled = true;\n nextTick(function () {\n disabled = _disabled;\n });\n }\n\n function onKeydown(e) {\n if (!disabled) {\n var key = normalizeKey(e);\n\n if (key === resolve(ARROW_LEFT)) {\n Splide2.go(\"<\");\n } else if (key === resolve(ARROW_RIGHT)) {\n Splide2.go(\">\");\n }\n }\n }\n\n return {\n mount: mount,\n destroy: destroy,\n disable: disable\n };\n}\n\nvar SRC_DATA_ATTRIBUTE = DATA_ATTRIBUTE + \"-lazy\";\nvar SRCSET_DATA_ATTRIBUTE = SRC_DATA_ATTRIBUTE + \"-srcset\";\nvar IMAGE_SELECTOR = \"[\" + SRC_DATA_ATTRIBUTE + \"], [\" + SRCSET_DATA_ATTRIBUTE + \"]\";\n\nfunction LazyLoad(Splide2, Components2, options) {\n var _EventInterface11 = EventInterface(Splide2),\n on = _EventInterface11.on,\n off = _EventInterface11.off,\n bind = _EventInterface11.bind,\n emit = _EventInterface11.emit;\n\n var isSequential = options.lazyLoad === \"sequential\";\n var events = [EVENT_MOVED, EVENT_SCROLLED];\n var entries = [];\n\n function mount() {\n if (options.lazyLoad) {\n init();\n on(EVENT_REFRESH, init);\n }\n }\n\n function init() {\n empty(entries);\n register();\n\n if (isSequential) {\n loadNext();\n } else {\n off(events);\n on(events, check);\n check();\n }\n }\n\n function register() {\n Components2.Slides.forEach(function (Slide) {\n queryAll(Slide.slide, IMAGE_SELECTOR).forEach(function (img) {\n var src = getAttribute(img, SRC_DATA_ATTRIBUTE);\n var srcset = getAttribute(img, SRCSET_DATA_ATTRIBUTE);\n\n if (src !== img.src || srcset !== img.srcset) {\n var className = options.classes.spinner;\n var parent = img.parentElement;\n var spinner = child(parent, \".\" + className) || create(\"span\", className, parent);\n entries.push([img, Slide, spinner]);\n img.src || display(img, \"none\");\n }\n });\n });\n }\n\n function check() {\n entries = entries.filter(function (data) {\n var distance = options.perPage * ((options.preloadPages || 1) + 1) - 1;\n return data[1].isWithin(Splide2.index, distance) ? load(data) : true;\n });\n entries.length || off(events);\n }\n\n function load(data) {\n var img = data[0];\n addClass(data[1].slide, CLASS_LOADING);\n bind(img, \"load error\", apply(onLoad, data));\n setAttribute(img, \"src\", getAttribute(img, SRC_DATA_ATTRIBUTE));\n setAttribute(img, \"srcset\", getAttribute(img, SRCSET_DATA_ATTRIBUTE));\n removeAttribute(img, SRC_DATA_ATTRIBUTE);\n removeAttribute(img, SRCSET_DATA_ATTRIBUTE);\n }\n\n function onLoad(data, e) {\n var img = data[0],\n Slide = data[1];\n removeClass(Slide.slide, CLASS_LOADING);\n\n if (e.type !== \"error\") {\n remove(data[2]);\n display(img, \"\");\n emit(EVENT_LAZYLOAD_LOADED, img, Slide);\n emit(EVENT_RESIZE);\n }\n\n isSequential && loadNext();\n }\n\n function loadNext() {\n entries.length && load(entries.shift());\n }\n\n return {\n mount: mount,\n destroy: apply(empty, entries),\n check: check\n };\n}\n\nfunction Pagination(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on,\n emit = event.emit,\n bind = event.bind;\n var Slides = Components2.Slides,\n Elements = Components2.Elements,\n Controller = Components2.Controller;\n var hasFocus = Controller.hasFocus,\n getIndex = Controller.getIndex,\n go = Controller.go;\n var resolve = Components2.Direction.resolve;\n var placeholder = Elements.pagination;\n var items = [];\n var list;\n var paginationClasses;\n\n function mount() {\n destroy();\n on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], mount);\n var enabled = options.pagination;\n placeholder && display(placeholder, enabled ? \"\" : \"none\");\n\n if (enabled) {\n on([EVENT_MOVE, EVENT_SCROLL, EVENT_SCROLLED], update);\n createPagination();\n update();\n emit(EVENT_PAGINATION_MOUNTED, {\n list: list,\n items: items\n }, getAt(Splide2.index));\n }\n }\n\n function destroy() {\n if (list) {\n remove(placeholder ? slice(list.children) : list);\n removeClass(list, paginationClasses);\n empty(items);\n list = null;\n }\n\n event.destroy();\n }\n\n function createPagination() {\n var length = Splide2.length;\n var classes = options.classes,\n i18n = options.i18n,\n perPage = options.perPage;\n var max = hasFocus() ? Controller.getEnd() + 1 : ceil(length / perPage);\n list = placeholder || create(\"ul\", classes.pagination, Elements.track.parentElement);\n addClass(list, paginationClasses = CLASS_PAGINATION + \"--\" + getDirection());\n setAttribute(list, ROLE, \"tablist\");\n setAttribute(list, ARIA_LABEL, i18n.select);\n setAttribute(list, ARIA_ORIENTATION, getDirection() === TTB ? \"vertical\" : \"\");\n\n for (var i = 0; i < max; i++) {\n var li = create(\"li\", null, list);\n var button = create(\"button\", {\n class: classes.page,\n type: \"button\"\n }, li);\n var controls = Slides.getIn(i).map(function (Slide) {\n return Slide.slide.id;\n });\n var text = !hasFocus() && perPage > 1 ? i18n.pageX : i18n.slideX;\n bind(button, \"click\", apply(onClick, i));\n\n if (options.paginationKeyboard) {\n bind(button, \"keydown\", apply(onKeydown, i));\n }\n\n setAttribute(li, ROLE, \"presentation\");\n setAttribute(button, ROLE, \"tab\");\n setAttribute(button, ARIA_CONTROLS, controls.join(\" \"));\n setAttribute(button, ARIA_LABEL, format(text, i + 1));\n setAttribute(button, TAB_INDEX, -1);\n items.push({\n li: li,\n button: button,\n page: i\n });\n }\n }\n\n function onClick(page) {\n go(\">\" + page, true);\n }\n\n function onKeydown(page, e) {\n var length = items.length;\n var key = normalizeKey(e);\n var dir = getDirection();\n var nextPage = -1;\n\n if (key === resolve(ARROW_RIGHT, false, dir)) {\n nextPage = ++page % length;\n } else if (key === resolve(ARROW_LEFT, false, dir)) {\n nextPage = (--page + length) % length;\n } else if (key === \"Home\") {\n nextPage = 0;\n } else if (key === \"End\") {\n nextPage = length - 1;\n }\n\n var item = items[nextPage];\n\n if (item) {\n focus(item.button);\n go(\">\" + nextPage);\n prevent(e, true);\n }\n }\n\n function getDirection() {\n return options.paginationDirection || options.direction;\n }\n\n function getAt(index) {\n return items[Controller.toPage(index)];\n }\n\n function update() {\n var prev = getAt(getIndex(true));\n var curr = getAt(getIndex());\n\n if (prev) {\n var button = prev.button;\n removeClass(button, CLASS_ACTIVE);\n removeAttribute(button, ARIA_SELECTED);\n setAttribute(button, TAB_INDEX, -1);\n }\n\n if (curr) {\n var _button = curr.button;\n addClass(_button, CLASS_ACTIVE);\n setAttribute(_button, ARIA_SELECTED, true);\n setAttribute(_button, TAB_INDEX, \"\");\n }\n\n emit(EVENT_PAGINATION_UPDATED, {\n list: list,\n items: items\n }, prev, curr);\n }\n\n return {\n items: items,\n mount: mount,\n destroy: destroy,\n getAt: getAt,\n update: update\n };\n}\n\nvar TRIGGER_KEYS = [\" \", \"Enter\"];\n\nfunction Sync(Splide2, Components2, options) {\n var isNavigation = options.isNavigation,\n slideFocus = options.slideFocus;\n var events = [];\n\n function mount() {\n Splide2.splides.forEach(function (target) {\n if (!target.isParent) {\n sync(Splide2, target.splide);\n sync(target.splide, Splide2);\n }\n });\n\n if (isNavigation) {\n navigate();\n }\n }\n\n function destroy() {\n events.forEach(function (event) {\n event.destroy();\n });\n empty(events);\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function sync(splide, target) {\n var event = EventInterface(splide);\n event.on(EVENT_MOVE, function (index, prev, dest) {\n target.go(target.is(LOOP) ? dest : index);\n });\n events.push(event);\n }\n\n function navigate() {\n var event = EventInterface(Splide2);\n var on = event.on;\n on(EVENT_CLICK, onClick);\n on(EVENT_SLIDE_KEYDOWN, onKeydown);\n on([EVENT_MOUNTED, EVENT_UPDATED], update);\n events.push(event);\n event.emit(EVENT_NAVIGATION_MOUNTED, Splide2.splides);\n }\n\n function update() {\n setAttribute(Components2.Elements.list, ARIA_ORIENTATION, options.direction === TTB ? \"vertical\" : \"\");\n }\n\n function onClick(Slide) {\n Splide2.go(Slide.index);\n }\n\n function onKeydown(Slide, e) {\n if (includes(TRIGGER_KEYS, normalizeKey(e))) {\n onClick(Slide);\n prevent(e);\n }\n }\n\n return {\n setup: apply(Components2.Media.set, {\n slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus\n }, true),\n mount: mount,\n destroy: destroy,\n remount: remount\n };\n}\n\nfunction Wheel(Splide2, Components2, options) {\n var _EventInterface12 = EventInterface(Splide2),\n bind = _EventInterface12.bind;\n\n var lastTime = 0;\n\n function mount() {\n if (options.wheel) {\n bind(Components2.Elements.track, \"wheel\", onWheel, SCROLL_LISTENER_OPTIONS);\n }\n }\n\n function onWheel(e) {\n if (e.cancelable) {\n var deltaY = e.deltaY;\n var backwards = deltaY < 0;\n var timeStamp = timeOf(e);\n\n var _min = options.wheelMinThreshold || 0;\n\n var sleep = options.wheelSleep || 0;\n\n if (abs(deltaY) > _min && timeStamp - lastTime > sleep) {\n Splide2.go(backwards ? \"<\" : \">\");\n lastTime = timeStamp;\n }\n\n shouldPrevent(backwards) && prevent(e);\n }\n }\n\n function shouldPrevent(backwards) {\n return !options.releaseWheel || Splide2.state.is(MOVING) || Components2.Controller.getAdjacent(backwards) !== -1;\n }\n\n return {\n mount: mount\n };\n}\n\nvar SR_REMOVAL_DELAY = 90;\n\nfunction Live(Splide2, Components2, options) {\n var _EventInterface13 = EventInterface(Splide2),\n on = _EventInterface13.on;\n\n var track = Components2.Elements.track;\n var enabled = options.live && !options.isNavigation;\n var sr = create(\"span\", CLASS_SR);\n var interval = RequestInterval(SR_REMOVAL_DELAY, apply(toggle, false));\n\n function mount() {\n if (enabled) {\n disable(!Components2.Autoplay.isPaused());\n setAttribute(track, ARIA_ATOMIC, true);\n sr.textContent = \"\\u2026\";\n on(EVENT_AUTOPLAY_PLAY, apply(disable, true));\n on(EVENT_AUTOPLAY_PAUSE, apply(disable, false));\n on([EVENT_MOVED, EVENT_SCROLLED], apply(toggle, true));\n }\n }\n\n function toggle(active) {\n setAttribute(track, ARIA_BUSY, active);\n\n if (active) {\n append(track, sr);\n interval.start();\n } else {\n remove(sr);\n interval.cancel();\n }\n }\n\n function destroy() {\n removeAttribute(track, [ARIA_LIVE, ARIA_ATOMIC, ARIA_BUSY]);\n remove(sr);\n }\n\n function disable(disabled) {\n if (enabled) {\n setAttribute(track, ARIA_LIVE, disabled ? \"off\" : \"polite\");\n }\n }\n\n return {\n mount: mount,\n disable: disable,\n destroy: destroy\n };\n}\n\nvar ComponentConstructors = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Media: Media,\n Direction: Direction,\n Elements: Elements,\n Slides: Slides,\n Layout: Layout,\n Clones: Clones,\n Move: Move,\n Controller: Controller,\n Arrows: Arrows,\n Autoplay: Autoplay,\n Cover: Cover,\n Scroll: Scroll,\n Drag: Drag,\n Keyboard: Keyboard,\n LazyLoad: LazyLoad,\n Pagination: Pagination,\n Sync: Sync,\n Wheel: Wheel,\n Live: Live\n});\nvar I18N = {\n prev: \"Previous slide\",\n next: \"Next slide\",\n first: \"Go to first slide\",\n last: \"Go to last slide\",\n slideX: \"Go to slide %s\",\n pageX: \"Go to page %s\",\n play: \"Start autoplay\",\n pause: \"Pause autoplay\",\n carousel: \"carousel\",\n slide: \"slide\",\n select: \"Select a slide to show\",\n slideLabel: \"%s of %s\"\n};\nvar DEFAULTS = {\n type: \"slide\",\n role: \"region\",\n speed: 400,\n perPage: 1,\n cloneStatus: true,\n arrows: true,\n pagination: true,\n paginationKeyboard: true,\n interval: 5e3,\n pauseOnHover: true,\n pauseOnFocus: true,\n resetProgress: true,\n easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n drag: true,\n direction: \"ltr\",\n trimSpace: true,\n focusableNodes: \"a, button, textarea, input, select, iframe\",\n live: true,\n classes: CLASSES,\n i18n: I18N,\n reducedMotion: {\n speed: 0,\n rewindSpeed: 0,\n autoplay: \"pause\"\n }\n};\n\nfunction Fade(Splide2, Components2, options) {\n var Slides = Components2.Slides;\n\n function mount() {\n EventInterface(Splide2).on([EVENT_MOUNTED, EVENT_REFRESH], init);\n }\n\n function init() {\n Slides.forEach(function (Slide) {\n Slide.style(\"transform\", \"translateX(-\" + 100 * Slide.index + \"%)\");\n });\n }\n\n function start(index, done) {\n Slides.style(\"transition\", \"opacity \" + options.speed + \"ms \" + options.easing);\n nextTick(done);\n }\n\n return {\n mount: mount,\n start: start,\n cancel: noop\n };\n}\n\nfunction Slide(Splide2, Components2, options) {\n var Move = Components2.Move,\n Controller = Components2.Controller,\n Scroll = Components2.Scroll;\n var list = Components2.Elements.list;\n var transition = apply(style, list, \"transition\");\n var endCallback;\n\n function mount() {\n EventInterface(Splide2).bind(list, \"transitionend\", function (e) {\n if (e.target === list && endCallback) {\n cancel();\n endCallback();\n }\n });\n }\n\n function start(index, done) {\n var destination = Move.toPosition(index, true);\n var position = Move.getPosition();\n var speed = getSpeed(index);\n\n if (abs(destination - position) >= 1 && speed >= 1) {\n if (options.useScroll) {\n Scroll.scroll(destination, speed, false, done);\n } else {\n transition(\"transform \" + speed + \"ms \" + options.easing);\n Move.translate(destination, true);\n endCallback = done;\n }\n } else {\n Move.jump(index);\n done();\n }\n }\n\n function cancel() {\n transition(\"\");\n Scroll.cancel();\n }\n\n function getSpeed(index) {\n var rewindSpeed = options.rewindSpeed;\n\n if (Splide2.is(SLIDE) && rewindSpeed) {\n var prev = Controller.getIndex(true);\n var end = Controller.getEnd();\n\n if (prev === 0 && index >= end || prev >= end && index === 0) {\n return rewindSpeed;\n }\n }\n\n return options.speed;\n }\n\n return {\n mount: mount,\n start: start,\n cancel: cancel\n };\n}\n\nvar _Splide = /*#__PURE__*/function () {\n function _Splide(target, options) {\n this.event = EventInterface();\n this.Components = {};\n this.state = State(CREATED);\n this.splides = [];\n this._o = {};\n this._E = {};\n var root = isString(target) ? query(document, target) : target;\n assert(root, root + \" is invalid.\");\n this.root = root;\n options = merge({\n label: getAttribute(root, ARIA_LABEL) || \"\",\n labelledby: getAttribute(root, ARIA_LABELLEDBY) || \"\"\n }, DEFAULTS, _Splide.defaults, options || {});\n\n try {\n merge(options, JSON.parse(getAttribute(root, DATA_ATTRIBUTE)));\n } catch (e) {\n assert(false, \"Invalid JSON\");\n }\n\n this._o = Object.create(merge({}, options));\n }\n\n var _proto = _Splide.prototype;\n\n _proto.mount = function mount(Extensions, Transition) {\n var _this = this;\n\n var state = this.state,\n Components2 = this.Components;\n assert(state.is([CREATED, DESTROYED]), \"Already mounted!\");\n state.set(CREATED);\n this._C = Components2;\n this._T = Transition || this._T || (this.is(FADE) ? Fade : Slide);\n this._E = Extensions || this._E;\n var Constructors = assign({}, ComponentConstructors, this._E, {\n Transition: this._T\n });\n forOwn(Constructors, function (Component, key) {\n var component = Component(_this, Components2, _this._o);\n Components2[key] = component;\n component.setup && component.setup();\n });\n forOwn(Components2, function (component) {\n component.mount && component.mount();\n });\n this.emit(EVENT_MOUNTED);\n addClass(this.root, CLASS_INITIALIZED);\n state.set(IDLE);\n this.emit(EVENT_READY);\n return this;\n };\n\n _proto.sync = function sync(splide) {\n this.splides.push({\n splide: splide\n });\n splide.splides.push({\n splide: this,\n isParent: true\n });\n\n if (this.state.is(IDLE)) {\n this._C.Sync.remount();\n\n splide.Components.Sync.remount();\n }\n\n return this;\n };\n\n _proto.go = function go(control) {\n this._C.Controller.go(control);\n\n return this;\n };\n\n _proto.on = function on(events, callback) {\n this.event.on(events, callback);\n return this;\n };\n\n _proto.off = function off(events) {\n this.event.off(events);\n return this;\n };\n\n _proto.emit = function emit(event) {\n var _this$event;\n\n (_this$event = this.event).emit.apply(_this$event, [event].concat(slice(arguments, 1)));\n\n return this;\n };\n\n _proto.add = function add(slides, index) {\n this._C.Slides.add(slides, index);\n\n return this;\n };\n\n _proto.remove = function remove(matcher) {\n this._C.Slides.remove(matcher);\n\n return this;\n };\n\n _proto.is = function is(type) {\n return this._o.type === type;\n };\n\n _proto.refresh = function refresh() {\n this.emit(EVENT_REFRESH);\n return this;\n };\n\n _proto.destroy = function destroy(completely) {\n if (completely === void 0) {\n completely = true;\n }\n\n var event = this.event,\n state = this.state;\n\n if (state.is(CREATED)) {\n EventInterface(this).on(EVENT_READY, this.destroy.bind(this, completely));\n } else {\n forOwn(this._C, function (component) {\n component.destroy && component.destroy(completely);\n }, true);\n event.emit(EVENT_DESTROY);\n event.destroy();\n completely && empty(this.splides);\n state.set(DESTROYED);\n }\n\n return this;\n };\n\n _createClass(_Splide, [{\n key: \"options\",\n get: function get() {\n return this._o;\n },\n set: function set(options) {\n this._C.Media.set(options, true, true);\n }\n }, {\n key: \"length\",\n get: function get() {\n return this._C.Slides.getLength(true);\n }\n }, {\n key: \"index\",\n get: function get() {\n return this._C.Controller.getIndex();\n }\n }]);\n\n return _Splide;\n}();\n\nvar Splide = _Splide;\nSplide.defaults = {};\nSplide.STATES = STATES;\nvar CLASS_RENDERED = \"is-rendered\";\nvar RENDERER_DEFAULT_CONFIG = {\n listTag: \"ul\",\n slideTag: \"li\"\n};\n\nvar Style = /*#__PURE__*/function () {\n function Style(id, options) {\n this.styles = {};\n this.id = id;\n this.options = options;\n }\n\n var _proto2 = Style.prototype;\n\n _proto2.rule = function rule(selector, prop, value, breakpoint) {\n breakpoint = breakpoint || \"default\";\n var selectors = this.styles[breakpoint] = this.styles[breakpoint] || {};\n var styles = selectors[selector] = selectors[selector] || {};\n styles[prop] = value;\n };\n\n _proto2.build = function build() {\n var _this2 = this;\n\n var css = \"\";\n\n if (this.styles.default) {\n css += this.buildSelectors(this.styles.default);\n }\n\n Object.keys(this.styles).sort(function (n, m) {\n return _this2.options.mediaQuery === \"min\" ? +n - +m : +m - +n;\n }).forEach(function (breakpoint) {\n if (breakpoint !== \"default\") {\n css += \"@media screen and (max-width: \" + breakpoint + \"px) {\";\n css += _this2.buildSelectors(_this2.styles[breakpoint]);\n css += \"}\";\n }\n });\n return css;\n };\n\n _proto2.buildSelectors = function buildSelectors(selectors) {\n var _this3 = this;\n\n var css = \"\";\n forOwn(selectors, function (styles, selector) {\n selector = (\"#\" + _this3.id + \" \" + selector).trim();\n css += selector + \" {\";\n forOwn(styles, function (value, prop) {\n if (value || value === 0) {\n css += prop + \": \" + value + \";\";\n }\n });\n css += \"}\";\n });\n return css;\n };\n\n return Style;\n}();\n\nvar SplideRenderer = /*#__PURE__*/function () {\n function SplideRenderer(contents, options, config, defaults) {\n this.slides = [];\n this.options = {};\n this.breakpoints = [];\n merge(DEFAULTS, defaults || {});\n merge(merge(this.options, DEFAULTS), options || {});\n this.contents = contents;\n this.config = assign({}, RENDERER_DEFAULT_CONFIG, config || {});\n this.id = this.config.id || uniqueId(\"splide\");\n this.Style = new Style(this.id, this.options);\n this.Direction = Direction(null, null, this.options);\n assert(this.contents.length, \"Provide at least 1 content.\");\n this.init();\n }\n\n SplideRenderer.clean = function clean(splide) {\n var _EventInterface14 = EventInterface(splide),\n on = _EventInterface14.on;\n\n var root = splide.root;\n var clones = queryAll(root, \".\" + CLASS_CLONE);\n on(EVENT_MOUNTED, function () {\n remove(child(root, \"style\"));\n });\n remove(clones);\n };\n\n var _proto3 = SplideRenderer.prototype;\n\n _proto3.init = function init() {\n this.parseBreakpoints();\n this.initSlides();\n this.registerRootStyles();\n this.registerTrackStyles();\n this.registerSlideStyles();\n this.registerListStyles();\n };\n\n _proto3.initSlides = function initSlides() {\n var _this4 = this;\n\n push(this.slides, this.contents.map(function (content, index) {\n content = isString(content) ? {\n html: content\n } : content;\n content.styles = content.styles || {};\n content.attrs = content.attrs || {};\n\n _this4.cover(content);\n\n var classes = _this4.options.classes.slide + \" \" + (index === 0 ? CLASS_ACTIVE : \"\");\n assign(content.attrs, {\n class: (classes + \" \" + (content.attrs.class || \"\")).trim(),\n style: _this4.buildStyles(content.styles)\n });\n return content;\n }));\n\n if (this.isLoop()) {\n this.generateClones(this.slides);\n }\n };\n\n _proto3.registerRootStyles = function registerRootStyles() {\n var _this5 = this;\n\n this.breakpoints.forEach(function (_ref2) {\n var width = _ref2[0],\n options = _ref2[1];\n\n _this5.Style.rule(\" \", \"max-width\", unit(options.width), width);\n });\n };\n\n _proto3.registerTrackStyles = function registerTrackStyles() {\n var _this6 = this;\n\n var Style2 = this.Style;\n var selector = \".\" + CLASS_TRACK;\n this.breakpoints.forEach(function (_ref3) {\n var width = _ref3[0],\n options = _ref3[1];\n Style2.rule(selector, _this6.resolve(\"paddingLeft\"), _this6.cssPadding(options, false), width);\n Style2.rule(selector, _this6.resolve(\"paddingRight\"), _this6.cssPadding(options, true), width);\n Style2.rule(selector, \"height\", _this6.cssTrackHeight(options), width);\n });\n };\n\n _proto3.registerListStyles = function registerListStyles() {\n var _this7 = this;\n\n var Style2 = this.Style;\n var selector = \".\" + CLASS_LIST;\n this.breakpoints.forEach(function (_ref4) {\n var width = _ref4[0],\n options = _ref4[1];\n Style2.rule(selector, \"transform\", _this7.buildTranslate(options), width);\n\n if (!_this7.cssSlideHeight(options)) {\n Style2.rule(selector, \"aspect-ratio\", _this7.cssAspectRatio(options), width);\n }\n });\n };\n\n _proto3.registerSlideStyles = function registerSlideStyles() {\n var _this8 = this;\n\n var Style2 = this.Style;\n var selector = \".\" + CLASS_SLIDE;\n this.breakpoints.forEach(function (_ref5) {\n var width = _ref5[0],\n options = _ref5[1];\n Style2.rule(selector, \"width\", _this8.cssSlideWidth(options), width);\n Style2.rule(selector, \"height\", _this8.cssSlideHeight(options) || \"100%\", width);\n Style2.rule(selector, _this8.resolve(\"marginRight\"), unit(options.gap) || \"0px\", width);\n Style2.rule(selector + \" > img\", \"display\", options.cover ? \"none\" : \"inline\", width);\n });\n };\n\n _proto3.buildTranslate = function buildTranslate(options) {\n var _this$Direction = this.Direction,\n resolve = _this$Direction.resolve,\n orient = _this$Direction.orient;\n var values = [];\n values.push(this.cssOffsetClones(options));\n values.push(this.cssOffsetGaps(options));\n\n if (this.isCenter(options)) {\n values.push(this.buildCssValue(orient(-50), \"%\"));\n values.push.apply(values, this.cssOffsetCenter(options));\n }\n\n return values.filter(Boolean).map(function (value) {\n return \"translate\" + resolve(\"X\") + \"(\" + value + \")\";\n }).join(\" \");\n };\n\n _proto3.cssOffsetClones = function cssOffsetClones(options) {\n var _this$Direction2 = this.Direction,\n resolve = _this$Direction2.resolve,\n orient = _this$Direction2.orient;\n var cloneCount = this.getCloneCount();\n\n if (this.isFixedWidth(options)) {\n var _this$parseCssValue = this.parseCssValue(options[resolve(\"fixedWidth\")]),\n value = _this$parseCssValue.value,\n unit2 = _this$parseCssValue.unit;\n\n return this.buildCssValue(orient(value) * cloneCount, unit2);\n }\n\n var percent = 100 * cloneCount / options.perPage;\n return orient(percent) + \"%\";\n };\n\n _proto3.cssOffsetCenter = function cssOffsetCenter(options) {\n var _this$Direction3 = this.Direction,\n resolve = _this$Direction3.resolve,\n orient = _this$Direction3.orient;\n\n if (this.isFixedWidth(options)) {\n var _this$parseCssValue2 = this.parseCssValue(options[resolve(\"fixedWidth\")]),\n value = _this$parseCssValue2.value,\n unit2 = _this$parseCssValue2.unit;\n\n return [this.buildCssValue(orient(value / 2), unit2)];\n }\n\n var values = [];\n var perPage = options.perPage,\n gap = options.gap;\n values.push(orient(50 / perPage) + \"%\");\n\n if (gap) {\n var _this$parseCssValue3 = this.parseCssValue(gap),\n _value = _this$parseCssValue3.value,\n _unit = _this$parseCssValue3.unit;\n\n var gapOffset = (_value / perPage - _value) / 2;\n values.push(this.buildCssValue(orient(gapOffset), _unit));\n }\n\n return values;\n };\n\n _proto3.cssOffsetGaps = function cssOffsetGaps(options) {\n var cloneCount = this.getCloneCount();\n\n if (cloneCount && options.gap) {\n var orient = this.Direction.orient;\n\n var _this$parseCssValue4 = this.parseCssValue(options.gap),\n value = _this$parseCssValue4.value,\n unit2 = _this$parseCssValue4.unit;\n\n if (this.isFixedWidth(options)) {\n return this.buildCssValue(orient(value * cloneCount), unit2);\n }\n\n var perPage = options.perPage;\n var gaps = cloneCount / perPage;\n return this.buildCssValue(orient(gaps * value), unit2);\n }\n\n return \"\";\n };\n\n _proto3.resolve = function resolve(prop) {\n return camelToKebab(this.Direction.resolve(prop));\n };\n\n _proto3.cssPadding = function cssPadding(options, right) {\n var padding = options.padding;\n var prop = this.Direction.resolve(right ? \"right\" : \"left\", true);\n return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || \"0px\";\n };\n\n _proto3.cssTrackHeight = function cssTrackHeight(options) {\n var height = \"\";\n\n if (this.isVertical()) {\n height = this.cssHeight(options);\n assert(height, '\"height\" is missing.');\n height = \"calc(\" + height + \" - \" + this.cssPadding(options, false) + \" - \" + this.cssPadding(options, true) + \")\";\n }\n\n return height;\n };\n\n _proto3.cssHeight = function cssHeight(options) {\n return unit(options.height);\n };\n\n _proto3.cssSlideWidth = function cssSlideWidth(options) {\n return options.autoWidth ? \"\" : unit(options.fixedWidth) || (this.isVertical() ? \"\" : this.cssSlideSize(options));\n };\n\n _proto3.cssSlideHeight = function cssSlideHeight(options) {\n return unit(options.fixedHeight) || (this.isVertical() ? options.autoHeight ? \"\" : this.cssSlideSize(options) : this.cssHeight(options));\n };\n\n _proto3.cssSlideSize = function cssSlideSize(options) {\n var gap = unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n };\n\n _proto3.cssAspectRatio = function cssAspectRatio(options) {\n var heightRatio = options.heightRatio;\n return heightRatio ? \"\" + 1 / heightRatio : \"\";\n };\n\n _proto3.buildCssValue = function buildCssValue(value, unit2) {\n return \"\" + value + unit2;\n };\n\n _proto3.parseCssValue = function parseCssValue(value) {\n if (isString(value)) {\n var number = parseFloat(value) || 0;\n var unit2 = value.replace(/\\d*(\\.\\d*)?/, \"\") || \"px\";\n return {\n value: number,\n unit: unit2\n };\n }\n\n return {\n value: value,\n unit: \"px\"\n };\n };\n\n _proto3.parseBreakpoints = function parseBreakpoints() {\n var _this9 = this;\n\n var breakpoints = this.options.breakpoints;\n this.breakpoints.push([\"default\", this.options]);\n\n if (breakpoints) {\n forOwn(breakpoints, function (options, width) {\n _this9.breakpoints.push([width, merge(merge({}, _this9.options), options)]);\n });\n }\n };\n\n _proto3.isFixedWidth = function isFixedWidth(options) {\n return !!options[this.Direction.resolve(\"fixedWidth\")];\n };\n\n _proto3.isLoop = function isLoop() {\n return this.options.type === LOOP;\n };\n\n _proto3.isCenter = function isCenter(options) {\n if (options.focus === \"center\") {\n if (this.isLoop()) {\n return true;\n }\n\n if (this.options.type === SLIDE) {\n return !this.options.trimSpace;\n }\n }\n\n return false;\n };\n\n _proto3.isVertical = function isVertical() {\n return this.options.direction === TTB;\n };\n\n _proto3.buildClasses = function buildClasses() {\n var options = this.options;\n return [CLASS_ROOT, CLASS_ROOT + \"--\" + options.type, CLASS_ROOT + \"--\" + options.direction, options.drag && CLASS_ROOT + \"--draggable\", options.isNavigation && CLASS_ROOT + \"--nav\", CLASS_ACTIVE, !this.config.hidden && CLASS_RENDERED].filter(Boolean).join(\" \");\n };\n\n _proto3.buildAttrs = function buildAttrs(attrs) {\n var attr = \"\";\n forOwn(attrs, function (value, key) {\n attr += value ? \" \" + camelToKebab(key) + \"=\\\"\" + value + \"\\\"\" : \"\";\n });\n return attr.trim();\n };\n\n _proto3.buildStyles = function buildStyles(styles) {\n var style = \"\";\n forOwn(styles, function (value, key) {\n style += \" \" + camelToKebab(key) + \":\" + value + \";\";\n });\n return style.trim();\n };\n\n _proto3.renderSlides = function renderSlides() {\n var _this10 = this;\n\n var tag = this.config.slideTag;\n return this.slides.map(function (content) {\n return \"<\" + tag + \" \" + _this10.buildAttrs(content.attrs) + \">\" + (content.html || \"\") + \"</\" + tag + \">\";\n }).join(\"\");\n };\n\n _proto3.cover = function cover(content) {\n var styles = content.styles,\n _content$html = content.html,\n html = _content$html === void 0 ? \"\" : _content$html;\n\n if (this.options.cover && !this.options.lazyLoad) {\n var src = html.match(/<img.*?src\\s*=\\s*(['\"])(.+?)\\1.*?>/);\n\n if (src && src[2]) {\n styles.background = \"center/cover no-repeat url('\" + src[2] + \"')\";\n }\n }\n };\n\n _proto3.generateClones = function generateClones(contents) {\n var classes = this.options.classes;\n var count = this.getCloneCount();\n var slides = contents.slice();\n\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count).reverse(), slides.slice(0, count)).forEach(function (content, index) {\n var attrs = assign({}, content.attrs, {\n class: content.attrs.class + \" \" + classes.clone\n });\n var clone = assign({}, content, {\n attrs: attrs\n });\n index < count ? contents.unshift(clone) : contents.push(clone);\n });\n };\n\n _proto3.getCloneCount = function getCloneCount() {\n if (this.isLoop()) {\n var options = this.options;\n\n if (options.clones) {\n return options.clones;\n }\n\n var perPage = max.apply(void 0, this.breakpoints.map(function (_ref6) {\n var options2 = _ref6[1];\n return options2.perPage;\n }));\n return perPage * ((options.flickMaxPages || 1) + 1);\n }\n\n return 0;\n };\n\n _proto3.renderArrows = function renderArrows() {\n var html = \"\";\n html += \"<div class=\\\"\" + this.options.classes.arrows + \"\\\">\";\n html += this.renderArrow(true);\n html += this.renderArrow(false);\n html += \"</div>\";\n return html;\n };\n\n _proto3.renderArrow = function renderArrow(prev) {\n var _this$options = this.options,\n classes = _this$options.classes,\n i18n = _this$options.i18n;\n var attrs = {\n class: classes.arrow + \" \" + (prev ? classes.prev : classes.next),\n type: \"button\",\n ariaLabel: prev ? i18n.prev : i18n.next\n };\n return \"<button \" + this.buildAttrs(attrs) + \"><svg xmlns=\\\"\" + XML_NAME_SPACE + \"\\\" viewBox=\\\"0 0 \" + SIZE + \" \" + SIZE + \"\\\" width=\\\"\" + SIZE + \"\\\" height=\\\"\" + SIZE + \"\\\"><path d=\\\"\" + (this.options.arrowPath || PATH) + \"\\\" /></svg></button>\";\n };\n\n _proto3.html = function html() {\n var _this$config = this.config,\n rootClass = _this$config.rootClass,\n listTag = _this$config.listTag,\n arrows = _this$config.arrows,\n beforeTrack = _this$config.beforeTrack,\n afterTrack = _this$config.afterTrack,\n slider = _this$config.slider,\n beforeSlider = _this$config.beforeSlider,\n afterSlider = _this$config.afterSlider;\n var html = \"\";\n html += \"<div id=\\\"\" + this.id + \"\\\" class=\\\"\" + this.buildClasses() + \" \" + (rootClass || \"\") + \"\\\">\";\n html += \"<style>\" + this.Style.build() + \"</style>\";\n\n if (slider) {\n html += beforeSlider || \"\";\n html += \"<div class=\\\"splide__slider\\\">\";\n }\n\n html += beforeTrack || \"\";\n\n if (arrows) {\n html += this.renderArrows();\n }\n\n html += \"<div class=\\\"splide__track\\\">\";\n html += \"<\" + listTag + \" class=\\\"splide__list\\\">\";\n html += this.renderSlides();\n html += \"</\" + listTag + \">\";\n html += \"</div>\";\n html += afterTrack || \"\";\n\n if (slider) {\n html += \"</div>\";\n html += afterSlider || \"\";\n }\n\n html += \"</div>\";\n return html;\n };\n\n return SplideRenderer;\n}();\n\nexport { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_OVERFLOW, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TOGGLE_PAUSE, CLASS_TOGGLE_PLAY, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_END_INDEX_CHANGED, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_OVERFLOW, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, LTR, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, SplideRenderer, State, TTB, Throttle, Splide as default };\n",".splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__arrow{-ms-flex-align:center;align-items:center;background:#ccc;border:0;border-radius:50%;cursor:pointer;display:-ms-flexbox;display:flex;height:2em;-ms-flex-pack:center;justify-content:center;opacity:.7;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:2em;z-index:1}.splide__arrow svg{fill:#000;height:1.2em;width:1.2em}.splide__arrow:hover:not(:disabled){opacity:.9}.splide__arrow:disabled{opacity:.3}.splide__arrow:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide__arrow--prev{left:1em}.splide__arrow--prev svg{transform:scaleX(-1)}.splide__arrow--next{right:1em}.splide.is-focus-in .splide__arrow:focus{outline:3px solid #0bf;outline-offset:3px}.splide__pagination{bottom:.5em;left:0;padding:0 1em;position:absolute;right:0;z-index:1}.splide__pagination__page{background:#ccc;border:0;border-radius:50%;display:inline-block;height:8px;margin:3px;opacity:.7;padding:0;position:relative;transition:transform .2s linear;width:8px}.splide__pagination__page.is-active{background:#fff;transform:scale(1.4);z-index:1}.splide__pagination__page:hover{cursor:pointer;opacity:.9}.splide__pagination__page:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide.is-focus-in .splide__pagination__page:focus{outline:3px solid #0bf;outline-offset:3px}.splide__progress__bar{background:#ccc;height:3px}.splide__slide{-webkit-tap-highlight-color:rgba(0,0,0,0)}.splide__slide:focus{outline:0}@supports(outline-offset:-3px){.splide__slide:focus-visible{outline:3px solid #0bf;outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.splide__slide:focus-visible{border:3px solid #0bf}}@supports(outline-offset:-3px){.splide.is-focus-in .splide__slide:focus{outline:3px solid #0bf;outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.splide.is-focus-in .splide__slide:focus{border:3px solid #0bf}.splide.is-focus-in .splide__track>.splide__list>.splide__slide:focus{border-color:#0bf}}.splide__toggle{cursor:pointer}.splide__toggle:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide.is-focus-in .splide__toggle:focus{outline:3px solid #0bf;outline-offset:3px}.splide__track--nav>.splide__list>.splide__slide{border:3px solid transparent;cursor:pointer}.splide__track--nav>.splide__list>.splide__slide.is-active{border:3px solid #000}.splide__arrows--rtl .splide__arrow--prev{left:auto;right:1em}.splide__arrows--rtl .splide__arrow--prev svg{transform:scaleX(1)}.splide__arrows--rtl .splide__arrow--next{left:1em;right:auto}.splide__arrows--rtl .splide__arrow--next svg{transform:scaleX(-1)}.splide__arrows--ttb .splide__arrow{left:50%;transform:translate(-50%)}.splide__arrows--ttb .splide__arrow--prev{top:1em}.splide__arrows--ttb .splide__arrow--prev svg{transform:rotate(-90deg)}.splide__arrows--ttb .splide__arrow--next{bottom:1em;top:auto}.splide__arrows--ttb .splide__arrow--next svg{transform:rotate(90deg)}.splide__pagination--ttb{bottom:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;left:auto;padding:1em 0;right:.5em;top:0}","import Splide from '@splidejs/splide';\nimport { JaaqClient, BASE_URL, createJaaqClient } from '@src/index';\nimport type { CollectionDTO, VideoDTO } from '@src/types';\nimport type { VideoSettings } from '@ui/shared/types';\nimport '@ui/shared/styles.css';\nimport './styles.css';\nimport '@splidejs/splide/css';\n\ntype CollectionPlayerConfig = {\n collectionId: string;\n client?: JaaqClient;\n apiKey?: string;\n clientId?: string;\n baseUrl?: string;\n autoplay?: boolean;\n showArrows?: boolean;\n showDots?: boolean;\n className?: string;\n videoSettings?: VideoSettings;\n};\n\ntype CollectionPlayerEventMap = {\n loaded: CollectionDTO;\n slidechange: { index: number; video: VideoDTO };\n error: Error;\n};\n\ntype CollectionPlayerEventCallback<T> = (_data: T) => void;\n\nexport class JaaqCollectionPlayer {\n private container: HTMLElement;\n private config: CollectionPlayerConfig;\n private client: JaaqClient | null = null;\n private splide: Splide | null = null;\n private playerElement: HTMLDivElement | null = null;\n private carouselElement: HTMLDivElement | null = null;\n private collectionData: CollectionDTO | null = null;\n private autoplayTimeoutId: number | null = null;\n private listeners: Map<keyof CollectionPlayerEventMap, Set<CollectionPlayerEventCallback<unknown>>> = new Map();\n\n constructor(container: HTMLElement | string, config: CollectionPlayerConfig) {\n this.container = typeof container === 'string' ? document.querySelector(container)! : container;\n\n if (!this.container) {\n throw new Error('Container element not found');\n }\n\n this.config = { autoplay: false, showArrows: true, showDots: true, ...config };\n\n if (config.client) {\n this.client = config.client;\n } else if (config.apiKey && config.clientId) {\n this.client = createJaaqClient({\n apiKey: config.apiKey,\n clientId: config.clientId,\n baseUrl: config.baseUrl || BASE_URL,\n });\n } else {\n throw new Error('Either client property or apiKey and clientId are required');\n }\n\n this.init();\n }\n\n private async init(): Promise<void> {\n this.render();\n await this.initCarousel();\n }\n\n private render(): void {\n this.container.innerHTML = '';\n\n this.playerElement = document.createElement('div');\n this.playerElement.className = `jaaq-collection-player ${this.config.className || ''}`;\n\n this.container.appendChild(this.playerElement);\n }\n\n private async initCarousel(): Promise<void> {\n if (!this.playerElement) return;\n\n const collectionId = this.config.collectionId;\n if (!collectionId) {\n this.emitError(new Error('collectionId is required'));\n return;\n }\n\n this.showLoading();\n\n try {\n if (!this.client) {\n throw new Error('Client is not initialized');\n }\n\n this.collectionData = await this.client.collections.getById(collectionId);\n\n if (!this.collectionData.videos || this.collectionData.videos.length === 0) {\n this.emitError(new Error('No videos found in collection'));\n return;\n }\n\n this.renderCarousel();\n this.initSplide();\n\n this.emit('loaded', this.collectionData);\n } catch (error) {\n this.emitError(error instanceof Error ? error : new Error('Failed to load collection'));\n }\n }\n\n private showLoading(): void {\n if (!this.playerElement) return;\n this.playerElement.innerHTML = `\n <div class=\"jaaq-collection-loading\">\n <div class=\"jaaq-collection-spinner\"></div>\n </div>\n `;\n }\n\n private renderCarousel(): void {\n if (!this.playerElement || !this.collectionData) return;\n\n this.playerElement.innerHTML = '';\n\n this.carouselElement = document.createElement('div');\n this.carouselElement.className = 'splide jaaq-collection-carousel';\n\n const track = document.createElement('div');\n track.className = 'splide__track';\n\n const list = document.createElement('ul');\n list.className = 'splide__list';\n\n this.collectionData.videos.forEach((video) => {\n const slide = document.createElement('li');\n slide.className = 'splide__slide';\n\n const player = document.createElement('jaaq-video-player') as HTMLElement;\n player.setAttribute('video-id', video.videoId);\n if (this.config.apiKey) player.setAttribute('api-key', this.config.apiKey);\n if (this.config.clientId) player.setAttribute('client-id', this.config.clientId);\n if (this.config.baseUrl) player.setAttribute('base-url', this.config.baseUrl);\n player.setAttribute('autoplay', 'false');\n player.setAttribute('width', '100%');\n\n if (this.config.videoSettings) {\n const settings = this.config.videoSettings;\n if (settings.controls !== undefined) {\n player.setAttribute('controls', String(settings.controls));\n }\n if (settings.showLogo !== undefined) {\n player.setAttribute('show-logo', String(settings.showLogo));\n }\n if (settings.showTitle !== undefined) {\n player.setAttribute('show-title', String(settings.showTitle));\n }\n if (settings.showAuthor !== undefined) {\n player.setAttribute('show-author', String(settings.showAuthor));\n }\n if (settings.showDescription !== undefined) {\n player.setAttribute('show-description', String(settings.showDescription));\n }\n if (settings.showCaptions !== undefined) {\n player.setAttribute('show-captions', String(settings.showCaptions));\n }\n if (settings.startMuted !== undefined) {\n player.setAttribute('start-muted', String(settings.startMuted));\n }\n if (settings.width !== undefined) {\n player.setAttribute('width', String(settings.width));\n }\n if (settings.height !== undefined) {\n player.setAttribute('height', String(settings.height));\n }\n }\n\n if (this.client && (player as any).client !== undefined) {\n (player as any).client = this.client;\n }\n\n slide.appendChild(player);\n list.appendChild(slide);\n });\n\n track.appendChild(list);\n this.carouselElement.appendChild(track);\n this.playerElement.appendChild(this.carouselElement);\n }\n\n private initSplide(): void {\n if (!this.carouselElement) return;\n\n this.splide = new Splide(this.carouselElement, {\n type: 'loop',\n perPage: 3,\n focus: 'center',\n gap: '0.5rem',\n perMove: 1,\n autoHeight: true,\n updateOnMove: true,\n padding: '5rem',\n breakpoints: {\n 768: {\n perPage: 1,\n },\n 1024: {\n perPage: 2,\n },\n },\n arrows: this.config.showArrows !== false,\n pagination: this.config.showDots !== false,\n autoplay: false,\n });\n\n this.splide.on('moved', (newIndex: number) => {\n this.handleSlideChange(newIndex);\n\n if (this.collectionData) {\n this.emit('slidechange', { index: newIndex, video: this.collectionData.videos[newIndex] });\n }\n });\n\n this.splide.mount();\n\n setTimeout(() => {\n if (this.splide) {\n this.handleSlideChange(this.splide.index);\n }\n }, 100);\n }\n\n private handleSlideChange(_activeIndex: number): void {\n if (!this.carouselElement) return;\n\n const isAutoplayEnabled = this.config.autoplay;\n\n if (this.autoplayTimeoutId !== null) {\n clearTimeout(this.autoplayTimeoutId);\n this.autoplayTimeoutId = null;\n }\n\n const originalSlides = this.carouselElement.querySelectorAll('.splide__slide:not(.splide__slide--clone)');\n\n originalSlides.forEach((slide) => {\n const player = slide.querySelector('jaaq-video-player') as any;\n if (!player) return;\n\n const isActive = slide.classList.contains('is-active');\n\n if (isActive) {\n if (isAutoplayEnabled) {\n this.autoplayTimeoutId = window.setTimeout(() => {\n player.play?.();\n }, 1000);\n }\n } else {\n player.pause?.();\n }\n });\n }\n\n private destroyCarousel(): void {\n if (this.autoplayTimeoutId !== null) {\n clearTimeout(this.autoplayTimeoutId);\n this.autoplayTimeoutId = null;\n }\n if (this.splide) {\n this.splide.destroy();\n this.splide = null;\n }\n if (this.playerElement) {\n this.playerElement.innerHTML = '';\n }\n this.collectionData = null;\n }\n\n private emitError(error: Error): void {\n if (this.playerElement) {\n this.playerElement.innerHTML = `\n <div class=\"jaaq-collection-error\">\n ${error.message}\n </div>\n `;\n }\n\n this.emit('error', error);\n }\n\n on<K extends keyof CollectionPlayerEventMap>(event: K, callback: CollectionPlayerEventCallback<CollectionPlayerEventMap[K]>): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n this.listeners.get(event)!.add(callback as CollectionPlayerEventCallback<unknown>);\n }\n\n off<K extends keyof CollectionPlayerEventMap>(event: K, callback: CollectionPlayerEventCallback<CollectionPlayerEventMap[K]>): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.delete(callback as CollectionPlayerEventCallback<unknown>);\n }\n }\n\n private emit<K extends keyof CollectionPlayerEventMap>(event: K, data: CollectionPlayerEventMap[K]): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.forEach((callback) => {\n callback(data);\n });\n }\n }\n\n refresh(): void {\n this.destroyCarousel();\n this.initCarousel();\n }\n\n next(): void {\n this.splide?.go('+1');\n }\n\n prev(): void {\n this.splide?.go('-1');\n }\n\n go(index: number): void {\n this.splide?.go(index);\n }\n\n destroy(): void {\n this.destroyCarousel();\n this.listeners.clear();\n this.container.innerHTML = '';\n }\n\n getCollection(): CollectionDTO | null {\n return this.collectionData;\n }\n}\n","import { JaaqVideoPlayer } from './VideoPlayer';\nimport type { PlayerConfig } from '@ui/shared/types';\n\n/**\n * Internal registry mapping DOM elements to their player instances\n */\nconst playerRegistry = new WeakMap<Element, JaaqVideoPlayer>();\n\n/**\n * Internal list of all initialized players for cleanup operations\n */\nconst playerList: Array<{ element: Element; player: JaaqVideoPlayer }> = [];\n\n/**\n * Parses data attributes from a DOM element to create player configuration\n * @param element - DOM element with data-* attributes\n * @returns Player configuration object or null if required attributes are missing\n */\nfunction parseDataAttributes(element: Element): PlayerConfig | null {\n const apiKey = element.getAttribute('data-api-key');\n const clientId = element.getAttribute('data-client-id');\n const videoId = element.getAttribute('data-video-id');\n\n if (!apiKey || !clientId || !videoId) {\n console.error('JAAQ Player: Missing required attributes (data-api-key, data-client-id, data-video-id)', element);\n return null;\n }\n\n const config: PlayerConfig = {\n apiKey,\n clientId,\n videoId,\n };\n\n const autoplay = element.getAttribute('data-autoplay');\n if (autoplay !== null) {\n config.autoplay = autoplay === 'true';\n }\n\n const width = element.getAttribute('data-width');\n if (width) {\n config.width = width;\n }\n\n const height = element.getAttribute('data-height');\n if (height) {\n config.height = height;\n }\n\n const baseUrl = element.getAttribute('data-base-url');\n if (baseUrl) {\n config.baseUrl = baseUrl;\n }\n\n const className = element.getAttribute('data-class-name');\n if (className) {\n config.className = className;\n }\n\n return config;\n}\n\n/**\n * Initializes a video player for a given DOM element\n * @param element - DOM element to initialize player for\n * @returns Initialized player instance or null if initialization fails\n */\nfunction initializePlayer(element: Element): JaaqVideoPlayer | null {\n if (playerRegistry.has(element)) {\n return playerRegistry.get(element)!;\n }\n\n const config = parseDataAttributes(element);\n if (!config) {\n return null;\n }\n\n try {\n const player = new JaaqVideoPlayer(element as HTMLElement, config);\n playerRegistry.set(element, player);\n playerList.push({ element, player });\n return player;\n } catch (error) {\n console.error('JAAQ Player: Failed to initialize player', error, element);\n return null;\n }\n}\n\n/**\n * Initializes all video players with data-jaaq-player attribute\n * @param rootElement - Root element to search for players (defaults to document)\n */\nfunction initializePlayers(rootElement: Document | Element = document): void {\n const elements = rootElement.querySelectorAll('[data-jaaq-player]');\n elements.forEach((element) => {\n initializePlayer(element);\n });\n}\n\n/**\n * Retrieves a player instance for a given element or selector\n * @param elementOrSelector - DOM element or CSS selector\n * @returns Player instance or null if not found\n */\nfunction getPlayer(elementOrSelector: Element | string): JaaqVideoPlayer | null {\n let element: Element | null;\n\n if (typeof elementOrSelector === 'string') {\n element = document.querySelector(elementOrSelector);\n if (!element) {\n console.error('JAAQ Player: Element not found for selector', elementOrSelector);\n return null;\n }\n } else {\n element = elementOrSelector;\n }\n\n return playerRegistry.get(element) || null;\n}\n\n/**\n * Destroys all initialized player instances and cleans up resources\n */\nfunction destroyAll(): void {\n playerList.forEach(({ element, player }) => {\n try {\n player.destroy();\n playerRegistry.delete(element);\n } catch (error) {\n console.error('JAAQ Player: Error destroying player', error);\n }\n });\n playerList.length = 0;\n}\n\n/**\n * Auto-initialization API for declarative video player setup\n * Automatically finds and initializes players marked with [data-jaaq-player]\n * @example\n * // Auto-initialization on page load\n * <div data-jaaq-player data-api-key=\"key\" data-client-id=\"id\" data-video-id=\"video\"></div>\n *\n * // Manual initialization\n * JaaqPlayer.init();\n *\n * // Get player instance\n * const player = JaaqPlayer.getPlayer('[data-video-id=\"video\"]');\n * player.on('play', () => console.log('Playing'));\n */\nexport const JaaqPlayer = {\n /** Initialize all players with [data-jaaq-player] attribute */\n init: initializePlayers,\n /** Get player instance by element or selector */\n getPlayer,\n /** Destroy all initialized players */\n destroyAll,\n};\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n initializePlayers();\n });\n } else {\n initializePlayers();\n }\n}\n",".jaaq-collection-player {\n width: 100%;\n max-width: 1400px;\n margin: 0 auto;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n}\n\n.jaaq-collection-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 400px;\n}\n\n.jaaq-collection-spinner {\n width: 50px;\n height: 50px;\n border: 4px solid rgba(0, 123, 255, 0.3);\n border-top-color: #007bff;\n border-radius: 50%;\n animation: jaaq-collection-spin 1s linear infinite;\n}\n\n@keyframes jaaq-collection-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.jaaq-collection-error {\n background: rgba(220, 53, 69, 0.9);\n color: white;\n padding: 16px 24px;\n border-radius: 8px;\n text-align: center;\n font-size: 14px;\n margin: 20px;\n}\n\n.jaaq-collection-carousel .splide__track {\n padding: 40px 0;\n}\n\n.jaaq-collection-carousel .splide__slide {\n opacity: 0.7;\n transition: all 0.3s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.jaaq-collection-carousel .splide__slide.is-active {\n opacity: 1;\n}\n\n.jaaq-collection-carousel .splide__slide jaaq-video-player {\n width: 100%;\n max-width: 600px;\n transition: all 0.3s ease;\n}\n\n.jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 800px;\n}\n\n.jaaq-collection-carousel .splide__arrow {\n background: rgba(0, 0, 0, 0.5);\n border: none;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n color: white;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n}\n\n.jaaq-collection-carousel .splide__arrow:hover {\n background: rgba(0, 0, 0, 0.8);\n transform: scale(1.1);\n}\n\n.jaaq-collection-carousel .splide__arrow:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n\n.jaaq-collection-carousel .splide__arrow svg {\n fill: white;\n width: 20px;\n height: 20px;\n}\n\n.jaaq-collection-carousel .splide__pagination {\n bottom: -30px;\n}\n\n.jaaq-collection-carousel .splide__pagination__page {\n background: #ccc;\n border: none;\n width: 10px;\n height: 10px;\n margin: 0 4px;\n border-radius: 50%;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.jaaq-collection-carousel .splide__pagination__page.is-active {\n background: white;\n transform: scale(1.3);\n}\n\n@media (max-width: 1024px) {\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 500px;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 650px;\n }\n}\n\n@media (max-width: 768px) {\n .jaaq-collection-carousel .splide__track {\n padding: 20px 0;\n }\n\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 400px;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 500px;\n }\n\n .jaaq-collection-carousel .splide__arrow {\n width: 40px;\n height: 40px;\n }\n}\n\n@media (max-width: 480px) {\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 100%;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 100%;\n }\n}\n","import Splide from '@splidejs/splide';\nimport { JaaqClient, BASE_URL } from '@src/index';\nimport type { CollectionDTO } from '@src/types';\nimport sharedStyles from '@ui/shared/styles.css';\nimport collectionStyles from './CollectionPlayer.css';\nimport splideStyles from '@splidejs/splide/css';\n\nconst COMPONENT_STYLES = `\n:host {\n display: block;\n width: 100%;\n}\n\n:host([hidden]) {\n display: none;\n}\n`;\n\nexport class JaaqCollectionPlayerElement extends HTMLElement {\n private splide: Splide | null = null;\n private container: HTMLDivElement | null = null;\n private carouselElement: HTMLDivElement | null = null;\n private clientInstance: JaaqClient | null = null;\n private connected = false;\n private collectionData: CollectionDTO | null = null;\n private autoplayTimeoutId: number | null = null;\n\n static get observedAttributes() {\n return [\n 'collection-id',\n 'api-key',\n 'client-id',\n 'subscription-id',\n 'base-url',\n 'autoplay',\n 'show-arrows',\n 'show-dots',\n 'video-settings',\n ];\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n this.connected = true;\n this.render();\n this.initCarousel();\n }\n\n disconnectedCallback() {\n this.connected = false;\n this.destroyCarousel();\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (!this.connected || oldValue === newValue) return;\n\n if (name === 'collection-id' || name === 'video-settings') {\n this.destroyCarousel();\n this.initCarousel();\n }\n\n if (name === 'show-arrows' || name === 'show-dots') {\n this.destroyCarousel();\n this.initCarousel();\n }\n }\n\n private getBooleanAttr(name: string, defaultValue: boolean): boolean {\n const v = this.getAttribute(name);\n if (v === null) return defaultValue;\n return v !== 'false';\n }\n\n private render() {\n if (!this.shadowRoot) return;\n\n const styleSheet = document.createElement('style');\n styleSheet.textContent = `\n ${sharedStyles}\n ${collectionStyles}\n ${splideStyles}\n ${COMPONENT_STYLES}\n `;\n\n this.container = document.createElement('div');\n this.container.className = 'jaaq-collection-player';\n\n this.shadowRoot.appendChild(styleSheet);\n this.shadowRoot.appendChild(this.container);\n }\n\n private async initCarousel() {\n if (!this.container) return;\n\n const collectionId = this.getAttribute('collection-id');\n if (!collectionId) {\n this.emitError(new Error('collection-id attribute is required'));\n return;\n }\n\n const apiKey = this.getAttribute('api-key');\n const clientId = this.getAttribute('client-id');\n const baseUrl = this.getAttribute('base-url') || undefined;\n\n if (!this.clientInstance && !apiKey && !clientId) {\n this.emitError(new Error('Either client property or api-key and client-id attributes are required'));\n return;\n }\n\n this.showLoading();\n\n try {\n const client =\n this.clientInstance ||\n JaaqClient.init({\n apiKey: apiKey!,\n clientId: clientId!,\n baseUrl: baseUrl || BASE_URL,\n });\n\n this.collectionData = await client.collections.getById(collectionId);\n\n if (!this.collectionData.videos || this.collectionData.videos.length === 0) {\n this.emitError(new Error('No videos found in collection'));\n return;\n }\n\n this.renderCarousel();\n this.initSplide();\n\n this.dispatchEvent(\n new CustomEvent('jaaq:collection:loaded', {\n detail: this.collectionData,\n bubbles: true,\n composed: true,\n }),\n );\n } catch (error) {\n this.emitError(error instanceof Error ? error : new Error('Failed to load collection'));\n }\n }\n\n private showLoading() {\n if (!this.container) return;\n this.container.innerHTML = `\n <div class=\"jaaq-collection-loading\">\n <div class=\"jaaq-collection-spinner\"></div>\n </div>\n `;\n }\n\n private renderCarousel() {\n if (!this.container || !this.collectionData) return;\n\n this.container.innerHTML = '';\n\n this.carouselElement = document.createElement('div');\n this.carouselElement.className = 'splide jaaq-collection-carousel';\n\n const track = document.createElement('div');\n track.className = 'splide__track';\n\n const list = document.createElement('ul');\n list.className = 'splide__list';\n\n const apiKey = this.getAttribute('api-key');\n const clientId = this.getAttribute('client-id');\n const baseUrl = this.getAttribute('base-url');\n const videoSettingsAttr = this.getAttribute('video-settings');\n let videoSettings: Record<string, unknown> | null = null;\n if (videoSettingsAttr) {\n try {\n videoSettings = JSON.parse(videoSettingsAttr);\n } catch (e) {\n console.warn('[CollectionPlayer] Failed to parse video-settings attribute', e);\n }\n }\n\n this.collectionData.videos.forEach((video) => {\n const slide = document.createElement('li');\n slide.className = 'splide__slide';\n\n const player = document.createElement('jaaq-video-player');\n player.setAttribute('video-id', video.videoId);\n if (apiKey) player.setAttribute('api-key', apiKey);\n if (clientId) player.setAttribute('client-id', clientId);\n if (baseUrl) player.setAttribute('base-url', baseUrl);\n player.setAttribute('autoplay', 'false');\n player.setAttribute('width', '100%');\n\n if (videoSettings) {\n if (videoSettings.controls !== undefined) {\n player.setAttribute('controls', String(videoSettings.controls));\n }\n if (videoSettings.showLogo !== undefined) {\n player.setAttribute('show-logo', String(videoSettings.showLogo));\n }\n if (videoSettings.showTitle !== undefined) {\n player.setAttribute('show-title', String(videoSettings.showTitle));\n }\n if (videoSettings.showAuthor !== undefined) {\n player.setAttribute('show-author', String(videoSettings.showAuthor));\n }\n if (videoSettings.showDescription !== undefined) {\n player.setAttribute('show-description', String(videoSettings.showDescription));\n }\n if (videoSettings.showCaptions !== undefined) {\n player.setAttribute('show-captions', String(videoSettings.showCaptions));\n }\n if (videoSettings.startMuted !== undefined) {\n player.setAttribute('start-muted', String(videoSettings.startMuted));\n }\n if (videoSettings.width !== undefined) {\n player.setAttribute('width', String(videoSettings.width));\n }\n if (videoSettings.height !== undefined) {\n player.setAttribute('height', String(videoSettings.height));\n }\n }\n\n slide.appendChild(player);\n list.appendChild(slide);\n });\n\n track.appendChild(list);\n this.carouselElement.appendChild(track);\n this.container.appendChild(this.carouselElement);\n }\n\n private initSplide() {\n if (!this.carouselElement) return;\n\n const showArrows = this.getBooleanAttr('show-arrows', true);\n const showDots = this.getBooleanAttr('show-dots', true);\n\n this.splide = new Splide(this.carouselElement, {\n type: 'loop',\n perPage: 3,\n focus: 'center',\n gap: '0.5rem',\n perMove: 1,\n autoHeight: true,\n updateOnMove: true,\n padding: '5 rem',\n breakpoints: {\n 768: {\n perPage: 1,\n },\n 1024: {\n perPage: 2,\n },\n },\n arrows: showArrows,\n pagination: showDots,\n autoplay: false,\n });\n\n this.splide.on('moved', (newIndex: number) => {\n console.log('[CollectionPlayer] Splide moved event', {\n newIndex,\n splideIndex: this.splide?.index,\n Components: this.splide?.Components,\n });\n this.handleSlideChange(newIndex);\n\n this.dispatchEvent(\n new CustomEvent('jaaq:collection:slidechange', {\n detail: { index: newIndex, video: this.collectionData?.videos[newIndex] },\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.splide.mount();\n\n console.log('[CollectionPlayer] After mount', {\n splideIndex: this.splide.index,\n length: this.splide.length,\n });\n\n setTimeout(() => {\n if (this.splide) {\n console.log('[CollectionPlayer] Initial handleSlideChange after DOM update');\n this.handleSlideChange(this.splide.index);\n }\n }, 100);\n }\n\n private handleSlideChange(activeIndex: number) {\n if (!this.carouselElement) return;\n\n const isAutoplayEnabled = this.hasAttribute('autoplay') && this.getAttribute('autoplay') !== 'false';\n console.log('[CollectionPlayer] handleSlideChange called', { activeIndex, isAutoplayEnabled });\n\n if (this.autoplayTimeoutId !== null) {\n console.log('[CollectionPlayer] Clearing existing autoplay timeout', { timeoutId: this.autoplayTimeoutId });\n clearTimeout(this.autoplayTimeoutId);\n this.autoplayTimeoutId = null;\n }\n\n const activeSlide = this.carouselElement.querySelector('.splide__slide.is-active:not(.splide__slide--clone)');\n const activePlayer = activeSlide?.querySelector('jaaq-video-player') as any;\n const activeVideoId = activePlayer?.getAttribute('video-id');\n\n console.log('[CollectionPlayer] Active slide from DOM:', {\n activeIndex,\n activeVideoId,\n foundActiveSlide: !!activeSlide,\n });\n\n const originalSlides = this.carouselElement.querySelectorAll('.splide__slide:not(.splide__slide--clone)');\n\n Array.from(originalSlides).map((slide, idx) => {\n const player = slide.querySelector('jaaq-video-player') as any;\n const videoId = player?.getAttribute('video-id') || 'unknown';\n const isActive = slide.classList.contains('is-active');\n return {\n index: idx,\n videoId,\n isActive,\n };\n });\n\n originalSlides.forEach((slide, index) => {\n const player = slide.querySelector('jaaq-video-player') as any;\n if (!player) return;\n\n const videoId = player.getAttribute('video-id');\n const isActive = slide.classList.contains('is-active');\n\n if (isActive) {\n if (isAutoplayEnabled) {\n this.autoplayTimeoutId = window.setTimeout(() => {\n console.log('[CollectionPlayer] 1s delay complete, playing video', {\n index,\n videoId,\n });\n player.play?.();\n }, 1000);\n }\n } else {\n player.pause?.();\n }\n });\n }\n\n private destroyCarousel() {\n if (this.autoplayTimeoutId !== null) {\n clearTimeout(this.autoplayTimeoutId);\n this.autoplayTimeoutId = null;\n }\n if (this.splide) {\n this.splide.destroy();\n this.splide = null;\n }\n if (this.container) {\n this.container.innerHTML = '';\n }\n this.collectionData = null;\n }\n\n private emitError(error: Error) {\n if (this.container) {\n this.container.innerHTML = `\n <div class=\"jaaq-collection-error\">\n ${error.message}\n </div>\n `;\n }\n\n this.dispatchEvent(\n new CustomEvent('jaaq:collection:error', {\n detail: error,\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n get client(): JaaqClient | null {\n return this.clientInstance;\n }\n\n set client(value: JaaqClient | null) {\n this.clientInstance = value;\n if (this.connected) {\n this.destroyCarousel();\n this.initCarousel();\n }\n }\n\n get collectionId(): string | null {\n return this.getAttribute('collection-id');\n }\n\n set collectionId(value: string | null) {\n if (value) {\n this.setAttribute('collection-id', value);\n } else {\n this.removeAttribute('collection-id');\n }\n }\n\n refresh(): void {\n this.destroyCarousel();\n this.initCarousel();\n }\n\n next(): void {\n this.splide?.go('+1');\n }\n\n prev(): void {\n this.splide?.go('-1');\n }\n\n go(index: number): void {\n this.splide?.go(index);\n }\n\n destroy(): void {\n this.destroyCarousel();\n }\n\n getCollection(): CollectionDTO | null {\n return this.collectionData;\n }\n}\n","import { JaaqVideoPlayer } from '@ui/vanilla/VideoPlayer';\nimport type { JaaqClient } from '@src/index';\nimport type { PlayerState } from '@ui/shared/types';\nimport sharedStyles from '@ui/shared/styles.css';\nimport vanillaStyles from '@ui/vanilla/styles.css';\n\nconst COMPONENT_STYLES = `\n:host {\n display: block;\n width: 100%;\n}\n\n:host([hidden]) {\n display: none;\n}\n`;\n\n/**\n * Custom web component for JAAQ video player with Shadow DOM encapsulation\n * Provides a framework-agnostic video player with custom controls and HLS support\n *\n * @example\n * // Declarative usage\n * <jaaq-video-player\n * video-id=\"video-123\"\n * api-key=\"key\"\n * client-id=\"client\"\n * autoplay=\"false\">\n * </jaaq-video-player>\n *\n * @example\n * // Programmatic usage\n * const player = document.createElement('jaaq-video-player');\n * player.setAttribute('video-id', 'video-123');\n * player.addEventListener('jaaq:play', () => console.log('Playing'));\n * document.body.appendChild(player);\n */\nexport class JaaqVideoPlayerElement extends HTMLElement {\n private player: JaaqVideoPlayer | null = null;\n private container: HTMLDivElement | null = null;\n private clientInstance: JaaqClient | null = null;\n private connected = false;\n\n static get observedAttributes() {\n return [\n 'video-id',\n 'api-key',\n 'client-id',\n 'autoplay',\n 'base-url',\n 'width',\n 'height',\n 'controls',\n 'show-logo',\n 'show-title',\n 'show-author',\n 'show-description',\n 'show-captions',\n 'start-muted',\n ];\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n this.connected = true;\n this.render();\n this.initPlayer();\n }\n\n disconnectedCallback() {\n this.connected = false;\n this.destroyPlayer();\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (!this.connected || oldValue === newValue) return;\n\n if (name === 'video-id' && this.player) {\n this.destroyPlayer();\n this.initPlayer();\n } else if (name === 'width' || name === 'height') {\n this.updateContainerStyles();\n } else if (\n name === 'controls' ||\n name === 'show-logo' ||\n name === 'show-title' ||\n name === 'show-author' ||\n name === 'show-description' ||\n name === 'show-captions' ||\n name === 'start-muted'\n ) {\n if (this.player) {\n const features: any = {};\n if (name === 'controls') {\n features.controls = !this.hasAttribute('controls') || this.getAttribute('controls') !== 'false';\n } else if (name === 'show-logo') {\n features.showLogo = !this.hasAttribute('show-logo') || this.getAttribute('show-logo') !== 'false';\n } else if (name === 'show-title') {\n features.showTitle = !this.hasAttribute('show-title') || this.getAttribute('show-title') !== 'false';\n } else if (name === 'show-author') {\n features.showAuthor = !this.hasAttribute('show-author') || this.getAttribute('show-author') !== 'false';\n } else if (name === 'show-description') {\n features.showDescription = !this.hasAttribute('show-description') || this.getAttribute('show-description') !== 'false';\n } else if (name === 'show-captions') {\n features.showCaptions = !this.hasAttribute('show-captions') || this.getAttribute('show-captions') !== 'false';\n } else if (name === 'start-muted') {\n features.startMuted = this.hasAttribute('start-muted') && this.getAttribute('start-muted') !== 'false';\n }\n this.player.setFeatures(features);\n }\n }\n }\n\n private render() {\n if (!this.shadowRoot) return;\n\n const styleSheet = document.createElement('style');\n styleSheet.textContent = `\n ${sharedStyles}\n ${vanillaStyles}\n ${COMPONENT_STYLES}\n `;\n\n this.container = document.createElement('div');\n this.container.className = 'jaaq-webcomponent-container';\n\n this.shadowRoot.appendChild(styleSheet);\n this.shadowRoot.appendChild(this.container);\n\n this.updateContainerStyles();\n }\n\n private updateContainerStyles() {\n if (!this.container) return;\n\n const width = this.getAttribute('width') || '100%';\n const height = this.getAttribute('height') || 'auto';\n\n this.container.style.width = width;\n this.container.style.height = height;\n }\n\n private async initPlayer() {\n if (!this.container || this.player) return;\n\n const videoId = this.getAttribute('video-id');\n if (!videoId) {\n this.emitError(new Error('video-id attribute is required'));\n return;\n }\n\n const apiKey = this.getAttribute('api-key');\n const clientId = this.getAttribute('client-id');\n const baseUrl = this.getAttribute('base-url') || undefined;\n const autoplay = this.hasAttribute('autoplay') && this.getAttribute('autoplay') !== 'false';\n const controls = !this.hasAttribute('controls') || this.getAttribute('controls') !== 'false';\n\n const showLogo = !this.hasAttribute('show-logo') || this.getAttribute('show-logo') !== 'false';\n const showTitle = !this.hasAttribute('show-title') || this.getAttribute('show-title') !== 'false';\n const showAuthor = !this.hasAttribute('show-author') || this.getAttribute('show-author') !== 'false';\n const showDescription = !this.hasAttribute('show-description') || this.getAttribute('show-description') !== 'false';\n const showCaptions = !this.hasAttribute('show-captions') || this.getAttribute('show-captions') !== 'false';\n const startMuted = this.hasAttribute('start-muted') && this.getAttribute('start-muted') !== 'false';\n\n if (!this.clientInstance && !apiKey && !clientId) {\n this.emitError(new Error('Either client property or api-key and client-id attributes are required'));\n return;\n }\n\n try {\n this.player = new JaaqVideoPlayer(this.container, {\n videoId: videoId ?? undefined,\n apiKey: apiKey ?? undefined,\n clientId: clientId ?? undefined,\n client: this.clientInstance || undefined,\n baseUrl,\n autoplay,\n controls,\n showLogo,\n showTitle,\n showAuthor,\n showDescription,\n showCaptions,\n startMuted,\n });\n\n this.attachPlayerEvents();\n } catch (error) {\n this.emitError(error instanceof Error ? error : new Error('Failed to initialize player'));\n }\n }\n\n private attachPlayerEvents() {\n if (!this.player) return;\n\n this.player.on('loaded', (video) => {\n this.dispatchEvent(\n new CustomEvent('jaaq:loaded', {\n detail: video,\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('play', () => {\n this.dispatchEvent(\n new CustomEvent('jaaq:play', {\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('pause', () => {\n this.dispatchEvent(\n new CustomEvent('jaaq:pause', {\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('timeupdate', (time) => {\n this.dispatchEvent(\n new CustomEvent('jaaq:timeupdate', {\n detail: time,\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('volumechange', (volume) => {\n this.dispatchEvent(\n new CustomEvent('jaaq:volumechange', {\n detail: volume,\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('ended', () => {\n this.dispatchEvent(\n new CustomEvent('jaaq:ended', {\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('error', (error) => {\n this.emitError(error);\n });\n\n this.player.on('fullscreenchange', (isFullscreen) => {\n this.dispatchEvent(\n new CustomEvent('jaaq:fullscreenchange', {\n detail: isFullscreen,\n bubbles: true,\n composed: true,\n }),\n );\n });\n }\n\n private emitError(error: Error) {\n this.dispatchEvent(\n new CustomEvent('jaaq:error', {\n detail: error,\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private destroyPlayer() {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n\n /**\n * Gets the current JaaqClient instance\n */\n get client(): JaaqClient | null {\n return this.clientInstance;\n }\n\n /**\n * Sets a JaaqClient instance for the player to use\n * Reinitializes the player if already connected\n */\n set client(value: JaaqClient | null) {\n this.clientInstance = value;\n if (this.connected) {\n this.destroyPlayer();\n this.initPlayer();\n }\n }\n\n /**\n * Gets the current video ID\n */\n get videoId(): string | null {\n return this.getAttribute('video-id');\n }\n\n /**\n * Sets the video ID\n * Updates the video-id attribute and triggers player reinitialization\n */\n set videoId(value: string | null) {\n if (value) {\n this.setAttribute('video-id', value);\n } else {\n this.removeAttribute('video-id');\n }\n }\n\n /**\n * Starts or resumes video playback\n */\n play(): void {\n this.player?.play();\n }\n\n /**\n * Pauses video playback\n */\n pause(): void {\n this.player?.pause();\n }\n\n /**\n * Sets the playback volume\n * @param volume - Volume level between 0 (silent) and 1 (maximum)\n */\n setVolume(volume: number): void {\n this.player?.setVolume(volume);\n }\n\n /**\n * Toggles audio mute state\n */\n toggleMute(): void {\n this.player?.toggleMute();\n }\n\n /**\n * Seeks to a specific time in the video\n * @param time - Target time in seconds\n */\n seek(time: number): void {\n this.player?.seek(time);\n }\n\n /**\n * Returns the current player state\n * @returns Current player state object or null if player not initialized\n */\n getState(): PlayerState | null {\n return this.player?.getState() || null;\n }\n\n /**\n * Destroys the player instance and cleans up resources\n */\n destroy(): void {\n this.destroyPlayer();\n }\n}\n","import { JaaqVideoPlayerElement } from './VideoPlayer';\nimport { JaaqCollectionPlayerElement } from './CollectionPlayer';\n\nconst COMPONENT_TAGS = {\n VIDEO_PLAYER: 'jaaq-video-player',\n COLLECTION_PLAYER: 'jaaq-collection-player',\n};\n\n/**\n * Registers JAAQ custom elements (<jaaq-video-player> and <jaaq-collection-player>)\n * Safe to call multiple times - only registers if not already registered\n *\n * @example\n * import { registerJaaqComponents } from '@jaaq/jaaq-sdk-js/ui/webcomponents';\n * registerJaaqComponents();\n */\nexport function registerJaaqComponents(): void {\n if (typeof window === 'undefined' || typeof customElements === 'undefined') {\n console.warn('Custom Elements API is not available. Web components cannot be registered.');\n return;\n }\n\n if (!customElements.get(COMPONENT_TAGS.VIDEO_PLAYER)) {\n customElements.define(COMPONENT_TAGS.VIDEO_PLAYER, JaaqVideoPlayerElement);\n }\n\n if (!customElements.get(COMPONENT_TAGS.COLLECTION_PLAYER)) {\n customElements.define(COMPONENT_TAGS.COLLECTION_PLAYER, JaaqCollectionPlayerElement);\n }\n}\n\n/**\n * Checks if the JAAQ web components are already registered\n * @returns True if components are registered, false otherwise\n */\nexport function isRegistered(): boolean {\n if (typeof window === 'undefined' || typeof customElements === 'undefined') {\n return false;\n }\n return !!customElements.get(COMPONENT_TAGS.VIDEO_PLAYER) && !!customElements.get(COMPONENT_TAGS.COLLECTION_PLAYER);\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n registerJaaqComponents();\n });\n } else {\n registerJaaqComponents();\n }\n}\n"],"names":["clamp","COMPONENT_STYLES"],"mappings":"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","x_google_ignoreList":[8,9]}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/core/httpClient.ts","../../../src/resources/v1/videos.ts","../../../src/resources/v1/collections.ts","../../../src/resources/v2/videos.ts","../../../src/resources/v2/collections.ts","../../../src/index.ts","../../../src/ui/shared/controls.ts","../../src/ui/shared/styles.css","../../src/ui/vanilla/styles.css","../../../src/ui/vanilla/VideoPlayer.ts","../../node_modules/.pnpm/@splidejs+splide@4.1.4/node_modules/@splidejs/splide/dist/js/splide.esm.js","../../node_modules/.pnpm/@splidejs+splide@4.1.4/node_modules/@splidejs/splide/dist/css/splide.min.css","../../../src/ui/vanilla/CollectionPlayer.ts","../../../src/ui/vanilla/autoInit.ts","../../src/ui/webcomponents/CollectionPlayer.css","../../../src/ui/webcomponents/CollectionPlayer.ts","../../../src/ui/webcomponents/VideoPlayer.ts","../../../src/ui/webcomponents/register.ts"],"sourcesContent":["export type FetchLike = typeof globalThis.fetch;\ntype RequestOptions = Parameters<typeof globalThis.fetch>[1];\ntype FetchResponse = Awaited<ReturnType<FetchLike>>;\n\nexport interface HttpClientConfig {\n baseUrl: string;\n apiVersion: string;\n apiKey: string;\n clientId: string;\n fetch?: FetchLike;\n timeoutMs?: number;\n}\n\nexport interface HttpClient {\n get<T>(_path: string, _init?: RequestOptions): Promise<T>;\n post<T>(_path: string, _body?: unknown, _init?: RequestOptions): Promise<T>;\n put<T>(_path: string, _body?: unknown, _init?: RequestOptions): Promise<T>;\n patch<T>(_path: string, _body?: unknown, _init?: RequestOptions): Promise<T>;\n delete<T>(_path: string, _init?: RequestOptions): Promise<T>;\n}\n\nasync function parseJson<T>(res: FetchResponse): Promise<T> {\n if (!res.ok) {\n const text = await res.text().catch(() => '');\n throw new Error(`HTTP ${res.status}: ${text || res.statusText}`);\n }\n if (res.status === 204) return undefined as unknown as T;\n return res.json() as Promise<T>;\n}\n\nfunction joinUrl(baseUrl: string, apiVersion: string, clientId: string, path: string): string {\n // return path if it is an absolute URL\n if (/^https?:\\/\\//i.test(path)) return path;\n const base = baseUrl.replace(/\\/+$/, '');\n const relative = path.replace(/^\\/+/, '');\n return `${base}/b2b/${apiVersion}/subscription/${encodeURIComponent(clientId)}${relative.startsWith('/') ? relative : `/${relative}`}`;\n}\n\nfunction convertToValidAPIVersion(version: string): string {\n const v = version.toLowerCase();\n if (v === 'v1' || v === 'v2') return v;\n return 'v1'; // default to v1 if invalid version provided\n}\n\nexport function createHttpClient(config: HttpClientConfig): HttpClient {\n const { baseUrl, apiKey, clientId, fetch: fetchImpl, apiVersion } = config;\n\n const f: FetchLike | undefined = fetchImpl ?? (globalThis.fetch as FetchLike | undefined);\n if (!f) {\n throw new Error('No fetch implementation found. Provide one in SDKConfig.fetch for Node or custom environments.');\n }\n\n const baseHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n };\n\n const fullUrl = (path: string) => joinUrl(baseUrl, convertToValidAPIVersion(apiVersion), clientId, path);\n\n const request = async <T>(method: string, path: string, init?: RequestOptions, body?: unknown) => {\n const reqInit: RequestOptions = {\n method,\n headers: {\n ...baseHeaders,\n ...(init?.headers as Record<string, string> | undefined),\n },\n ...init,\n };\n if (body !== undefined) reqInit.body = JSON.stringify(body);\n const res = await f(fullUrl(path), reqInit);\n return parseJson<T>(res);\n };\n\n return {\n get: <T>(path: string, init?: RequestOptions) => request<T>('GET', path, init),\n post: <T>(path: string, body?: unknown, init?: RequestOptions) => request<T>('POST', path, init, body),\n put: <T>(path: string, body?: unknown, init?: RequestOptions) => request<T>('PUT', path, init, body),\n patch: <T>(path: string, body?: unknown, init?: RequestOptions) => request<T>('PATCH', path, init, body),\n delete: <T>(path: string, init?: RequestOptions) => request<T>('DELETE', path, init),\n };\n}\n","import type { HttpClient } from '@core/httpClient';\nimport type { VideoDTO } from '@src/types';\n\nexport type VideosResource = {\n getById(_id: string): Promise<VideoDTO>;\n};\n\nexport function createVideosResource(http: HttpClient): VideosResource {\n return {\n async getById(id: string) {\n const path = `/videos/${encodeURIComponent(id)}`;\n const response = await http.get<{ video: VideoDTO }>(path);\n return response.video;\n },\n };\n}\n","import type { HttpClient } from '@core/httpClient';\nimport type { CollectionDTO } from '@src/types';\n\nexport type CollectionsResource = {\n list(): Promise<CollectionDTO[]>;\n getById(_id: string): Promise<CollectionDTO>;\n};\n\nexport function createCollectionsResource(http: HttpClient): CollectionsResource {\n return {\n async list() {\n const path = '/collections';\n const response = await http.get<{ collections: CollectionDTO[] }>(path);\n return response.collections;\n },\n async getById(id: string) {\n const path = `/collections/${encodeURIComponent(id)}`;\n const response = await http.get<{ collection: CollectionDTO }>(path);\n return response.collection;\n },\n };\n}\n","import type { HttpClient } from '@core/httpClient';\nimport type { VideoV2DTO } from '@src/types';\n\nexport type VideosResourceV2 = {\n getById(_id: string): Promise<VideoV2DTO>;\n};\n\nexport function createVideosResourceV2(http: HttpClient): VideosResourceV2 {\n return {\n async getById(id: string) {\n const path = `/videos/${encodeURIComponent(id)}`;\n const response = await http.get<{ video: VideoV2DTO }>(path);\n return response.video;\n },\n };\n}\n","import type { HttpClient } from '@core/httpClient';\nimport type { CollectionV2DTO } from '@src/types';\n\nexport type CollectionsResourceV2 = {\n list(): Promise<CollectionV2DTO[]>;\n getById(_id: string): Promise<CollectionV2DTO>;\n};\n\nexport function createCollectionsResourceV2(http: HttpClient): CollectionsResourceV2 {\n return {\n async list() {\n const path = '/collections';\n const response = await http.get<{ collections: CollectionV2DTO[] }>(path);\n return response.collections;\n },\n async getById(id: string) {\n const path = `/collections/${encodeURIComponent(id)}`;\n const response = await http.get<{ collection: CollectionV2DTO }>(path);\n return response.collection;\n },\n };\n}\n","import { createHttpClient, type HttpClient, type FetchLike } from '@core/httpClient';\nimport {\n createCollectionsResource,\n createCollectionsResourceV2,\n createVideosResource,\n createVideosResourceV2,\n type VideosResource,\n type VideosResourceV2,\n type CollectionsResource,\n type CollectionsResourceV2,\n} from '@src/resources';\n\n// Public type exports for consumers (barrel)\nexport * from '@src/types';\n\nexport const BASE_URL = process.env.JAAQ_API_URL || 'https://api.jaaq.app';\n\nexport interface SDKConfig {\n baseUrl?: string; // Pending to approve\n apiVersion?: string; // Optional API version override (defaults to 'v1')\n apiKey: string; // Provided by backend per client\n clientId: string; // Provided by each consuming company at init\n fetch?: FetchLike; // Optional fetch injection (Node/custom envs) // Pending to approve\n timeoutMs?: number;\n}\n\nexport type V1 = {\n videos: VideosResource;\n collections: CollectionsResource;\n};\n\nexport type V2 = {\n videos: VideosResourceV2;\n collections: CollectionsResourceV2;\n};\n\nexport type ClientVersion = V1 | V2;\n\nexport class JaaqClient<T extends ClientVersion = V1> {\n public readonly videos: T['videos'];\n public readonly collections: T['collections'];\n\n // Keep constructor private to enforce controlled instantiation.\n private constructor(http: HttpClient, apiVersion: string) {\n if (apiVersion === 'v2') {\n this.videos = createVideosResourceV2(http);\n this.collections = createCollectionsResourceV2(http);\n } else {\n this.videos = createVideosResource(http);\n this.collections = createCollectionsResource(http);\n }\n }\n\n /**\n * Public \"friend\" constructor that remains inside the class boundary.\n * This method is callable from the module-level build function\n * without exposing `new JaaqClient(...)` to consumers.\n */\n static fromHttp<T extends ClientVersion = V1>(http: HttpClient, apiVersion: string): JaaqClient<T> {\n return new JaaqClient(http, apiVersion);\n }\n\n /**\n * OO-friendly static initializer.\n * Delegates to the single source of truth: `buildClient`.\n */\n static init<T extends ClientVersion = V1>(config: SDKConfig): JaaqClient<T> {\n return buildClient(config);\n }\n}\n\n/**\n * Canonical factory (idiomatic for JS/TS).\n * Delegates to the single source of truth: `buildClient`.\n */\nexport function createJaaqClient<T extends ClientVersion = V1>(config: SDKConfig): JaaqClient<T> {\n return buildClient(config);\n}\n\nexport function createJaaqClientV1(config: SDKConfig): JaaqClient<V1> {\n return createJaaqClient({ ...config, apiVersion: 'v1' });\n}\n\nexport function createJaaqClientV2(config: SDKConfig): JaaqClient<V2> {\n return createJaaqClient({ ...config, apiVersion: 'v2' });\n}\n\n/**\n * Single source of truth for constructing the client.\n * Both `createJaaqClient` and `JaaqClient.init` call this function.\n * The constructor stays private; instantiation is funneled via `JaaqClient.fromHttp`.\n */\nfunction buildClient<T extends ClientVersion = V1>(config: SDKConfig): JaaqClient<T> {\n const { baseUrl = BASE_URL, apiKey, clientId, fetch: fetchImpl, apiVersion = 'v1' } = config;\n\n const http = createHttpClient({\n baseUrl,\n apiKey,\n clientId,\n fetch: fetchImpl ?? (globalThis.fetch as FetchLike | undefined),\n apiVersion,\n });\n\n return JaaqClient.fromHttp(http, apiVersion);\n}\n","/**\n * Formats a time value in seconds to a human-readable string (M:SS format)\n * @param seconds - Time in seconds to format\n * @returns Formatted time string in M:SS format, or \"0:00\" if invalid\n * @example\n * formatTime(65) // \"1:05\"\n * formatTime(0) // \"0:00\"\n * formatTime(125) // \"2:05\"\n */\nexport function formatTime(seconds: number): string {\n if (isNaN(seconds) || !isFinite(seconds)) {\n return '0:00';\n }\n\n const minutes = Math.floor(seconds / 60);\n const secs = Math.floor(seconds % 60);\n return `${minutes}:${secs.toString().padStart(2, '0')}`;\n}\n\n/**\n * Checks if a video URL is an HLS (HTTP Live Streaming) source\n * @param url - Video URL to check\n * @returns True if the URL contains .m3u8 extension, false otherwise\n */\nexport function isHLSSource(url: string): boolean {\n return url.includes('.m3u8');\n}\n\n/**\n * Toggles fullscreen mode for the given element\n * If not in fullscreen, requests fullscreen for the element\n * If already in fullscreen, exits fullscreen mode\n * @param element - HTML element to toggle fullscreen for\n * @returns Promise that resolves when fullscreen state changes\n */\nexport function toggleFullscreen(element: HTMLElement): Promise<void> {\n if (!document.fullscreenElement) {\n return element.requestFullscreen();\n } else {\n return document.exitFullscreen();\n }\n}\n\n/**\n * Clamps a numeric value between a minimum and maximum value\n * @param value - Value to clamp\n * @param min - Minimum allowed value\n * @param max - Maximum allowed value\n * @returns The clamped value\n * @example\n * clamp(5, 0, 10) // 5\n * clamp(-5, 0, 10) // 0\n * clamp(15, 0, 10) // 10\n */\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n",".jaaq-video-player {\n position: relative;\n width: 100%;\n max-width: none;\n margin: 0;\n background: #000;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n aspect-ratio: 9 / 16;\n}\n\n.jaaq-video-player video {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: block;\n background: #000;\n object-fit: cover;\n}\n\n.jaaq-video-player.fullscreen {\n max-width: 100%;\n border-radius: 0;\n aspect-ratio: auto;\n}\n\n.jaaq-controls {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent);\n padding: 40px 16px 16px;\n opacity: 1;\n z-index: 5;\n}\n\n.jaaq-progress-bar {\n width: 100%;\n flex: 1 1 0;\n min-width: 80px;\n height: 4px;\n background: rgba(255, 255, 255, 0.3);\n border-radius: 2px;\n cursor: pointer;\n position: relative;\n}\n\n.jaaq-progress-filled {\n height: 100%;\n background: #007bff;\n border-radius: 2px;\n width: 0%;\n transition: width 0.1s linear;\n}\n\n.jaaq-progress-bar:hover .jaaq-progress-filled {\n background: #0056b3;\n}\n\n.jaaq-controls-bottom {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n color: white;\n}\n\n.jaaq-control-btn {\n background: transparent;\n border: none;\n color: white;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n font-size: 20px;\n line-height: 1;\n}\n\n.jaaq-control-btn:hover {\n transform: scale(1.1);\n}\n\n.jaaq-control-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.jaaq-loading {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 50px;\n height: 50px;\n border: 4px solid rgba(255, 255, 255, 0.3);\n border-top-color: #007bff;\n border-radius: 50%;\n animation: jaaq-spin 1s linear infinite;\n}\n\n@keyframes jaaq-spin {\n to {\n transform: translate(-50%, -50%) rotate(360deg);\n }\n}\n\n.jaaq-error {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: rgba(220, 53, 69, 0.9);\n color: white;\n padding: 16px 24px;\n border-radius: 8px;\n max-width: 80%;\n text-align: center;\n font-size: 14px;\n}\n\n.jaaq-video-info {\n padding: 16px;\n background: #f8f9fa;\n border-radius: 0 0 12px 12px;\n margin-top: -12px;\n}\n\n.jaaq-video-info h3 {\n margin: 0 0 8px 0;\n color: #333;\n font-size: 18px;\n font-weight: 600;\n}\n\n.jaaq-video-info p {\n margin: 4px 0;\n color: #666;\n font-size: 14px;\n}\n\n.jaaq-video-info strong {\n color: #333;\n}\n\n.jaaq-logo {\n position: absolute;\n top: 20px;\n left: 22px;\n color: white;\n font-size: 16px;\n font-weight: 600;\n z-index: 10;\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n letter-spacing: 0.5px;\n pointer-events: none;\n}\n\n.jaaq-center-play-btn {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 84px;\n height: 84px;\n background: transparent;\n border: none;\n cursor: pointer;\n z-index: 15;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n padding: 0;\n}\n\n.jaaq-center-play-btn:hover {\n transform: translate(-50%, -50%) scale(1.1);\n}\n\n.jaaq-center-play-btn svg {\n width: 100%;\n height: 100%;\n filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.3));\n}\n\n.jaaq-video-player.is-playing .jaaq-center-play-btn {\n display: none;\n}\n\n.jaaq-gradient-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background: linear-gradient(180deg, transparent 0%, #0f0f0f 100%);\n padding: 80px 22px 85px;\n pointer-events: none;\n z-index: 5;\n}\n\n.jaaq-caption-display {\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n font-weight: 400;\n font-size: 16px;\n line-height: 20px;\n color: white;\n background: rgba(0, 0, 0, 0.8);\n padding: 8px 16px;\n margin-bottom: 12px;\n border-radius: 4px;\n text-align: center;\n max-width: 90%;\n margin-left: auto;\n margin-right: auto;\n}\n\n.jaaq-video-title {\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n font-weight: 600;\n font-size: 18.695px;\n line-height: 21.5px;\n color: white;\n margin-bottom: 8px;\n letter-spacing: 0.37px;\n}\n\n.jaaq-video-author {\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n font-weight: 500;\n font-size: 14.021px;\n line-height: 16.825px;\n color: white;\n opacity: 0.7;\n margin-bottom: 8px;\n letter-spacing: -0.14px;\n}\n\n.jaaq-video-description {\n font-family:\n 'Archivo',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n font-weight: 400;\n font-size: 11px;\n line-height: 16px;\n color: #aaa8aa;\n letter-spacing: -0.11px;\n}\n\n.jaaq-description-text {\n color: #aaa8aa;\n}\n\n.jaaq-read-more {\n color: white;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.jaaq-read-more:hover {\n text-decoration: underline;\n}\n\n.jaaq-progress-bar {\n background: rgba(255, 255, 255, 0.2);\n}\n\n.jaaq-progress-filled {\n background: white;\n}\n\n.jaaq-captions-btn {\n font-size: 14px;\n font-weight: 600;\n border: 1.5px solid white;\n border-radius: 3px;\n padding: 4px 6px;\n line-height: 1;\n}\n\n.jaaq-captions-btn.active {\n background: white;\n color: #000;\n}\n",".jaaq-vanilla-player {\n user-select: none;\n}\n\n.jaaq-vanilla-player video {\n outline: none;\n}\n\n.jaaq-collection-player {\n width: 100%;\n max-width: 1400px;\n margin: 0 auto;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n}\n\n.jaaq-collection-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 400px;\n}\n\n.jaaq-collection-spinner {\n width: 50px;\n height: 50px;\n border: 4px solid rgba(0, 123, 255, 0.3);\n border-top-color: #007bff;\n border-radius: 50%;\n animation: jaaq-collection-spin 1s linear infinite;\n}\n\n@keyframes jaaq-collection-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.jaaq-collection-error {\n background: rgba(220, 53, 69, 0.9);\n color: white;\n padding: 16px 24px;\n border-radius: 8px;\n text-align: center;\n font-size: 14px;\n margin: 20px;\n}\n\n.jaaq-collection-carousel .splide__track {\n padding: 40px 0;\n}\n\n.jaaq-collection-carousel .splide__slide {\n opacity: 0.7;\n transition: all 0.3s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.jaaq-collection-carousel .splide__slide.is-active {\n opacity: 1;\n}\n\n.jaaq-collection-carousel .splide__slide jaaq-video-player {\n width: 100%;\n max-width: 600px;\n transition: all 0.3s ease;\n}\n\n.jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 800px;\n}\n\n.jaaq-collection-carousel .splide__arrow {\n background: rgba(0, 0, 0, 0.5);\n border: none;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n color: white;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n}\n\n.jaaq-collection-carousel .splide__arrow:hover {\n background: rgba(0, 0, 0, 0.8);\n transform: scale(1.1);\n}\n\n.jaaq-collection-carousel .splide__arrow:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n\n.jaaq-collection-carousel .splide__arrow svg {\n fill: white;\n width: 20px;\n height: 20px;\n}\n\n.jaaq-collection-carousel .splide__pagination {\n bottom: -30px;\n}\n\n.jaaq-collection-carousel .splide__pagination__page {\n background: #ccc;\n border: none;\n width: 10px;\n height: 10px;\n margin: 0 4px;\n border-radius: 50%;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.jaaq-collection-carousel .splide__pagination__page.is-active {\n background: #007bff;\n transform: scale(1.3);\n}\n\n@media (max-width: 1024px) {\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 500px;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 650px;\n }\n}\n\n@media (max-width: 768px) {\n .jaaq-collection-carousel .splide__track {\n padding: 20px 0;\n }\n\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 400px;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 500px;\n }\n\n .jaaq-collection-carousel .splide__arrow {\n width: 40px;\n height: 40px;\n }\n}\n\n@media (max-width: 480px) {\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 100%;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 100%;\n }\n}\n","import Hls from 'hls.js';\nimport { createJaaqClient, type JaaqClient } from '@src/index';\nimport { isHLSSource, toggleFullscreen, clamp } from '@ui/shared/controls';\nimport type { PlayerConfig, PlayerEventMap, PlayerEventCallback, PlayerState } from '@ui/shared/types';\nimport type { VideoDTO } from '@src/types';\nimport '@ui/shared/styles.css';\nimport './styles.css';\n\n/**\n * Vanilla JavaScript video player with custom controls, HLS support, and event system\n * @example\n * const player = new JaaqVideoPlayer('#container', {\n * videoId: 'video-id',\n * apiKey: 'api-key',\n * clientId: 'client-id',\n * autoplay: false\n * });\n *\n * player.on('play', () => console.log('Playing'));\n * player.on('pause', () => console.log('Paused'));\n */\ntype CaptionCue = {\n start: number;\n end: number;\n text: string;\n};\n\nexport class JaaqVideoPlayer {\n private container: HTMLElement;\n private config: PlayerConfig;\n private client: JaaqClient | null = null;\n private hls: Hls | null = null;\n private videoElement: HTMLVideoElement | null = null;\n private state: PlayerState;\n private listeners: Map<keyof PlayerEventMap, Set<PlayerEventCallback<unknown>>> = new Map();\n private captionCues: CaptionCue[] = [];\n private elements: {\n player?: HTMLDivElement;\n controls?: HTMLDivElement;\n progressBar?: HTMLDivElement;\n progressFilled?: HTMLDivElement;\n playPauseBtn?: HTMLButtonElement;\n volumeBtn?: HTMLButtonElement;\n fullscreenBtn?: HTMLButtonElement;\n captionsBtn?: HTMLButtonElement;\n loading?: HTMLDivElement;\n error?: HTMLDivElement;\n logo?: HTMLDivElement;\n centerPlayBtn?: HTMLButtonElement;\n gradientOverlay?: HTMLDivElement;\n captionDisplay?: HTMLDivElement;\n videoTitle?: HTMLDivElement;\n videoAuthor?: HTMLDivElement;\n videoDescription?: HTMLDivElement;\n } = {};\n\n /**\n * Creates a new video player instance\n * @param container - HTML element or CSS selector to render the player into\n * @param config - Player configuration options\n * @throws {Error} If container element is not found or if authentication credentials are missing\n */\n constructor(container: HTMLElement | string, config: PlayerConfig) {\n this.container = typeof container === 'string' ? document.querySelector(container)! : container;\n\n if (!this.container) {\n throw new Error('Container element not found');\n }\n\n this.config = config;\n this.state = {\n isPlaying: false,\n currentTime: 0,\n duration: 0,\n volume: 1,\n isMuted: config.startMuted === true,\n isFullscreen: false,\n isLoading: true,\n error: null,\n videoData: null,\n captionsEnabled: false,\n };\n\n if (config.client) {\n this.client = config.client;\n } else if (config.apiKey && config.clientId) {\n this.client = createJaaqClient({\n apiKey: config.apiKey,\n clientId: config.clientId,\n baseUrl: config.baseUrl,\n });\n } else {\n throw new Error('Please provide either a client instance or apiKey and clientId');\n }\n\n this.init();\n }\n\n private async init(): Promise<void> {\n this.createDOM();\n await this.loadVideo();\n this.attachEventListeners();\n if (this.config.startMuted === true) {\n this.updateVolumeUI();\n }\n }\n\n private createDOM(): void {\n this.container.innerHTML = '';\n\n const wrapper = document.createElement('div');\n wrapper.style.width = this.config.width || '100%';\n wrapper.style.height = this.config.height || 'auto';\n\n const player = document.createElement('div');\n player.className = `jaaq-video-player jaaq-vanilla-player ${this.config.className || ''}`;\n this.elements.player = player;\n\n const video = document.createElement('video');\n this.videoElement = video;\n if (this.config.startMuted === true) {\n video.muted = true;\n video.setAttribute('muted', '');\n }\n player.appendChild(video);\n\n const logo = document.createElement('div');\n logo.className = 'jaaq-logo';\n logo.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"50\" height=\"15\" viewBox=\"0 0 50 15\" fill=\"none\">\n <path d=\"M48.0329 10.7826C48.7578 9.6622 49.1402 8.37108 49.1402 7.02322C49.1402 3.19784 46.0283 0.0859375 42.2029 0.0859375C38.3775 0.0859375 35.2656 3.19784 35.2656 7.02322C35.2656 10.8486 38.3753 13.9578 42.1985 13.9605C42.1991 13.9605 42.2002 13.9605 42.2007 13.9605H42.2029C43.8475 13.9605 45.4305 13.3687 46.6698 12.3285L49.9971 14.56V12.0999L48.0334 10.7826H48.0329ZM37.309 7.02322C37.309 4.32479 39.5045 2.12927 42.2035 2.12927C44.9024 2.12927 47.0974 4.32479 47.0974 7.02322C47.0974 7.96252 46.8345 8.862 46.3359 9.64475L43.9817 8.06561C43.4531 7.71378 42.8373 7.52778 42.2002 7.52778C40.4394 7.52778 39.0054 8.95036 38.9846 10.7062C37.9586 9.80839 37.3084 8.49053 37.3084 7.02322H37.309ZM42.2035 11.9172C42.2035 11.9172 42.2002 11.9172 42.1985 11.9172C41.5527 11.9161 41.0274 11.3903 41.0274 10.7439C41.0274 10.0975 41.5538 9.57056 42.2007 9.57056C42.4331 9.57056 42.6578 9.6382 42.8493 9.76584L44.8714 11.1224C44.0853 11.633 43.1586 11.9172 42.2029 11.9172H42.2035Z\" fill=\"white\"/>\n <path d=\"M31.0751 0.686201C30.9856 0.579834 30.8858 0.483286 30.7767 0.39983C30.4374 0.138004 30.0283 0 29.5946 0C29.161 0 28.7524 0.138549 28.4126 0.39983C28.2304 0.540561 28.0755 0.711838 27.9533 0.909844C27.8835 1.02276 27.8257 1.14003 27.7815 1.25785L23.1172 13.7317H25.4551L29.5946 2.66135L33.7342 13.7317H36.0721L31.4078 1.25785C31.3303 1.05003 31.218 0.858024 31.0745 0.686746L31.0751 0.686201Z\" fill=\"white\"/>\n <path d=\"M17.4969 0.686201C17.4075 0.579834 17.3076 0.483286 17.1986 0.39983C16.8593 0.138004 16.4502 0 16.0165 0C15.5829 0 15.1743 0.138549 14.8345 0.39983C14.6523 0.540561 14.4974 0.711838 14.3752 0.909844C14.3054 1.02276 14.2476 1.14003 14.2034 1.25785L9.53906 13.7317H11.8769L16.0165 2.66135L20.1561 13.7317H22.494L17.8302 1.25731C17.7527 1.04948 17.6404 0.857478 17.4969 0.686201Z\" fill=\"white\"/>\n <path d=\"M9.86046 0.511825V0.371094H7.82204V9.02333C7.82204 10.6248 6.51891 11.928 4.91741 11.928C3.47028 11.928 2.23261 10.849 2.03897 9.41771L2.01988 9.27807L1.88024 9.29716L0.13964 9.5328L0 9.5519L0.0190914 9.69154C0.348555 12.1292 2.45462 13.9669 4.91741 13.9669C7.64313 13.9669 9.86046 11.7496 9.86046 9.02388V0.511825Z\" fill=\"white\"/>\n </svg>\n `;\n this.elements.logo = logo;\n player.appendChild(logo);\n\n const centerPlayBtn = document.createElement('button');\n centerPlayBtn.className = 'jaaq-center-play-btn';\n centerPlayBtn.innerHTML = `\n <svg viewBox=\"0 0 84 84\" fill=\"none\">\n <circle cx=\"42\" cy=\"42\" r=\"42\" fill=\"white\" fill-opacity=\"0.9\"/>\n <path d=\"M33 28L56 42L33 56V28Z\" fill=\"#000\"/>\n </svg>\n `;\n centerPlayBtn.setAttribute('aria-label', 'Play video');\n this.elements.centerPlayBtn = centerPlayBtn;\n player.appendChild(centerPlayBtn);\n\n const gradientOverlay = document.createElement('div');\n gradientOverlay.className = 'jaaq-gradient-overlay';\n this.elements.gradientOverlay = gradientOverlay;\n\n const captionDisplay = document.createElement('div');\n captionDisplay.className = 'jaaq-caption-display';\n captionDisplay.style.display = 'none';\n this.elements.captionDisplay = captionDisplay;\n gradientOverlay.appendChild(captionDisplay);\n\n const videoTitle = document.createElement('div');\n videoTitle.className = 'jaaq-video-title';\n this.elements.videoTitle = videoTitle;\n gradientOverlay.appendChild(videoTitle);\n\n const videoAuthor = document.createElement('div');\n videoAuthor.className = 'jaaq-video-author';\n this.elements.videoAuthor = videoAuthor;\n gradientOverlay.appendChild(videoAuthor);\n\n const videoDescription = document.createElement('div');\n videoDescription.className = 'jaaq-video-description';\n this.elements.videoDescription = videoDescription;\n gradientOverlay.appendChild(videoDescription);\n\n player.appendChild(gradientOverlay);\n\n const loading = document.createElement('div');\n loading.className = 'jaaq-loading';\n this.elements.loading = loading;\n player.appendChild(loading);\n\n const error = document.createElement('div');\n error.className = 'jaaq-error';\n error.style.display = 'none';\n this.elements.error = error;\n player.appendChild(error);\n\n const controls = document.createElement('div');\n controls.className = 'jaaq-controls';\n this.elements.controls = controls;\n\n const controlsBottom = document.createElement('div');\n controlsBottom.className = 'jaaq-controls-bottom';\n\n const playPauseBtn = document.createElement('button');\n playPauseBtn.className = 'jaaq-control-btn';\n playPauseBtn.textContent = '▶';\n playPauseBtn.setAttribute('aria-label', 'Play');\n this.elements.playPauseBtn = playPauseBtn;\n controlsBottom.appendChild(playPauseBtn);\n\n const volumeBtn = document.createElement('button');\n volumeBtn.className = 'jaaq-control-btn';\n volumeBtn.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"20\" viewBox=\"0 0 22 20\" fill=\"none\">\n <path d=\"M11.2168 19.9287L4.20801 13.7031H0V6.22559H4.20898L11.2168 0V19.9287ZM14.0215 0.150391C16.2405 0.150468 18.1409 1.39074 19.4385 3.17676C20.7365 4.9634 21.499 7.36811 21.499 9.96484C21.499 12.5613 20.7363 14.9654 19.4385 16.752C18.1409 18.538 16.2405 19.7792 14.0215 19.7793V17.1025C15.2032 17.1025 16.3824 16.4464 17.3135 15.165C18.2442 13.8839 18.8593 12.0493 18.8594 9.96484C18.8594 7.88034 18.2442 6.04581 17.3135 4.76465C16.3824 3.4832 15.2033 2.82723 14.0215 2.82715V0.150391ZM14.0215 5.75879C15.5701 5.75896 16.8252 7.64189 16.8252 9.96484C16.8251 12.2877 15.57 14.1707 14.0215 14.1709V5.75879Z\" fill=\"white\"/>\n </svg>\n `;\n volumeBtn.setAttribute('aria-label', 'Mute');\n this.elements.volumeBtn = volumeBtn;\n controlsBottom.appendChild(volumeBtn);\n\n const progressBar = document.createElement('div');\n progressBar.className = 'jaaq-progress-bar';\n this.elements.progressBar = progressBar;\n\n const progressFilled = document.createElement('div');\n progressFilled.className = 'jaaq-progress-filled';\n this.elements.progressFilled = progressFilled;\n progressBar.appendChild(progressFilled);\n controlsBottom.appendChild(progressBar);\n\n const captionsBtn = document.createElement('button');\n captionsBtn.className = 'jaaq-control-btn jaaq-captions-btn';\n captionsBtn.innerHTML = 'CC';\n captionsBtn.setAttribute('aria-label', 'Captions');\n this.elements.captionsBtn = captionsBtn;\n controlsBottom.appendChild(captionsBtn);\n\n const fullscreenBtn = document.createElement('button');\n fullscreenBtn.className = 'jaaq-control-btn';\n fullscreenBtn.textContent = '⛶';\n fullscreenBtn.setAttribute('aria-label', 'Fullscreen');\n this.elements.fullscreenBtn = fullscreenBtn;\n controlsBottom.appendChild(fullscreenBtn);\n\n controls.appendChild(controlsBottom);\n player.appendChild(controls);\n\n wrapper.appendChild(player);\n this.container.appendChild(wrapper);\n\n this.updateControlsVisibility();\n }\n\n private updateControlsVisibility(): void {\n const showControls = this.config.controls !== false;\n if (this.elements.controls) {\n this.elements.controls.style.display = showControls ? '' : 'none';\n }\n }\n\n private async loadVideo(): Promise<void> {\n if (!this.client || !this.videoElement) return;\n\n try {\n this.setState({ isLoading: true, error: null });\n\n const video = await this.client.videos.getById(this.config.videoId);\n this.setState({ videoData: video });\n\n if (video.subtitle) {\n this.captionCues = this.parseWebVTT(video.subtitle);\n }\n\n this.updateOverlayContent(video);\n this.emit('loaded', video);\n\n const videoUrl = video.videoUrl;\n\n if (isHLSSource(videoUrl)) {\n if (Hls.isSupported()) {\n if (this.hls) {\n this.hls.destroy();\n }\n\n const hls = new Hls({\n enableWorker: true,\n lowLatencyMode: true,\n });\n\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n }\n\n hls.loadSource(videoUrl);\n hls.attachMedia(this.videoElement);\n\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n }\n\n hls.on(Hls.Events.MANIFEST_PARSED, () => {\n this.setState({ isLoading: false });\n if (this.elements.loading) {\n this.elements.loading.style.display = 'none';\n }\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n if (this.config.autoplay) {\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.play();\n }\n });\n\n hls.on(Hls.Events.ERROR, (_event: unknown, data: { fatal?: boolean; type?: string; details?: string }) => {\n if (data.fatal) {\n const errorMsg = `HLS Error: ${data.type} - ${data.details}`;\n this.showError(errorMsg);\n this.emit('error', new Error(errorMsg));\n }\n });\n\n this.hls = hls;\n } else if (this.videoElement.canPlayType('application/vnd.apple.mpegurl')) {\n this.videoElement.src = videoUrl;\n if (this.config.startMuted === true) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.setState({ isLoading: false });\n if (this.elements.loading) {\n this.elements.loading.style.display = 'none';\n }\n if (this.config.autoplay) {\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.play();\n }\n } else {\n throw new Error('HLS is not supported in this browser');\n }\n } else {\n this.videoElement.src = videoUrl;\n if (this.config.startMuted === true) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.setState({ isLoading: false });\n if (this.elements.loading) {\n this.elements.loading.style.display = 'none';\n }\n if (this.config.autoplay) {\n if (this.config.startMuted === true && this.videoElement) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n this.updateVolumeUI();\n }\n this.play();\n }\n }\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : 'Failed to load video';\n this.showError(errorMsg);\n this.setState({ isLoading: false });\n this.emit('error', err instanceof Error ? err : new Error(errorMsg));\n }\n }\n\n private parseWebVTT(webvtt: string): CaptionCue[] {\n const cues: CaptionCue[] = [];\n const lines = webvtt.split('\\n');\n\n let i = 0;\n while (i < lines.length) {\n const line = lines[i].trim();\n\n if (line.includes('-->')) {\n const [startTime, endTime] = line.split('-->').map((t) => t.trim());\n\n const parseTimestamp = (timestamp: string): number => {\n const parts = timestamp.split(':');\n if (parts.length === 3) {\n const hours = parseFloat(parts[0]);\n const minutes = parseFloat(parts[1]);\n const seconds = parseFloat(parts[2]);\n return hours * 3600 + minutes * 60 + seconds;\n } else if (parts.length === 2) {\n const minutes = parseFloat(parts[0]);\n const seconds = parseFloat(parts[1]);\n return minutes * 60 + seconds;\n }\n return 0;\n };\n\n const start = parseTimestamp(startTime);\n const end = parseTimestamp(endTime);\n\n i++;\n const textLines: string[] = [];\n while (i < lines.length && lines[i].trim() !== '') {\n textLines.push(lines[i].trim());\n i++;\n }\n\n if (textLines.length > 0) {\n cues.push({\n start,\n end,\n text: textLines.join(' '),\n });\n }\n }\n\n i++;\n }\n\n return cues;\n }\n\n private updateOverlayContent(video: VideoDTO): void {\n const showLogo = this.config.showLogo !== false;\n const showTitle = this.config.showTitle !== false;\n const showAuthor = this.config.showAuthor !== false;\n const showDescription = this.config.showDescription !== false;\n const showCaptions = this.config.showCaptions !== false;\n\n if (this.elements.logo) {\n this.elements.logo.style.display = showLogo ? 'block' : 'none';\n }\n\n if (this.elements.videoTitle) {\n const question = video.question || '';\n const creator = video.creator || '';\n const titleText = creator ? `${question} - ${creator}` : question;\n this.elements.videoTitle.textContent = titleText;\n this.elements.videoTitle.style.display = showTitle && question ? 'block' : 'none';\n }\n\n if (this.elements.videoAuthor) {\n const authorData = (video as any).author || (video as any).creator || (video as any).userName || '';\n this.elements.videoAuthor.textContent = authorData;\n this.elements.videoAuthor.style.display = showAuthor && authorData ? 'block' : 'none';\n }\n\n if (this.elements.videoDescription) {\n const descriptionText = video.creatorBiography || video.description || '';\n if (descriptionText) {\n const maxLength = 150;\n const truncated = descriptionText.length > maxLength ? descriptionText.substring(0, maxLength) + '...' : descriptionText;\n this.elements.videoDescription.innerHTML = `\n <span class=\"jaaq-description-text\">${truncated}</span>\n ${descriptionText.length > maxLength ? '<span class=\"jaaq-read-more\"> Read more</span>' : ''}\n `;\n }\n this.elements.videoDescription.style.display = showDescription && descriptionText ? 'block' : 'none';\n }\n\n if (this.elements.captionsBtn) {\n this.elements.captionsBtn.style.display = showCaptions ? 'flex' : 'none';\n }\n }\n\n private attachEventListeners(): void {\n if (!this.videoElement) return;\n\n this.videoElement.addEventListener('play', () => {\n this.setState({ isPlaying: true });\n this.updatePlayPauseButton();\n if (this.elements.centerPlayBtn) {\n this.elements.centerPlayBtn.style.display = 'none';\n }\n this.emit('play', undefined);\n });\n\n this.videoElement.addEventListener('pause', () => {\n this.setState({ isPlaying: false });\n this.updatePlayPauseButton();\n if (this.elements.centerPlayBtn) {\n this.elements.centerPlayBtn.style.display = 'flex';\n }\n this.emit('pause', undefined);\n });\n\n this.videoElement.addEventListener('timeupdate', () => {\n this.setState({ currentTime: this.videoElement!.currentTime });\n this.updateProgress();\n this.updateCaptions();\n this.emit('timeupdate', this.videoElement!.currentTime);\n });\n\n this.videoElement.addEventListener('durationchange', () => {\n this.setState({ duration: this.videoElement!.duration });\n });\n\n this.videoElement.addEventListener('volumechange', () => {\n this.setState({\n volume: this.videoElement!.volume,\n isMuted: this.videoElement!.muted,\n });\n this.updateVolumeUI();\n this.emit('volumechange', this.videoElement!.volume);\n });\n\n this.videoElement.addEventListener('ended', () => {\n this.emit('ended', undefined);\n });\n\n this.elements.playPauseBtn?.addEventListener('click', () => {\n this.togglePlayPause();\n });\n\n this.elements.centerPlayBtn?.addEventListener('click', () => {\n this.play();\n if (this.elements.centerPlayBtn) {\n this.elements.centerPlayBtn.style.display = 'none';\n }\n });\n\n this.elements.progressBar?.addEventListener('click', (e) => {\n this.handleSeek(e);\n });\n\n this.elements.volumeBtn?.addEventListener('click', () => {\n this.toggleMute();\n });\n\n this.elements.captionsBtn?.addEventListener('click', () => {\n this.toggleCaptions();\n });\n\n this.elements.fullscreenBtn?.addEventListener('click', () => {\n this.toggleFullscreen();\n });\n\n document.addEventListener('fullscreenchange', () => {\n const isFullscreen = !!document.fullscreenElement;\n this.setState({ isFullscreen });\n this.elements.player?.classList.toggle('fullscreen', isFullscreen);\n this.emit('fullscreenchange', isFullscreen);\n });\n\n this.elements.player?.addEventListener('mousemove', () => {\n this.elements.player?.classList.remove('is-paused');\n });\n\n this.videoElement.addEventListener('pause', () => {\n this.elements.player?.classList.add('is-paused');\n });\n\n this.videoElement.addEventListener('play', () => {\n this.elements.player?.classList.remove('is-paused');\n });\n }\n\n private setState(newState: Partial<PlayerState>): void {\n this.state = { ...this.state, ...newState };\n }\n\n private updatePlayPauseButton(): void {\n if (this.elements.playPauseBtn) {\n this.elements.playPauseBtn.textContent = this.state.isPlaying ? '⏸' : '▶';\n this.elements.playPauseBtn.setAttribute('aria-label', this.state.isPlaying ? 'Pause' : 'Play');\n }\n }\n\n private updateProgress(): void {\n if (this.elements.progressFilled && this.state.duration > 0) {\n const progress = (this.state.currentTime / this.state.duration) * 100;\n this.elements.progressFilled.style.width = `${progress}%`;\n }\n }\n\n private updateVolumeUI(): void {\n if (this.elements.volumeBtn) {\n const { isMuted, volume } = this.state;\n\n if (isMuted || volume === 0) {\n this.elements.volumeBtn.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"20\" viewBox=\"0 0 22 20\" fill=\"none\">\n <path d=\"M11.2168 19.9287L4.20801 13.7031H0V6.22559H4.20898L11.2168 0V19.9287Z\" fill=\"white\"/>\n </svg>\n `;\n } else {\n this.elements.volumeBtn.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"20\" viewBox=\"0 0 22 20\" fill=\"none\">\n <path d=\"M11.2168 19.9287L4.20801 13.7031H0V6.22559H4.20898L11.2168 0V19.9287ZM14.0215 0.150391C16.2405 0.150468 18.1409 1.39074 19.4385 3.17676C20.7365 4.9634 21.499 7.36811 21.499 9.96484C21.499 12.5613 20.7363 14.9654 19.4385 16.752C18.1409 18.538 16.2405 19.7792 14.0215 19.7793V17.1025C15.2032 17.1025 16.3824 16.4464 17.3135 15.165C18.2442 13.8839 18.8593 12.0493 18.8594 9.96484C18.8594 7.88034 18.2442 6.04581 17.3135 4.76465C16.3824 3.4832 15.2033 2.82723 14.0215 2.82715V0.150391ZM14.0215 5.75879C15.5701 5.75896 16.8252 7.64189 16.8252 9.96484C16.8251 12.2877 15.57 14.1707 14.0215 14.1709V5.75879Z\" fill=\"white\"/>\n </svg>\n `;\n }\n }\n }\n\n private updateCaptions(): void {\n if (!this.elements.captionDisplay || !this.state.captionsEnabled) {\n if (this.elements.captionDisplay) {\n this.elements.captionDisplay.style.display = 'none';\n }\n return;\n }\n\n const currentTime = this.state.currentTime;\n const currentCue = this.captionCues.find((cue) => currentTime >= cue.start && currentTime <= cue.end);\n\n if (currentCue) {\n this.elements.captionDisplay.textContent = currentCue.text;\n this.elements.captionDisplay.style.display = 'block';\n } else {\n this.elements.captionDisplay.style.display = 'none';\n }\n }\n\n private handleSeek(e: MouseEvent): void {\n if (!this.videoElement || !this.state.duration || !this.elements.progressBar) return;\n\n const rect = this.elements.progressBar.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n this.videoElement.currentTime = this.state.duration * clamp(percent, 0, 1);\n }\n\n private showError(message: string): void {\n this.setState({ error: message, isLoading: false });\n if (this.elements.error) {\n this.elements.error.textContent = message;\n this.elements.error.style.display = 'block';\n }\n if (this.elements.loading) {\n this.elements.loading.style.display = 'none';\n }\n }\n\n private togglePlayPause(): void {\n if (this.state.isPlaying) {\n this.pause();\n } else {\n this.play();\n }\n }\n\n private toggleCaptions(): void {\n this.setState({ captionsEnabled: !this.state.captionsEnabled });\n this.updateCaptionsButton();\n this.updateCaptions();\n }\n\n private updateCaptionsButton(): void {\n if (this.elements.captionsBtn) {\n if (this.state.captionsEnabled) {\n this.elements.captionsBtn.classList.add('active');\n } else {\n this.elements.captionsBtn.classList.remove('active');\n }\n }\n }\n\n private toggleFullscreen(): void {\n if (this.elements.player) {\n toggleFullscreen(this.elements.player);\n }\n }\n\n /**\n * Starts or resumes video playback\n */\n public play(): void {\n if (this.videoElement) {\n if (this.config.startMuted === true && !this.videoElement.muted) {\n this.videoElement.muted = true;\n this.videoElement.setAttribute('muted', '');\n this.setState({ isMuted: true });\n }\n this.videoElement.play();\n }\n }\n\n /**\n * Pauses video playback\n */\n public pause(): void {\n this.videoElement?.pause();\n }\n\n /**\n * Sets the playback volume\n * @param volume - Volume level between 0 (silent) and 1 (maximum)\n */\n public setVolume(volume: number): void {\n if (this.videoElement) {\n this.videoElement.volume = clamp(volume, 0, 1);\n this.videoElement.muted = volume === 0;\n }\n }\n\n /**\n * Toggles audio mute state\n */\n public toggleMute(): void {\n if (this.videoElement) {\n this.videoElement.muted = !this.videoElement.muted;\n }\n }\n\n /**\n * Seeks to a specific time in the video\n * @param time - Target time in seconds\n */\n public seek(time: number): void {\n if (this.videoElement) {\n this.videoElement.currentTime = clamp(time, 0, this.state.duration);\n }\n }\n\n public setFeatures(\n features: Partial<\n Pick<PlayerConfig, 'showLogo' | 'showTitle' | 'showAuthor' | 'showDescription' | 'showCaptions' | 'controls' | 'startMuted'>\n >,\n ): void {\n this.config = { ...this.config, ...features };\n\n if (features.controls !== undefined) {\n this.updateControlsVisibility();\n }\n\n if (features.startMuted !== undefined && this.videoElement) {\n this.videoElement.muted = features.startMuted === true;\n if (features.startMuted === true) {\n this.videoElement.setAttribute('muted', '');\n } else {\n this.videoElement.removeAttribute('muted');\n }\n this.setState({ isMuted: features.startMuted === true });\n this.updateVolumeUI();\n }\n\n if (this.state.videoData) {\n this.updateOverlayContent(this.state.videoData);\n } else {\n if (features.showLogo !== undefined && this.elements.logo) {\n this.elements.logo.style.display = features.showLogo ? 'block' : 'none';\n }\n if (features.showCaptions !== undefined && this.elements.captionsBtn) {\n this.elements.captionsBtn.style.display = features.showCaptions ? 'flex' : 'none';\n }\n }\n }\n\n /**\n * Returns a copy of the current player state\n * @returns Current player state object\n */\n public getState(): PlayerState {\n return { ...this.state };\n }\n\n /**\n * Registers an event listener for player events\n * @param event - Event name to listen for\n * @param callback - Function to call when event fires\n */\n public on<K extends keyof PlayerEventMap>(event: K, callback: PlayerEventCallback<PlayerEventMap[K]>): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n this.listeners.get(event)!.add(callback as PlayerEventCallback<unknown>);\n }\n\n /**\n * Removes an event listener for player events\n * @param event - Event name to stop listening for\n * @param callback - Function to remove from listeners\n */\n public off<K extends keyof PlayerEventMap>(event: K, callback: PlayerEventCallback<PlayerEventMap[K]>): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.delete(callback as PlayerEventCallback<unknown>);\n }\n }\n\n private emit<K extends keyof PlayerEventMap>(event: K, data: PlayerEventMap[K]): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.forEach((callback) => callback(data));\n }\n }\n\n /**\n * Destroys the player instance and cleans up resources\n * Removes all event listeners, stops playback, and clears the DOM\n */\n public destroy(): void {\n if (this.hls) {\n this.hls.destroy();\n this.hls = null;\n }\n\n if (this.videoElement) {\n this.videoElement.pause();\n this.videoElement.src = '';\n this.videoElement = null;\n }\n\n this.listeners.clear();\n this.container.innerHTML = '';\n }\n}\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*!\n * Splide.js\n * Version : 4.1.4\n * License : MIT\n * Copyright: 2022 Naotoshi Fujita\n */\nvar MEDIA_PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nvar CREATED = 1;\nvar MOUNTED = 2;\nvar IDLE = 3;\nvar MOVING = 4;\nvar SCROLLING = 5;\nvar DRAGGING = 6;\nvar DESTROYED = 7;\nvar STATES = {\n CREATED: CREATED,\n MOUNTED: MOUNTED,\n IDLE: IDLE,\n MOVING: MOVING,\n SCROLLING: SCROLLING,\n DRAGGING: DRAGGING,\n DESTROYED: DESTROYED\n};\n\nfunction empty(array) {\n array.length = 0;\n}\n\nfunction slice(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply(func) {\n return func.bind.apply(func, [null].concat(slice(arguments, 1)));\n}\n\nvar nextTick = setTimeout;\n\nvar noop = function noop() {};\n\nfunction raf(func) {\n return requestAnimationFrame(func);\n}\n\nfunction typeOf(type, subject) {\n return typeof subject === type;\n}\n\nfunction isObject(subject) {\n return !isNull(subject) && typeOf(\"object\", subject);\n}\n\nvar isArray = Array.isArray;\nvar isFunction = apply(typeOf, \"function\");\nvar isString = apply(typeOf, \"string\");\nvar isUndefined = apply(typeOf, \"undefined\");\n\nfunction isNull(subject) {\n return subject === null;\n}\n\nfunction isHTMLElement(subject) {\n try {\n return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;\n } catch (e) {\n return false;\n }\n}\n\nfunction toArray(value) {\n return isArray(value) ? value : [value];\n}\n\nfunction forEach(values, iteratee) {\n toArray(values).forEach(iteratee);\n}\n\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\n\nfunction push(array, items) {\n array.push.apply(array, toArray(items));\n return array;\n}\n\nfunction toggleClass(elm, classes, add) {\n if (elm) {\n forEach(classes, function (name) {\n if (name) {\n elm.classList[add ? \"add\" : \"remove\"](name);\n }\n });\n }\n}\n\nfunction addClass(elm, classes) {\n toggleClass(elm, isString(classes) ? classes.split(\" \") : classes, true);\n}\n\nfunction append(parent, children) {\n forEach(children, parent.appendChild.bind(parent));\n}\n\nfunction before(nodes, ref) {\n forEach(nodes, function (node) {\n var parent = (ref || node).parentNode;\n\n if (parent) {\n parent.insertBefore(node, ref);\n }\n });\n}\n\nfunction matches(elm, selector) {\n return isHTMLElement(elm) && (elm[\"msMatchesSelector\"] || elm.matches).call(elm, selector);\n}\n\nfunction children(parent, selector) {\n var children2 = parent ? slice(parent.children) : [];\n return selector ? children2.filter(function (child) {\n return matches(child, selector);\n }) : children2;\n}\n\nfunction child(parent, selector) {\n return selector ? children(parent, selector)[0] : parent.firstElementChild;\n}\n\nvar ownKeys = Object.keys;\n\nfunction forOwn(object, iteratee, right) {\n if (object) {\n (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {\n key !== \"__proto__\" && iteratee(object[key], key);\n });\n }\n\n return object;\n}\n\nfunction assign(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n object[key] = source[key];\n });\n });\n return object;\n}\n\nfunction merge(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n if (isArray(value)) {\n object[key] = value.slice();\n } else if (isObject(value)) {\n object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);\n } else {\n object[key] = value;\n }\n });\n });\n return object;\n}\n\nfunction omit(object, keys) {\n forEach(keys || ownKeys(object), function (key) {\n delete object[key];\n });\n}\n\nfunction removeAttribute(elms, attrs) {\n forEach(elms, function (elm) {\n forEach(attrs, function (attr) {\n elm && elm.removeAttribute(attr);\n });\n });\n}\n\nfunction setAttribute(elms, attrs, value) {\n if (isObject(attrs)) {\n forOwn(attrs, function (value2, name) {\n setAttribute(elms, name, value2);\n });\n } else {\n forEach(elms, function (elm) {\n isNull(value) || value === \"\" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n });\n }\n}\n\nfunction create(tag, attrs, parent) {\n var elm = document.createElement(tag);\n\n if (attrs) {\n isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);\n }\n\n parent && append(parent, elm);\n return elm;\n}\n\nfunction style(elm, prop, value) {\n if (isUndefined(value)) {\n return getComputedStyle(elm)[prop];\n }\n\n if (!isNull(value)) {\n elm.style[prop] = \"\" + value;\n }\n}\n\nfunction display(elm, display2) {\n style(elm, \"display\", display2);\n}\n\nfunction focus(elm) {\n elm[\"setActive\"] && elm[\"setActive\"]() || elm.focus({\n preventScroll: true\n });\n}\n\nfunction getAttribute(elm, attr) {\n return elm.getAttribute(attr);\n}\n\nfunction hasClass(elm, className) {\n return elm && elm.classList.contains(className);\n}\n\nfunction rect(target) {\n return target.getBoundingClientRect();\n}\n\nfunction remove(nodes) {\n forEach(nodes, function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n}\n\nfunction parseHtml(html) {\n return child(new DOMParser().parseFromString(html, \"text/html\").body);\n}\n\nfunction prevent(e, stopPropagation) {\n e.preventDefault();\n\n if (stopPropagation) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n}\n\nfunction query(parent, selector) {\n return parent && parent.querySelector(selector);\n}\n\nfunction queryAll(parent, selector) {\n return selector ? slice(parent.querySelectorAll(selector)) : [];\n}\n\nfunction removeClass(elm, classes) {\n toggleClass(elm, classes, false);\n}\n\nfunction timeOf(e) {\n return e.timeStamp;\n}\n\nfunction unit(value) {\n return isString(value) ? value : value ? value + \"px\" : \"\";\n}\n\nvar PROJECT_CODE = \"splide\";\nvar DATA_ATTRIBUTE = \"data-\" + PROJECT_CODE;\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(\"[\" + PROJECT_CODE + \"] \" + (message || \"\"));\n }\n}\n\nvar min = Math.min,\n max = Math.max,\n floor = Math.floor,\n ceil = Math.ceil,\n abs = Math.abs;\n\nfunction approximatelyEqual(x, y, epsilon) {\n return abs(x - y) < epsilon;\n}\n\nfunction between(number, x, y, exclusive) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;\n}\n\nfunction clamp(number, x, y) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return min(max(minimum, number), maximum);\n}\n\nfunction sign(x) {\n return +(x > 0) - +(x < 0);\n}\n\nfunction camelToKebab(string) {\n return string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction format(string, replacements) {\n forEach(replacements, function (replacement) {\n string = string.replace(\"%s\", \"\" + replacement);\n });\n return string;\n}\n\nfunction pad(number) {\n return number < 10 ? \"0\" + number : \"\" + number;\n}\n\nvar ids = {};\n\nfunction uniqueId(prefix) {\n return \"\" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);\n}\n\nfunction EventBinder() {\n var listeners = [];\n\n function bind(targets, events, callback, options) {\n forEachEvent(targets, events, function (target, event, namespace) {\n var isEventTarget = (\"addEventListener\" in target);\n var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target[\"removeListener\"].bind(target, callback);\n isEventTarget ? target.addEventListener(event, callback, options) : target[\"addListener\"](callback);\n listeners.push([target, event, namespace, callback, remover]);\n });\n }\n\n function unbind(targets, events, callback) {\n forEachEvent(targets, events, function (target, event, namespace) {\n listeners = listeners.filter(function (listener) {\n if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {\n listener[4]();\n return false;\n }\n\n return true;\n });\n });\n }\n\n function dispatch(target, type, detail) {\n var e;\n var bubbles = true;\n\n if (typeof CustomEvent === \"function\") {\n e = new CustomEvent(type, {\n bubbles: bubbles,\n detail: detail\n });\n } else {\n e = document.createEvent(\"CustomEvent\");\n e.initCustomEvent(type, bubbles, false, detail);\n }\n\n target.dispatchEvent(e);\n return e;\n }\n\n function forEachEvent(targets, events, iteratee) {\n forEach(targets, function (target) {\n target && forEach(events, function (events2) {\n events2.split(\" \").forEach(function (eventNS) {\n var fragment = eventNS.split(\".\");\n iteratee(target, fragment[0], fragment[1]);\n });\n });\n });\n }\n\n function destroy() {\n listeners.forEach(function (data) {\n data[4]();\n });\n empty(listeners);\n }\n\n return {\n bind: bind,\n unbind: unbind,\n dispatch: dispatch,\n destroy: destroy\n };\n}\n\nvar EVENT_MOUNTED = \"mounted\";\nvar EVENT_READY = \"ready\";\nvar EVENT_MOVE = \"move\";\nvar EVENT_MOVED = \"moved\";\nvar EVENT_CLICK = \"click\";\nvar EVENT_ACTIVE = \"active\";\nvar EVENT_INACTIVE = \"inactive\";\nvar EVENT_VISIBLE = \"visible\";\nvar EVENT_HIDDEN = \"hidden\";\nvar EVENT_REFRESH = \"refresh\";\nvar EVENT_UPDATED = \"updated\";\nvar EVENT_RESIZE = \"resize\";\nvar EVENT_RESIZED = \"resized\";\nvar EVENT_DRAG = \"drag\";\nvar EVENT_DRAGGING = \"dragging\";\nvar EVENT_DRAGGED = \"dragged\";\nvar EVENT_SCROLL = \"scroll\";\nvar EVENT_SCROLLED = \"scrolled\";\nvar EVENT_OVERFLOW = \"overflow\";\nvar EVENT_DESTROY = \"destroy\";\nvar EVENT_ARROWS_MOUNTED = \"arrows:mounted\";\nvar EVENT_ARROWS_UPDATED = \"arrows:updated\";\nvar EVENT_PAGINATION_MOUNTED = \"pagination:mounted\";\nvar EVENT_PAGINATION_UPDATED = \"pagination:updated\";\nvar EVENT_NAVIGATION_MOUNTED = \"navigation:mounted\";\nvar EVENT_AUTOPLAY_PLAY = \"autoplay:play\";\nvar EVENT_AUTOPLAY_PLAYING = \"autoplay:playing\";\nvar EVENT_AUTOPLAY_PAUSE = \"autoplay:pause\";\nvar EVENT_LAZYLOAD_LOADED = \"lazyload:loaded\";\nvar EVENT_SLIDE_KEYDOWN = \"sk\";\nvar EVENT_SHIFTED = \"sh\";\nvar EVENT_END_INDEX_CHANGED = \"ei\";\n\nfunction EventInterface(Splide2) {\n var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n var binder = EventBinder();\n\n function on(events, callback) {\n binder.bind(bus, toArray(events).join(\" \"), function (e) {\n callback.apply(callback, isArray(e.detail) ? e.detail : []);\n });\n }\n\n function emit(event) {\n binder.dispatch(bus, event, slice(arguments, 1));\n }\n\n if (Splide2) {\n Splide2.event.on(EVENT_DESTROY, binder.destroy);\n }\n\n return assign(binder, {\n bus: bus,\n on: on,\n off: apply(binder.unbind, bus),\n emit: emit\n });\n}\n\nfunction RequestInterval(interval, onInterval, onUpdate, limit) {\n var now = Date.now;\n var startTime;\n var rate = 0;\n var id;\n var paused = true;\n var count = 0;\n\n function update() {\n if (!paused) {\n rate = interval ? min((now() - startTime) / interval, 1) : 1;\n onUpdate && onUpdate(rate);\n\n if (rate >= 1) {\n onInterval();\n startTime = now();\n\n if (limit && ++count >= limit) {\n return pause();\n }\n }\n\n id = raf(update);\n }\n }\n\n function start(resume) {\n resume || cancel();\n startTime = now() - (resume ? rate * interval : 0);\n paused = false;\n id = raf(update);\n }\n\n function pause() {\n paused = true;\n }\n\n function rewind() {\n startTime = now();\n rate = 0;\n\n if (onUpdate) {\n onUpdate(rate);\n }\n }\n\n function cancel() {\n id && cancelAnimationFrame(id);\n rate = 0;\n id = 0;\n paused = true;\n }\n\n function set(time) {\n interval = time;\n }\n\n function isPaused() {\n return paused;\n }\n\n return {\n start: start,\n rewind: rewind,\n pause: pause,\n cancel: cancel,\n set: set,\n isPaused: isPaused\n };\n}\n\nfunction State(initialState) {\n var state = initialState;\n\n function set(value) {\n state = value;\n }\n\n function is(states) {\n return includes(toArray(states), state);\n }\n\n return {\n set: set,\n is: is\n };\n}\n\nfunction Throttle(func, duration) {\n var interval = RequestInterval(duration || 0, func, null, 1);\n return function () {\n interval.isPaused() && interval.start();\n };\n}\n\nfunction Media(Splide2, Components2, options) {\n var state = Splide2.state;\n var breakpoints = options.breakpoints || {};\n var reducedMotion = options.reducedMotion || {};\n var binder = EventBinder();\n var queries = [];\n\n function setup() {\n var isMin = options.mediaQuery === \"min\";\n ownKeys(breakpoints).sort(function (n, m) {\n return isMin ? +n - +m : +m - +n;\n }).forEach(function (key) {\n register(breakpoints[key], \"(\" + (isMin ? \"min\" : \"max\") + \"-width:\" + key + \"px)\");\n });\n register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);\n update();\n }\n\n function destroy(completely) {\n if (completely) {\n binder.destroy();\n }\n }\n\n function register(options2, query) {\n var queryList = matchMedia(query);\n binder.bind(queryList, \"change\", update);\n queries.push([options2, queryList]);\n }\n\n function update() {\n var destroyed = state.is(DESTROYED);\n var direction = options.direction;\n var merged = queries.reduce(function (merged2, entry) {\n return merge(merged2, entry[1].matches ? entry[0] : {});\n }, {});\n omit(options);\n set(merged);\n\n if (options.destroy) {\n Splide2.destroy(options.destroy === \"completely\");\n } else if (destroyed) {\n destroy(true);\n Splide2.mount();\n } else {\n direction !== options.direction && Splide2.refresh();\n }\n }\n\n function reduce(enable) {\n if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {\n enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));\n }\n }\n\n function set(opts, base, notify) {\n merge(options, opts);\n base && merge(Object.getPrototypeOf(options), opts);\n\n if (notify || !state.is(CREATED)) {\n Splide2.emit(EVENT_UPDATED, options);\n }\n }\n\n return {\n setup: setup,\n destroy: destroy,\n reduce: reduce,\n set: set\n };\n}\n\nvar ARROW = \"Arrow\";\nvar ARROW_LEFT = ARROW + \"Left\";\nvar ARROW_RIGHT = ARROW + \"Right\";\nvar ARROW_UP = ARROW + \"Up\";\nvar ARROW_DOWN = ARROW + \"Down\";\nvar LTR = \"ltr\";\nvar RTL = \"rtl\";\nvar TTB = \"ttb\";\nvar ORIENTATION_MAP = {\n width: [\"height\"],\n left: [\"top\", \"right\"],\n right: [\"bottom\", \"left\"],\n x: [\"y\"],\n X: [\"Y\"],\n Y: [\"X\"],\n ArrowLeft: [ARROW_UP, ARROW_RIGHT],\n ArrowRight: [ARROW_DOWN, ARROW_LEFT]\n};\n\nfunction Direction(Splide2, Components2, options) {\n function resolve(prop, axisOnly, direction) {\n direction = direction || options.direction;\n var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;\n return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) {\n var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;\n return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;\n });\n }\n\n function orient(value) {\n return value * (options.direction === RTL ? 1 : -1);\n }\n\n return {\n resolve: resolve,\n orient: orient\n };\n}\n\nvar ROLE = \"role\";\nvar TAB_INDEX = \"tabindex\";\nvar DISABLED = \"disabled\";\nvar ARIA_PREFIX = \"aria-\";\nvar ARIA_CONTROLS = ARIA_PREFIX + \"controls\";\nvar ARIA_CURRENT = ARIA_PREFIX + \"current\";\nvar ARIA_SELECTED = ARIA_PREFIX + \"selected\";\nvar ARIA_LABEL = ARIA_PREFIX + \"label\";\nvar ARIA_LABELLEDBY = ARIA_PREFIX + \"labelledby\";\nvar ARIA_HIDDEN = ARIA_PREFIX + \"hidden\";\nvar ARIA_ORIENTATION = ARIA_PREFIX + \"orientation\";\nvar ARIA_ROLEDESCRIPTION = ARIA_PREFIX + \"roledescription\";\nvar ARIA_LIVE = ARIA_PREFIX + \"live\";\nvar ARIA_BUSY = ARIA_PREFIX + \"busy\";\nvar ARIA_ATOMIC = ARIA_PREFIX + \"atomic\";\nvar ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];\nvar CLASS_PREFIX = PROJECT_CODE + \"__\";\nvar STATUS_CLASS_PREFIX = \"is-\";\nvar CLASS_ROOT = PROJECT_CODE;\nvar CLASS_TRACK = CLASS_PREFIX + \"track\";\nvar CLASS_LIST = CLASS_PREFIX + \"list\";\nvar CLASS_SLIDE = CLASS_PREFIX + \"slide\";\nvar CLASS_CLONE = CLASS_SLIDE + \"--clone\";\nvar CLASS_CONTAINER = CLASS_SLIDE + \"__container\";\nvar CLASS_ARROWS = CLASS_PREFIX + \"arrows\";\nvar CLASS_ARROW = CLASS_PREFIX + \"arrow\";\nvar CLASS_ARROW_PREV = CLASS_ARROW + \"--prev\";\nvar CLASS_ARROW_NEXT = CLASS_ARROW + \"--next\";\nvar CLASS_PAGINATION = CLASS_PREFIX + \"pagination\";\nvar CLASS_PAGINATION_PAGE = CLASS_PAGINATION + \"__page\";\nvar CLASS_PROGRESS = CLASS_PREFIX + \"progress\";\nvar CLASS_PROGRESS_BAR = CLASS_PROGRESS + \"__bar\";\nvar CLASS_TOGGLE = CLASS_PREFIX + \"toggle\";\nvar CLASS_TOGGLE_PLAY = CLASS_TOGGLE + \"__play\";\nvar CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + \"__pause\";\nvar CLASS_SPINNER = CLASS_PREFIX + \"spinner\";\nvar CLASS_SR = CLASS_PREFIX + \"sr\";\nvar CLASS_INITIALIZED = STATUS_CLASS_PREFIX + \"initialized\";\nvar CLASS_ACTIVE = STATUS_CLASS_PREFIX + \"active\";\nvar CLASS_PREV = STATUS_CLASS_PREFIX + \"prev\";\nvar CLASS_NEXT = STATUS_CLASS_PREFIX + \"next\";\nvar CLASS_VISIBLE = STATUS_CLASS_PREFIX + \"visible\";\nvar CLASS_LOADING = STATUS_CLASS_PREFIX + \"loading\";\nvar CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + \"focus-in\";\nvar CLASS_OVERFLOW = STATUS_CLASS_PREFIX + \"overflow\";\nvar STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];\nvar CLASSES = {\n slide: CLASS_SLIDE,\n clone: CLASS_CLONE,\n arrows: CLASS_ARROWS,\n arrow: CLASS_ARROW,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n pagination: CLASS_PAGINATION,\n page: CLASS_PAGINATION_PAGE,\n spinner: CLASS_SPINNER\n};\n\nfunction closest(from, selector) {\n if (isFunction(from.closest)) {\n return from.closest(selector);\n }\n\n var elm = from;\n\n while (elm && elm.nodeType === 1) {\n if (matches(elm, selector)) {\n break;\n }\n\n elm = elm.parentElement;\n }\n\n return elm;\n}\n\nvar FRICTION = 5;\nvar LOG_INTERVAL = 200;\nvar POINTER_DOWN_EVENTS = \"touchstart mousedown\";\nvar POINTER_MOVE_EVENTS = \"touchmove mousemove\";\nvar POINTER_UP_EVENTS = \"touchend touchcancel mouseup click\";\n\nfunction Elements(Splide2, Components2, options) {\n var _EventInterface = EventInterface(Splide2),\n on = _EventInterface.on,\n bind = _EventInterface.bind;\n\n var root = Splide2.root;\n var i18n = options.i18n;\n var elements = {};\n var slides = [];\n var rootClasses = [];\n var trackClasses = [];\n var track;\n var list;\n var isUsingKey;\n\n function setup() {\n collect();\n init();\n update();\n }\n\n function mount() {\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, setup);\n on(EVENT_UPDATED, update);\n bind(document, POINTER_DOWN_EVENTS + \" keydown\", function (e) {\n isUsingKey = e.type === \"keydown\";\n }, {\n capture: true\n });\n bind(root, \"focusin\", function () {\n toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);\n });\n }\n\n function destroy(completely) {\n var attrs = ALL_ATTRIBUTES.concat(\"style\");\n empty(slides);\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n removeAttribute([track, list], attrs);\n removeAttribute(root, completely ? attrs : [\"style\", ARIA_ROLEDESCRIPTION]);\n }\n\n function update() {\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n rootClasses = getClasses(CLASS_ROOT);\n trackClasses = getClasses(CLASS_TRACK);\n addClass(root, rootClasses);\n addClass(track, trackClasses);\n setAttribute(root, ARIA_LABEL, options.label);\n setAttribute(root, ARIA_LABELLEDBY, options.labelledby);\n }\n\n function collect() {\n track = find(\".\" + CLASS_TRACK);\n list = child(track, \".\" + CLASS_LIST);\n assert(track && list, \"A track/list element is missing.\");\n push(slides, children(list, \".\" + CLASS_SLIDE + \":not(.\" + CLASS_CLONE + \")\"));\n forOwn({\n arrows: CLASS_ARROWS,\n pagination: CLASS_PAGINATION,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n bar: CLASS_PROGRESS_BAR,\n toggle: CLASS_TOGGLE\n }, function (className, key) {\n elements[key] = find(\".\" + className);\n });\n assign(elements, {\n root: root,\n track: track,\n list: list,\n slides: slides\n });\n }\n\n function init() {\n var id = root.id || uniqueId(PROJECT_CODE);\n var role = options.role;\n root.id = id;\n track.id = track.id || id + \"-track\";\n list.id = list.id || id + \"-list\";\n\n if (!getAttribute(root, ROLE) && root.tagName !== \"SECTION\" && role) {\n setAttribute(root, ROLE, role);\n }\n\n setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);\n setAttribute(list, ROLE, \"presentation\");\n }\n\n function find(selector) {\n var elm = query(root, selector);\n return elm && closest(elm, \".\" + CLASS_ROOT) === root ? elm : void 0;\n }\n\n function getClasses(base) {\n return [base + \"--\" + options.type, base + \"--\" + options.direction, options.drag && base + \"--draggable\", options.isNavigation && base + \"--nav\", base === CLASS_ROOT && CLASS_ACTIVE];\n }\n\n return assign(elements, {\n setup: setup,\n mount: mount,\n destroy: destroy\n });\n}\n\nvar SLIDE = \"slide\";\nvar LOOP = \"loop\";\nvar FADE = \"fade\";\n\nfunction Slide$1(Splide2, index, slideIndex, slide) {\n var event = EventInterface(Splide2);\n var on = event.on,\n emit = event.emit,\n bind = event.bind;\n var Components = Splide2.Components,\n root = Splide2.root,\n options = Splide2.options;\n var isNavigation = options.isNavigation,\n updateOnMove = options.updateOnMove,\n i18n = options.i18n,\n pagination = options.pagination,\n slideFocus = options.slideFocus;\n var resolve = Components.Direction.resolve;\n var styles = getAttribute(slide, \"style\");\n var label = getAttribute(slide, ARIA_LABEL);\n var isClone = slideIndex > -1;\n var container = child(slide, \".\" + CLASS_CONTAINER);\n var destroyed;\n\n function mount() {\n if (!isClone) {\n slide.id = root.id + \"-slide\" + pad(index + 1);\n setAttribute(slide, ROLE, pagination ? \"tabpanel\" : \"group\");\n setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);\n setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));\n }\n\n listen();\n }\n\n function listen() {\n bind(slide, \"click\", apply(emit, EVENT_CLICK, self));\n bind(slide, \"keydown\", apply(emit, EVENT_SLIDE_KEYDOWN, self));\n on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);\n on(EVENT_NAVIGATION_MOUNTED, initNavigation);\n\n if (updateOnMove) {\n on(EVENT_MOVE, onMove);\n }\n }\n\n function destroy() {\n destroyed = true;\n event.destroy();\n removeClass(slide, STATUS_CLASSES);\n removeAttribute(slide, ALL_ATTRIBUTES);\n setAttribute(slide, \"style\", styles);\n setAttribute(slide, ARIA_LABEL, label || \"\");\n }\n\n function initNavigation() {\n var controls = Splide2.splides.map(function (target) {\n var Slide2 = target.splide.Components.Slides.getAt(index);\n return Slide2 ? Slide2.slide.id : \"\";\n }).join(\" \");\n setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));\n setAttribute(slide, ARIA_CONTROLS, controls);\n setAttribute(slide, ROLE, slideFocus ? \"button\" : \"\");\n slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);\n }\n\n function onMove() {\n if (!destroyed) {\n update();\n }\n }\n\n function update() {\n if (!destroyed) {\n var curr = Splide2.index;\n updateActivity();\n updateVisibility();\n toggleClass(slide, CLASS_PREV, index === curr - 1);\n toggleClass(slide, CLASS_NEXT, index === curr + 1);\n }\n }\n\n function updateActivity() {\n var active = isActive();\n\n if (active !== hasClass(slide, CLASS_ACTIVE)) {\n toggleClass(slide, CLASS_ACTIVE, active);\n setAttribute(slide, ARIA_CURRENT, isNavigation && active || \"\");\n emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);\n }\n }\n\n function updateVisibility() {\n var visible = isVisible();\n var hidden = !visible && (!isActive() || isClone);\n\n if (!Splide2.state.is([MOVING, SCROLLING])) {\n setAttribute(slide, ARIA_HIDDEN, hidden || \"\");\n }\n\n setAttribute(queryAll(slide, options.focusableNodes || \"\"), TAB_INDEX, hidden ? -1 : \"\");\n\n if (slideFocus) {\n setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);\n }\n\n if (visible !== hasClass(slide, CLASS_VISIBLE)) {\n toggleClass(slide, CLASS_VISIBLE, visible);\n emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);\n }\n\n if (!visible && document.activeElement === slide) {\n var Slide2 = Components.Slides.getAt(Splide2.index);\n Slide2 && focus(Slide2.slide);\n }\n }\n\n function style$1(prop, value, useContainer) {\n style(useContainer && container || slide, prop, value);\n }\n\n function isActive() {\n var curr = Splide2.index;\n return curr === index || options.cloneStatus && curr === slideIndex;\n }\n\n function isVisible() {\n if (Splide2.is(FADE)) {\n return isActive();\n }\n\n var trackRect = rect(Components.Elements.track);\n var slideRect = rect(slide);\n var left = resolve(\"left\", true);\n var right = resolve(\"right\", true);\n return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]);\n }\n\n function isWithin(from, distance) {\n var diff = abs(from - index);\n\n if (!isClone && (options.rewind || Splide2.is(LOOP))) {\n diff = min(diff, Splide2.length - diff);\n }\n\n return diff <= distance;\n }\n\n var self = {\n index: index,\n slideIndex: slideIndex,\n slide: slide,\n container: container,\n isClone: isClone,\n mount: mount,\n destroy: destroy,\n update: update,\n style: style$1,\n isWithin: isWithin\n };\n return self;\n}\n\nfunction Slides(Splide2, Components2, options) {\n var _EventInterface2 = EventInterface(Splide2),\n on = _EventInterface2.on,\n emit = _EventInterface2.emit,\n bind = _EventInterface2.bind;\n\n var _Components2$Elements = Components2.Elements,\n slides = _Components2$Elements.slides,\n list = _Components2$Elements.list;\n var Slides2 = [];\n\n function mount() {\n init();\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, init);\n }\n\n function init() {\n slides.forEach(function (slide, index) {\n register(slide, index, -1);\n });\n }\n\n function destroy() {\n forEach$1(function (Slide2) {\n Slide2.destroy();\n });\n empty(Slides2);\n }\n\n function update() {\n forEach$1(function (Slide2) {\n Slide2.update();\n });\n }\n\n function register(slide, index, slideIndex) {\n var object = Slide$1(Splide2, index, slideIndex, slide);\n object.mount();\n Slides2.push(object);\n Slides2.sort(function (Slide1, Slide2) {\n return Slide1.index - Slide2.index;\n });\n }\n\n function get(excludeClones) {\n return excludeClones ? filter(function (Slide2) {\n return !Slide2.isClone;\n }) : Slides2;\n }\n\n function getIn(page) {\n var Controller = Components2.Controller;\n var index = Controller.toIndex(page);\n var max = Controller.hasFocus() ? 1 : options.perPage;\n return filter(function (Slide2) {\n return between(Slide2.index, index, index + max - 1);\n });\n }\n\n function getAt(index) {\n return filter(index)[0];\n }\n\n function add(items, index) {\n forEach(items, function (slide) {\n if (isString(slide)) {\n slide = parseHtml(slide);\n }\n\n if (isHTMLElement(slide)) {\n var ref = slides[index];\n ref ? before(slide, ref) : append(list, slide);\n addClass(slide, options.classes.slide);\n observeImages(slide, apply(emit, EVENT_RESIZE));\n }\n });\n emit(EVENT_REFRESH);\n }\n\n function remove$1(matcher) {\n remove(filter(matcher).map(function (Slide2) {\n return Slide2.slide;\n }));\n emit(EVENT_REFRESH);\n }\n\n function forEach$1(iteratee, excludeClones) {\n get(excludeClones).forEach(iteratee);\n }\n\n function filter(matcher) {\n return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) {\n return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);\n });\n }\n\n function style(prop, value, useContainer) {\n forEach$1(function (Slide2) {\n Slide2.style(prop, value, useContainer);\n });\n }\n\n function observeImages(elm, callback) {\n var images = queryAll(elm, \"img\");\n var length = images.length;\n\n if (length) {\n images.forEach(function (img) {\n bind(img, \"load error\", function () {\n if (! --length) {\n callback();\n }\n });\n });\n } else {\n callback();\n }\n }\n\n function getLength(excludeClones) {\n return excludeClones ? slides.length : Slides2.length;\n }\n\n function isEnough() {\n return Slides2.length > options.perPage;\n }\n\n return {\n mount: mount,\n destroy: destroy,\n update: update,\n register: register,\n get: get,\n getIn: getIn,\n getAt: getAt,\n add: add,\n remove: remove$1,\n forEach: forEach$1,\n filter: filter,\n style: style,\n getLength: getLength,\n isEnough: isEnough\n };\n}\n\nfunction Layout(Splide2, Components2, options) {\n var _EventInterface3 = EventInterface(Splide2),\n on = _EventInterface3.on,\n bind = _EventInterface3.bind,\n emit = _EventInterface3.emit;\n\n var Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var _Components2$Elements2 = Components2.Elements,\n root = _Components2$Elements2.root,\n track = _Components2$Elements2.track,\n list = _Components2$Elements2.list;\n var getAt = Slides.getAt,\n styleSlides = Slides.style;\n var vertical;\n var rootRect;\n var overflow;\n\n function mount() {\n init();\n bind(window, \"resize load\", Throttle(apply(emit, EVENT_RESIZE)));\n on([EVENT_UPDATED, EVENT_REFRESH], init);\n on(EVENT_RESIZE, resize);\n }\n\n function init() {\n vertical = options.direction === TTB;\n style(root, \"maxWidth\", unit(options.width));\n style(track, resolve(\"paddingLeft\"), cssPadding(false));\n style(track, resolve(\"paddingRight\"), cssPadding(true));\n resize(true);\n }\n\n function resize(force) {\n var newRect = rect(root);\n\n if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {\n style(track, \"height\", cssTrackHeight());\n styleSlides(resolve(\"marginRight\"), unit(options.gap));\n styleSlides(\"width\", cssSlideWidth());\n styleSlides(\"height\", cssSlideHeight(), true);\n rootRect = newRect;\n emit(EVENT_RESIZED);\n\n if (overflow !== (overflow = isOverflow())) {\n toggleClass(root, CLASS_OVERFLOW, overflow);\n emit(EVENT_OVERFLOW, overflow);\n }\n }\n }\n\n function cssPadding(right) {\n var padding = options.padding;\n var prop = resolve(right ? \"right\" : \"left\");\n return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || \"0px\";\n }\n\n function cssTrackHeight() {\n var height = \"\";\n\n if (vertical) {\n height = cssHeight();\n assert(height, \"height or heightRatio is missing.\");\n height = \"calc(\" + height + \" - \" + cssPadding(false) + \" - \" + cssPadding(true) + \")\";\n }\n\n return height;\n }\n\n function cssHeight() {\n return unit(options.height || rect(list).width * options.heightRatio);\n }\n\n function cssSlideWidth() {\n return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? \"\" : cssSlideSize());\n }\n\n function cssSlideHeight() {\n return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());\n }\n\n function cssSlideSize() {\n var gap = unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n }\n\n function listSize() {\n return rect(list)[resolve(\"width\")];\n }\n\n function slideSize(index, withoutGap) {\n var Slide = getAt(index || 0);\n return Slide ? rect(Slide.slide)[resolve(\"width\")] + (withoutGap ? 0 : getGap()) : 0;\n }\n\n function totalSize(index, withoutGap) {\n var Slide = getAt(index);\n\n if (Slide) {\n var right = rect(Slide.slide)[resolve(\"right\")];\n var left = rect(list)[resolve(\"left\")];\n return abs(right - left) + (withoutGap ? 0 : getGap());\n }\n\n return 0;\n }\n\n function sliderSize(withoutGap) {\n return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);\n }\n\n function getGap() {\n var Slide = getAt(0);\n return Slide && parseFloat(style(Slide.slide, resolve(\"marginRight\"))) || 0;\n }\n\n function getPadding(right) {\n return parseFloat(style(track, resolve(\"padding\" + (right ? \"Right\" : \"Left\")))) || 0;\n }\n\n function isOverflow() {\n return Splide2.is(FADE) || sliderSize(true) > listSize();\n }\n\n return {\n mount: mount,\n resize: resize,\n listSize: listSize,\n slideSize: slideSize,\n sliderSize: sliderSize,\n totalSize: totalSize,\n getPadding: getPadding,\n isOverflow: isOverflow\n };\n}\n\nvar MULTIPLIER = 2;\n\nfunction Clones(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on;\n var Elements = Components2.Elements,\n Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var clones = [];\n var cloneCount;\n\n function mount() {\n on(EVENT_REFRESH, remount);\n on([EVENT_UPDATED, EVENT_RESIZE], observe);\n\n if (cloneCount = computeCloneCount()) {\n generate(cloneCount);\n Components2.Layout.resize(true);\n }\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function destroy() {\n remove(clones);\n empty(clones);\n event.destroy();\n }\n\n function observe() {\n var count = computeCloneCount();\n\n if (cloneCount !== count) {\n if (cloneCount < count || !count) {\n event.emit(EVENT_REFRESH);\n }\n }\n }\n\n function generate(count) {\n var slides = Slides.get().slice();\n var length = slides.length;\n\n if (length) {\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) {\n var isHead = index < count;\n var clone = cloneDeep(Slide.slide, index);\n isHead ? before(clone, slides[0].slide) : append(Elements.list, clone);\n push(clones, clone);\n Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);\n });\n }\n }\n\n function cloneDeep(elm, index) {\n var clone = elm.cloneNode(true);\n addClass(clone, options.classes.clone);\n clone.id = Splide2.root.id + \"-clone\" + pad(index + 1);\n return clone;\n }\n\n function computeCloneCount() {\n var clones2 = options.clones;\n\n if (!Splide2.is(LOOP)) {\n clones2 = 0;\n } else if (isUndefined(clones2)) {\n var fixedSize = options[resolve(\"fixedWidth\")] && Components2.Layout.slideSize(0);\n var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve(\"width\")] / fixedSize);\n clones2 = fixedCount || options[resolve(\"autoWidth\")] && Splide2.length || options.perPage * MULTIPLIER;\n }\n\n return clones2;\n }\n\n return {\n mount: mount,\n destroy: destroy\n };\n}\n\nfunction Move(Splide2, Components2, options) {\n var _EventInterface4 = EventInterface(Splide2),\n on = _EventInterface4.on,\n emit = _EventInterface4.emit;\n\n var set = Splide2.state.set;\n var _Components2$Layout = Components2.Layout,\n slideSize = _Components2$Layout.slideSize,\n getPadding = _Components2$Layout.getPadding,\n totalSize = _Components2$Layout.totalSize,\n listSize = _Components2$Layout.listSize,\n sliderSize = _Components2$Layout.sliderSize;\n var _Components2$Directio = Components2.Direction,\n resolve = _Components2$Directio.resolve,\n orient = _Components2$Directio.orient;\n var _Components2$Elements3 = Components2.Elements,\n list = _Components2$Elements3.list,\n track = _Components2$Elements3.track;\n var Transition;\n\n function mount() {\n Transition = Components2.Transition;\n on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);\n }\n\n function reposition() {\n if (!Components2.Controller.isBusy()) {\n Components2.Scroll.cancel();\n jump(Splide2.index);\n Components2.Slides.update();\n }\n }\n\n function move(dest, index, prev, callback) {\n if (dest !== index && canShift(dest > prev)) {\n cancel();\n translate(shift(getPosition(), dest > prev), true);\n }\n\n set(MOVING);\n emit(EVENT_MOVE, index, prev, dest);\n Transition.start(index, function () {\n set(IDLE);\n emit(EVENT_MOVED, index, prev, dest);\n callback && callback();\n });\n }\n\n function jump(index) {\n translate(toPosition(index, true));\n }\n\n function translate(position, preventLoop) {\n if (!Splide2.is(FADE)) {\n var destination = preventLoop ? position : loop(position);\n style(list, \"transform\", \"translate\" + resolve(\"X\") + \"(\" + destination + \"px)\");\n position !== destination && emit(EVENT_SHIFTED);\n }\n }\n\n function loop(position) {\n if (Splide2.is(LOOP)) {\n var index = toIndex(position);\n var exceededMax = index > Components2.Controller.getEnd();\n var exceededMin = index < 0;\n\n if (exceededMin || exceededMax) {\n position = shift(position, exceededMax);\n }\n }\n\n return position;\n }\n\n function shift(position, backwards) {\n var excess = position - getLimit(backwards);\n var size = sliderSize();\n position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);\n return position;\n }\n\n function cancel() {\n translate(getPosition(), true);\n Transition.cancel();\n }\n\n function toIndex(position) {\n var Slides = Components2.Slides.get();\n var index = 0;\n var minDistance = Infinity;\n\n for (var i = 0; i < Slides.length; i++) {\n var slideIndex = Slides[i].index;\n var distance = abs(toPosition(slideIndex, true) - position);\n\n if (distance <= minDistance) {\n minDistance = distance;\n index = slideIndex;\n } else {\n break;\n }\n }\n\n return index;\n }\n\n function toPosition(index, trimming) {\n var position = orient(totalSize(index - 1) - offset(index));\n return trimming ? trim(position) : position;\n }\n\n function getPosition() {\n var left = resolve(\"left\");\n return rect(list)[left] - rect(track)[left] + orient(getPadding(false));\n }\n\n function trim(position) {\n if (options.trimSpace && Splide2.is(SLIDE)) {\n position = clamp(position, 0, orient(sliderSize(true) - listSize()));\n }\n\n return position;\n }\n\n function offset(index) {\n var focus = options.focus;\n return focus === \"center\" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0;\n }\n\n function getLimit(max) {\n return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);\n }\n\n function canShift(backwards) {\n var shifted = orient(shift(getPosition(), backwards));\n return backwards ? shifted >= 0 : shifted <= list[resolve(\"scrollWidth\")] - rect(track)[resolve(\"width\")];\n }\n\n function exceededLimit(max, position) {\n position = isUndefined(position) ? getPosition() : position;\n var exceededMin = max !== true && orient(position) < orient(getLimit(false));\n var exceededMax = max !== false && orient(position) > orient(getLimit(true));\n return exceededMin || exceededMax;\n }\n\n return {\n mount: mount,\n move: move,\n jump: jump,\n translate: translate,\n shift: shift,\n cancel: cancel,\n toIndex: toIndex,\n toPosition: toPosition,\n getPosition: getPosition,\n getLimit: getLimit,\n exceededLimit: exceededLimit,\n reposition: reposition\n };\n}\n\nfunction Controller(Splide2, Components2, options) {\n var _EventInterface5 = EventInterface(Splide2),\n on = _EventInterface5.on,\n emit = _EventInterface5.emit;\n\n var Move = Components2.Move;\n var getPosition = Move.getPosition,\n getLimit = Move.getLimit,\n toPosition = Move.toPosition;\n var _Components2$Slides = Components2.Slides,\n isEnough = _Components2$Slides.isEnough,\n getLength = _Components2$Slides.getLength;\n var omitEnd = options.omitEnd;\n var isLoop = Splide2.is(LOOP);\n var isSlide = Splide2.is(SLIDE);\n var getNext = apply(getAdjacent, false);\n var getPrev = apply(getAdjacent, true);\n var currIndex = options.start || 0;\n var endIndex;\n var prevIndex = currIndex;\n var slideCount;\n var perMove;\n var perPage;\n\n function mount() {\n init();\n on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);\n on(EVENT_RESIZED, onResized);\n }\n\n function init() {\n slideCount = getLength(true);\n perMove = options.perMove;\n perPage = options.perPage;\n endIndex = getEnd();\n var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);\n\n if (index !== currIndex) {\n currIndex = index;\n Move.reposition();\n }\n }\n\n function onResized() {\n if (endIndex !== getEnd()) {\n emit(EVENT_END_INDEX_CHANGED);\n }\n }\n\n function go(control, allowSameIndex, callback) {\n if (!isBusy()) {\n var dest = parse(control);\n var index = loop(dest);\n\n if (index > -1 && (allowSameIndex || index !== currIndex)) {\n setIndex(index);\n Move.move(dest, index, prevIndex, callback);\n }\n }\n }\n\n function scroll(destination, duration, snap, callback) {\n Components2.Scroll.scroll(destination, duration, snap, function () {\n var index = loop(Move.toIndex(getPosition()));\n setIndex(omitEnd ? min(index, endIndex) : index);\n callback && callback();\n });\n }\n\n function parse(control) {\n var index = currIndex;\n\n if (isString(control)) {\n var _ref = control.match(/([+\\-<>])(\\d+)?/) || [],\n indicator = _ref[1],\n number = _ref[2];\n\n if (indicator === \"+\" || indicator === \"-\") {\n index = computeDestIndex(currIndex + +(\"\" + indicator + (+number || 1)), currIndex);\n } else if (indicator === \">\") {\n index = number ? toIndex(+number) : getNext(true);\n } else if (indicator === \"<\") {\n index = getPrev(true);\n }\n } else {\n index = isLoop ? control : clamp(control, 0, endIndex);\n }\n\n return index;\n }\n\n function getAdjacent(prev, destination) {\n var number = perMove || (hasFocus() ? 1 : perPage);\n var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));\n\n if (dest === -1 && isSlide) {\n if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {\n return prev ? 0 : endIndex;\n }\n }\n\n return destination ? dest : loop(dest);\n }\n\n function computeDestIndex(dest, from, snapPage) {\n if (isEnough() || hasFocus()) {\n var index = computeMovableDestIndex(dest);\n\n if (index !== dest) {\n from = dest;\n dest = index;\n snapPage = false;\n }\n\n if (dest < 0 || dest > endIndex) {\n if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {\n dest = toIndex(toPage(dest));\n } else {\n if (isLoop) {\n dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;\n } else if (options.rewind) {\n dest = dest < 0 ? endIndex : 0;\n } else {\n dest = -1;\n }\n }\n } else {\n if (snapPage && dest !== from) {\n dest = toIndex(toPage(from) + (dest < from ? -1 : 1));\n }\n }\n } else {\n dest = -1;\n }\n\n return dest;\n }\n\n function computeMovableDestIndex(dest) {\n if (isSlide && options.trimSpace === \"move\" && dest !== currIndex) {\n var position = getPosition();\n\n while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {\n dest < currIndex ? --dest : ++dest;\n }\n }\n\n return dest;\n }\n\n function loop(index) {\n return isLoop ? (index + slideCount) % slideCount || 0 : index;\n }\n\n function getEnd() {\n var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);\n\n while (omitEnd && end-- > 0) {\n if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {\n end++;\n break;\n }\n }\n\n return clamp(end, 0, slideCount - 1);\n }\n\n function toIndex(page) {\n return clamp(hasFocus() ? page : perPage * page, 0, endIndex);\n }\n\n function toPage(index) {\n return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);\n }\n\n function toDest(destination) {\n var closest = Move.toIndex(destination);\n return isSlide ? clamp(closest, 0, endIndex) : closest;\n }\n\n function setIndex(index) {\n if (index !== currIndex) {\n prevIndex = currIndex;\n currIndex = index;\n }\n }\n\n function getIndex(prev) {\n return prev ? prevIndex : currIndex;\n }\n\n function hasFocus() {\n return !isUndefined(options.focus) || options.isNavigation;\n }\n\n function isBusy() {\n return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;\n }\n\n return {\n mount: mount,\n go: go,\n scroll: scroll,\n getNext: getNext,\n getPrev: getPrev,\n getAdjacent: getAdjacent,\n getEnd: getEnd,\n setIndex: setIndex,\n getIndex: getIndex,\n toIndex: toIndex,\n toPage: toPage,\n toDest: toDest,\n hasFocus: hasFocus,\n isBusy: isBusy\n };\n}\n\nvar XML_NAME_SPACE = \"http://www.w3.org/2000/svg\";\nvar PATH = \"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z\";\nvar SIZE = 40;\n\nfunction Arrows(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on,\n bind = event.bind,\n emit = event.emit;\n var classes = options.classes,\n i18n = options.i18n;\n var Elements = Components2.Elements,\n Controller = Components2.Controller;\n var placeholder = Elements.arrows,\n track = Elements.track;\n var wrapper = placeholder;\n var prev = Elements.prev;\n var next = Elements.next;\n var created;\n var wrapperClasses;\n var arrows = {};\n\n function mount() {\n init();\n on(EVENT_UPDATED, remount);\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function init() {\n var enabled = options.arrows;\n\n if (enabled && !(prev && next)) {\n createArrows();\n }\n\n if (prev && next) {\n assign(arrows, {\n prev: prev,\n next: next\n });\n display(wrapper, enabled ? \"\" : \"none\");\n addClass(wrapper, wrapperClasses = CLASS_ARROWS + \"--\" + options.direction);\n\n if (enabled) {\n listen();\n update();\n setAttribute([prev, next], ARIA_CONTROLS, track.id);\n emit(EVENT_ARROWS_MOUNTED, prev, next);\n }\n }\n }\n\n function destroy() {\n event.destroy();\n removeClass(wrapper, wrapperClasses);\n\n if (created) {\n remove(placeholder ? [prev, next] : wrapper);\n prev = next = null;\n } else {\n removeAttribute([prev, next], ALL_ATTRIBUTES);\n }\n }\n\n function listen() {\n on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);\n bind(next, \"click\", apply(go, \">\"));\n bind(prev, \"click\", apply(go, \"<\"));\n }\n\n function go(control) {\n Controller.go(control, true);\n }\n\n function createArrows() {\n wrapper = placeholder || create(\"div\", classes.arrows);\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n append(wrapper, [prev, next]);\n !placeholder && before(wrapper, track);\n }\n\n function createArrow(prev2) {\n var arrow = \"<button class=\\\"\" + classes.arrow + \" \" + (prev2 ? classes.prev : classes.next) + \"\\\" type=\\\"button\\\"><svg xmlns=\\\"\" + XML_NAME_SPACE + \"\\\" viewBox=\\\"0 0 \" + SIZE + \" \" + SIZE + \"\\\" width=\\\"\" + SIZE + \"\\\" height=\\\"\" + SIZE + \"\\\" focusable=\\\"false\\\"><path d=\\\"\" + (options.arrowPath || PATH) + \"\\\" />\";\n return parseHtml(arrow);\n }\n\n function update() {\n if (prev && next) {\n var index = Splide2.index;\n var prevIndex = Controller.getPrev();\n var nextIndex = Controller.getNext();\n var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev;\n var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next;\n prev.disabled = prevIndex < 0;\n next.disabled = nextIndex < 0;\n setAttribute(prev, ARIA_LABEL, prevLabel);\n setAttribute(next, ARIA_LABEL, nextLabel);\n emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex);\n }\n }\n\n return {\n arrows: arrows,\n mount: mount,\n destroy: destroy,\n update: update\n };\n}\n\nvar INTERVAL_DATA_ATTRIBUTE = DATA_ATTRIBUTE + \"-interval\";\n\nfunction Autoplay(Splide2, Components2, options) {\n var _EventInterface6 = EventInterface(Splide2),\n on = _EventInterface6.on,\n bind = _EventInterface6.bind,\n emit = _EventInterface6.emit;\n\n var interval = RequestInterval(options.interval, Splide2.go.bind(Splide2, \">\"), onAnimationFrame);\n var isPaused = interval.isPaused;\n var Elements = Components2.Elements,\n _Components2$Elements4 = Components2.Elements,\n root = _Components2$Elements4.root,\n toggle = _Components2$Elements4.toggle;\n var autoplay = options.autoplay;\n var hovered;\n var focused;\n var stopped = autoplay === \"pause\";\n\n function mount() {\n if (autoplay) {\n listen();\n toggle && setAttribute(toggle, ARIA_CONTROLS, Elements.track.id);\n stopped || play();\n update();\n }\n }\n\n function listen() {\n if (options.pauseOnHover) {\n bind(root, \"mouseenter mouseleave\", function (e) {\n hovered = e.type === \"mouseenter\";\n autoToggle();\n });\n }\n\n if (options.pauseOnFocus) {\n bind(root, \"focusin focusout\", function (e) {\n focused = e.type === \"focusin\";\n autoToggle();\n });\n }\n\n if (toggle) {\n bind(toggle, \"click\", function () {\n stopped ? play() : pause(true);\n });\n }\n\n on([EVENT_MOVE, EVENT_SCROLL, EVENT_REFRESH], interval.rewind);\n on(EVENT_MOVE, onMove);\n }\n\n function play() {\n if (isPaused() && Components2.Slides.isEnough()) {\n interval.start(!options.resetProgress);\n focused = hovered = stopped = false;\n update();\n emit(EVENT_AUTOPLAY_PLAY);\n }\n }\n\n function pause(stop) {\n if (stop === void 0) {\n stop = true;\n }\n\n stopped = !!stop;\n update();\n\n if (!isPaused()) {\n interval.pause();\n emit(EVENT_AUTOPLAY_PAUSE);\n }\n }\n\n function autoToggle() {\n if (!stopped) {\n hovered || focused ? pause(false) : play();\n }\n }\n\n function update() {\n if (toggle) {\n toggleClass(toggle, CLASS_ACTIVE, !stopped);\n setAttribute(toggle, ARIA_LABEL, options.i18n[stopped ? \"play\" : \"pause\"]);\n }\n }\n\n function onAnimationFrame(rate) {\n var bar = Elements.bar;\n bar && style(bar, \"width\", rate * 100 + \"%\");\n emit(EVENT_AUTOPLAY_PLAYING, rate);\n }\n\n function onMove(index) {\n var Slide = Components2.Slides.getAt(index);\n interval.set(Slide && +getAttribute(Slide.slide, INTERVAL_DATA_ATTRIBUTE) || options.interval);\n }\n\n return {\n mount: mount,\n destroy: interval.cancel,\n play: play,\n pause: pause,\n isPaused: isPaused\n };\n}\n\nfunction Cover(Splide2, Components2, options) {\n var _EventInterface7 = EventInterface(Splide2),\n on = _EventInterface7.on;\n\n function mount() {\n if (options.cover) {\n on(EVENT_LAZYLOAD_LOADED, apply(toggle, true));\n on([EVENT_MOUNTED, EVENT_UPDATED, EVENT_REFRESH], apply(cover, true));\n }\n }\n\n function cover(cover2) {\n Components2.Slides.forEach(function (Slide) {\n var img = child(Slide.container || Slide.slide, \"img\");\n\n if (img && img.src) {\n toggle(cover2, img, Slide);\n }\n });\n }\n\n function toggle(cover2, img, Slide) {\n Slide.style(\"background\", cover2 ? \"center/cover no-repeat url(\\\"\" + img.src + \"\\\")\" : \"\", true);\n display(img, cover2 ? \"none\" : \"\");\n }\n\n return {\n mount: mount,\n destroy: apply(cover, false)\n };\n}\n\nvar BOUNCE_DIFF_THRESHOLD = 10;\nvar BOUNCE_DURATION = 600;\nvar FRICTION_FACTOR = 0.6;\nvar BASE_VELOCITY = 1.5;\nvar MIN_DURATION = 800;\n\nfunction Scroll(Splide2, Components2, options) {\n var _EventInterface8 = EventInterface(Splide2),\n on = _EventInterface8.on,\n emit = _EventInterface8.emit;\n\n var set = Splide2.state.set;\n var Move = Components2.Move;\n var getPosition = Move.getPosition,\n getLimit = Move.getLimit,\n exceededLimit = Move.exceededLimit,\n translate = Move.translate;\n var isSlide = Splide2.is(SLIDE);\n var interval;\n var callback;\n var friction = 1;\n\n function mount() {\n on(EVENT_MOVE, clear);\n on([EVENT_UPDATED, EVENT_REFRESH], cancel);\n }\n\n function scroll(destination, duration, snap, onScrolled, noConstrain) {\n var from = getPosition();\n clear();\n\n if (snap && (!isSlide || !exceededLimit())) {\n var size = Components2.Layout.sliderSize();\n var offset = sign(destination) * size * floor(abs(destination) / size) || 0;\n destination = Move.toPosition(Components2.Controller.toDest(destination % size)) + offset;\n }\n\n var noDistance = approximatelyEqual(from, destination, 1);\n friction = 1;\n duration = noDistance ? 0 : duration || max(abs(destination - from) / BASE_VELOCITY, MIN_DURATION);\n callback = onScrolled;\n interval = RequestInterval(duration, onEnd, apply(update, from, destination, noConstrain), 1);\n set(SCROLLING);\n emit(EVENT_SCROLL);\n interval.start();\n }\n\n function onEnd() {\n set(IDLE);\n callback && callback();\n emit(EVENT_SCROLLED);\n }\n\n function update(from, to, noConstrain, rate) {\n var position = getPosition();\n var target = from + (to - from) * easing(rate);\n var diff = (target - position) * friction;\n translate(position + diff);\n\n if (isSlide && !noConstrain && exceededLimit()) {\n friction *= FRICTION_FACTOR;\n\n if (abs(diff) < BOUNCE_DIFF_THRESHOLD) {\n scroll(getLimit(exceededLimit(true)), BOUNCE_DURATION, false, callback, true);\n }\n }\n }\n\n function clear() {\n if (interval) {\n interval.cancel();\n }\n }\n\n function cancel() {\n if (interval && !interval.isPaused()) {\n clear();\n onEnd();\n }\n }\n\n function easing(t) {\n var easingFunc = options.easingFunc;\n return easingFunc ? easingFunc(t) : 1 - Math.pow(1 - t, 4);\n }\n\n return {\n mount: mount,\n destroy: clear,\n scroll: scroll,\n cancel: cancel\n };\n}\n\nvar SCROLL_LISTENER_OPTIONS = {\n passive: false,\n capture: true\n};\n\nfunction Drag(Splide2, Components2, options) {\n var _EventInterface9 = EventInterface(Splide2),\n on = _EventInterface9.on,\n emit = _EventInterface9.emit,\n bind = _EventInterface9.bind,\n unbind = _EventInterface9.unbind;\n\n var state = Splide2.state;\n var Move = Components2.Move,\n Scroll = Components2.Scroll,\n Controller = Components2.Controller,\n track = Components2.Elements.track,\n reduce = Components2.Media.reduce;\n var _Components2$Directio2 = Components2.Direction,\n resolve = _Components2$Directio2.resolve,\n orient = _Components2$Directio2.orient;\n var getPosition = Move.getPosition,\n exceededLimit = Move.exceededLimit;\n var basePosition;\n var baseEvent;\n var prevBaseEvent;\n var isFree;\n var dragging;\n var exceeded = false;\n var clickPrevented;\n var disabled;\n var target;\n\n function mount() {\n bind(track, POINTER_MOVE_EVENTS, noop, SCROLL_LISTENER_OPTIONS);\n bind(track, POINTER_UP_EVENTS, noop, SCROLL_LISTENER_OPTIONS);\n bind(track, POINTER_DOWN_EVENTS, onPointerDown, SCROLL_LISTENER_OPTIONS);\n bind(track, \"click\", onClick, {\n capture: true\n });\n bind(track, \"dragstart\", prevent);\n on([EVENT_MOUNTED, EVENT_UPDATED], init);\n }\n\n function init() {\n var drag = options.drag;\n disable(!drag);\n isFree = drag === \"free\";\n }\n\n function onPointerDown(e) {\n clickPrevented = false;\n\n if (!disabled) {\n var isTouch = isTouchEvent(e);\n\n if (isDraggable(e.target) && (isTouch || !e.button)) {\n if (!Controller.isBusy()) {\n target = isTouch ? track : window;\n dragging = state.is([MOVING, SCROLLING]);\n prevBaseEvent = null;\n bind(target, POINTER_MOVE_EVENTS, onPointerMove, SCROLL_LISTENER_OPTIONS);\n bind(target, POINTER_UP_EVENTS, onPointerUp, SCROLL_LISTENER_OPTIONS);\n Move.cancel();\n Scroll.cancel();\n save(e);\n } else {\n prevent(e, true);\n }\n }\n }\n }\n\n function onPointerMove(e) {\n if (!state.is(DRAGGING)) {\n state.set(DRAGGING);\n emit(EVENT_DRAG);\n }\n\n if (e.cancelable) {\n if (dragging) {\n Move.translate(basePosition + constrain(diffCoord(e)));\n var expired = diffTime(e) > LOG_INTERVAL;\n var hasExceeded = exceeded !== (exceeded = exceededLimit());\n\n if (expired || hasExceeded) {\n save(e);\n }\n\n clickPrevented = true;\n emit(EVENT_DRAGGING);\n prevent(e);\n } else if (isSliderDirection(e)) {\n dragging = shouldStart(e);\n prevent(e);\n }\n }\n }\n\n function onPointerUp(e) {\n if (state.is(DRAGGING)) {\n state.set(IDLE);\n emit(EVENT_DRAGGED);\n }\n\n if (dragging) {\n move(e);\n prevent(e);\n }\n\n unbind(target, POINTER_MOVE_EVENTS, onPointerMove);\n unbind(target, POINTER_UP_EVENTS, onPointerUp);\n dragging = false;\n }\n\n function onClick(e) {\n if (!disabled && clickPrevented) {\n prevent(e, true);\n }\n }\n\n function save(e) {\n prevBaseEvent = baseEvent;\n baseEvent = e;\n basePosition = getPosition();\n }\n\n function move(e) {\n var velocity = computeVelocity(e);\n var destination = computeDestination(velocity);\n var rewind = options.rewind && options.rewindByDrag;\n reduce(false);\n\n if (isFree) {\n Controller.scroll(destination, 0, options.snap);\n } else if (Splide2.is(FADE)) {\n Controller.go(orient(sign(velocity)) < 0 ? rewind ? \"<\" : \"-\" : rewind ? \">\" : \"+\");\n } else if (Splide2.is(SLIDE) && exceeded && rewind) {\n Controller.go(exceededLimit(true) ? \">\" : \"<\");\n } else {\n Controller.go(Controller.toDest(destination), true);\n }\n\n reduce(true);\n }\n\n function shouldStart(e) {\n var thresholds = options.dragMinThreshold;\n var isObj = isObject(thresholds);\n var mouse = isObj && thresholds.mouse || 0;\n var touch = (isObj ? thresholds.touch : +thresholds) || 10;\n return abs(diffCoord(e)) > (isTouchEvent(e) ? touch : mouse);\n }\n\n function isSliderDirection(e) {\n return abs(diffCoord(e)) > abs(diffCoord(e, true));\n }\n\n function computeVelocity(e) {\n if (Splide2.is(LOOP) || !exceeded) {\n var time = diffTime(e);\n\n if (time && time < LOG_INTERVAL) {\n return diffCoord(e) / time;\n }\n }\n\n return 0;\n }\n\n function computeDestination(velocity) {\n return getPosition() + sign(velocity) * min(abs(velocity) * (options.flickPower || 600), isFree ? Infinity : Components2.Layout.listSize() * (options.flickMaxPages || 1));\n }\n\n function diffCoord(e, orthogonal) {\n return coordOf(e, orthogonal) - coordOf(getBaseEvent(e), orthogonal);\n }\n\n function diffTime(e) {\n return timeOf(e) - timeOf(getBaseEvent(e));\n }\n\n function getBaseEvent(e) {\n return baseEvent === e && prevBaseEvent || baseEvent;\n }\n\n function coordOf(e, orthogonal) {\n return (isTouchEvent(e) ? e.changedTouches[0] : e)[\"page\" + resolve(orthogonal ? \"Y\" : \"X\")];\n }\n\n function constrain(diff) {\n return diff / (exceeded && Splide2.is(SLIDE) ? FRICTION : 1);\n }\n\n function isDraggable(target2) {\n var noDrag = options.noDrag;\n return !matches(target2, \".\" + CLASS_PAGINATION_PAGE + \", .\" + CLASS_ARROW) && (!noDrag || !matches(target2, noDrag));\n }\n\n function isTouchEvent(e) {\n return typeof TouchEvent !== \"undefined\" && e instanceof TouchEvent;\n }\n\n function isDragging() {\n return dragging;\n }\n\n function disable(value) {\n disabled = value;\n }\n\n return {\n mount: mount,\n disable: disable,\n isDragging: isDragging\n };\n}\n\nvar NORMALIZATION_MAP = {\n Spacebar: \" \",\n Right: ARROW_RIGHT,\n Left: ARROW_LEFT,\n Up: ARROW_UP,\n Down: ARROW_DOWN\n};\n\nfunction normalizeKey(key) {\n key = isString(key) ? key : key.key;\n return NORMALIZATION_MAP[key] || key;\n}\n\nvar KEYBOARD_EVENT = \"keydown\";\n\nfunction Keyboard(Splide2, Components2, options) {\n var _EventInterface10 = EventInterface(Splide2),\n on = _EventInterface10.on,\n bind = _EventInterface10.bind,\n unbind = _EventInterface10.unbind;\n\n var root = Splide2.root;\n var resolve = Components2.Direction.resolve;\n var target;\n var disabled;\n\n function mount() {\n init();\n on(EVENT_UPDATED, destroy);\n on(EVENT_UPDATED, init);\n on(EVENT_MOVE, onMove);\n }\n\n function init() {\n var keyboard = options.keyboard;\n\n if (keyboard) {\n target = keyboard === \"global\" ? window : root;\n bind(target, KEYBOARD_EVENT, onKeydown);\n }\n }\n\n function destroy() {\n unbind(target, KEYBOARD_EVENT);\n }\n\n function disable(value) {\n disabled = value;\n }\n\n function onMove() {\n var _disabled = disabled;\n disabled = true;\n nextTick(function () {\n disabled = _disabled;\n });\n }\n\n function onKeydown(e) {\n if (!disabled) {\n var key = normalizeKey(e);\n\n if (key === resolve(ARROW_LEFT)) {\n Splide2.go(\"<\");\n } else if (key === resolve(ARROW_RIGHT)) {\n Splide2.go(\">\");\n }\n }\n }\n\n return {\n mount: mount,\n destroy: destroy,\n disable: disable\n };\n}\n\nvar SRC_DATA_ATTRIBUTE = DATA_ATTRIBUTE + \"-lazy\";\nvar SRCSET_DATA_ATTRIBUTE = SRC_DATA_ATTRIBUTE + \"-srcset\";\nvar IMAGE_SELECTOR = \"[\" + SRC_DATA_ATTRIBUTE + \"], [\" + SRCSET_DATA_ATTRIBUTE + \"]\";\n\nfunction LazyLoad(Splide2, Components2, options) {\n var _EventInterface11 = EventInterface(Splide2),\n on = _EventInterface11.on,\n off = _EventInterface11.off,\n bind = _EventInterface11.bind,\n emit = _EventInterface11.emit;\n\n var isSequential = options.lazyLoad === \"sequential\";\n var events = [EVENT_MOVED, EVENT_SCROLLED];\n var entries = [];\n\n function mount() {\n if (options.lazyLoad) {\n init();\n on(EVENT_REFRESH, init);\n }\n }\n\n function init() {\n empty(entries);\n register();\n\n if (isSequential) {\n loadNext();\n } else {\n off(events);\n on(events, check);\n check();\n }\n }\n\n function register() {\n Components2.Slides.forEach(function (Slide) {\n queryAll(Slide.slide, IMAGE_SELECTOR).forEach(function (img) {\n var src = getAttribute(img, SRC_DATA_ATTRIBUTE);\n var srcset = getAttribute(img, SRCSET_DATA_ATTRIBUTE);\n\n if (src !== img.src || srcset !== img.srcset) {\n var className = options.classes.spinner;\n var parent = img.parentElement;\n var spinner = child(parent, \".\" + className) || create(\"span\", className, parent);\n entries.push([img, Slide, spinner]);\n img.src || display(img, \"none\");\n }\n });\n });\n }\n\n function check() {\n entries = entries.filter(function (data) {\n var distance = options.perPage * ((options.preloadPages || 1) + 1) - 1;\n return data[1].isWithin(Splide2.index, distance) ? load(data) : true;\n });\n entries.length || off(events);\n }\n\n function load(data) {\n var img = data[0];\n addClass(data[1].slide, CLASS_LOADING);\n bind(img, \"load error\", apply(onLoad, data));\n setAttribute(img, \"src\", getAttribute(img, SRC_DATA_ATTRIBUTE));\n setAttribute(img, \"srcset\", getAttribute(img, SRCSET_DATA_ATTRIBUTE));\n removeAttribute(img, SRC_DATA_ATTRIBUTE);\n removeAttribute(img, SRCSET_DATA_ATTRIBUTE);\n }\n\n function onLoad(data, e) {\n var img = data[0],\n Slide = data[1];\n removeClass(Slide.slide, CLASS_LOADING);\n\n if (e.type !== \"error\") {\n remove(data[2]);\n display(img, \"\");\n emit(EVENT_LAZYLOAD_LOADED, img, Slide);\n emit(EVENT_RESIZE);\n }\n\n isSequential && loadNext();\n }\n\n function loadNext() {\n entries.length && load(entries.shift());\n }\n\n return {\n mount: mount,\n destroy: apply(empty, entries),\n check: check\n };\n}\n\nfunction Pagination(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on,\n emit = event.emit,\n bind = event.bind;\n var Slides = Components2.Slides,\n Elements = Components2.Elements,\n Controller = Components2.Controller;\n var hasFocus = Controller.hasFocus,\n getIndex = Controller.getIndex,\n go = Controller.go;\n var resolve = Components2.Direction.resolve;\n var placeholder = Elements.pagination;\n var items = [];\n var list;\n var paginationClasses;\n\n function mount() {\n destroy();\n on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], mount);\n var enabled = options.pagination;\n placeholder && display(placeholder, enabled ? \"\" : \"none\");\n\n if (enabled) {\n on([EVENT_MOVE, EVENT_SCROLL, EVENT_SCROLLED], update);\n createPagination();\n update();\n emit(EVENT_PAGINATION_MOUNTED, {\n list: list,\n items: items\n }, getAt(Splide2.index));\n }\n }\n\n function destroy() {\n if (list) {\n remove(placeholder ? slice(list.children) : list);\n removeClass(list, paginationClasses);\n empty(items);\n list = null;\n }\n\n event.destroy();\n }\n\n function createPagination() {\n var length = Splide2.length;\n var classes = options.classes,\n i18n = options.i18n,\n perPage = options.perPage;\n var max = hasFocus() ? Controller.getEnd() + 1 : ceil(length / perPage);\n list = placeholder || create(\"ul\", classes.pagination, Elements.track.parentElement);\n addClass(list, paginationClasses = CLASS_PAGINATION + \"--\" + getDirection());\n setAttribute(list, ROLE, \"tablist\");\n setAttribute(list, ARIA_LABEL, i18n.select);\n setAttribute(list, ARIA_ORIENTATION, getDirection() === TTB ? \"vertical\" : \"\");\n\n for (var i = 0; i < max; i++) {\n var li = create(\"li\", null, list);\n var button = create(\"button\", {\n class: classes.page,\n type: \"button\"\n }, li);\n var controls = Slides.getIn(i).map(function (Slide) {\n return Slide.slide.id;\n });\n var text = !hasFocus() && perPage > 1 ? i18n.pageX : i18n.slideX;\n bind(button, \"click\", apply(onClick, i));\n\n if (options.paginationKeyboard) {\n bind(button, \"keydown\", apply(onKeydown, i));\n }\n\n setAttribute(li, ROLE, \"presentation\");\n setAttribute(button, ROLE, \"tab\");\n setAttribute(button, ARIA_CONTROLS, controls.join(\" \"));\n setAttribute(button, ARIA_LABEL, format(text, i + 1));\n setAttribute(button, TAB_INDEX, -1);\n items.push({\n li: li,\n button: button,\n page: i\n });\n }\n }\n\n function onClick(page) {\n go(\">\" + page, true);\n }\n\n function onKeydown(page, e) {\n var length = items.length;\n var key = normalizeKey(e);\n var dir = getDirection();\n var nextPage = -1;\n\n if (key === resolve(ARROW_RIGHT, false, dir)) {\n nextPage = ++page % length;\n } else if (key === resolve(ARROW_LEFT, false, dir)) {\n nextPage = (--page + length) % length;\n } else if (key === \"Home\") {\n nextPage = 0;\n } else if (key === \"End\") {\n nextPage = length - 1;\n }\n\n var item = items[nextPage];\n\n if (item) {\n focus(item.button);\n go(\">\" + nextPage);\n prevent(e, true);\n }\n }\n\n function getDirection() {\n return options.paginationDirection || options.direction;\n }\n\n function getAt(index) {\n return items[Controller.toPage(index)];\n }\n\n function update() {\n var prev = getAt(getIndex(true));\n var curr = getAt(getIndex());\n\n if (prev) {\n var button = prev.button;\n removeClass(button, CLASS_ACTIVE);\n removeAttribute(button, ARIA_SELECTED);\n setAttribute(button, TAB_INDEX, -1);\n }\n\n if (curr) {\n var _button = curr.button;\n addClass(_button, CLASS_ACTIVE);\n setAttribute(_button, ARIA_SELECTED, true);\n setAttribute(_button, TAB_INDEX, \"\");\n }\n\n emit(EVENT_PAGINATION_UPDATED, {\n list: list,\n items: items\n }, prev, curr);\n }\n\n return {\n items: items,\n mount: mount,\n destroy: destroy,\n getAt: getAt,\n update: update\n };\n}\n\nvar TRIGGER_KEYS = [\" \", \"Enter\"];\n\nfunction Sync(Splide2, Components2, options) {\n var isNavigation = options.isNavigation,\n slideFocus = options.slideFocus;\n var events = [];\n\n function mount() {\n Splide2.splides.forEach(function (target) {\n if (!target.isParent) {\n sync(Splide2, target.splide);\n sync(target.splide, Splide2);\n }\n });\n\n if (isNavigation) {\n navigate();\n }\n }\n\n function destroy() {\n events.forEach(function (event) {\n event.destroy();\n });\n empty(events);\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function sync(splide, target) {\n var event = EventInterface(splide);\n event.on(EVENT_MOVE, function (index, prev, dest) {\n target.go(target.is(LOOP) ? dest : index);\n });\n events.push(event);\n }\n\n function navigate() {\n var event = EventInterface(Splide2);\n var on = event.on;\n on(EVENT_CLICK, onClick);\n on(EVENT_SLIDE_KEYDOWN, onKeydown);\n on([EVENT_MOUNTED, EVENT_UPDATED], update);\n events.push(event);\n event.emit(EVENT_NAVIGATION_MOUNTED, Splide2.splides);\n }\n\n function update() {\n setAttribute(Components2.Elements.list, ARIA_ORIENTATION, options.direction === TTB ? \"vertical\" : \"\");\n }\n\n function onClick(Slide) {\n Splide2.go(Slide.index);\n }\n\n function onKeydown(Slide, e) {\n if (includes(TRIGGER_KEYS, normalizeKey(e))) {\n onClick(Slide);\n prevent(e);\n }\n }\n\n return {\n setup: apply(Components2.Media.set, {\n slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus\n }, true),\n mount: mount,\n destroy: destroy,\n remount: remount\n };\n}\n\nfunction Wheel(Splide2, Components2, options) {\n var _EventInterface12 = EventInterface(Splide2),\n bind = _EventInterface12.bind;\n\n var lastTime = 0;\n\n function mount() {\n if (options.wheel) {\n bind(Components2.Elements.track, \"wheel\", onWheel, SCROLL_LISTENER_OPTIONS);\n }\n }\n\n function onWheel(e) {\n if (e.cancelable) {\n var deltaY = e.deltaY;\n var backwards = deltaY < 0;\n var timeStamp = timeOf(e);\n\n var _min = options.wheelMinThreshold || 0;\n\n var sleep = options.wheelSleep || 0;\n\n if (abs(deltaY) > _min && timeStamp - lastTime > sleep) {\n Splide2.go(backwards ? \"<\" : \">\");\n lastTime = timeStamp;\n }\n\n shouldPrevent(backwards) && prevent(e);\n }\n }\n\n function shouldPrevent(backwards) {\n return !options.releaseWheel || Splide2.state.is(MOVING) || Components2.Controller.getAdjacent(backwards) !== -1;\n }\n\n return {\n mount: mount\n };\n}\n\nvar SR_REMOVAL_DELAY = 90;\n\nfunction Live(Splide2, Components2, options) {\n var _EventInterface13 = EventInterface(Splide2),\n on = _EventInterface13.on;\n\n var track = Components2.Elements.track;\n var enabled = options.live && !options.isNavigation;\n var sr = create(\"span\", CLASS_SR);\n var interval = RequestInterval(SR_REMOVAL_DELAY, apply(toggle, false));\n\n function mount() {\n if (enabled) {\n disable(!Components2.Autoplay.isPaused());\n setAttribute(track, ARIA_ATOMIC, true);\n sr.textContent = \"\\u2026\";\n on(EVENT_AUTOPLAY_PLAY, apply(disable, true));\n on(EVENT_AUTOPLAY_PAUSE, apply(disable, false));\n on([EVENT_MOVED, EVENT_SCROLLED], apply(toggle, true));\n }\n }\n\n function toggle(active) {\n setAttribute(track, ARIA_BUSY, active);\n\n if (active) {\n append(track, sr);\n interval.start();\n } else {\n remove(sr);\n interval.cancel();\n }\n }\n\n function destroy() {\n removeAttribute(track, [ARIA_LIVE, ARIA_ATOMIC, ARIA_BUSY]);\n remove(sr);\n }\n\n function disable(disabled) {\n if (enabled) {\n setAttribute(track, ARIA_LIVE, disabled ? \"off\" : \"polite\");\n }\n }\n\n return {\n mount: mount,\n disable: disable,\n destroy: destroy\n };\n}\n\nvar ComponentConstructors = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Media: Media,\n Direction: Direction,\n Elements: Elements,\n Slides: Slides,\n Layout: Layout,\n Clones: Clones,\n Move: Move,\n Controller: Controller,\n Arrows: Arrows,\n Autoplay: Autoplay,\n Cover: Cover,\n Scroll: Scroll,\n Drag: Drag,\n Keyboard: Keyboard,\n LazyLoad: LazyLoad,\n Pagination: Pagination,\n Sync: Sync,\n Wheel: Wheel,\n Live: Live\n});\nvar I18N = {\n prev: \"Previous slide\",\n next: \"Next slide\",\n first: \"Go to first slide\",\n last: \"Go to last slide\",\n slideX: \"Go to slide %s\",\n pageX: \"Go to page %s\",\n play: \"Start autoplay\",\n pause: \"Pause autoplay\",\n carousel: \"carousel\",\n slide: \"slide\",\n select: \"Select a slide to show\",\n slideLabel: \"%s of %s\"\n};\nvar DEFAULTS = {\n type: \"slide\",\n role: \"region\",\n speed: 400,\n perPage: 1,\n cloneStatus: true,\n arrows: true,\n pagination: true,\n paginationKeyboard: true,\n interval: 5e3,\n pauseOnHover: true,\n pauseOnFocus: true,\n resetProgress: true,\n easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n drag: true,\n direction: \"ltr\",\n trimSpace: true,\n focusableNodes: \"a, button, textarea, input, select, iframe\",\n live: true,\n classes: CLASSES,\n i18n: I18N,\n reducedMotion: {\n speed: 0,\n rewindSpeed: 0,\n autoplay: \"pause\"\n }\n};\n\nfunction Fade(Splide2, Components2, options) {\n var Slides = Components2.Slides;\n\n function mount() {\n EventInterface(Splide2).on([EVENT_MOUNTED, EVENT_REFRESH], init);\n }\n\n function init() {\n Slides.forEach(function (Slide) {\n Slide.style(\"transform\", \"translateX(-\" + 100 * Slide.index + \"%)\");\n });\n }\n\n function start(index, done) {\n Slides.style(\"transition\", \"opacity \" + options.speed + \"ms \" + options.easing);\n nextTick(done);\n }\n\n return {\n mount: mount,\n start: start,\n cancel: noop\n };\n}\n\nfunction Slide(Splide2, Components2, options) {\n var Move = Components2.Move,\n Controller = Components2.Controller,\n Scroll = Components2.Scroll;\n var list = Components2.Elements.list;\n var transition = apply(style, list, \"transition\");\n var endCallback;\n\n function mount() {\n EventInterface(Splide2).bind(list, \"transitionend\", function (e) {\n if (e.target === list && endCallback) {\n cancel();\n endCallback();\n }\n });\n }\n\n function start(index, done) {\n var destination = Move.toPosition(index, true);\n var position = Move.getPosition();\n var speed = getSpeed(index);\n\n if (abs(destination - position) >= 1 && speed >= 1) {\n if (options.useScroll) {\n Scroll.scroll(destination, speed, false, done);\n } else {\n transition(\"transform \" + speed + \"ms \" + options.easing);\n Move.translate(destination, true);\n endCallback = done;\n }\n } else {\n Move.jump(index);\n done();\n }\n }\n\n function cancel() {\n transition(\"\");\n Scroll.cancel();\n }\n\n function getSpeed(index) {\n var rewindSpeed = options.rewindSpeed;\n\n if (Splide2.is(SLIDE) && rewindSpeed) {\n var prev = Controller.getIndex(true);\n var end = Controller.getEnd();\n\n if (prev === 0 && index >= end || prev >= end && index === 0) {\n return rewindSpeed;\n }\n }\n\n return options.speed;\n }\n\n return {\n mount: mount,\n start: start,\n cancel: cancel\n };\n}\n\nvar _Splide = /*#__PURE__*/function () {\n function _Splide(target, options) {\n this.event = EventInterface();\n this.Components = {};\n this.state = State(CREATED);\n this.splides = [];\n this._o = {};\n this._E = {};\n var root = isString(target) ? query(document, target) : target;\n assert(root, root + \" is invalid.\");\n this.root = root;\n options = merge({\n label: getAttribute(root, ARIA_LABEL) || \"\",\n labelledby: getAttribute(root, ARIA_LABELLEDBY) || \"\"\n }, DEFAULTS, _Splide.defaults, options || {});\n\n try {\n merge(options, JSON.parse(getAttribute(root, DATA_ATTRIBUTE)));\n } catch (e) {\n assert(false, \"Invalid JSON\");\n }\n\n this._o = Object.create(merge({}, options));\n }\n\n var _proto = _Splide.prototype;\n\n _proto.mount = function mount(Extensions, Transition) {\n var _this = this;\n\n var state = this.state,\n Components2 = this.Components;\n assert(state.is([CREATED, DESTROYED]), \"Already mounted!\");\n state.set(CREATED);\n this._C = Components2;\n this._T = Transition || this._T || (this.is(FADE) ? Fade : Slide);\n this._E = Extensions || this._E;\n var Constructors = assign({}, ComponentConstructors, this._E, {\n Transition: this._T\n });\n forOwn(Constructors, function (Component, key) {\n var component = Component(_this, Components2, _this._o);\n Components2[key] = component;\n component.setup && component.setup();\n });\n forOwn(Components2, function (component) {\n component.mount && component.mount();\n });\n this.emit(EVENT_MOUNTED);\n addClass(this.root, CLASS_INITIALIZED);\n state.set(IDLE);\n this.emit(EVENT_READY);\n return this;\n };\n\n _proto.sync = function sync(splide) {\n this.splides.push({\n splide: splide\n });\n splide.splides.push({\n splide: this,\n isParent: true\n });\n\n if (this.state.is(IDLE)) {\n this._C.Sync.remount();\n\n splide.Components.Sync.remount();\n }\n\n return this;\n };\n\n _proto.go = function go(control) {\n this._C.Controller.go(control);\n\n return this;\n };\n\n _proto.on = function on(events, callback) {\n this.event.on(events, callback);\n return this;\n };\n\n _proto.off = function off(events) {\n this.event.off(events);\n return this;\n };\n\n _proto.emit = function emit(event) {\n var _this$event;\n\n (_this$event = this.event).emit.apply(_this$event, [event].concat(slice(arguments, 1)));\n\n return this;\n };\n\n _proto.add = function add(slides, index) {\n this._C.Slides.add(slides, index);\n\n return this;\n };\n\n _proto.remove = function remove(matcher) {\n this._C.Slides.remove(matcher);\n\n return this;\n };\n\n _proto.is = function is(type) {\n return this._o.type === type;\n };\n\n _proto.refresh = function refresh() {\n this.emit(EVENT_REFRESH);\n return this;\n };\n\n _proto.destroy = function destroy(completely) {\n if (completely === void 0) {\n completely = true;\n }\n\n var event = this.event,\n state = this.state;\n\n if (state.is(CREATED)) {\n EventInterface(this).on(EVENT_READY, this.destroy.bind(this, completely));\n } else {\n forOwn(this._C, function (component) {\n component.destroy && component.destroy(completely);\n }, true);\n event.emit(EVENT_DESTROY);\n event.destroy();\n completely && empty(this.splides);\n state.set(DESTROYED);\n }\n\n return this;\n };\n\n _createClass(_Splide, [{\n key: \"options\",\n get: function get() {\n return this._o;\n },\n set: function set(options) {\n this._C.Media.set(options, true, true);\n }\n }, {\n key: \"length\",\n get: function get() {\n return this._C.Slides.getLength(true);\n }\n }, {\n key: \"index\",\n get: function get() {\n return this._C.Controller.getIndex();\n }\n }]);\n\n return _Splide;\n}();\n\nvar Splide = _Splide;\nSplide.defaults = {};\nSplide.STATES = STATES;\nvar CLASS_RENDERED = \"is-rendered\";\nvar RENDERER_DEFAULT_CONFIG = {\n listTag: \"ul\",\n slideTag: \"li\"\n};\n\nvar Style = /*#__PURE__*/function () {\n function Style(id, options) {\n this.styles = {};\n this.id = id;\n this.options = options;\n }\n\n var _proto2 = Style.prototype;\n\n _proto2.rule = function rule(selector, prop, value, breakpoint) {\n breakpoint = breakpoint || \"default\";\n var selectors = this.styles[breakpoint] = this.styles[breakpoint] || {};\n var styles = selectors[selector] = selectors[selector] || {};\n styles[prop] = value;\n };\n\n _proto2.build = function build() {\n var _this2 = this;\n\n var css = \"\";\n\n if (this.styles.default) {\n css += this.buildSelectors(this.styles.default);\n }\n\n Object.keys(this.styles).sort(function (n, m) {\n return _this2.options.mediaQuery === \"min\" ? +n - +m : +m - +n;\n }).forEach(function (breakpoint) {\n if (breakpoint !== \"default\") {\n css += \"@media screen and (max-width: \" + breakpoint + \"px) {\";\n css += _this2.buildSelectors(_this2.styles[breakpoint]);\n css += \"}\";\n }\n });\n return css;\n };\n\n _proto2.buildSelectors = function buildSelectors(selectors) {\n var _this3 = this;\n\n var css = \"\";\n forOwn(selectors, function (styles, selector) {\n selector = (\"#\" + _this3.id + \" \" + selector).trim();\n css += selector + \" {\";\n forOwn(styles, function (value, prop) {\n if (value || value === 0) {\n css += prop + \": \" + value + \";\";\n }\n });\n css += \"}\";\n });\n return css;\n };\n\n return Style;\n}();\n\nvar SplideRenderer = /*#__PURE__*/function () {\n function SplideRenderer(contents, options, config, defaults) {\n this.slides = [];\n this.options = {};\n this.breakpoints = [];\n merge(DEFAULTS, defaults || {});\n merge(merge(this.options, DEFAULTS), options || {});\n this.contents = contents;\n this.config = assign({}, RENDERER_DEFAULT_CONFIG, config || {});\n this.id = this.config.id || uniqueId(\"splide\");\n this.Style = new Style(this.id, this.options);\n this.Direction = Direction(null, null, this.options);\n assert(this.contents.length, \"Provide at least 1 content.\");\n this.init();\n }\n\n SplideRenderer.clean = function clean(splide) {\n var _EventInterface14 = EventInterface(splide),\n on = _EventInterface14.on;\n\n var root = splide.root;\n var clones = queryAll(root, \".\" + CLASS_CLONE);\n on(EVENT_MOUNTED, function () {\n remove(child(root, \"style\"));\n });\n remove(clones);\n };\n\n var _proto3 = SplideRenderer.prototype;\n\n _proto3.init = function init() {\n this.parseBreakpoints();\n this.initSlides();\n this.registerRootStyles();\n this.registerTrackStyles();\n this.registerSlideStyles();\n this.registerListStyles();\n };\n\n _proto3.initSlides = function initSlides() {\n var _this4 = this;\n\n push(this.slides, this.contents.map(function (content, index) {\n content = isString(content) ? {\n html: content\n } : content;\n content.styles = content.styles || {};\n content.attrs = content.attrs || {};\n\n _this4.cover(content);\n\n var classes = _this4.options.classes.slide + \" \" + (index === 0 ? CLASS_ACTIVE : \"\");\n assign(content.attrs, {\n class: (classes + \" \" + (content.attrs.class || \"\")).trim(),\n style: _this4.buildStyles(content.styles)\n });\n return content;\n }));\n\n if (this.isLoop()) {\n this.generateClones(this.slides);\n }\n };\n\n _proto3.registerRootStyles = function registerRootStyles() {\n var _this5 = this;\n\n this.breakpoints.forEach(function (_ref2) {\n var width = _ref2[0],\n options = _ref2[1];\n\n _this5.Style.rule(\" \", \"max-width\", unit(options.width), width);\n });\n };\n\n _proto3.registerTrackStyles = function registerTrackStyles() {\n var _this6 = this;\n\n var Style2 = this.Style;\n var selector = \".\" + CLASS_TRACK;\n this.breakpoints.forEach(function (_ref3) {\n var width = _ref3[0],\n options = _ref3[1];\n Style2.rule(selector, _this6.resolve(\"paddingLeft\"), _this6.cssPadding(options, false), width);\n Style2.rule(selector, _this6.resolve(\"paddingRight\"), _this6.cssPadding(options, true), width);\n Style2.rule(selector, \"height\", _this6.cssTrackHeight(options), width);\n });\n };\n\n _proto3.registerListStyles = function registerListStyles() {\n var _this7 = this;\n\n var Style2 = this.Style;\n var selector = \".\" + CLASS_LIST;\n this.breakpoints.forEach(function (_ref4) {\n var width = _ref4[0],\n options = _ref4[1];\n Style2.rule(selector, \"transform\", _this7.buildTranslate(options), width);\n\n if (!_this7.cssSlideHeight(options)) {\n Style2.rule(selector, \"aspect-ratio\", _this7.cssAspectRatio(options), width);\n }\n });\n };\n\n _proto3.registerSlideStyles = function registerSlideStyles() {\n var _this8 = this;\n\n var Style2 = this.Style;\n var selector = \".\" + CLASS_SLIDE;\n this.breakpoints.forEach(function (_ref5) {\n var width = _ref5[0],\n options = _ref5[1];\n Style2.rule(selector, \"width\", _this8.cssSlideWidth(options), width);\n Style2.rule(selector, \"height\", _this8.cssSlideHeight(options) || \"100%\", width);\n Style2.rule(selector, _this8.resolve(\"marginRight\"), unit(options.gap) || \"0px\", width);\n Style2.rule(selector + \" > img\", \"display\", options.cover ? \"none\" : \"inline\", width);\n });\n };\n\n _proto3.buildTranslate = function buildTranslate(options) {\n var _this$Direction = this.Direction,\n resolve = _this$Direction.resolve,\n orient = _this$Direction.orient;\n var values = [];\n values.push(this.cssOffsetClones(options));\n values.push(this.cssOffsetGaps(options));\n\n if (this.isCenter(options)) {\n values.push(this.buildCssValue(orient(-50), \"%\"));\n values.push.apply(values, this.cssOffsetCenter(options));\n }\n\n return values.filter(Boolean).map(function (value) {\n return \"translate\" + resolve(\"X\") + \"(\" + value + \")\";\n }).join(\" \");\n };\n\n _proto3.cssOffsetClones = function cssOffsetClones(options) {\n var _this$Direction2 = this.Direction,\n resolve = _this$Direction2.resolve,\n orient = _this$Direction2.orient;\n var cloneCount = this.getCloneCount();\n\n if (this.isFixedWidth(options)) {\n var _this$parseCssValue = this.parseCssValue(options[resolve(\"fixedWidth\")]),\n value = _this$parseCssValue.value,\n unit2 = _this$parseCssValue.unit;\n\n return this.buildCssValue(orient(value) * cloneCount, unit2);\n }\n\n var percent = 100 * cloneCount / options.perPage;\n return orient(percent) + \"%\";\n };\n\n _proto3.cssOffsetCenter = function cssOffsetCenter(options) {\n var _this$Direction3 = this.Direction,\n resolve = _this$Direction3.resolve,\n orient = _this$Direction3.orient;\n\n if (this.isFixedWidth(options)) {\n var _this$parseCssValue2 = this.parseCssValue(options[resolve(\"fixedWidth\")]),\n value = _this$parseCssValue2.value,\n unit2 = _this$parseCssValue2.unit;\n\n return [this.buildCssValue(orient(value / 2), unit2)];\n }\n\n var values = [];\n var perPage = options.perPage,\n gap = options.gap;\n values.push(orient(50 / perPage) + \"%\");\n\n if (gap) {\n var _this$parseCssValue3 = this.parseCssValue(gap),\n _value = _this$parseCssValue3.value,\n _unit = _this$parseCssValue3.unit;\n\n var gapOffset = (_value / perPage - _value) / 2;\n values.push(this.buildCssValue(orient(gapOffset), _unit));\n }\n\n return values;\n };\n\n _proto3.cssOffsetGaps = function cssOffsetGaps(options) {\n var cloneCount = this.getCloneCount();\n\n if (cloneCount && options.gap) {\n var orient = this.Direction.orient;\n\n var _this$parseCssValue4 = this.parseCssValue(options.gap),\n value = _this$parseCssValue4.value,\n unit2 = _this$parseCssValue4.unit;\n\n if (this.isFixedWidth(options)) {\n return this.buildCssValue(orient(value * cloneCount), unit2);\n }\n\n var perPage = options.perPage;\n var gaps = cloneCount / perPage;\n return this.buildCssValue(orient(gaps * value), unit2);\n }\n\n return \"\";\n };\n\n _proto3.resolve = function resolve(prop) {\n return camelToKebab(this.Direction.resolve(prop));\n };\n\n _proto3.cssPadding = function cssPadding(options, right) {\n var padding = options.padding;\n var prop = this.Direction.resolve(right ? \"right\" : \"left\", true);\n return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || \"0px\";\n };\n\n _proto3.cssTrackHeight = function cssTrackHeight(options) {\n var height = \"\";\n\n if (this.isVertical()) {\n height = this.cssHeight(options);\n assert(height, '\"height\" is missing.');\n height = \"calc(\" + height + \" - \" + this.cssPadding(options, false) + \" - \" + this.cssPadding(options, true) + \")\";\n }\n\n return height;\n };\n\n _proto3.cssHeight = function cssHeight(options) {\n return unit(options.height);\n };\n\n _proto3.cssSlideWidth = function cssSlideWidth(options) {\n return options.autoWidth ? \"\" : unit(options.fixedWidth) || (this.isVertical() ? \"\" : this.cssSlideSize(options));\n };\n\n _proto3.cssSlideHeight = function cssSlideHeight(options) {\n return unit(options.fixedHeight) || (this.isVertical() ? options.autoHeight ? \"\" : this.cssSlideSize(options) : this.cssHeight(options));\n };\n\n _proto3.cssSlideSize = function cssSlideSize(options) {\n var gap = unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n };\n\n _proto3.cssAspectRatio = function cssAspectRatio(options) {\n var heightRatio = options.heightRatio;\n return heightRatio ? \"\" + 1 / heightRatio : \"\";\n };\n\n _proto3.buildCssValue = function buildCssValue(value, unit2) {\n return \"\" + value + unit2;\n };\n\n _proto3.parseCssValue = function parseCssValue(value) {\n if (isString(value)) {\n var number = parseFloat(value) || 0;\n var unit2 = value.replace(/\\d*(\\.\\d*)?/, \"\") || \"px\";\n return {\n value: number,\n unit: unit2\n };\n }\n\n return {\n value: value,\n unit: \"px\"\n };\n };\n\n _proto3.parseBreakpoints = function parseBreakpoints() {\n var _this9 = this;\n\n var breakpoints = this.options.breakpoints;\n this.breakpoints.push([\"default\", this.options]);\n\n if (breakpoints) {\n forOwn(breakpoints, function (options, width) {\n _this9.breakpoints.push([width, merge(merge({}, _this9.options), options)]);\n });\n }\n };\n\n _proto3.isFixedWidth = function isFixedWidth(options) {\n return !!options[this.Direction.resolve(\"fixedWidth\")];\n };\n\n _proto3.isLoop = function isLoop() {\n return this.options.type === LOOP;\n };\n\n _proto3.isCenter = function isCenter(options) {\n if (options.focus === \"center\") {\n if (this.isLoop()) {\n return true;\n }\n\n if (this.options.type === SLIDE) {\n return !this.options.trimSpace;\n }\n }\n\n return false;\n };\n\n _proto3.isVertical = function isVertical() {\n return this.options.direction === TTB;\n };\n\n _proto3.buildClasses = function buildClasses() {\n var options = this.options;\n return [CLASS_ROOT, CLASS_ROOT + \"--\" + options.type, CLASS_ROOT + \"--\" + options.direction, options.drag && CLASS_ROOT + \"--draggable\", options.isNavigation && CLASS_ROOT + \"--nav\", CLASS_ACTIVE, !this.config.hidden && CLASS_RENDERED].filter(Boolean).join(\" \");\n };\n\n _proto3.buildAttrs = function buildAttrs(attrs) {\n var attr = \"\";\n forOwn(attrs, function (value, key) {\n attr += value ? \" \" + camelToKebab(key) + \"=\\\"\" + value + \"\\\"\" : \"\";\n });\n return attr.trim();\n };\n\n _proto3.buildStyles = function buildStyles(styles) {\n var style = \"\";\n forOwn(styles, function (value, key) {\n style += \" \" + camelToKebab(key) + \":\" + value + \";\";\n });\n return style.trim();\n };\n\n _proto3.renderSlides = function renderSlides() {\n var _this10 = this;\n\n var tag = this.config.slideTag;\n return this.slides.map(function (content) {\n return \"<\" + tag + \" \" + _this10.buildAttrs(content.attrs) + \">\" + (content.html || \"\") + \"</\" + tag + \">\";\n }).join(\"\");\n };\n\n _proto3.cover = function cover(content) {\n var styles = content.styles,\n _content$html = content.html,\n html = _content$html === void 0 ? \"\" : _content$html;\n\n if (this.options.cover && !this.options.lazyLoad) {\n var src = html.match(/<img.*?src\\s*=\\s*(['\"])(.+?)\\1.*?>/);\n\n if (src && src[2]) {\n styles.background = \"center/cover no-repeat url('\" + src[2] + \"')\";\n }\n }\n };\n\n _proto3.generateClones = function generateClones(contents) {\n var classes = this.options.classes;\n var count = this.getCloneCount();\n var slides = contents.slice();\n\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count).reverse(), slides.slice(0, count)).forEach(function (content, index) {\n var attrs = assign({}, content.attrs, {\n class: content.attrs.class + \" \" + classes.clone\n });\n var clone = assign({}, content, {\n attrs: attrs\n });\n index < count ? contents.unshift(clone) : contents.push(clone);\n });\n };\n\n _proto3.getCloneCount = function getCloneCount() {\n if (this.isLoop()) {\n var options = this.options;\n\n if (options.clones) {\n return options.clones;\n }\n\n var perPage = max.apply(void 0, this.breakpoints.map(function (_ref6) {\n var options2 = _ref6[1];\n return options2.perPage;\n }));\n return perPage * ((options.flickMaxPages || 1) + 1);\n }\n\n return 0;\n };\n\n _proto3.renderArrows = function renderArrows() {\n var html = \"\";\n html += \"<div class=\\\"\" + this.options.classes.arrows + \"\\\">\";\n html += this.renderArrow(true);\n html += this.renderArrow(false);\n html += \"</div>\";\n return html;\n };\n\n _proto3.renderArrow = function renderArrow(prev) {\n var _this$options = this.options,\n classes = _this$options.classes,\n i18n = _this$options.i18n;\n var attrs = {\n class: classes.arrow + \" \" + (prev ? classes.prev : classes.next),\n type: \"button\",\n ariaLabel: prev ? i18n.prev : i18n.next\n };\n return \"<button \" + this.buildAttrs(attrs) + \"><svg xmlns=\\\"\" + XML_NAME_SPACE + \"\\\" viewBox=\\\"0 0 \" + SIZE + \" \" + SIZE + \"\\\" width=\\\"\" + SIZE + \"\\\" height=\\\"\" + SIZE + \"\\\"><path d=\\\"\" + (this.options.arrowPath || PATH) + \"\\\" /></svg></button>\";\n };\n\n _proto3.html = function html() {\n var _this$config = this.config,\n rootClass = _this$config.rootClass,\n listTag = _this$config.listTag,\n arrows = _this$config.arrows,\n beforeTrack = _this$config.beforeTrack,\n afterTrack = _this$config.afterTrack,\n slider = _this$config.slider,\n beforeSlider = _this$config.beforeSlider,\n afterSlider = _this$config.afterSlider;\n var html = \"\";\n html += \"<div id=\\\"\" + this.id + \"\\\" class=\\\"\" + this.buildClasses() + \" \" + (rootClass || \"\") + \"\\\">\";\n html += \"<style>\" + this.Style.build() + \"</style>\";\n\n if (slider) {\n html += beforeSlider || \"\";\n html += \"<div class=\\\"splide__slider\\\">\";\n }\n\n html += beforeTrack || \"\";\n\n if (arrows) {\n html += this.renderArrows();\n }\n\n html += \"<div class=\\\"splide__track\\\">\";\n html += \"<\" + listTag + \" class=\\\"splide__list\\\">\";\n html += this.renderSlides();\n html += \"</\" + listTag + \">\";\n html += \"</div>\";\n html += afterTrack || \"\";\n\n if (slider) {\n html += \"</div>\";\n html += afterSlider || \"\";\n }\n\n html += \"</div>\";\n return html;\n };\n\n return SplideRenderer;\n}();\n\nexport { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_OVERFLOW, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TOGGLE_PAUSE, CLASS_TOGGLE_PLAY, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_END_INDEX_CHANGED, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_OVERFLOW, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, LTR, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, SplideRenderer, State, TTB, Throttle, Splide as default };\n",".splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__arrow{-ms-flex-align:center;align-items:center;background:#ccc;border:0;border-radius:50%;cursor:pointer;display:-ms-flexbox;display:flex;height:2em;-ms-flex-pack:center;justify-content:center;opacity:.7;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:2em;z-index:1}.splide__arrow svg{fill:#000;height:1.2em;width:1.2em}.splide__arrow:hover:not(:disabled){opacity:.9}.splide__arrow:disabled{opacity:.3}.splide__arrow:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide__arrow--prev{left:1em}.splide__arrow--prev svg{transform:scaleX(-1)}.splide__arrow--next{right:1em}.splide.is-focus-in .splide__arrow:focus{outline:3px solid #0bf;outline-offset:3px}.splide__pagination{bottom:.5em;left:0;padding:0 1em;position:absolute;right:0;z-index:1}.splide__pagination__page{background:#ccc;border:0;border-radius:50%;display:inline-block;height:8px;margin:3px;opacity:.7;padding:0;position:relative;transition:transform .2s linear;width:8px}.splide__pagination__page.is-active{background:#fff;transform:scale(1.4);z-index:1}.splide__pagination__page:hover{cursor:pointer;opacity:.9}.splide__pagination__page:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide.is-focus-in .splide__pagination__page:focus{outline:3px solid #0bf;outline-offset:3px}.splide__progress__bar{background:#ccc;height:3px}.splide__slide{-webkit-tap-highlight-color:rgba(0,0,0,0)}.splide__slide:focus{outline:0}@supports(outline-offset:-3px){.splide__slide:focus-visible{outline:3px solid #0bf;outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.splide__slide:focus-visible{border:3px solid #0bf}}@supports(outline-offset:-3px){.splide.is-focus-in .splide__slide:focus{outline:3px solid #0bf;outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.splide.is-focus-in .splide__slide:focus{border:3px solid #0bf}.splide.is-focus-in .splide__track>.splide__list>.splide__slide:focus{border-color:#0bf}}.splide__toggle{cursor:pointer}.splide__toggle:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide.is-focus-in .splide__toggle:focus{outline:3px solid #0bf;outline-offset:3px}.splide__track--nav>.splide__list>.splide__slide{border:3px solid transparent;cursor:pointer}.splide__track--nav>.splide__list>.splide__slide.is-active{border:3px solid #000}.splide__arrows--rtl .splide__arrow--prev{left:auto;right:1em}.splide__arrows--rtl .splide__arrow--prev svg{transform:scaleX(1)}.splide__arrows--rtl .splide__arrow--next{left:1em;right:auto}.splide__arrows--rtl .splide__arrow--next svg{transform:scaleX(-1)}.splide__arrows--ttb .splide__arrow{left:50%;transform:translate(-50%)}.splide__arrows--ttb .splide__arrow--prev{top:1em}.splide__arrows--ttb .splide__arrow--prev svg{transform:rotate(-90deg)}.splide__arrows--ttb .splide__arrow--next{bottom:1em;top:auto}.splide__arrows--ttb .splide__arrow--next svg{transform:rotate(90deg)}.splide__pagination--ttb{bottom:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;left:auto;padding:1em 0;right:.5em;top:0}","import Splide from '@splidejs/splide';\nimport { JaaqClient, BASE_URL, createJaaqClient } from '@src/index';\nimport type { CollectionDTO, VideoDTO } from '@src/types';\nimport type { VideoSettings } from '@ui/shared/types';\nimport '@ui/shared/styles.css';\nimport './styles.css';\nimport '@splidejs/splide/css';\n\ntype CollectionPlayerConfig = {\n collectionId: string;\n client?: JaaqClient;\n apiKey?: string;\n clientId?: string;\n baseUrl?: string;\n apiVersion?: string;\n autoplay?: boolean;\n showArrows?: boolean;\n showDots?: boolean;\n className?: string;\n videoSettings?: VideoSettings;\n};\n\ntype CollectionPlayerEventMap = {\n loaded: CollectionDTO;\n slidechange: { index: number; video: VideoDTO };\n error: Error;\n};\n\ntype CollectionPlayerEventCallback<T> = (_data: T) => void;\n\nexport class JaaqCollectionPlayer {\n private container: HTMLElement;\n private config: CollectionPlayerConfig;\n private client: JaaqClient | null = null;\n private splide: Splide | null = null;\n private playerElement: HTMLDivElement | null = null;\n private carouselElement: HTMLDivElement | null = null;\n private collectionData: CollectionDTO | null = null;\n private autoplayTimeoutId: number | null = null;\n private listeners: Map<keyof CollectionPlayerEventMap, Set<CollectionPlayerEventCallback<unknown>>> = new Map();\n\n constructor(container: HTMLElement | string, config: CollectionPlayerConfig) {\n this.container = typeof container === 'string' ? document.querySelector(container)! : container;\n\n if (!this.container) {\n throw new Error('Container element not found');\n }\n\n this.config = { autoplay: false, showArrows: true, showDots: true, ...config };\n\n if (config.client) {\n this.client = config.client;\n } else if (config.apiKey && config.clientId) {\n this.client = createJaaqClient({\n apiKey: config.apiKey,\n clientId: config.clientId,\n baseUrl: config.baseUrl || BASE_URL,\n apiVersion: config.apiVersion,\n });\n } else {\n throw new Error('Either client property or apiKey and clientId are required');\n }\n\n this.init();\n }\n\n private async init(): Promise<void> {\n this.render();\n await this.initCarousel();\n }\n\n private render(): void {\n this.container.innerHTML = '';\n\n this.playerElement = document.createElement('div');\n this.playerElement.className = `jaaq-collection-player ${this.config.className || ''}`;\n\n this.container.appendChild(this.playerElement);\n }\n\n private async initCarousel(): Promise<void> {\n if (!this.playerElement) return;\n\n const collectionId = this.config.collectionId;\n if (!collectionId) {\n this.emitError(new Error('collectionId is required'));\n return;\n }\n\n this.showLoading();\n\n try {\n if (!this.client) {\n throw new Error('Client is not initialized');\n }\n\n this.collectionData = await this.client.collections.getById(collectionId);\n\n const videos = this.getVideosFromCollection(this.collectionData);\n if (videos.length === 0) {\n this.emitError(new Error('No videos found in collection'));\n return;\n }\n\n this.renderCarousel();\n this.initSplide();\n\n this.emit('loaded', this.collectionData);\n } catch (error) {\n this.emitError(error instanceof Error ? error : new Error('Failed to load collection'));\n }\n }\n\n private showLoading(): void {\n if (!this.playerElement) return;\n this.playerElement.innerHTML = `\n <div class=\"jaaq-collection-loading\">\n <div class=\"jaaq-collection-spinner\"></div>\n </div>\n `;\n }\n\n private getVideosFromCollection(collection: { videos?: VideoDTO[]; videoGroups?: { videos?: VideoDTO[] }[] }): VideoDTO[] {\n if (collection.videos && collection.videos.length > 0) {\n return collection.videos;\n }\n\n if (collection.videoGroups && collection.videoGroups.length > 0) {\n const videos: VideoDTO[] = [];\n collection.videoGroups.forEach((group) => {\n if (group.videos && group.videos.length > 0) {\n videos.push(...group.videos);\n }\n });\n return videos;\n }\n\n return [];\n }\n\n private renderCarousel(): void {\n if (!this.playerElement || !this.collectionData) return;\n\n this.playerElement.innerHTML = '';\n\n this.carouselElement = document.createElement('div');\n this.carouselElement.className = 'splide jaaq-collection-carousel';\n\n const track = document.createElement('div');\n track.className = 'splide__track';\n\n const list = document.createElement('ul');\n list.className = 'splide__list';\n\n const videos = this.getVideosFromCollection(this.collectionData);\n videos.forEach((video: any) => {\n const slide = document.createElement('li');\n slide.className = 'splide__slide';\n\n const player = document.createElement('jaaq-video-player') as HTMLElement;\n player.setAttribute('video-id', video.videoId);\n if (this.config.apiKey) player.setAttribute('api-key', this.config.apiKey);\n if (this.config.clientId) player.setAttribute('client-id', this.config.clientId);\n if (this.config.baseUrl) player.setAttribute('base-url', this.config.baseUrl);\n if (this.config.apiVersion) player.setAttribute('api-version', this.config.apiVersion);\n player.setAttribute('autoplay', 'false');\n player.setAttribute('width', '100%');\n\n if (this.config.videoSettings) {\n const settings = this.config.videoSettings;\n if (settings.controls !== undefined) {\n player.setAttribute('controls', String(settings.controls));\n }\n if (settings.showLogo !== undefined) {\n player.setAttribute('show-logo', String(settings.showLogo));\n }\n if (settings.showTitle !== undefined) {\n player.setAttribute('show-title', String(settings.showTitle));\n }\n if (settings.showAuthor !== undefined) {\n player.setAttribute('show-author', String(settings.showAuthor));\n }\n if (settings.showDescription !== undefined) {\n player.setAttribute('show-description', String(settings.showDescription));\n }\n if (settings.showCaptions !== undefined) {\n player.setAttribute('show-captions', String(settings.showCaptions));\n }\n if (settings.startMuted !== undefined) {\n player.setAttribute('start-muted', String(settings.startMuted));\n }\n if (settings.width !== undefined) {\n player.setAttribute('width', String(settings.width));\n }\n if (settings.height !== undefined) {\n player.setAttribute('height', String(settings.height));\n }\n }\n\n if (this.client && (player as any).client !== undefined) {\n (player as any).client = this.client;\n }\n\n slide.appendChild(player);\n list.appendChild(slide);\n });\n\n track.appendChild(list);\n this.carouselElement.appendChild(track);\n this.playerElement.appendChild(this.carouselElement);\n }\n\n private initSplide(): void {\n if (!this.carouselElement) return;\n\n this.splide = new Splide(this.carouselElement, {\n type: 'loop',\n perPage: 3,\n focus: 'center',\n gap: '0.5rem',\n perMove: 1,\n autoHeight: true,\n updateOnMove: true,\n padding: '5rem',\n breakpoints: {\n 768: {\n perPage: 1,\n },\n 1024: {\n perPage: 2,\n },\n },\n arrows: this.config.showArrows !== false,\n pagination: this.config.showDots !== false,\n autoplay: false,\n });\n\n this.splide.on('moved', (newIndex: number) => {\n this.handleSlideChange(newIndex);\n\n if (this.collectionData) {\n const videos = this.getVideosFromCollection(this.collectionData);\n this.emit('slidechange', { index: newIndex, video: videos[newIndex] });\n }\n });\n\n this.splide.mount();\n\n setTimeout(() => {\n if (this.splide) {\n this.handleSlideChange(this.splide.index);\n }\n }, 100);\n }\n\n private handleSlideChange(_activeIndex: number): void {\n if (!this.carouselElement) return;\n\n const isAutoplayEnabled = this.config.autoplay;\n\n if (this.autoplayTimeoutId !== null) {\n clearTimeout(this.autoplayTimeoutId);\n this.autoplayTimeoutId = null;\n }\n\n const originalSlides = this.carouselElement.querySelectorAll('.splide__slide:not(.splide__slide--clone)');\n\n originalSlides.forEach((slide) => {\n const player = slide.querySelector('jaaq-video-player') as any;\n if (!player) return;\n\n const isActive = slide.classList.contains('is-active');\n\n if (isActive) {\n if (isAutoplayEnabled) {\n this.autoplayTimeoutId = window.setTimeout(() => {\n player.play?.();\n }, 1000);\n }\n } else {\n player.pause?.();\n }\n });\n }\n\n private destroyCarousel(): void {\n if (this.autoplayTimeoutId !== null) {\n clearTimeout(this.autoplayTimeoutId);\n this.autoplayTimeoutId = null;\n }\n if (this.splide) {\n this.splide.destroy();\n this.splide = null;\n }\n if (this.playerElement) {\n this.playerElement.innerHTML = '';\n }\n this.collectionData = null;\n }\n\n private emitError(error: Error): void {\n if (this.playerElement) {\n this.playerElement.innerHTML = `\n <div class=\"jaaq-collection-error\">\n ${error.message}\n </div>\n `;\n }\n\n this.emit('error', error);\n }\n\n on<K extends keyof CollectionPlayerEventMap>(event: K, callback: CollectionPlayerEventCallback<CollectionPlayerEventMap[K]>): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n this.listeners.get(event)!.add(callback as CollectionPlayerEventCallback<unknown>);\n }\n\n off<K extends keyof CollectionPlayerEventMap>(event: K, callback: CollectionPlayerEventCallback<CollectionPlayerEventMap[K]>): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.delete(callback as CollectionPlayerEventCallback<unknown>);\n }\n }\n\n private emit<K extends keyof CollectionPlayerEventMap>(event: K, data: CollectionPlayerEventMap[K]): void {\n const callbacks = this.listeners.get(event);\n if (callbacks) {\n callbacks.forEach((callback) => {\n callback(data);\n });\n }\n }\n\n refresh(): void {\n this.destroyCarousel();\n this.initCarousel();\n }\n\n next(): void {\n this.splide?.go('+1');\n }\n\n prev(): void {\n this.splide?.go('-1');\n }\n\n go(index: number): void {\n this.splide?.go(index);\n }\n\n destroy(): void {\n this.destroyCarousel();\n this.listeners.clear();\n this.container.innerHTML = '';\n }\n\n getCollection(): CollectionDTO | null {\n return this.collectionData;\n }\n}\n","import { JaaqVideoPlayer } from './VideoPlayer';\nimport type { PlayerConfig } from '@ui/shared/types';\n\n/**\n * Internal registry mapping DOM elements to their player instances\n */\nconst playerRegistry = new WeakMap<Element, JaaqVideoPlayer>();\n\n/**\n * Internal list of all initialized players for cleanup operations\n */\nconst playerList: Array<{ element: Element; player: JaaqVideoPlayer }> = [];\n\n/**\n * Parses data attributes from a DOM element to create player configuration\n * @param element - DOM element with data-* attributes\n * @returns Player configuration object or null if required attributes are missing\n */\nfunction parseDataAttributes(element: Element): PlayerConfig | null {\n const apiKey = element.getAttribute('data-api-key');\n const clientId = element.getAttribute('data-client-id');\n const videoId = element.getAttribute('data-video-id');\n\n if (!apiKey || !clientId || !videoId) {\n console.error('JAAQ Player: Missing required attributes (data-api-key, data-client-id, data-video-id)', element);\n return null;\n }\n\n const config: PlayerConfig = {\n apiKey,\n clientId,\n videoId,\n };\n\n const autoplay = element.getAttribute('data-autoplay');\n if (autoplay !== null) {\n config.autoplay = autoplay === 'true';\n }\n\n const width = element.getAttribute('data-width');\n if (width) {\n config.width = width;\n }\n\n const height = element.getAttribute('data-height');\n if (height) {\n config.height = height;\n }\n\n const baseUrl = element.getAttribute('data-base-url');\n if (baseUrl) {\n config.baseUrl = baseUrl;\n }\n\n const apiVersion = element.getAttribute('data-api-version');\n if (apiVersion) {\n config.apiVersion = apiVersion;\n }\n\n const className = element.getAttribute('data-class-name');\n if (className) {\n config.className = className;\n }\n\n return config;\n}\n\n/**\n * Initializes a video player for a given DOM element\n * @param element - DOM element to initialize player for\n * @returns Initialized player instance or null if initialization fails\n */\nfunction initializePlayer(element: Element): JaaqVideoPlayer | null {\n if (playerRegistry.has(element)) {\n return playerRegistry.get(element)!;\n }\n\n const config = parseDataAttributes(element);\n if (!config) {\n return null;\n }\n\n try {\n const player = new JaaqVideoPlayer(element as HTMLElement, config);\n playerRegistry.set(element, player);\n playerList.push({ element, player });\n return player;\n } catch (error) {\n console.error('JAAQ Player: Failed to initialize player', error, element);\n return null;\n }\n}\n\n/**\n * Initializes all video players with data-jaaq-player attribute\n * @param rootElement - Root element to search for players (defaults to document)\n */\nfunction initializePlayers(rootElement: Document | Element = document): void {\n const elements = rootElement.querySelectorAll('[data-jaaq-player]');\n elements.forEach((element) => {\n initializePlayer(element);\n });\n}\n\n/**\n * Retrieves a player instance for a given element or selector\n * @param elementOrSelector - DOM element or CSS selector\n * @returns Player instance or null if not found\n */\nfunction getPlayer(elementOrSelector: Element | string): JaaqVideoPlayer | null {\n let element: Element | null;\n\n if (typeof elementOrSelector === 'string') {\n element = document.querySelector(elementOrSelector);\n if (!element) {\n console.error('JAAQ Player: Element not found for selector', elementOrSelector);\n return null;\n }\n } else {\n element = elementOrSelector;\n }\n\n return playerRegistry.get(element) || null;\n}\n\n/**\n * Destroys all initialized player instances and cleans up resources\n */\nfunction destroyAll(): void {\n playerList.forEach(({ element, player }) => {\n try {\n player.destroy();\n playerRegistry.delete(element);\n } catch (error) {\n console.error('JAAQ Player: Error destroying player', error);\n }\n });\n playerList.length = 0;\n}\n\n/**\n * Auto-initialization API for declarative video player setup\n * Automatically finds and initializes players marked with [data-jaaq-player]\n * @example\n * // Auto-initialization on page load\n * <div data-jaaq-player data-api-key=\"key\" data-client-id=\"id\" data-video-id=\"video\"></div>\n *\n * // Manual initialization\n * JaaqPlayer.init();\n *\n * // Get player instance\n * const player = JaaqPlayer.getPlayer('[data-video-id=\"video\"]');\n * player.on('play', () => console.log('Playing'));\n */\nexport const JaaqPlayer = {\n /** Initialize all players with [data-jaaq-player] attribute */\n init: initializePlayers,\n /** Get player instance by element or selector */\n getPlayer,\n /** Destroy all initialized players */\n destroyAll,\n};\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n initializePlayers();\n });\n } else {\n initializePlayers();\n }\n}\n",".jaaq-collection-player {\n width: 100%;\n max-width: 1400px;\n margin: 0 auto;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n}\n\n.jaaq-collection-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 400px;\n}\n\n.jaaq-collection-spinner {\n width: 50px;\n height: 50px;\n border: 4px solid rgba(0, 123, 255, 0.3);\n border-top-color: #007bff;\n border-radius: 50%;\n animation: jaaq-collection-spin 1s linear infinite;\n}\n\n@keyframes jaaq-collection-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.jaaq-collection-error {\n background: rgba(220, 53, 69, 0.9);\n color: white;\n padding: 16px 24px;\n border-radius: 8px;\n text-align: center;\n font-size: 14px;\n margin: 20px;\n}\n\n.jaaq-collection-carousel .splide__track {\n padding: 40px 0;\n}\n\n.jaaq-collection-carousel .splide__slide {\n opacity: 0.7;\n transition: all 0.3s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.jaaq-collection-carousel .splide__slide.is-active {\n opacity: 1;\n}\n\n.jaaq-collection-carousel .splide__slide jaaq-video-player {\n width: 100%;\n max-width: 600px;\n transition: all 0.3s ease;\n}\n\n.jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 800px;\n}\n\n.jaaq-collection-carousel .splide__arrow {\n background: rgba(0, 0, 0, 0.5);\n border: none;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n color: white;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n}\n\n.jaaq-collection-carousel .splide__arrow:hover {\n background: rgba(0, 0, 0, 0.8);\n transform: scale(1.1);\n}\n\n.jaaq-collection-carousel .splide__arrow:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n\n.jaaq-collection-carousel .splide__arrow svg {\n fill: white;\n width: 20px;\n height: 20px;\n}\n\n.jaaq-collection-carousel .splide__pagination {\n bottom: -30px;\n}\n\n.jaaq-collection-carousel .splide__pagination__page {\n background: #ccc;\n border: none;\n width: 10px;\n height: 10px;\n margin: 0 4px;\n border-radius: 50%;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.jaaq-collection-carousel .splide__pagination__page.is-active {\n background: white;\n transform: scale(1.3);\n}\n\n@media (max-width: 1024px) {\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 500px;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 650px;\n }\n}\n\n@media (max-width: 768px) {\n .jaaq-collection-carousel .splide__track {\n padding: 20px 0;\n }\n\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 400px;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 500px;\n }\n\n .jaaq-collection-carousel .splide__arrow {\n width: 40px;\n height: 40px;\n }\n}\n\n@media (max-width: 480px) {\n .jaaq-collection-carousel .splide__slide jaaq-video-player {\n max-width: 100%;\n }\n\n .jaaq-collection-carousel .splide__slide.is-active jaaq-video-player {\n max-width: 100%;\n }\n}\n","import Splide from '@splidejs/splide';\nimport { JaaqClient, BASE_URL } from '@src/index';\nimport type { CollectionDTO, VideoDTO } from '@src/types';\nimport sharedStyles from '@ui/shared/styles.css';\nimport collectionStyles from './CollectionPlayer.css';\nimport splideStyles from '@splidejs/splide/css';\n\nconst COMPONENT_STYLES = `\n:host {\n display: block;\n width: 100%;\n}\n\n:host([hidden]) {\n display: none;\n}\n`;\n\nexport class JaaqCollectionPlayerElement extends HTMLElement {\n private splide: Splide | null = null;\n private container: HTMLDivElement | null = null;\n private carouselElement: HTMLDivElement | null = null;\n private clientInstance: JaaqClient | null = null;\n private connected = false;\n private collectionData: CollectionDTO | null = null;\n private autoplayTimeoutId: number | null = null;\n\n static get observedAttributes() {\n return [\n 'collection-id',\n 'api-key',\n 'client-id',\n 'subscription-id',\n 'base-url',\n 'autoplay',\n 'show-arrows',\n 'show-dots',\n 'video-settings',\n ];\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n this.connected = true;\n this.render();\n this.initCarousel();\n }\n\n disconnectedCallback() {\n this.connected = false;\n this.destroyCarousel();\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (!this.connected || oldValue === newValue) return;\n\n if (name === 'collection-id' || name === 'video-settings') {\n this.destroyCarousel();\n this.initCarousel();\n }\n\n if (name === 'show-arrows' || name === 'show-dots') {\n this.destroyCarousel();\n this.initCarousel();\n }\n }\n\n private getBooleanAttr(name: string, defaultValue: boolean): boolean {\n const v = this.getAttribute(name);\n if (v === null) return defaultValue;\n return v !== 'false';\n }\n\n private getVideosFromCollection(collection: { videos?: VideoDTO[]; videoGroups?: { videos?: VideoDTO[] }[] }): VideoDTO[] {\n if (collection.videos && collection.videos.length > 0) {\n return collection.videos;\n }\n\n if (collection.videoGroups && collection.videoGroups.length > 0) {\n const videos: VideoDTO[] = [];\n collection.videoGroups.forEach((group) => {\n if (group.videos && group.videos.length > 0) {\n videos.push(...group.videos);\n }\n });\n return videos;\n }\n\n return [];\n }\n\n private render() {\n if (!this.shadowRoot) return;\n\n const styleSheet = document.createElement('style');\n styleSheet.textContent = `\n ${sharedStyles}\n ${collectionStyles}\n ${splideStyles}\n ${COMPONENT_STYLES}\n `;\n\n this.container = document.createElement('div');\n this.container.className = 'jaaq-collection-player';\n\n this.shadowRoot.appendChild(styleSheet);\n this.shadowRoot.appendChild(this.container);\n }\n\n private async initCarousel() {\n if (!this.container) return;\n\n const collectionId = this.getAttribute('collection-id');\n if (!collectionId) {\n this.emitError(new Error('collection-id attribute is required'));\n return;\n }\n\n const apiKey = this.getAttribute('api-key');\n const clientId = this.getAttribute('client-id');\n const baseUrl = this.getAttribute('base-url') || undefined;\n const apiVersion = this.getAttribute('api-version') || undefined;\n\n if (!this.clientInstance && !apiKey && !clientId) {\n this.emitError(new Error('Either client property or api-key and client-id attributes are required'));\n return;\n }\n\n this.showLoading();\n\n try {\n const client =\n this.clientInstance ||\n JaaqClient.init({\n apiKey: apiKey!,\n clientId: clientId!,\n baseUrl: baseUrl || BASE_URL,\n apiVersion: apiVersion,\n });\n\n this.collectionData = await client.collections.getById(collectionId);\n const videos = this.getVideosFromCollection(this.collectionData);\n\n if (videos.length === 0) {\n this.emitError(new Error('No videos found in collection'));\n return;\n }\n\n this.renderCarousel();\n this.initSplide();\n\n this.dispatchEvent(\n new CustomEvent('jaaq:collection:loaded', {\n detail: this.collectionData,\n bubbles: true,\n composed: true,\n }),\n );\n } catch (error) {\n this.emitError(error instanceof Error ? error : new Error('Failed to load collection'));\n }\n }\n\n private showLoading() {\n if (!this.container) return;\n this.container.innerHTML = `\n <div class=\"jaaq-collection-loading\">\n <div class=\"jaaq-collection-spinner\"></div>\n </div>\n `;\n }\n\n private renderCarousel() {\n if (!this.container || !this.collectionData) return;\n\n this.container.innerHTML = '';\n\n this.carouselElement = document.createElement('div');\n this.carouselElement.className = 'splide jaaq-collection-carousel';\n\n const track = document.createElement('div');\n track.className = 'splide__track';\n\n const list = document.createElement('ul');\n list.className = 'splide__list';\n\n const apiKey = this.getAttribute('api-key');\n const clientId = this.getAttribute('client-id');\n const baseUrl = this.getAttribute('base-url');\n const videoSettingsAttr = this.getAttribute('video-settings');\n let videoSettings: Record<string, unknown> | null = null;\n if (videoSettingsAttr) {\n try {\n videoSettings = JSON.parse(videoSettingsAttr);\n } catch (e) {\n console.warn('[CollectionPlayer] Failed to parse video-settings attribute', e);\n }\n }\n\n const videos = this.getVideosFromCollection(this.collectionData);\n videos.forEach((video) => {\n const slide = document.createElement('li');\n slide.className = 'splide__slide';\n\n const player = document.createElement('jaaq-video-player');\n player.setAttribute('video-id', video.videoId);\n if (apiKey) player.setAttribute('api-key', apiKey);\n if (clientId) player.setAttribute('client-id', clientId);\n if (baseUrl) player.setAttribute('base-url', baseUrl);\n player.setAttribute('autoplay', 'false');\n player.setAttribute('width', '100%');\n\n if (videoSettings) {\n if (videoSettings.controls !== undefined) {\n player.setAttribute('controls', String(videoSettings.controls));\n }\n if (videoSettings.showLogo !== undefined) {\n player.setAttribute('show-logo', String(videoSettings.showLogo));\n }\n if (videoSettings.showTitle !== undefined) {\n player.setAttribute('show-title', String(videoSettings.showTitle));\n }\n if (videoSettings.showAuthor !== undefined) {\n player.setAttribute('show-author', String(videoSettings.showAuthor));\n }\n if (videoSettings.showDescription !== undefined) {\n player.setAttribute('show-description', String(videoSettings.showDescription));\n }\n if (videoSettings.showCaptions !== undefined) {\n player.setAttribute('show-captions', String(videoSettings.showCaptions));\n }\n if (videoSettings.startMuted !== undefined) {\n player.setAttribute('start-muted', String(videoSettings.startMuted));\n }\n if (videoSettings.width !== undefined) {\n player.setAttribute('width', String(videoSettings.width));\n }\n if (videoSettings.height !== undefined) {\n player.setAttribute('height', String(videoSettings.height));\n }\n }\n\n slide.appendChild(player);\n list.appendChild(slide);\n });\n\n track.appendChild(list);\n this.carouselElement.appendChild(track);\n this.container.appendChild(this.carouselElement);\n }\n\n private initSplide() {\n if (!this.carouselElement) return;\n\n const showArrows = this.getBooleanAttr('show-arrows', true);\n const showDots = this.getBooleanAttr('show-dots', true);\n\n this.splide = new Splide(this.carouselElement, {\n type: 'loop',\n perPage: 3,\n focus: 'center',\n gap: '0.5rem',\n perMove: 1,\n autoHeight: true,\n updateOnMove: true,\n padding: '5 rem',\n breakpoints: {\n 768: {\n perPage: 1,\n },\n 1024: {\n perPage: 2,\n },\n },\n arrows: showArrows,\n pagination: showDots,\n autoplay: false,\n });\n\n this.splide.on('moved', (newIndex: number) => {\n console.log('[CollectionPlayer] Splide moved event', {\n newIndex,\n splideIndex: this.splide?.index,\n Components: this.splide?.Components,\n });\n this.handleSlideChange(newIndex);\n\n const videos = this.collectionData ? this.getVideosFromCollection(this.collectionData) : [];\n this.dispatchEvent(\n new CustomEvent('jaaq:collection:slidechange', {\n detail: { index: newIndex, video: videos[newIndex] },\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.splide.mount();\n\n console.log('[CollectionPlayer] After mount', {\n splideIndex: this.splide.index,\n length: this.splide.length,\n });\n\n setTimeout(() => {\n if (this.splide) {\n console.log('[CollectionPlayer] Initial handleSlideChange after DOM update');\n this.handleSlideChange(this.splide.index);\n }\n }, 100);\n }\n\n private handleSlideChange(activeIndex: number) {\n if (!this.carouselElement) return;\n\n const isAutoplayEnabled = this.hasAttribute('autoplay') && this.getAttribute('autoplay') !== 'false';\n console.log('[CollectionPlayer] handleSlideChange called', { activeIndex, isAutoplayEnabled });\n\n if (this.autoplayTimeoutId !== null) {\n console.log('[CollectionPlayer] Clearing existing autoplay timeout', { timeoutId: this.autoplayTimeoutId });\n clearTimeout(this.autoplayTimeoutId);\n this.autoplayTimeoutId = null;\n }\n\n const activeSlide = this.carouselElement.querySelector('.splide__slide.is-active:not(.splide__slide--clone)');\n const activePlayer = activeSlide?.querySelector('jaaq-video-player') as any;\n const activeVideoId = activePlayer?.getAttribute('video-id');\n\n console.log('[CollectionPlayer] Active slide from DOM:', {\n activeIndex,\n activeVideoId,\n foundActiveSlide: !!activeSlide,\n });\n\n const originalSlides = this.carouselElement.querySelectorAll('.splide__slide:not(.splide__slide--clone)');\n\n Array.from(originalSlides).map((slide, idx) => {\n const player = slide.querySelector('jaaq-video-player') as any;\n const videoId = player?.getAttribute('video-id') || 'unknown';\n const isActive = slide.classList.contains('is-active');\n return {\n index: idx,\n videoId,\n isActive,\n };\n });\n\n originalSlides.forEach((slide, index) => {\n const player = slide.querySelector('jaaq-video-player') as any;\n if (!player) return;\n\n const videoId = player.getAttribute('video-id');\n const isActive = slide.classList.contains('is-active');\n\n if (isActive) {\n if (isAutoplayEnabled) {\n this.autoplayTimeoutId = window.setTimeout(() => {\n console.log('[CollectionPlayer] 1s delay complete, playing video', {\n index,\n videoId,\n });\n player.play?.();\n }, 1000);\n }\n } else {\n player.pause?.();\n }\n });\n }\n\n private destroyCarousel() {\n if (this.autoplayTimeoutId !== null) {\n clearTimeout(this.autoplayTimeoutId);\n this.autoplayTimeoutId = null;\n }\n if (this.splide) {\n this.splide.destroy();\n this.splide = null;\n }\n if (this.container) {\n this.container.innerHTML = '';\n }\n this.collectionData = null;\n }\n\n private emitError(error: Error) {\n if (this.container) {\n this.container.innerHTML = `\n <div class=\"jaaq-collection-error\">\n ${error.message}\n </div>\n `;\n }\n\n this.dispatchEvent(\n new CustomEvent('jaaq:collection:error', {\n detail: error,\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n get client(): JaaqClient | null {\n return this.clientInstance;\n }\n\n set client(value: JaaqClient | null) {\n this.clientInstance = value;\n if (this.connected) {\n this.destroyCarousel();\n this.initCarousel();\n }\n }\n\n get collectionId(): string | null {\n return this.getAttribute('collection-id');\n }\n\n set collectionId(value: string | null) {\n if (value) {\n this.setAttribute('collection-id', value);\n } else {\n this.removeAttribute('collection-id');\n }\n }\n\n refresh(): void {\n this.destroyCarousel();\n this.initCarousel();\n }\n\n next(): void {\n this.splide?.go('+1');\n }\n\n prev(): void {\n this.splide?.go('-1');\n }\n\n go(index: number): void {\n this.splide?.go(index);\n }\n\n destroy(): void {\n this.destroyCarousel();\n }\n\n getCollection(): CollectionDTO | null {\n return this.collectionData;\n }\n}\n","import { JaaqVideoPlayer } from '@ui/vanilla/VideoPlayer';\nimport type { JaaqClient } from '@src/index';\nimport type { PlayerState } from '@ui/shared/types';\nimport sharedStyles from '@ui/shared/styles.css';\nimport vanillaStyles from '@ui/vanilla/styles.css';\n\nconst COMPONENT_STYLES = `\n:host {\n display: block;\n width: 100%;\n}\n\n:host([hidden]) {\n display: none;\n}\n`;\n\n/**\n * Custom web component for JAAQ video player with Shadow DOM encapsulation\n * Provides a framework-agnostic video player with custom controls and HLS support\n *\n * @example\n * // Declarative usage\n * <jaaq-video-player\n * video-id=\"video-123\"\n * api-key=\"key\"\n * client-id=\"client\"\n * autoplay=\"false\">\n * </jaaq-video-player>\n *\n * @example\n * // Programmatic usage\n * const player = document.createElement('jaaq-video-player');\n * player.setAttribute('video-id', 'video-123');\n * player.addEventListener('jaaq:play', () => console.log('Playing'));\n * document.body.appendChild(player);\n */\nexport class JaaqVideoPlayerElement extends HTMLElement {\n private player: JaaqVideoPlayer | null = null;\n private container: HTMLDivElement | null = null;\n private clientInstance: JaaqClient | null = null;\n private connected = false;\n\n static get observedAttributes() {\n return [\n 'video-id',\n 'api-key',\n 'client-id',\n 'autoplay',\n 'base-url',\n 'width',\n 'height',\n 'controls',\n 'show-logo',\n 'show-title',\n 'show-author',\n 'show-description',\n 'show-captions',\n 'start-muted',\n ];\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n this.connected = true;\n this.render();\n this.initPlayer();\n }\n\n disconnectedCallback() {\n this.connected = false;\n this.destroyPlayer();\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (!this.connected || oldValue === newValue) return;\n\n if (name === 'video-id' && this.player) {\n this.destroyPlayer();\n this.initPlayer();\n } else if (name === 'width' || name === 'height') {\n this.updateContainerStyles();\n } else if (\n name === 'controls' ||\n name === 'show-logo' ||\n name === 'show-title' ||\n name === 'show-author' ||\n name === 'show-description' ||\n name === 'show-captions' ||\n name === 'start-muted'\n ) {\n if (this.player) {\n const features: any = {};\n if (name === 'controls') {\n features.controls = !this.hasAttribute('controls') || this.getAttribute('controls') !== 'false';\n } else if (name === 'show-logo') {\n features.showLogo = !this.hasAttribute('show-logo') || this.getAttribute('show-logo') !== 'false';\n } else if (name === 'show-title') {\n features.showTitle = !this.hasAttribute('show-title') || this.getAttribute('show-title') !== 'false';\n } else if (name === 'show-author') {\n features.showAuthor = !this.hasAttribute('show-author') || this.getAttribute('show-author') !== 'false';\n } else if (name === 'show-description') {\n features.showDescription = !this.hasAttribute('show-description') || this.getAttribute('show-description') !== 'false';\n } else if (name === 'show-captions') {\n features.showCaptions = !this.hasAttribute('show-captions') || this.getAttribute('show-captions') !== 'false';\n } else if (name === 'start-muted') {\n features.startMuted = this.hasAttribute('start-muted') && this.getAttribute('start-muted') !== 'false';\n }\n this.player.setFeatures(features);\n }\n }\n }\n\n private render() {\n if (!this.shadowRoot) return;\n\n const styleSheet = document.createElement('style');\n styleSheet.textContent = `\n ${sharedStyles}\n ${vanillaStyles}\n ${COMPONENT_STYLES}\n `;\n\n this.container = document.createElement('div');\n this.container.className = 'jaaq-webcomponent-container';\n\n this.shadowRoot.appendChild(styleSheet);\n this.shadowRoot.appendChild(this.container);\n\n this.updateContainerStyles();\n }\n\n private updateContainerStyles() {\n if (!this.container) return;\n\n const width = this.getAttribute('width') || '100%';\n const height = this.getAttribute('height') || 'auto';\n\n this.container.style.width = width;\n this.container.style.height = height;\n }\n\n private async initPlayer() {\n if (!this.container || this.player) return;\n\n const videoId = this.getAttribute('video-id');\n if (!videoId) {\n this.emitError(new Error('video-id attribute is required'));\n return;\n }\n\n const apiKey = this.getAttribute('api-key');\n const clientId = this.getAttribute('client-id');\n const baseUrl = this.getAttribute('base-url') || undefined;\n const apiVersion = this.getAttribute('api-version') || undefined;\n const autoplay = this.hasAttribute('autoplay') && this.getAttribute('autoplay') !== 'false';\n const controls = !this.hasAttribute('controls') || this.getAttribute('controls') !== 'false';\n\n const showLogo = !this.hasAttribute('show-logo') || this.getAttribute('show-logo') !== 'false';\n const showTitle = !this.hasAttribute('show-title') || this.getAttribute('show-title') !== 'false';\n const showAuthor = !this.hasAttribute('show-author') || this.getAttribute('show-author') !== 'false';\n const showDescription = !this.hasAttribute('show-description') || this.getAttribute('show-description') !== 'false';\n const showCaptions = !this.hasAttribute('show-captions') || this.getAttribute('show-captions') !== 'false';\n const startMuted = this.hasAttribute('start-muted') && this.getAttribute('start-muted') !== 'false';\n\n if (!this.clientInstance && !apiKey && !clientId) {\n this.emitError(new Error('Either client property or api-key and client-id attributes are required'));\n return;\n }\n\n try {\n this.player = new JaaqVideoPlayer(this.container, {\n videoId: videoId ?? undefined,\n apiKey: apiKey ?? undefined,\n clientId: clientId ?? undefined,\n client: this.clientInstance || undefined,\n baseUrl,\n apiVersion,\n autoplay,\n controls,\n showLogo,\n showTitle,\n showAuthor,\n showDescription,\n showCaptions,\n startMuted,\n });\n\n this.attachPlayerEvents();\n } catch (error) {\n this.emitError(error instanceof Error ? error : new Error('Failed to initialize player'));\n }\n }\n\n private attachPlayerEvents() {\n if (!this.player) return;\n\n this.player.on('loaded', (video) => {\n this.dispatchEvent(\n new CustomEvent('jaaq:loaded', {\n detail: video,\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('play', () => {\n this.dispatchEvent(\n new CustomEvent('jaaq:play', {\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('pause', () => {\n this.dispatchEvent(\n new CustomEvent('jaaq:pause', {\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('timeupdate', (time) => {\n this.dispatchEvent(\n new CustomEvent('jaaq:timeupdate', {\n detail: time,\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('volumechange', (volume) => {\n this.dispatchEvent(\n new CustomEvent('jaaq:volumechange', {\n detail: volume,\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('ended', () => {\n this.dispatchEvent(\n new CustomEvent('jaaq:ended', {\n bubbles: true,\n composed: true,\n }),\n );\n });\n\n this.player.on('error', (error) => {\n this.emitError(error);\n });\n\n this.player.on('fullscreenchange', (isFullscreen) => {\n this.dispatchEvent(\n new CustomEvent('jaaq:fullscreenchange', {\n detail: isFullscreen,\n bubbles: true,\n composed: true,\n }),\n );\n });\n }\n\n private emitError(error: Error) {\n this.dispatchEvent(\n new CustomEvent('jaaq:error', {\n detail: error,\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private destroyPlayer() {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n\n /**\n * Gets the current JaaqClient instance\n */\n get client(): JaaqClient | null {\n return this.clientInstance;\n }\n\n /**\n * Sets a JaaqClient instance for the player to use\n * Reinitializes the player if already connected\n */\n set client(value: JaaqClient | null) {\n this.clientInstance = value;\n if (this.connected) {\n this.destroyPlayer();\n this.initPlayer();\n }\n }\n\n /**\n * Gets the current video ID\n */\n get videoId(): string | null {\n return this.getAttribute('video-id');\n }\n\n /**\n * Sets the video ID\n * Updates the video-id attribute and triggers player reinitialization\n */\n set videoId(value: string | null) {\n if (value) {\n this.setAttribute('video-id', value);\n } else {\n this.removeAttribute('video-id');\n }\n }\n\n /**\n * Starts or resumes video playback\n */\n play(): void {\n this.player?.play();\n }\n\n /**\n * Pauses video playback\n */\n pause(): void {\n this.player?.pause();\n }\n\n /**\n * Sets the playback volume\n * @param volume - Volume level between 0 (silent) and 1 (maximum)\n */\n setVolume(volume: number): void {\n this.player?.setVolume(volume);\n }\n\n /**\n * Toggles audio mute state\n */\n toggleMute(): void {\n this.player?.toggleMute();\n }\n\n /**\n * Seeks to a specific time in the video\n * @param time - Target time in seconds\n */\n seek(time: number): void {\n this.player?.seek(time);\n }\n\n /**\n * Returns the current player state\n * @returns Current player state object or null if player not initialized\n */\n getState(): PlayerState | null {\n return this.player?.getState() || null;\n }\n\n /**\n * Destroys the player instance and cleans up resources\n */\n destroy(): void {\n this.destroyPlayer();\n }\n}\n","import { JaaqVideoPlayerElement } from './VideoPlayer';\nimport { JaaqCollectionPlayerElement } from './CollectionPlayer';\n\nconst COMPONENT_TAGS = {\n VIDEO_PLAYER: 'jaaq-video-player',\n COLLECTION_PLAYER: 'jaaq-collection-player',\n};\n\n/**\n * Registers JAAQ custom elements (<jaaq-video-player> and <jaaq-collection-player>)\n * Safe to call multiple times - only registers if not already registered\n *\n * @example\n * import { registerJaaqComponents } from '@jaaq/jaaq-sdk-js/ui/webcomponents';\n * registerJaaqComponents();\n */\nexport function registerJaaqComponents(): void {\n if (typeof window === 'undefined' || typeof customElements === 'undefined') {\n console.warn('Custom Elements API is not available. Web components cannot be registered.');\n return;\n }\n\n if (!customElements.get(COMPONENT_TAGS.VIDEO_PLAYER)) {\n customElements.define(COMPONENT_TAGS.VIDEO_PLAYER, JaaqVideoPlayerElement);\n }\n\n if (!customElements.get(COMPONENT_TAGS.COLLECTION_PLAYER)) {\n customElements.define(COMPONENT_TAGS.COLLECTION_PLAYER, JaaqCollectionPlayerElement);\n }\n}\n\n/**\n * Checks if the JAAQ web components are already registered\n * @returns True if components are registered, false otherwise\n */\nexport function isRegistered(): boolean {\n if (typeof window === 'undefined' || typeof customElements === 'undefined') {\n return false;\n }\n return !!customElements.get(COMPONENT_TAGS.VIDEO_PLAYER) && !!customElements.get(COMPONENT_TAGS.COLLECTION_PLAYER);\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n registerJaaqComponents();\n });\n } else {\n registerJaaqComponents();\n }\n}\n"],"names":["clamp","COMPONENT_STYLES"],"mappings":"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","x_google_ignoreList":[10,11]}