UNPKG

@hercilio/ngx-youtube-player

Version:

[![Build Status](https://travis-ci.org/Hernior/ngx-youtube-player.svg?branch=master)](https://travis-ci.org/Hernior/ngx-youtube-player) [![npm version](https://badge.fury.io/js/ngx-youtube-player.svg)](https://badge.fury.io/js/ngx-youtube-player) [![npm d

1 lines 14.4 kB
{"version":3,"file":"hercilio-ngx-youtube-player.mjs","sources":["../../../projects/ngx-youtube-player/src/lib/ngx-youtube-player.service.ts","../../../projects/ngx-youtube-player/src/lib/ngx-youtube-player.component.ts","../../../projects/ngx-youtube-player/src/lib/ngx-youtube-player.module.ts","../../../projects/ngx-youtube-player/src/public_api.ts","../../../projects/ngx-youtube-player/src/hercilio-ngx-youtube-player.ts"],"sourcesContent":["import { Injectable, NgZone } from \"@angular/core\";\nimport { ReplaySubject } from \"rxjs\";\nimport { IPlayerApiScriptOptions, IPlayerOutputs, IPlayerSize } from \"./models\";\n\nexport function win() {\n return window;\n}\n\nexport function YouTubeRef(): any {\n return win()[\"YT\"] as any;\n}\n\nexport function YouTubePlayerRef() {\n return YouTubeRef().Player as any;\n}\n\nexport const defaultSizes = {\n height: 270,\n width: 367,\n};\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class YoutubePlayerService {\n api: ReplaySubject<YT.Player>;\n\n static ytApiLoaded = false;\n\n constructor(private zone: NgZone) {\n this.api = new ReplaySubject(1);\n this.createApi();\n }\n\n loadPlayerApi(options: IPlayerApiScriptOptions) {\n const doc = win().document;\n if (!YoutubePlayerService[\"ytApiLoaded\"]) {\n YoutubePlayerService.ytApiLoaded = true;\n const playerApiScript = doc.createElement(\"script\");\n playerApiScript.type = \"text/javascript\";\n playerApiScript.src = `${options.protocol}://www.youtube.com/iframe_api`;\n doc.body.appendChild(playerApiScript);\n }\n }\n\n setupPlayer(\n elementId: string,\n outputs: IPlayerOutputs,\n sizes: IPlayerSize,\n videoId = \"\",\n playerVars: YT.PlayerVars\n ) {\n const createPlayer = () => {\n if (YouTubePlayerRef) {\n this.createPlayer(elementId, outputs, sizes, videoId, playerVars);\n }\n };\n this.api.subscribe(createPlayer);\n }\n\n play(player: YT.Player) {\n player.playVideo();\n }\n\n pause(player: YT.Player) {\n player.pauseVideo();\n }\n\n playVideo(media: any, player: YT.Player) {\n const id = media.id.videoId ? media.id.videoId : media.id;\n player.loadVideoById(id);\n this.play(player);\n }\n\n isPlaying(player: YT.Player) {\n // because YT is not loaded yet 1 is used - YT.PlayerState.PLAYING\n const isPlayerReady: any = player && player.getPlayerState;\n const playerState = isPlayerReady ? player.getPlayerState() : {};\n const isPlayerPlaying = isPlayerReady\n ? playerState !== YouTubeRef().PlayerState.ENDED &&\n playerState !== YouTubeRef().PlayerState.PAUSED\n : false;\n return isPlayerPlaying;\n }\n\n createPlayer(\n elementId: string,\n outputs: IPlayerOutputs,\n sizes: IPlayerSize,\n videoId = \"\",\n playerVars: YT.PlayerVars = {}\n ) {\n const playerSize = {\n height: sizes.height || defaultSizes.height,\n width: sizes.width || defaultSizes.width,\n };\n const ytPlayer = YouTubePlayerRef();\n return new ytPlayer(elementId, {\n ...playerSize,\n events: {\n onReady: (ev: YT.PlayerEvent) => {\n this.zone.run(() => outputs.ready && outputs.ready.next(ev.target));\n },\n onStateChange: (ev: YT.PlayerEvent) => {\n this.zone.run(() => outputs.change && outputs.change.next(ev));\n },\n },\n playerVars,\n videoId,\n });\n }\n\n toggleFullScreen(\n player: YT.Player,\n isFullScreen: boolean | null | undefined\n ) {\n let { height, width } = defaultSizes;\n\n if (!isFullScreen) {\n height = window.innerHeight;\n width = window.innerWidth;\n }\n player.setSize(width, height);\n }\n\n // adpoted from uid\n generateUniqueId(): string {\n const len = 7;\n return Math.random().toString(35).substr(2, len);\n }\n\n private createApi() {\n const onYouTubeIframeAPIReady = () => {\n if (win()) {\n win()[\"onYouTubeIframeAPIReadyCalled\"] = true;\n this.api.next();\n }\n };\n win()[\"onYouTubeIframeAPIReady\"] = onYouTubeIframeAPIReady;\n /**\n * If onYouTubeIframeAPIReady is called in other place, then just trigger next\n * This is to prevent player not initializing issue when another player got initialized in other place\n */\n if (win()[\"onYouTubeIframeAPIReadyCalled\"]) {\n this.api.next();\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n Renderer2,\n SimpleChanges\n} from '@angular/core';\nimport {\n YoutubePlayerService,\n defaultSizes\n} from './ngx-youtube-player.service';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'youtube-player',\n template: `\n <div id=\"yt-player-ngx-component\"></div>\n `\n})\nexport class YoutubePlayerComponent implements AfterContentInit {\n @Input() videoId = '';\n @Input() height = defaultSizes.height;\n @Input() width = defaultSizes.width;\n /**\n * @description sets the protocol by the navigator object\n * if there is no window, it sets a default http protocol\n * unless the protocol is set from outside\n */\n @Input() protocol: string = this.getProtocol();\n @Input() playerVars: YT.PlayerVars = {};\n\n // player created and initialized - sends instance of the player\n @Output() ready = new EventEmitter<YT.Player>();\n // state change: send the YT event with its state\n @Output() change = new EventEmitter<YT.PlayerEvent>();\n\n constructor(\n public playerService: YoutubePlayerService,\n private elementRef: ElementRef,\n private renderer: Renderer2\n ) {}\n\n ngAfterContentInit() {\n const htmlId = this.playerService.generateUniqueId();\n const playerSize = { height: this.height, width: this.width };\n const container = this.renderer.selectRootElement(\n '#yt-player-ngx-component'\n );\n this.renderer.setAttribute(container, 'id', htmlId);\n this.playerService.loadPlayerApi({\n protocol: this.protocol\n });\n this.playerService.setupPlayer(\n htmlId,\n {\n change: this.change,\n ready: this.ready\n },\n playerSize,\n this.videoId,\n this.playerVars\n );\n }\n\n getProtocol() {\n const hasWindow = window && window.location;\n const protocol = hasWindow\n ? window.location.protocol.replace(':', '')\n : 'http';\n return protocol;\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { YoutubePlayerComponent } from './ngx-youtube-player.component';\nimport { YoutubePlayerService } from './ngx-youtube-player.service';\n\n@NgModule({\n declarations: [YoutubePlayerComponent],\n imports: [],\n providers: [YoutubePlayerService],\n exports: [YoutubePlayerComponent]\n})\nexport class NgxYoutubePlayerModule {\n static forRoot(): ModuleWithProviders<NgxYoutubePlayerModule> {\n return {\n ngModule: NgxYoutubePlayerModule,\n providers: [YoutubePlayerService]\n };\n }\n}\n","/*\n * Public API Surface of ngx-youtube-player\n */\n\nexport * from './lib/ngx-youtube-player.service';\nexport * from './lib/ngx-youtube-player.component';\nexport * from './lib/ngx-youtube-player.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.YoutubePlayerService"],"mappings":";;;;SAIgB,GAAG,GAAA;AACjB,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;SAEe,UAAU,GAAA;AACxB,IAAA,OAAO,GAAG,EAAE,CAAC,IAAI,CAAQ,CAAC;AAC5B,CAAC;SAEe,gBAAgB,GAAA;AAC9B,IAAA,OAAO,UAAU,EAAE,CAAC,MAAa,CAAC;AACpC,CAAC;AAEY,MAAA,YAAY,GAAG;AAC1B,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,KAAK,EAAE,GAAG;EACV;MAKW,oBAAoB,CAAA;aAGxB,IAAW,CAAA,WAAA,GAAG,KAAH,CAAS,EAAA;AAE3B,IAAA,WAAA,CAAoB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED,IAAA,aAAa,CAAC,OAAgC,EAAA;AAC5C,QAAA,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE;AACxC,YAAA,oBAAoB,CAAC,WAAW,GAAG,IAAI,CAAC;YACxC,MAAM,eAAe,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,YAAA,eAAe,CAAC,IAAI,GAAG,iBAAiB,CAAC;YACzC,eAAe,CAAC,GAAG,GAAG,CAAA,EAAG,OAAO,CAAC,QAAQ,+BAA+B,CAAC;AACzE,YAAA,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;SACvC;KACF;IAED,WAAW,CACT,SAAiB,EACjB,OAAuB,EACvB,KAAkB,EAClB,OAAO,GAAG,EAAE,EACZ,UAAyB,EAAA;QAEzB,MAAM,YAAY,GAAG,MAAK;YACxB,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;aACnE;AACH,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;KAClC;AAED,IAAA,IAAI,CAAC,MAAiB,EAAA;QACpB,MAAM,CAAC,SAAS,EAAE,CAAC;KACpB;AAED,IAAA,KAAK,CAAC,MAAiB,EAAA;QACrB,MAAM,CAAC,UAAU,EAAE,CAAC;KACrB;IAED,SAAS,CAAC,KAAU,EAAE,MAAiB,EAAA;QACrC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;AAC1D,QAAA,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnB;AAED,IAAA,SAAS,CAAC,MAAiB,EAAA;;AAEzB,QAAA,MAAM,aAAa,GAAQ,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC;AAC3D,QAAA,MAAM,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC;QACjE,MAAM,eAAe,GAAG,aAAa;cACjC,WAAW,KAAK,UAAU,EAAE,CAAC,WAAW,CAAC,KAAK;AAC9C,gBAAA,WAAW,KAAK,UAAU,EAAE,CAAC,WAAW,CAAC,MAAM;cAC/C,KAAK,CAAC;AACV,QAAA,OAAO,eAAe,CAAC;KACxB;AAED,IAAA,YAAY,CACV,SAAiB,EACjB,OAAuB,EACvB,KAAkB,EAClB,OAAO,GAAG,EAAE,EACZ,UAAA,GAA4B,EAAE,EAAA;AAE9B,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM;AAC3C,YAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK;SACzC,CAAC;AACF,QAAA,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;AACpC,QAAA,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC7B,YAAA,GAAG,UAAU;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,CAAC,EAAkB,KAAI;oBAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;iBACrE;AACD,gBAAA,aAAa,EAAE,CAAC,EAAkB,KAAI;oBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChE;AACF,aAAA;YACD,UAAU;YACV,OAAO;AACR,SAAA,CAAC,CAAC;KACJ;IAED,gBAAgB,CACd,MAAiB,EACjB,YAAwC,EAAA;AAExC,QAAA,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;QAErC,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;AAC5B,YAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;SAC3B;AACD,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAC/B;;IAGD,gBAAgB,GAAA;QACd,MAAM,GAAG,GAAG,CAAC,CAAC;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KAClD;IAEO,SAAS,GAAA;QACf,MAAM,uBAAuB,GAAG,MAAK;YACnC,IAAI,GAAG,EAAE,EAAE;AACT,gBAAA,GAAG,EAAE,CAAC,+BAA+B,CAAC,GAAG,IAAI,CAAC;AAC9C,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjB;AACH,SAAC,CAAC;AACF,QAAA,GAAG,EAAE,CAAC,yBAAyB,CAAC,GAAG,uBAAuB,CAAC;AAC3D;;;AAGG;AACH,QAAA,IAAI,GAAG,EAAE,CAAC,+BAA+B,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACjB;KACF;+GA1HU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,sBAAsB,CAAA;AAiBjC,IAAA,WAAA,CACS,aAAmC,EAClC,UAAsB,EACtB,QAAmB,EAAA;QAFpB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAsB;QAClC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAnBpB,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AACb,QAAA,IAAA,CAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;AACpC;;;;AAIG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,IAAU,CAAA,UAAA,GAAkB,EAAE,CAAC;;AAG9B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAa,CAAC;;AAEtC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAkB,CAAC;KAMlD;IAEJ,kBAAkB,GAAA;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;AACrD,QAAA,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAC/C,0BAA0B,CAC3B,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAC5B,MAAM,EACN;YACE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,EACD,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC;QAC5C,MAAM,QAAQ,GAAG,SAAS;AACxB,cAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;cACzC,MAAM,CAAC;AACX,QAAA,OAAO,QAAQ,CAAC;KACjB;+GAnDU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAJvB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;AAET,EAAA,CAAA;AACF,iBAAA,CAAA;uIAEU,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAMG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGI,KAAK,EAAA,CAAA;sBAAd,MAAM;gBAEG,MAAM,EAAA,CAAA;sBAAf,MAAM;;;MC7BI,sBAAsB,CAAA;AACjC,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,sBAAsB;YAChC,SAAS,EAAE,CAAC,oBAAoB,CAAC;SAClC,CAAC;KACH;+GANU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAtB,sBAAsB,EAAA,YAAA,EAAA,CALlB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAG3B,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAErB,sBAAsB,EAAA,SAAA,EAHtB,CAAC,oBAAoB,CAAC,EAAA,CAAA,CAAA,EAAA;;4FAGtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,CAAC,oBAAoB,CAAC;oBACjC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;ACTD;;AAEG;;ACFH;;AAEG;;;;"}