{"version":3,"file":"v-clappr.cjs","sources":["../src/components/VClappr.vue","../src/install.ts"],"sourcesContent":["<script setup lang=\"ts\">\n  import { ref, onMounted, onBeforeUnmount, watch } from 'vue';\n  import { Player } from '@clappr/core';\n  import {\n    ClickToPause,\n    ClosedCaptions,\n    DVRControls,\n    EndVideo,\n    ErrorScreen,\n    Favicon,\n    GoogleAnalytics,\n    MediaControl,\n    Poster,\n    SeekTime,\n    SpinnerThreeBounce,\n    Stats,\n    WaterMark,\n  } from '@clappr/plugins';\n  import HlsjsPlayback from '@clappr/hlsjs-playback';\n  import type { PropType, Ref } from 'vue';\n\n  type Options = {\n    width?: number | string;\n    height?: number | string;\n    poster?: string;\n    mute?: boolean;\n    autoPlay?: boolean;\n    loop?: boolean;\n    language?: string;\n    playbackNotSupportedMessage?: string;\n    autoSeekFromUrl?: boolean;\n    includeResetStyle?: boolean;\n    playback?: {\n      preload?: string;\n      disableContextMenu?: boolean;\n      controls?: boolean;\n      crossOrigin?: string | null;\n      playInline?: boolean;\n      minimumDvrSize?: null | unknown;\n      externalTracks?: string[] | null;\n      hlsjsConfig?: Record<string, unknown>;\n      dashShakaConfig?: Record<string, unknown>;\n    };\n  };\n\n  const emit = defineEmits<{\n    init: [e: Player];\n    ready: [e: Player];\n    resize: [e: { width: number; height: number }];\n    play: [e: boolean];\n    pause: [e: boolean];\n    stop: [e: boolean];\n    ended: [e: boolean];\n    seek: [e: number];\n    error: [e: Error];\n    'time-updated': [{ current: number; total: number }];\n    'volume-updated': [e: number];\n    'subtitle-available': [e: boolean];\n  }>();\n\n  const el = defineModel('el', {\n    type: String,\n    required: true,\n    default: 'player',\n  });\n  const source = defineModel('source', {\n    type: String,\n    required: true,\n  });\n  const options = defineModel('options', {\n    type: Object as PropType<Options>,\n    required: false,\n    default: {\n      width: '100%',\n      height: '100%',\n      autoPlay: false,\n      mute: false,\n      loop: false,\n      language: 'en-US',\n      playbackNotSupportedMessage: 'Playback not supported',\n      autoSeekFromUrl: true,\n      includeResetStyle: true,\n      playback: {\n        preload: 'metadata',\n        disableContextMenu: true,\n        controls: false,\n        crossOrigin: null,\n        playInline: false,\n        minimumDvrSize: null,\n        externalTracks: [],\n        hlsjsConfig: {},\n        dashShakaConfig: {},\n      },\n      poster: 'https://picsum.photos/3840/2160',\n    },\n  });\n\n  const player: Ref<Player | null> = ref(null);\n\n  onMounted(async () => {\n    await initPlayer();\n  });\n\n  onBeforeUnmount(() => {\n    player.value?.destroy();\n    player.value = null;\n  });\n\n  watch(player, () => {\n    if (player.value) emit('init', player.value);\n  });\n\n  const initPlayer = async (): Promise<string> => {\n    // Return a new promise\n    return new Promise((resolve, reject) => {\n      if (el.value) {\n        // New Player instance\n        player.value = new Player({\n          parentId: `#${el.value}`,\n          source: source.value,\n          plugins: [\n            MediaControl,\n            ClosedCaptions,\n            EndVideo,\n            SpinnerThreeBounce,\n            WaterMark,\n            Stats,\n            ClickToPause,\n            DVRControls,\n            ErrorScreen,\n            Favicon,\n            GoogleAnalytics,\n            Poster,\n            SeekTime,\n            SpinnerThreeBounce,\n            Stats,\n            WaterMark,\n            HlsjsPlayback,\n            // DashShakaPlayback,\n          ],\n          events: {\n            onReady: (e: Player) => {\n              emit('ready', e);\n            },\n            onResize: (e: { width: number; height: number }) => {\n              emit('resize', e);\n            },\n            onPlay: () => {\n              emit('play', true);\n            },\n            onPause: () => {\n              emit('pause', true);\n            },\n            onStop: (e: boolean) => {\n              emit('stop', e);\n            },\n            onEnded: () => {\n              emit('ended', true);\n            },\n            onSeek: (e: number) => {\n              emit('seek', e);\n            },\n            onError: (e: Error) => {\n              emit('error', e);\n            },\n            onTimeUpdate: (e: { current: number; total: number }) => {\n              emit('time-updated', e);\n            },\n            onVolumeUpdate: (e: number) => {\n              emit('volume-updated', e);\n            },\n            onSubtitleAvailable: (e: boolean) => {\n              emit('subtitle-available', e);\n            },\n          },\n          ...options.value,\n        });\n        resolve('Player created!');\n      } else {\n        reject(new Error('Root element not found'));\n      }\n    });\n  };\n</script>\n\n<template>\n  <div :id=\"el\" />\n</template>\n","import { App as Application, Plugin } from 'vue';\nimport VClappr from './components/VClappr.vue';\nimport { setVueInstance } from './utils/config';\n\nlet installed = false;\n\nconst install: Exclude<Plugin['install'], undefined> = (app: Application) => {\n  if (!installed) {\n    setVueInstance(app);\n    app.component('VClappr', VClappr);\n    installed = true;\n  }\n};\n\nexport default install;\n"],"names":["emit","__emit","el","_useModel","__props","source","options","player","ref","onMounted","initPlayer","onBeforeUnmount","watch","resolve","reject","Player","MediaControl","ClosedCaptions","EndVideo","SpinnerThreeBounce","WaterMark","Stats","ClickToPause","DVRControls","ErrorScreen","Favicon","GoogleAnalytics","Poster","SeekTime","HlsjsPlayback","e","installed","install","app","VClappr","install$1"],"mappings":";;;;;mgCA6CE,MAAMA,EAAOC,EAePC,EAAKC,EAAAA,SAAYC,EAAA,IAItB,EACKC,EAASF,EAAAA,SAAYC,EAAA,QAG1B,EACKE,EAAUH,EAAAA,SAAYC,EAAA,SA0B3B,EAEKG,EAA6BC,MAAI,IAAI,EAE3CC,EAAAA,UAAU,SAAY,CACpB,MAAMC,EAAW,CAAA,CAClB,EAEDC,EAAAA,gBAAgB,IAAM,CACpBJ,EAAO,OAAO,UACdA,EAAO,MAAQ,IAAA,CAChB,EAEDK,EAAA,MAAML,EAAQ,IAAM,CACdA,EAAO,OAAYP,EAAA,OAAQO,EAAO,KAAK,CAAA,CAC5C,EAED,MAAMG,EAAa,SAEV,IAAI,QAAQ,CAACG,EAASC,IAAW,CAClCZ,EAAG,OAEEK,EAAA,MAAQ,IAAIQ,SAAO,CACxB,SAAU,IAAIb,EAAG,KAAK,GACtB,OAAQG,EAAO,MACf,QAAS,CACPW,EAAA,aACAC,EAAA,eACAC,EAAA,SACAC,EAAA,mBACAC,EAAA,UACAC,EAAA,MACAC,EAAA,aACAC,EAAA,YACAC,EAAA,YACAC,EAAA,QACAC,EAAA,gBACAC,EAAA,OACAC,EAAA,SACAT,EAAA,mBACAE,EAAA,MACAD,EAAA,UACAS,CAEF,EACA,OAAQ,CACN,QAAUC,GAAc,CACtB9B,EAAK,QAAS8B,CAAC,CACjB,EACA,SAAWA,GAAyC,CAClD9B,EAAK,SAAU8B,CAAC,CAClB,EACA,OAAQ,IAAM,CACZ9B,EAAK,OAAQ,EAAI,CACnB,EACA,QAAS,IAAM,CACbA,EAAK,QAAS,EAAI,CACpB,EACA,OAAS8B,GAAe,CACtB9B,EAAK,OAAQ8B,CAAC,CAChB,EACA,QAAS,IAAM,CACb9B,EAAK,QAAS,EAAI,CACpB,EACA,OAAS8B,GAAc,CACrB9B,EAAK,OAAQ8B,CAAC,CAChB,EACA,QAAUA,GAAa,CACrB9B,EAAK,QAAS8B,CAAC,CACjB,EACA,aAAeA,GAA0C,CACvD9B,EAAK,eAAgB8B,CAAC,CACxB,EACA,eAAiBA,GAAc,CAC7B9B,EAAK,iBAAkB8B,CAAC,CAC1B,EACA,oBAAsBA,GAAe,CACnC9B,EAAK,qBAAsB8B,CAAC,CAC9B,CACF,EACA,GAAGxB,EAAQ,KAAA,CACZ,EACDO,EAAQ,iBAAiB,GAElBC,EAAA,IAAI,MAAM,wBAAwB,CAAC,CAC5C,CACD,oFCjLL,IAAIiB,EAAY,GAEhB,MAAMC,EAAkDC,GAAqB,CACtEF,IAECE,EAAA,UAAU,UAAWC,CAAO,EACpBH,EAAA,GAEhB,EAEAI,EAAeH"}