{"version":3,"file":"airplay-button.cjs","names":["de","en","fr","it","rm","videojs","extendLanguage","code","data","_videojs$options$lang","addLanguage","_objectSpread","options","language","videojs","version","SvgButton","getComponent","_mediaElement","WeakMap","AirplayButton","constructor","player","options","_classPrivateFieldInitSpec","init","dispose","_classPrivateFieldSet","isAirplaySupported","hide","tech","el","show","handleClick","event","_classPrivateFieldGet2","_classPrivateFieldGet","webkitShowPlaybackTargetPicker","window","WebKitPlaybackTargetAvailabilityEvent","buildCSSClass","VERSION","prototype","options_","controlText","iconName","registerComponent"],"sources":["../package.json","../src/lang/de.json","../src/lang/en.json","../src/lang/fr.json","../src/lang/it.json","../src/lang/rm.json","../src/lang/index.js","../src/airplay-button.js"],"sourcesContent":["{\n  \"name\": \"@srgssr/airplay-button\",\n  \"version\": \"1.1.2\",\n  \"license\": \"MIT\",\n  \"author\": \"SRG SSR\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/SRGSSR/pillarbox-web-suite.git\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"homepage\": \"https://github.com/SRGSSR/pillarbox-web-suite/tree/main/packages/airplay-button#readme\",\n  \"type\": \"module\",\n  \"main\": \"dist/airplay-button.cjs\",\n  \"browser\": \"dist/airplay-button.umd.min.js\",\n  \"module\": \"dist/airplay-button.js\",\n  \"style\": \"./dist/airplay-button.min.css\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/airplay-button.js\",\n      \"require\": \"./dist/airplay-button.cjs\"\n    },\n    \"./*\": \"./*\"\n  },\n  \"files\": [\n    \"dist/*\",\n    \"scss/*\",\n    \"assets/*\"\n  ],\n  \"keywords\": [\n    \"video.js\",\n    \"player\"\n  ],\n  \"scripts\": {\n    \"clean\": \"rimraf dist\",\n    \"build\": \"npm-run-all clean build:*\",\n    \"build:css\": \"sass ./scss/airplay-button.scss:dist/airplay-button.min.css --style compressed --source-map --load-path node_modules\",\n    \"build:lib\": \"vite build --config vite.config.lib.js\",\n    \"build:umd\": \"vite build --config vite.config.umd.js\",\n    \"github:page\": \"vite build\",\n    \"release:ci\": \"semantic-release\",\n    \"start\": \" vite --port 4200 --open\",\n    \"test\": \"vitest run --silent --coverage --coverage.reporter text\"\n  },\n  \"dependencies\": {\n    \"@srgssr/svg-button\": \"^1.0.0\"\n  },\n  \"peerDependencies\": {\n    \"video.js\": \"^8.0.0\"\n  },\n  \"devDependencies\": {\n    \"@srgssr/pillarbox-web\": \"^1.36.1\"\n  }\n}\n","{\n  \"Use AirPlay\": \"AirPlay verwenden\"\n}\n","{\n  \"Use AirPlay\": \"Use AirPlay\"\n}\n","{\n  \"Use AirPlay\": \"Utiliser AirPlay\"\n}\n","{\n  \"Use AirPlay\": \"Usa AirPlay\"\n}\n","{\n  \"Use AirPlay\": \"Utilisar AirPlay\"\n}\n","import de from './de.json';\nimport en from './en.json';\nimport fr from './fr.json';\nimport it from './it.json';\nimport rm from './rm.json';\nimport videojs from 'video.js';\n\nfunction extendLanguage(code, data) {\n  videojs.addLanguage(code, {\n    ...videojs.options.language[code] ?? {},\n    ...data\n  });\n}\n\nextendLanguage('de', de);\nextendLanguage('en', en);\nextendLanguage('fr', fr);\nextendLanguage('it', it);\nextendLanguage('rm', rm);\n","import videojs from 'video.js';\nimport '@srgssr/svg-button';\nimport { version } from '../package.json';\nimport './lang';\n\n/**\n * @ignore\n * @type {typeof import('@srgssr/svg-button').SvgButton}\n */\nconst SvgButton = videojs.getComponent('SvgButton');\n\n/**\n * Represents a AirplayButton component for the videojs player.\n */\nclass AirplayButton extends SvgButton {\n  /**\n   * The media element associated to the player.\n   *\n   * @type {HTMLMediaElement|null}\n   */\n  #mediaElement;\n\n  /**\n   * Creates an instance of a AirplayButton.\n   *\n   * @param {import('video.js/dist/types/player.js').default} player The player instance.\n   * @param {Object} options Configuration options for the component.\n   */\n  constructor(player, options) {\n    super(player, options);\n    this.init();\n  }\n\n  dispose() {\n    this.#mediaElement = null;\n\n    super.dispose();\n  }\n\n  /**\n   * Initializes the AirplayButton by checking for support and\n   * registering the device availability event listener.\n   */\n  init() {\n    if (!AirplayButton.isAirplaySupported()) {\n       this.hide();\n\n      return;\n    }\n\n    this.#mediaElement = this.player().tech(true).el();\n    this.show();\n  }\n\n  /**\n   * Handles click events on the AirplayButton.\n   *\n   * @param {Event} event The click event.\n   */\n  handleClick(event) {\n    super.handleClick(event);\n    this.#mediaElement?.webkitShowPlaybackTargetPicker();\n  }\n\n  /**\n   * Checks whether the current environment supports AirPlay.\n   *\n   * @returns {boolean} True if AirPlay is supported, false otherwise.\n   */\n  static isAirplaySupported() {\n    return !!window.WebKitPlaybackTargetAvailabilityEvent;\n  }\n\n  /**\n   * Builds the CSS class string for the button.\n   *\n   * @returns {string} The CSS class string.\n   */\n  buildCSSClass() {\n    return `vjs-airplay-button vjs-hidden ${super.buildCSSClass()}`;\n  }\n\n  static get VERSION() {\n    return version;\n  }\n}\n\nAirplayButton.prototype.options_ = {\n  controlText: 'Use AirPlay',\n  iconName: 'airplay'\n};\n\nvideojs.registerComponent('AirplayButton', AirplayButton);\n\nexport default AirplayButton;\n"],"mappings":"2jGMOA,SAASM,EAAeC,EAAMC,EAAM,CAClCH,EAAAA,QAAQK,YAAYH,EAAII,EAAAA,EAAA,CAAA,EACnBN,EAAAA,QAAQO,QAAQC,SAASN,IAAS,CAAC,CAAC,EACpCC,CAAI,CACR,CACH,CAEAF,EAAe,KAAMN,CAAE,EACvBM,EAAe,KAAML,CAAE,EACvBK,EAAe,KAAMJ,CAAE,EACvBI,EAAe,KAAMH,CAAE,EACvBG,EAAe,KAAMF,CAAE,ECTvB,IAAMY,EAAYF,EAAAA,QAAQG,aAAa,WAAW,EAElDC,EAAA,IAAAC,QAGMC,EAAN,MAAMA,UAAsBJ,CAAU,CAcpCK,YAAYC,EAAQC,EAAS,CAC3B,MAAMD,EAAQC,CAAO,EATvBC,EAAA,KAAAN,EAAa,IAAA,EAAA,EAUX,KAAKO,KAAK,CACZ,CAEAC,SAAU,CACRC,EAAKT,EAAL,KAAqB,IAAJ,EAEjB,MAAMQ,QAAQ,CAChB,CAMAD,MAAO,CACL,GAAI,CAACL,EAAcQ,mBAAmB,EAAG,CACtC,KAAKC,KAAK,EAEX,MACF,CAEAF,EAAKT,EAAL,KAAqB,KAAKI,OAAO,CAAC,CAACQ,KAAK,EAAI,CAAC,CAACC,GAAG,CAAhC,EACjB,KAAKC,KAAK,CACZ,CAOAC,YAAYC,EAAO,CAAA,IAAAC,EACjB,MAAMF,YAAYC,CAAK,GACvBC,EAAAC,EAAKlB,EAAL,IAAiB,IAAC,MAAlBiB,EAAoBE,+BAA+B,CACrD,CAOA,OAAOT,oBAAqB,CAC1B,MAAO,CAAC,CAACU,OAAOC,qCAClB,CAOAC,eAAgB,CACd,MAAO,iCAAiC,MAAMA,cAAc,GAC9D,CAEA,WAAWC,SAAU,CACnB,OAAO1B,CACT,CACF,EAEAK,EAAcsB,UAAUC,SAAW,CACjCC,YAAa,cACbC,SAAU,SACZ,EAEA/B,EAAAA,QAAQgC,kBAAkB,gBAAiB1B,CAAa"}