Socket
Socket
Sign inDemoInstall

ngx-audio-player

Package Overview
Dependencies
Maintainers
1
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-audio-player - npm Package Compare versions

Comparing version 10.1.3 to 10.1.4

36

bundles/ngx-audio-player.umd.js

@@ -51,2 +51,3 @@ (function (global, factory) {

function AudioPlayerComponent(elem) {
this.repeat = 'all';
this.dataSource = new table.MatTableDataSource();

@@ -57,2 +58,3 @@ this.tracks = [];

this.displayVolumeControls = true;
this.displayRepeatControls = true;
this.pageSizeOptions = [10, 20, 30];

@@ -118,3 +120,2 @@ this.expanded = true;

_this.isPlaying = true;
_this.duration = Math.floor(_this.player.nativeElement.duration);
});

@@ -139,3 +140,3 @@ this.player.nativeElement.addEventListener('pause', function () {

}
this.player.nativeElement.addEventListener('loadeddata', function () {
this.player.nativeElement.addEventListener('loadedmetadata', function () {
_this.loaderDisplay = false;

@@ -184,2 +185,18 @@ _this.duration = Math.floor(_this.player.nativeElement.duration);

};
AudioPlayerComponent.prototype.toggleRepeat = function () {
if (this.repeat === 'none') {
this.repeat = 'all';
}
else if (this.repeat === 'all') {
if (this.tracks.length > 1) {
this.repeat = 'one';
}
else {
this.repeat = 'none';
}
}
else if (this.repeat === 'one' && this.tracks.length > 1) {
this.repeat = 'none';
}
};
AudioPlayerComponent.prototype.setVolume = function (vol) {

@@ -195,3 +212,11 @@ this.volume = vol;

if (_this.checkIfSongHasStartedSinceAtleastTwoSeconds()) {
_this.nextSong();
if (_this.repeat === 'all') {
_this.nextSong();
}
else if (_this.repeat === 'one') {
_this.play();
}
else if (_this.repeat === 'none') {
// Do nothing
}
}

@@ -315,4 +340,4 @@ });

selector: 'mat-advanced-audio-player,ngx-audio-player',
template: "<mat-card class=\"ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2\"\n style=\"margin: 0px;\">\n\n <audio #audioPlayer [src]=\"tracks[currentIndex]?.link\"></audio>\n\n <button *ngIf=\"tracks.length > 1\" (click)='previousSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1\" mat-button>\n <mat-icon aria-hidden=\"true\">\n <!-- Skip previous icon (skip_previous) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6h2v12H6zm3.5 6l8.5 6V6z\" />\n <path d=\"M0 0h32v32H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button (click)='playBtnHandler();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 play-pause\" mat-button>\n\n <svg *ngIf=\"loaderDisplay\" height=\"34px\" preserveAspectRatio=\"xMidYMid\"\n style=\"margin: auto; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"34px\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"rotate(0 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.9166666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(30 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.8333333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(60 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.75s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(90 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.6666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(120 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5833333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(150 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(180 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.4166666666666667s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(210 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.3333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(240 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.25s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(270 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.16666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(300 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.08333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(330 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"0s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf=\"!loaderDisplay && !isPlaying\" aria-hidden=\"true\" class=\"play-track\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 5v14l11-7z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"!loaderDisplay && isPlaying\" aria-hidden=\"true\" class=\"pause-track\">\n <!-- Pause icon (pause) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf=\"tracks.length > 1\" (click)='nextSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 skip-next\"\n mat-button>\n <mat-icon aria-hidden=\"true\" class=\"next-track\">\n <!-- Skip next icon (skip_next) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n\n <div class=\"ngx-col\">\n <div class=\"ngx-d-flex ngx-flex-fill ngx-justify-content-center\">\n <div class=\"ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1\" style=\"font-size: 12px\">\n <span *ngIf=\"duration !== 0.01\">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]=\"disablePositionSlider\" (change)=\"currTimePosChanged($event)\" [min]=\"startOffset\"\n class=\"ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1\" max=\"{{duration-endOffset}}\" style=\"width: 100%\"\n value=\"{{currentTime}}\"></mat-slider>\n <div class=\"ngx-py-3 ngx-px-1\" style=\"font-size: 12px; text-align: right\">\n <span *ngIf=\"duration !== 0.01\">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)='toggleVolume();' *ngIf=\"displayVolumeControls\" class=\"ngx-p-1 volume\" mat-button>\n <mat-icon *ngIf=\"volume === 0\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Volume mute icon (volume_off) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"volume > 0\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Volume up icon (volume_up) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf=\"displayTitle\" class=\"mat-elevation-z1\">\n <div style=\"text-align: center;\">\n <div style=\"margin: 1px 2px; padding: 1em\">\n <span\n *ngIf=\"!isPlaying\">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}</span>\n <marquee *ngIf=\"isPlaying\" behavior=\"scroll\" direction=\"left\">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}\n </marquee>\n </div>\n <div class=\"clear\"></div>\n </div>\n</mat-card>\n\n<mat-accordion *ngIf=\"displayPlaylist && tracks.length > 1\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]=\"dataSource\" class=\"mat-elevation-z6\" mat-table>\n <ng-container matColumnDef=\"title\">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"artist\">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.artist ? element?.artist : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"duration\">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"status\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n <div *ngIf=\"tracks[currentIndex]?.title === element.title\">\n <!-- <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>\n </mat-icon> -->\n <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\" class=\"currently-playing\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z\" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-select-content\" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>",
styles: ["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.ngx-advanced-audio-player{min-width:325px}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:720px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]
template: "<mat-card class=\"ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2\"\n style=\"margin: 0px;\">\n\n <audio #audioPlayer [src]=\"tracks[currentIndex]?.link\"></audio>\n\n <button *ngIf=\"tracks.length > 1\" (click)='previousSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1\" mat-button>\n <mat-icon aria-hidden=\"true\">\n <!-- Skip previous icon (skip_previous) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6h2v12H6zm3.5 6l8.5 6V6z\" />\n <path d=\"M0 0h32v32H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button (click)='playBtnHandler();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 play-pause\" mat-button>\n\n <svg *ngIf=\"loaderDisplay\" height=\"34px\" preserveAspectRatio=\"xMidYMid\"\n style=\"margin: auto; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"34px\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"rotate(0 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.9166666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(30 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.8333333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(60 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.75s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(90 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.6666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(120 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5833333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(150 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(180 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.4166666666666667s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(210 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.3333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(240 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.25s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(270 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.16666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(300 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.08333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(330 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"0s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf=\"!loaderDisplay && !isPlaying\" aria-hidden=\"true\" class=\"play-track\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 5v14l11-7z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"!loaderDisplay && isPlaying\" aria-hidden=\"true\" class=\"pause-track\">\n <!-- Pause icon (pause) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf=\"tracks.length > 1\" (click)='nextSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 skip-next\"\n mat-button>\n <mat-icon aria-hidden=\"true\" class=\"next-track\">\n <!-- Skip next icon (skip_next) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n\n <div class=\"ngx-col\">\n <div class=\"ngx-d-flex ngx-flex-fill ngx-justify-content-center\">\n <div class=\"ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1\" style=\"font-size: 12px\">\n <span *ngIf=\"duration !== 0.01\">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]=\"disablePositionSlider\" (change)=\"currTimePosChanged($event)\" [min]=\"startOffset\"\n class=\"ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1\" max=\"{{duration-endOffset}}\" style=\"width: 100%\"\n value=\"{{currentTime}}\"></mat-slider>\n\n <div class=\"ngx-py-3 ngx-px-1\" style=\"font-size: 12px; text-align: right\">\n <span *ngIf=\"duration !== 0.01\">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)='toggleRepeat();' *ngIf=\"displayRepeatControls\" class=\"ngx-p-1 volume justify-content-center\"\n mat-button>\n <mat-icon *ngIf=\"repeat === 'none'\" aria-hidden=\"true\" class=\"volume-mute justify-content-center\">\n <!-- Repeat None -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <g>\n <path d=\"m0,0l24,0l0,24l-24,0l0,-24z\" fill=\"none\" />\n <path\n d=\"m8,20l0,1.932a0.5,0.5 0 0 1 -0.82,0.385l-4.12,-3.433a0.5,0.5 0 0 1 0.322,-0.884l14.618,0a2,2 0 0 0 2,-2l0,-8l2,0l0,8a4,4 0 0 1 -4,4l-10,0zm8,-16l0,-1.932a0.5,0.5 0 0 1 0.82,-0.385l4.12,3.433a0.5,0.5 0 0 1 -0.321,0.884l-14.619,0a2,2 0 0 0 -2,2l0,8l-2,0l0,-8a4,4 0 0 1 4,-4l10,0z\" />\n <path d=\"M 3 0 L 22.4164 22.2706 L 21 24 L 1.5836 1.8128 L 3 0\"></path>\n </g>\n <!-- <line xmlns=\"http://www.w3.org/2000/svg\" id=\"svg_4\" y2=\"22.27056\" x2=\"22.41638\" y1=\"1.81276\" x1=\"1.58362\" stroke-width=\"2\" fill=\"none\"/> -->\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"repeat === 'all'\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Repeat All -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10z\" />\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"repeat === 'one'\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Repeat ONE -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10zm-5 4h2v8h-2v-6H9V9l2-1z\" />\n </g>\n </svg>\n </mat-icon>\n </button>\n <button (click)='toggleVolume();' *ngIf=\"displayVolumeControls\" class=\"ngx-p-1 volume\" mat-button>\n <mat-icon *ngIf=\"volume === 0\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Volume mute icon (volume_off) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"volume > 0\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Volume up icon (volume_up) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf=\"displayTitle\" class=\"mat-elevation-z1 ngx-audio-player\">\n <div style=\"text-align: center;\">\n <div style=\"margin: 1px 2px; padding: 1em\">\n <span *ngIf=\"!isPlaying\">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ?\n ' | ' + tracks[currentIndex]?.artist : ''}}</span>\n <marquee *ngIf=\"isPlaying\" behavior=\"scroll\" direction=\"left\">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}\n </marquee>\n </div>\n <div class=\"clear\"></div>\n </div>\n</mat-card>\n\n<mat-accordion class=\"ngx-audio-player\" *ngIf=\"displayPlaylist && tracks.length > 1\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]=\"dataSource\" class=\"mat-elevation-z6\" mat-table>\n <ng-container matColumnDef=\"title\">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"artist\">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.artist ? element?.artist : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"duration\">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"status\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n <div *ngIf=\"tracks[currentIndex]?.title === element.title\">\n <!-- <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>\n </mat-icon> -->\n <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\" class=\"currently-playing\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z\" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-select-content\" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>",
styles: ["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.mat-expansion-panel,::ng-deep .ngx-audio-player{min-width:375px}::ng-deep .mat-paginator-container{justify-content:space-between!important}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:768px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]
},] }

@@ -329,2 +354,3 @@ ];

displayVolumeControls: [{ type: i0.Input }],
displayRepeatControls: [{ type: i0.Input }],
pageSizeOptions: [{ type: i0.Input }],

@@ -331,0 +357,0 @@ expanded: [{ type: i0.Input }],

2

bundles/ngx-audio-player.umd.min.js

@@ -1,2 +0,2 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/material/table"),require("@angular/material/paginator"),require("rxjs"),require("@angular/material/slider"),require("@angular/material/form-field"),require("@angular/material/expansion"),require("@angular/material/card"),require("@angular/material/button"),require("@angular/common"),require("@angular/forms"),require("@angular/material/icon")):"function"==typeof define&&define.amd?define("ngx-audio-player",["exports","@angular/core","@angular/material/table","@angular/material/paginator","rxjs","@angular/material/slider","@angular/material/form-field","@angular/material/expansion","@angular/material/card","@angular/material/button","@angular/common","@angular/forms","@angular/material/icon"],e):e((t=t||self)["ngx-audio-player"]={},t.ng.core,t.ng.material.table,t.ng.material.paginator,t.rxjs,t.ng.material.slider,t.ng.material.formField,t.ng.material.expansion,t.ng.material.card,t.ng.material.button,t.ng.common,t.ng.forms,t.ng.material.icon)}(this,(function(t,e,n,a,i,r,l,o,s,c,d,u,p){"use strict";var g=function(){function t(){this.tracks=[],this.playlistSubject$=new i.BehaviorSubject(this.tracks),this.currentTrack=null,this.currentTrackSubject$=new i.BehaviorSubject(this.currentTrack),this.currentTime=null,this.currentTimeSubject$=new i.BehaviorSubject(this.currentTime)}return t.prototype.setPlaylist=function(t){this.tracks=t,this.playlistSubject$.next(this.tracks)},t.prototype.getPlaylist=function(){return this.playlistSubject$.asObservable()},t.prototype.setCurrentTrack=function(t){this.currentTrack=t,this.currentTrackSubject$.next(this.currentTrack)},t.prototype.getCurrentTrack=function(){return this.currentTrackSubject$.asObservable()},t.prototype.setCurrentTime=function(t){this.currentTime=t,this.currentTimeSubject$.next(this.currentTime)},t.prototype.getCurrentTime=function(){return this.currentTimeSubject$.asObservable()},t}();g.ɵprov=e.ɵɵdefineInjectable({factory:function(){return new g},token:g,providedIn:"root"}),g.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}];var m=function(){function t(t){this.dataSource=new n.MatTableDataSource,this.tracks=[],this.displayTitle=!0,this.displayPlaylist=!0,this.displayVolumeControls=!0,this.pageSizeOptions=[10,20,30],this.expanded=!0,this.autoPlay=!1,this.disablePositionSlider=!1,this.displayArtist=!1,this.displayDuration=!1,this.tableHeader="Playlist",this.titleHeader="Title",this.artistHeader="Artist",this.durationHeader="Duration",this.currentIndex=0,this.trackEnded=new i.Subject,this.iOS=/iPad|iPhone|iPod/.test(navigator.platform)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,this.loaderDisplay=!1,this.isPlaying=!1,this.currentTime=0,this.volume=.1,this.duration=.01,this.startOffsetValue=0,this.endOffset=0,"mat-advanced-audio-player"===t.nativeElement.tagName.toLowerCase()&&console.warn("'mat-advanced-audio-player' selector is deprecated; use 'ngx-audio-player' instead."),this.audioPlayerService=new g}return Object.defineProperty(t.prototype,"playlist",{set:function(t){this.audioPlayerService.setPlaylist(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"matPaginator",{set:function(t){this.paginator=t,this.setDataSourceAttributes()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startOffset",{get:function(){return this.startOffsetValue},set:function(t){this.startOffsetValue=t,this.player.nativeElement.currentTime=t},enumerable:!1,configurable:!0}),t.prototype.currTimePosChanged=function(t){this.player.nativeElement.currentTime=t.value},t.prototype.bindPlayerEvent=function(){var t=this;this.player.nativeElement.addEventListener("playing",(function(){t.isPlaying=!0,t.duration=Math.floor(t.player.nativeElement.duration)})),this.player.nativeElement.addEventListener("pause",(function(){t.isPlaying=!1})),this.player.nativeElement.addEventListener("timeupdate",(function(){t.currentTime=Math.floor(t.player.nativeElement.currentTime)})),this.player.nativeElement.addEventListener("volume",(function(){t.volume=Math.floor(t.player.nativeElement.volume)})),this.iOS||this.player.nativeElement.addEventListener("loadstart",(function(){t.loaderDisplay=!0})),this.player.nativeElement.addEventListener("loadeddata",(function(){t.loaderDisplay=!1,t.duration=Math.floor(t.player.nativeElement.duration)})),this.player.nativeElement.addEventListener("ended",(function(){t.trackEnded.next("ended")}))},t.prototype.playBtnHandler=function(){this.loaderDisplay||(this.player.nativeElement.paused?(this.currentTime>=this.duration-this.endOffset?this.player.nativeElement.currentTime=this.startOffset:this.player.nativeElement.currentTime=this.currentTime,this.player.nativeElement.play()):(this.currentTime=this.player.nativeElement.currentTime,this.player.nativeElement.pause()))},t.prototype.play=function(t){var e=this;t&&(this.startOffset=t.startOffset||0,this.endOffset=t.endOffset||0),setTimeout((function(){e.player.nativeElement.play()}),50)},t.prototype.toggleVolume=function(){0===this.volume?this.setVolume(1):this.setVolume(0)},t.prototype.setVolume=function(t){this.volume=t,this.player.nativeElement.volume=this.volume},t.prototype.ngOnInit=function(){var t=this;this.bindPlayerEvent(),this.player.nativeElement.addEventListener("ended",(function(){t.checkIfSongHasStartedSinceAtleastTwoSeconds()&&t.nextSong()})),this.player.nativeElement.addEventListener("timeupdate",(function(){t.audioPlayerService.setCurrentTime(t.player.nativeElement.currentTime)})),this.audioPlayerService.getPlaylist().subscribe((function(e){null!==e&&e!==[]&&(t.tracks=e,t.initialize())}))},t.prototype.ngOnChanges=function(t){(t.hasOwnProperty("displayArtist")||t.hasOwnProperty("displayDuration"))&&this.buildDisplayedColumns()},t.prototype.buildDisplayedColumns=function(){this.displayedColumns=["title"],this.displayArtist&&this.displayedColumns.push("artist"),this.displayDuration&&this.displayedColumns.push("duration"),this.displayedColumns.push("status")},t.prototype.initialize=function(){this.buildDisplayedColumns(),this.setDataSourceAttributes(),this.player.nativeElement.currentTime=this.startOffset,this.updateCurrentTrack(),this.autoPlay&&this.play()},t.prototype.setDataSourceAttributes=function(){var t=1;this.tracks&&(this.tracks.forEach((function(e){e.index=t++})),this.dataSource=new n.MatTableDataSource(this.tracks),this.dataSource.paginator=this.paginator)},t.prototype.nextSong=function(){!0!==this.displayPlaylist||(this.currentIndex+1)%this.paginator.pageSize!=0&&this.currentIndex+1!==this.paginator.length||(this.paginator.hasNextPage()?this.paginator.nextPage():this.paginator.hasNextPage()||this.paginator.firstPage()),this.currentTime=0,this.duration=.01,this.currentIndex+1>=this.tracks.length?this.currentIndex=0:this.currentIndex++,this.updateCurrentTrack(),this.play()},t.prototype.previousSong=function(){this.currentTime=0,this.duration=.01,this.checkIfSongHasStartedSinceAtleastTwoSeconds()?this.resetSong():(!0!==this.displayPlaylist||this.currentIndex%this.paginator.pageSize!=0&&0!==this.currentIndex||(this.paginator.hasPreviousPage()?this.paginator.previousPage():this.paginator.hasPreviousPage()||this.paginator.lastPage()),this.currentIndex-1<0?this.currentIndex=this.tracks.length-1:this.currentIndex--),this.updateCurrentTrack(),this.play()},t.prototype.resetSong=function(){this.player.nativeElement.src=this.tracks[this.currentIndex].link},t.prototype.selectTrack=function(t){this.currentIndex=t-1,this.updateCurrentTrack(),this.play()},t.prototype.checkIfSongHasStartedSinceAtleastTwoSeconds=function(){return this.player.nativeElement.currentTime>2},t.prototype.updateCurrentTrack=function(){this.audioPlayerService.setCurrentTrack(this.tracks[this.currentIndex])},t}();m.decorators=[{type:e.Component,args:[{selector:"mat-advanced-audio-player,ngx-audio-player",template:'<mat-card class="ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2"\n style="margin: 0px;">\n\n <audio #audioPlayer [src]="tracks[currentIndex]?.link"></audio>\n\n <button *ngIf="tracks.length > 1" (click)=\'previousSong();\' [disabled]="loaderDisplay" class="ngx-p-1" mat-button>\n <mat-icon aria-hidden="true">\n \x3c!-- Skip previous icon (skip_previous) --\x3e\n <svg height="32" viewBox="0 0 24 24" width="32" xmlns="http://www.w3.org/2000/svg">\n <path d="M6 6h2v12H6zm3.5 6l8.5 6V6z" />\n <path d="M0 0h32v32H0z" fill="none" />\n </svg>\n </mat-icon>\n </button>\n <button (click)=\'playBtnHandler();\' [disabled]="loaderDisplay" class="ngx-p-1 play-pause" mat-button>\n\n <svg *ngIf="loaderDisplay" height="34px" preserveAspectRatio="xMidYMid"\n style="margin: auto; display: block; shape-rendering: auto;" viewBox="0 0 100 100" width="34px"\n xmlns="http://www.w3.org/2000/svg">\n <g transform="rotate(0 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.9166666666666666s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(30 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.8333333333333334s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(60 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.75s" dur="1s" keyTimes="0;1" repeatCount="indefinite"\n values="1;0" />\n </rect>\n </g>\n <g transform="rotate(90 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.6666666666666666s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(120 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.5833333333333334s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(150 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.5s" dur="1s" keyTimes="0;1" repeatCount="indefinite"\n values="1;0" />\n </rect>\n </g>\n <g transform="rotate(180 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.4166666666666667s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(210 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.3333333333333333s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(240 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.25s" dur="1s" keyTimes="0;1" repeatCount="indefinite"\n values="1;0" />\n </rect>\n </g>\n <g transform="rotate(270 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.16666666666666666s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(300 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.08333333333333333s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(330 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="0s" dur="1s" keyTimes="0;1" repeatCount="indefinite"\n values="1;0" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf="!loaderDisplay && !isPlaying" aria-hidden="true" class="play-track">\n \x3c!-- Play icon (play_arrow) --\x3e\n <svg height="32" viewBox="0 0 24 24" width="32" xmlns="http://www.w3.org/2000/svg">\n <path d="M8 5v14l11-7z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf="!loaderDisplay && isPlaying" aria-hidden="true" class="pause-track">\n \x3c!-- Pause icon (pause) --\x3e\n <svg height="32" viewBox="0 0 24 24" width="32" xmlns="http://www.w3.org/2000/svg">\n <path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf="tracks.length > 1" (click)=\'nextSong();\' [disabled]="loaderDisplay" class="ngx-p-1 skip-next"\n mat-button>\n <mat-icon aria-hidden="true" class="next-track">\n \x3c!-- Skip next icon (skip_next) --\x3e\n <svg height="32" viewBox="0 0 24 24" width="32" xmlns="http://www.w3.org/2000/svg">\n <path d="M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n </button>\n\n <div class="ngx-col">\n <div class="ngx-d-flex ngx-flex-fill ngx-justify-content-center">\n <div class="ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1" style="font-size: 12px">\n <span *ngIf="duration !== 0.01">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]="disablePositionSlider" (change)="currTimePosChanged($event)" [min]="startOffset"\n class="ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1" max="{{duration-endOffset}}" style="width: 100%"\n value="{{currentTime}}"></mat-slider>\n <div class="ngx-py-3 ngx-px-1" style="font-size: 12px; text-align: right">\n <span *ngIf="duration !== 0.01">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)=\'toggleVolume();\' *ngIf="displayVolumeControls" class="ngx-p-1 volume" mat-button>\n <mat-icon *ngIf="volume === 0" aria-hidden="true" class="volume-mute">\n \x3c!-- Volume mute icon (volume_off) --\x3e\n <svg height="28" viewBox="0 0 24 24" width="28" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf="volume > 0" aria-hidden="true" class="volume-up">\n \x3c!-- Volume up icon (volume_up) --\x3e\n <svg height="28" viewBox="0 0 24 24" width="28" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf="displayTitle" class="mat-elevation-z1">\n <div style="text-align: center;">\n <div style="margin: 1px 2px; padding: 1em">\n <span\n *ngIf="!isPlaying">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ? \' | \' + tracks[currentIndex]?.artist : \'\'}}</span>\n <marquee *ngIf="isPlaying" behavior="scroll" direction="left">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? \' | \' + tracks[currentIndex]?.artist : \'\'}}\n </marquee>\n </div>\n <div class="clear"></div>\n </div>\n</mat-card>\n\n<mat-accordion *ngIf="displayPlaylist && tracks.length > 1">\n <mat-expansion-panel [expanded]="expanded">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]="dataSource" class="mat-elevation-z6" mat-table>\n <ng-container matColumnDef="title">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)="selectTrack(element.index)" *matCellDef="let element" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef="artist">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)="selectTrack(element.index)" *matCellDef="let element" mat-cell>\n {{element?.artist ? element?.artist : \'\'}}\n </td>\n </ng-container>\n <ng-container matColumnDef="duration">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)="selectTrack(element.index)" *matCellDef="let element" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : \'\'}}\n </td>\n </ng-container>\n <ng-container matColumnDef="status">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef="let element" mat-cell>\n <div *ngIf="tracks[currentIndex]?.title === element.title">\n \x3c!-- <mat-icon *ngIf="isPlaying" aria-hidden="true">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"/><path d="M0 0h24v24H0z" fill="none"/></svg>\n </mat-icon> --\x3e\n <mat-icon *ngIf="isPlaying" aria-hidden="true" class="currently-playing">\n \x3c!-- Play icon (play_arrow) --\x3e\n <svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">\n <path d="M0 0h24v24H0z" fill="none" />\n <path\n d="M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef="displayedColumns" mat-header-row></tr>\n <tr *matRowDef="let row; columns: displayedColumns;" class="mat-select-content" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]="pageSizeOptions" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>',styles:["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.ngx-advanced-audio-player{min-width:325px}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:720px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]}]}],m.ctorParameters=function(){return[{type:e.ElementRef}]},m.propDecorators={playlist:[{type:e.Input}],matPaginator:[{type:e.ViewChild,args:[a.MatPaginator,{static:!1}]}],displayTitle:[{type:e.Input}],displayPlaylist:[{type:e.Input}],displayVolumeControls:[{type:e.Input}],pageSizeOptions:[{type:e.Input}],expanded:[{type:e.Input}],autoPlay:[{type:e.Input}],disablePositionSlider:[{type:e.Input}],displayArtist:[{type:e.Input}],displayDuration:[{type:e.Input}],tableHeader:[{type:e.Input}],titleHeader:[{type:e.Input}],artistHeader:[{type:e.Input}],durationHeader:[{type:e.Input}],trackEnded:[{type:e.Output}],player:[{type:e.ViewChild,args:["audioPlayer",{static:!0}]}],startOffset:[{type:e.Input}],endOffset:[{type:e.Input}]};var h=function(){function t(){}return t.prototype.transform=function(t){var e=("0"+Math.floor(t/3600)).slice(-2),n=("0"+Math.floor(t%3600/60)).slice(-2),a=("0"+t%60).slice(-2);return"00"!==e?e+":"+n+":"+a:n+":"+a},t}();h.decorators=[{type:e.Pipe,args:[{name:"secondsToMinutes"}]}];var x=function(){};x.decorators=[{type:e.NgModule,args:[{declarations:[h,m],imports:[d.CommonModule,u.FormsModule,c.MatButtonModule,s.MatCardModule,n.MatTableModule,l.MatFormFieldModule,r.MatSliderModule,o.MatExpansionModule,a.MatPaginatorModule,p.MatIconModule],exports:[m]}]}];var y=function(){var t=this;this.toString=function(){return"Track (index: "+t.index+", title: "+t.title+")"}};t.AudioPlayerComponent=m,t.NgxAudioPlayerModule=x,t.Track=y,t.ɵa=h,Object.defineProperty(t,"__esModule",{value:!0})}));
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/material/table"),require("@angular/material/paginator"),require("rxjs"),require("@angular/material/slider"),require("@angular/material/form-field"),require("@angular/material/expansion"),require("@angular/material/card"),require("@angular/material/button"),require("@angular/common"),require("@angular/forms"),require("@angular/material/icon")):"function"==typeof define&&define.amd?define("ngx-audio-player",["exports","@angular/core","@angular/material/table","@angular/material/paginator","rxjs","@angular/material/slider","@angular/material/form-field","@angular/material/expansion","@angular/material/card","@angular/material/button","@angular/common","@angular/forms","@angular/material/icon"],e):e((t=t||self)["ngx-audio-player"]={},t.ng.core,t.ng.material.table,t.ng.material.paginator,t.rxjs,t.ng.material.slider,t.ng.material.formField,t.ng.material.expansion,t.ng.material.card,t.ng.material.button,t.ng.common,t.ng.forms,t.ng.material.icon)}(this,(function(t,e,n,a,i,r,l,o,s,c,d,u,p){"use strict";var g=function(){function t(){this.tracks=[],this.playlistSubject$=new i.BehaviorSubject(this.tracks),this.currentTrack=null,this.currentTrackSubject$=new i.BehaviorSubject(this.currentTrack),this.currentTime=null,this.currentTimeSubject$=new i.BehaviorSubject(this.currentTime)}return t.prototype.setPlaylist=function(t){this.tracks=t,this.playlistSubject$.next(this.tracks)},t.prototype.getPlaylist=function(){return this.playlistSubject$.asObservable()},t.prototype.setCurrentTrack=function(t){this.currentTrack=t,this.currentTrackSubject$.next(this.currentTrack)},t.prototype.getCurrentTrack=function(){return this.currentTrackSubject$.asObservable()},t.prototype.setCurrentTime=function(t){this.currentTime=t,this.currentTimeSubject$.next(this.currentTime)},t.prototype.getCurrentTime=function(){return this.currentTimeSubject$.asObservable()},t}();g.ɵprov=e.ɵɵdefineInjectable({factory:function(){return new g},token:g,providedIn:"root"}),g.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}];var m=function(){function t(t){this.repeat="all",this.dataSource=new n.MatTableDataSource,this.tracks=[],this.displayTitle=!0,this.displayPlaylist=!0,this.displayVolumeControls=!0,this.displayRepeatControls=!0,this.pageSizeOptions=[10,20,30],this.expanded=!0,this.autoPlay=!1,this.disablePositionSlider=!1,this.displayArtist=!1,this.displayDuration=!1,this.tableHeader="Playlist",this.titleHeader="Title",this.artistHeader="Artist",this.durationHeader="Duration",this.currentIndex=0,this.trackEnded=new i.Subject,this.iOS=/iPad|iPhone|iPod/.test(navigator.platform)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,this.loaderDisplay=!1,this.isPlaying=!1,this.currentTime=0,this.volume=.1,this.duration=.01,this.startOffsetValue=0,this.endOffset=0,"mat-advanced-audio-player"===t.nativeElement.tagName.toLowerCase()&&console.warn("'mat-advanced-audio-player' selector is deprecated; use 'ngx-audio-player' instead."),this.audioPlayerService=new g}return Object.defineProperty(t.prototype,"playlist",{set:function(t){this.audioPlayerService.setPlaylist(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"matPaginator",{set:function(t){this.paginator=t,this.setDataSourceAttributes()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"startOffset",{get:function(){return this.startOffsetValue},set:function(t){this.startOffsetValue=t,this.player.nativeElement.currentTime=t},enumerable:!1,configurable:!0}),t.prototype.currTimePosChanged=function(t){this.player.nativeElement.currentTime=t.value},t.prototype.bindPlayerEvent=function(){var t=this;this.player.nativeElement.addEventListener("playing",(function(){t.isPlaying=!0})),this.player.nativeElement.addEventListener("pause",(function(){t.isPlaying=!1})),this.player.nativeElement.addEventListener("timeupdate",(function(){t.currentTime=Math.floor(t.player.nativeElement.currentTime)})),this.player.nativeElement.addEventListener("volume",(function(){t.volume=Math.floor(t.player.nativeElement.volume)})),this.iOS||this.player.nativeElement.addEventListener("loadstart",(function(){t.loaderDisplay=!0})),this.player.nativeElement.addEventListener("loadedmetadata",(function(){t.loaderDisplay=!1,t.duration=Math.floor(t.player.nativeElement.duration)})),this.player.nativeElement.addEventListener("ended",(function(){t.trackEnded.next("ended")}))},t.prototype.playBtnHandler=function(){this.loaderDisplay||(this.player.nativeElement.paused?(this.currentTime>=this.duration-this.endOffset?this.player.nativeElement.currentTime=this.startOffset:this.player.nativeElement.currentTime=this.currentTime,this.player.nativeElement.play()):(this.currentTime=this.player.nativeElement.currentTime,this.player.nativeElement.pause()))},t.prototype.play=function(t){var e=this;t&&(this.startOffset=t.startOffset||0,this.endOffset=t.endOffset||0),setTimeout((function(){e.player.nativeElement.play()}),50)},t.prototype.toggleVolume=function(){0===this.volume?this.setVolume(1):this.setVolume(0)},t.prototype.toggleRepeat=function(){"none"===this.repeat?this.repeat="all":"all"===this.repeat?this.tracks.length>1?this.repeat="one":this.repeat="none":"one"===this.repeat&&this.tracks.length>1&&(this.repeat="none")},t.prototype.setVolume=function(t){this.volume=t,this.player.nativeElement.volume=this.volume},t.prototype.ngOnInit=function(){var t=this;this.bindPlayerEvent(),this.player.nativeElement.addEventListener("ended",(function(){t.checkIfSongHasStartedSinceAtleastTwoSeconds()&&("all"===t.repeat?t.nextSong():"one"===t.repeat?t.play():t.repeat)})),this.player.nativeElement.addEventListener("timeupdate",(function(){t.audioPlayerService.setCurrentTime(t.player.nativeElement.currentTime)})),this.audioPlayerService.getPlaylist().subscribe((function(e){null!==e&&e!==[]&&(t.tracks=e,t.initialize())}))},t.prototype.ngOnChanges=function(t){(t.hasOwnProperty("displayArtist")||t.hasOwnProperty("displayDuration"))&&this.buildDisplayedColumns()},t.prototype.buildDisplayedColumns=function(){this.displayedColumns=["title"],this.displayArtist&&this.displayedColumns.push("artist"),this.displayDuration&&this.displayedColumns.push("duration"),this.displayedColumns.push("status")},t.prototype.initialize=function(){this.buildDisplayedColumns(),this.setDataSourceAttributes(),this.player.nativeElement.currentTime=this.startOffset,this.updateCurrentTrack(),this.autoPlay&&this.play()},t.prototype.setDataSourceAttributes=function(){var t=1;this.tracks&&(this.tracks.forEach((function(e){e.index=t++})),this.dataSource=new n.MatTableDataSource(this.tracks),this.dataSource.paginator=this.paginator)},t.prototype.nextSong=function(){!0!==this.displayPlaylist||(this.currentIndex+1)%this.paginator.pageSize!=0&&this.currentIndex+1!==this.paginator.length||(this.paginator.hasNextPage()?this.paginator.nextPage():this.paginator.hasNextPage()||this.paginator.firstPage()),this.currentTime=0,this.duration=.01,this.currentIndex+1>=this.tracks.length?this.currentIndex=0:this.currentIndex++,this.updateCurrentTrack(),this.play()},t.prototype.previousSong=function(){this.currentTime=0,this.duration=.01,this.checkIfSongHasStartedSinceAtleastTwoSeconds()?this.resetSong():(!0!==this.displayPlaylist||this.currentIndex%this.paginator.pageSize!=0&&0!==this.currentIndex||(this.paginator.hasPreviousPage()?this.paginator.previousPage():this.paginator.hasPreviousPage()||this.paginator.lastPage()),this.currentIndex-1<0?this.currentIndex=this.tracks.length-1:this.currentIndex--),this.updateCurrentTrack(),this.play()},t.prototype.resetSong=function(){this.player.nativeElement.src=this.tracks[this.currentIndex].link},t.prototype.selectTrack=function(t){this.currentIndex=t-1,this.updateCurrentTrack(),this.play()},t.prototype.checkIfSongHasStartedSinceAtleastTwoSeconds=function(){return this.player.nativeElement.currentTime>2},t.prototype.updateCurrentTrack=function(){this.audioPlayerService.setCurrentTrack(this.tracks[this.currentIndex])},t}();m.decorators=[{type:e.Component,args:[{selector:"mat-advanced-audio-player,ngx-audio-player",template:'<mat-card class="ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2"\n style="margin: 0px;">\n\n <audio #audioPlayer [src]="tracks[currentIndex]?.link"></audio>\n\n <button *ngIf="tracks.length > 1" (click)=\'previousSong();\' [disabled]="loaderDisplay" class="ngx-p-1" mat-button>\n <mat-icon aria-hidden="true">\n \x3c!-- Skip previous icon (skip_previous) --\x3e\n <svg height="32" viewBox="0 0 24 24" width="32" xmlns="http://www.w3.org/2000/svg">\n <path d="M6 6h2v12H6zm3.5 6l8.5 6V6z" />\n <path d="M0 0h32v32H0z" fill="none" />\n </svg>\n </mat-icon>\n </button>\n <button (click)=\'playBtnHandler();\' [disabled]="loaderDisplay" class="ngx-p-1 play-pause" mat-button>\n\n <svg *ngIf="loaderDisplay" height="34px" preserveAspectRatio="xMidYMid"\n style="margin: auto; display: block; shape-rendering: auto;" viewBox="0 0 100 100" width="34px"\n xmlns="http://www.w3.org/2000/svg">\n <g transform="rotate(0 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.9166666666666666s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(30 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.8333333333333334s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(60 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.75s" dur="1s" keyTimes="0;1" repeatCount="indefinite"\n values="1;0" />\n </rect>\n </g>\n <g transform="rotate(90 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.6666666666666666s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(120 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.5833333333333334s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(150 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.5s" dur="1s" keyTimes="0;1" repeatCount="indefinite"\n values="1;0" />\n </rect>\n </g>\n <g transform="rotate(180 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.4166666666666667s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(210 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.3333333333333333s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(240 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.25s" dur="1s" keyTimes="0;1" repeatCount="indefinite"\n values="1;0" />\n </rect>\n </g>\n <g transform="rotate(270 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.16666666666666666s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(300 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="-0.08333333333333333s" dur="1s" keyTimes="0;1"\n repeatCount="indefinite" values="1;0" />\n </rect>\n </g>\n <g transform="rotate(330 50 50)">\n <rect fill="#7a7a7a" height="12" rx="3" ry="6" width="6" x="47" y="20">\n <animate attributeName="opacity" begin="0s" dur="1s" keyTimes="0;1" repeatCount="indefinite"\n values="1;0" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf="!loaderDisplay && !isPlaying" aria-hidden="true" class="play-track">\n \x3c!-- Play icon (play_arrow) --\x3e\n <svg height="32" viewBox="0 0 24 24" width="32" xmlns="http://www.w3.org/2000/svg">\n <path d="M8 5v14l11-7z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf="!loaderDisplay && isPlaying" aria-hidden="true" class="pause-track">\n \x3c!-- Pause icon (pause) --\x3e\n <svg height="32" viewBox="0 0 24 24" width="32" xmlns="http://www.w3.org/2000/svg">\n <path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf="tracks.length > 1" (click)=\'nextSong();\' [disabled]="loaderDisplay" class="ngx-p-1 skip-next"\n mat-button>\n <mat-icon aria-hidden="true" class="next-track">\n \x3c!-- Skip next icon (skip_next) --\x3e\n <svg height="32" viewBox="0 0 24 24" width="32" xmlns="http://www.w3.org/2000/svg">\n <path d="M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n </button>\n\n <div class="ngx-col">\n <div class="ngx-d-flex ngx-flex-fill ngx-justify-content-center">\n <div class="ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1" style="font-size: 12px">\n <span *ngIf="duration !== 0.01">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]="disablePositionSlider" (change)="currTimePosChanged($event)" [min]="startOffset"\n class="ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1" max="{{duration-endOffset}}" style="width: 100%"\n value="{{currentTime}}"></mat-slider>\n\n <div class="ngx-py-3 ngx-px-1" style="font-size: 12px; text-align: right">\n <span *ngIf="duration !== 0.01">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)=\'toggleRepeat();\' *ngIf="displayRepeatControls" class="ngx-p-1 volume justify-content-center"\n mat-button>\n <mat-icon *ngIf="repeat === \'none\'" aria-hidden="true" class="volume-mute justify-content-center">\n \x3c!-- Repeat None --\x3e\n <svg height="24" width="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">\n <g>\n <g>\n <path d="m0,0l24,0l0,24l-24,0l0,-24z" fill="none" />\n <path\n d="m8,20l0,1.932a0.5,0.5 0 0 1 -0.82,0.385l-4.12,-3.433a0.5,0.5 0 0 1 0.322,-0.884l14.618,0a2,2 0 0 0 2,-2l0,-8l2,0l0,8a4,4 0 0 1 -4,4l-10,0zm8,-16l0,-1.932a0.5,0.5 0 0 1 0.82,-0.385l4.12,3.433a0.5,0.5 0 0 1 -0.321,0.884l-14.619,0a2,2 0 0 0 -2,2l0,8l-2,0l0,-8a4,4 0 0 1 4,-4l10,0z" />\n <path d="M 3 0 L 22.4164 22.2706 L 21 24 L 1.5836 1.8128 L 3 0"></path>\n </g>\n \x3c!-- <line xmlns="http://www.w3.org/2000/svg" id="svg_4" y2="22.27056" x2="22.41638" y1="1.81276" x1="1.58362" stroke-width="2" fill="none"/> --\x3e\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf="repeat === \'all\'" aria-hidden="true" class="volume-mute">\n \x3c!-- Repeat All --\x3e\n <svg height="24" width="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">\n <g>\n <path fill="none" d="M0 0h24v24H0z" />\n <path\n d="M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10z" />\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf="repeat === \'one\'" aria-hidden="true" class="volume-up">\n \x3c!-- Repeat ONE --\x3e\n <svg height="24" width="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">\n <g>\n <path fill="none" d="M0 0h24v24H0z" />\n <path\n d="M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10zm-5 4h2v8h-2v-6H9V9l2-1z" />\n </g>\n </svg>\n </mat-icon>\n </button>\n <button (click)=\'toggleVolume();\' *ngIf="displayVolumeControls" class="ngx-p-1 volume" mat-button>\n <mat-icon *ngIf="volume === 0" aria-hidden="true" class="volume-mute">\n \x3c!-- Volume mute icon (volume_off) --\x3e\n <svg height="28" viewBox="0 0 24 24" width="28" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf="volume > 0" aria-hidden="true" class="volume-up">\n \x3c!-- Volume up icon (volume_up) --\x3e\n <svg height="28" viewBox="0 0 24 24" width="28" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z" />\n <path d="M0 0h24v24H0z" fill="none" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf="displayTitle" class="mat-elevation-z1 ngx-audio-player">\n <div style="text-align: center;">\n <div style="margin: 1px 2px; padding: 1em">\n <span *ngIf="!isPlaying">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ?\n \' | \' + tracks[currentIndex]?.artist : \'\'}}</span>\n <marquee *ngIf="isPlaying" behavior="scroll" direction="left">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? \' | \' + tracks[currentIndex]?.artist : \'\'}}\n </marquee>\n </div>\n <div class="clear"></div>\n </div>\n</mat-card>\n\n<mat-accordion class="ngx-audio-player" *ngIf="displayPlaylist && tracks.length > 1">\n <mat-expansion-panel [expanded]="expanded">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]="dataSource" class="mat-elevation-z6" mat-table>\n <ng-container matColumnDef="title">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)="selectTrack(element.index)" *matCellDef="let element" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef="artist">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)="selectTrack(element.index)" *matCellDef="let element" mat-cell>\n {{element?.artist ? element?.artist : \'\'}}\n </td>\n </ng-container>\n <ng-container matColumnDef="duration">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)="selectTrack(element.index)" *matCellDef="let element" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : \'\'}}\n </td>\n </ng-container>\n <ng-container matColumnDef="status">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef="let element" mat-cell>\n <div *ngIf="tracks[currentIndex]?.title === element.title">\n \x3c!-- <mat-icon *ngIf="isPlaying" aria-hidden="true">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"/><path d="M0 0h24v24H0z" fill="none"/></svg>\n </mat-icon> --\x3e\n <mat-icon *ngIf="isPlaying" aria-hidden="true" class="currently-playing">\n \x3c!-- Play icon (play_arrow) --\x3e\n <svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">\n <path d="M0 0h24v24H0z" fill="none" />\n <path\n d="M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef="displayedColumns" mat-header-row></tr>\n <tr *matRowDef="let row; columns: displayedColumns;" class="mat-select-content" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]="pageSizeOptions" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>',styles:["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.mat-expansion-panel,::ng-deep .ngx-audio-player{min-width:375px}::ng-deep .mat-paginator-container{justify-content:space-between!important}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:768px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]}]}],m.ctorParameters=function(){return[{type:e.ElementRef}]},m.propDecorators={playlist:[{type:e.Input}],matPaginator:[{type:e.ViewChild,args:[a.MatPaginator,{static:!1}]}],displayTitle:[{type:e.Input}],displayPlaylist:[{type:e.Input}],displayVolumeControls:[{type:e.Input}],displayRepeatControls:[{type:e.Input}],pageSizeOptions:[{type:e.Input}],expanded:[{type:e.Input}],autoPlay:[{type:e.Input}],disablePositionSlider:[{type:e.Input}],displayArtist:[{type:e.Input}],displayDuration:[{type:e.Input}],tableHeader:[{type:e.Input}],titleHeader:[{type:e.Input}],artistHeader:[{type:e.Input}],durationHeader:[{type:e.Input}],trackEnded:[{type:e.Output}],player:[{type:e.ViewChild,args:["audioPlayer",{static:!0}]}],startOffset:[{type:e.Input}],endOffset:[{type:e.Input}]};var h=function(){function t(){}return t.prototype.transform=function(t){var e=("0"+Math.floor(t/3600)).slice(-2),n=("0"+Math.floor(t%3600/60)).slice(-2),a=("0"+t%60).slice(-2);return"00"!==e?e+":"+n+":"+a:n+":"+a},t}();h.decorators=[{type:e.Pipe,args:[{name:"secondsToMinutes"}]}];var x=function(){};x.decorators=[{type:e.NgModule,args:[{declarations:[h,m],imports:[d.CommonModule,u.FormsModule,c.MatButtonModule,s.MatCardModule,n.MatTableModule,l.MatFormFieldModule,r.MatSliderModule,o.MatExpansionModule,a.MatPaginatorModule,p.MatIconModule],exports:[m]}]}];var y=function(){var t=this;this.toString=function(){return"Track (index: "+t.index+", title: "+t.title+")"}};t.AudioPlayerComponent=m,t.NgxAudioPlayerModule=x,t.Track=y,t.ɵa=h,Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=ngx-audio-player.umd.min.js.map

@@ -8,2 +8,3 @@ import { Component, Input, ViewChild, Output, ElementRef } from '@angular/core';

constructor(elem) {
this.repeat = 'all';
this.dataSource = new MatTableDataSource();

@@ -14,2 +15,3 @@ this.tracks = [];

this.displayVolumeControls = true;
this.displayRepeatControls = true;
this.pageSizeOptions = [10, 20, 30];

@@ -62,3 +64,2 @@ this.expanded = true;

this.isPlaying = true;
this.duration = Math.floor(this.player.nativeElement.duration);
});

@@ -83,3 +84,3 @@ this.player.nativeElement.addEventListener('pause', () => {

}
this.player.nativeElement.addEventListener('loadeddata', () => {
this.player.nativeElement.addEventListener('loadedmetadata', () => {
this.loaderDisplay = false;

@@ -127,2 +128,18 @@ this.duration = Math.floor(this.player.nativeElement.duration);

}
toggleRepeat() {
if (this.repeat === 'none') {
this.repeat = 'all';
}
else if (this.repeat === 'all') {
if (this.tracks.length > 1) {
this.repeat = 'one';
}
else {
this.repeat = 'none';
}
}
else if (this.repeat === 'one' && this.tracks.length > 1) {
this.repeat = 'none';
}
}
setVolume(vol) {

@@ -137,3 +154,11 @@ this.volume = vol;

if (this.checkIfSongHasStartedSinceAtleastTwoSeconds()) {
this.nextSong();
if (this.repeat === 'all') {
this.nextSong();
}
else if (this.repeat === 'one') {
this.play();
}
else if (this.repeat === 'none') {
// Do nothing
}
}

@@ -256,4 +281,4 @@ });

selector: 'mat-advanced-audio-player,ngx-audio-player',
template: "<mat-card class=\"ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2\"\n style=\"margin: 0px;\">\n\n <audio #audioPlayer [src]=\"tracks[currentIndex]?.link\"></audio>\n\n <button *ngIf=\"tracks.length > 1\" (click)='previousSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1\" mat-button>\n <mat-icon aria-hidden=\"true\">\n <!-- Skip previous icon (skip_previous) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6h2v12H6zm3.5 6l8.5 6V6z\" />\n <path d=\"M0 0h32v32H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button (click)='playBtnHandler();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 play-pause\" mat-button>\n\n <svg *ngIf=\"loaderDisplay\" height=\"34px\" preserveAspectRatio=\"xMidYMid\"\n style=\"margin: auto; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"34px\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"rotate(0 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.9166666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(30 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.8333333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(60 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.75s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(90 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.6666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(120 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5833333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(150 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(180 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.4166666666666667s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(210 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.3333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(240 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.25s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(270 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.16666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(300 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.08333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(330 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"0s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf=\"!loaderDisplay && !isPlaying\" aria-hidden=\"true\" class=\"play-track\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 5v14l11-7z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"!loaderDisplay && isPlaying\" aria-hidden=\"true\" class=\"pause-track\">\n <!-- Pause icon (pause) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf=\"tracks.length > 1\" (click)='nextSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 skip-next\"\n mat-button>\n <mat-icon aria-hidden=\"true\" class=\"next-track\">\n <!-- Skip next icon (skip_next) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n\n <div class=\"ngx-col\">\n <div class=\"ngx-d-flex ngx-flex-fill ngx-justify-content-center\">\n <div class=\"ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1\" style=\"font-size: 12px\">\n <span *ngIf=\"duration !== 0.01\">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]=\"disablePositionSlider\" (change)=\"currTimePosChanged($event)\" [min]=\"startOffset\"\n class=\"ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1\" max=\"{{duration-endOffset}}\" style=\"width: 100%\"\n value=\"{{currentTime}}\"></mat-slider>\n <div class=\"ngx-py-3 ngx-px-1\" style=\"font-size: 12px; text-align: right\">\n <span *ngIf=\"duration !== 0.01\">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)='toggleVolume();' *ngIf=\"displayVolumeControls\" class=\"ngx-p-1 volume\" mat-button>\n <mat-icon *ngIf=\"volume === 0\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Volume mute icon (volume_off) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"volume > 0\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Volume up icon (volume_up) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf=\"displayTitle\" class=\"mat-elevation-z1\">\n <div style=\"text-align: center;\">\n <div style=\"margin: 1px 2px; padding: 1em\">\n <span\n *ngIf=\"!isPlaying\">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}</span>\n <marquee *ngIf=\"isPlaying\" behavior=\"scroll\" direction=\"left\">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}\n </marquee>\n </div>\n <div class=\"clear\"></div>\n </div>\n</mat-card>\n\n<mat-accordion *ngIf=\"displayPlaylist && tracks.length > 1\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]=\"dataSource\" class=\"mat-elevation-z6\" mat-table>\n <ng-container matColumnDef=\"title\">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"artist\">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.artist ? element?.artist : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"duration\">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"status\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n <div *ngIf=\"tracks[currentIndex]?.title === element.title\">\n <!-- <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>\n </mat-icon> -->\n <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\" class=\"currently-playing\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z\" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-select-content\" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>",
styles: ["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.ngx-advanced-audio-player{min-width:325px}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:720px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]
template: "<mat-card class=\"ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2\"\n style=\"margin: 0px;\">\n\n <audio #audioPlayer [src]=\"tracks[currentIndex]?.link\"></audio>\n\n <button *ngIf=\"tracks.length > 1\" (click)='previousSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1\" mat-button>\n <mat-icon aria-hidden=\"true\">\n <!-- Skip previous icon (skip_previous) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6h2v12H6zm3.5 6l8.5 6V6z\" />\n <path d=\"M0 0h32v32H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button (click)='playBtnHandler();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 play-pause\" mat-button>\n\n <svg *ngIf=\"loaderDisplay\" height=\"34px\" preserveAspectRatio=\"xMidYMid\"\n style=\"margin: auto; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"34px\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"rotate(0 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.9166666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(30 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.8333333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(60 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.75s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(90 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.6666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(120 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5833333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(150 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(180 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.4166666666666667s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(210 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.3333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(240 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.25s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(270 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.16666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(300 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.08333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(330 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"0s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf=\"!loaderDisplay && !isPlaying\" aria-hidden=\"true\" class=\"play-track\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 5v14l11-7z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"!loaderDisplay && isPlaying\" aria-hidden=\"true\" class=\"pause-track\">\n <!-- Pause icon (pause) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf=\"tracks.length > 1\" (click)='nextSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 skip-next\"\n mat-button>\n <mat-icon aria-hidden=\"true\" class=\"next-track\">\n <!-- Skip next icon (skip_next) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n\n <div class=\"ngx-col\">\n <div class=\"ngx-d-flex ngx-flex-fill ngx-justify-content-center\">\n <div class=\"ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1\" style=\"font-size: 12px\">\n <span *ngIf=\"duration !== 0.01\">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]=\"disablePositionSlider\" (change)=\"currTimePosChanged($event)\" [min]=\"startOffset\"\n class=\"ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1\" max=\"{{duration-endOffset}}\" style=\"width: 100%\"\n value=\"{{currentTime}}\"></mat-slider>\n\n <div class=\"ngx-py-3 ngx-px-1\" style=\"font-size: 12px; text-align: right\">\n <span *ngIf=\"duration !== 0.01\">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)='toggleRepeat();' *ngIf=\"displayRepeatControls\" class=\"ngx-p-1 volume justify-content-center\"\n mat-button>\n <mat-icon *ngIf=\"repeat === 'none'\" aria-hidden=\"true\" class=\"volume-mute justify-content-center\">\n <!-- Repeat None -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <g>\n <path d=\"m0,0l24,0l0,24l-24,0l0,-24z\" fill=\"none\" />\n <path\n d=\"m8,20l0,1.932a0.5,0.5 0 0 1 -0.82,0.385l-4.12,-3.433a0.5,0.5 0 0 1 0.322,-0.884l14.618,0a2,2 0 0 0 2,-2l0,-8l2,0l0,8a4,4 0 0 1 -4,4l-10,0zm8,-16l0,-1.932a0.5,0.5 0 0 1 0.82,-0.385l4.12,3.433a0.5,0.5 0 0 1 -0.321,0.884l-14.619,0a2,2 0 0 0 -2,2l0,8l-2,0l0,-8a4,4 0 0 1 4,-4l10,0z\" />\n <path d=\"M 3 0 L 22.4164 22.2706 L 21 24 L 1.5836 1.8128 L 3 0\"></path>\n </g>\n <!-- <line xmlns=\"http://www.w3.org/2000/svg\" id=\"svg_4\" y2=\"22.27056\" x2=\"22.41638\" y1=\"1.81276\" x1=\"1.58362\" stroke-width=\"2\" fill=\"none\"/> -->\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"repeat === 'all'\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Repeat All -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10z\" />\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"repeat === 'one'\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Repeat ONE -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10zm-5 4h2v8h-2v-6H9V9l2-1z\" />\n </g>\n </svg>\n </mat-icon>\n </button>\n <button (click)='toggleVolume();' *ngIf=\"displayVolumeControls\" class=\"ngx-p-1 volume\" mat-button>\n <mat-icon *ngIf=\"volume === 0\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Volume mute icon (volume_off) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"volume > 0\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Volume up icon (volume_up) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf=\"displayTitle\" class=\"mat-elevation-z1 ngx-audio-player\">\n <div style=\"text-align: center;\">\n <div style=\"margin: 1px 2px; padding: 1em\">\n <span *ngIf=\"!isPlaying\">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ?\n ' | ' + tracks[currentIndex]?.artist : ''}}</span>\n <marquee *ngIf=\"isPlaying\" behavior=\"scroll\" direction=\"left\">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}\n </marquee>\n </div>\n <div class=\"clear\"></div>\n </div>\n</mat-card>\n\n<mat-accordion class=\"ngx-audio-player\" *ngIf=\"displayPlaylist && tracks.length > 1\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]=\"dataSource\" class=\"mat-elevation-z6\" mat-table>\n <ng-container matColumnDef=\"title\">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"artist\">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.artist ? element?.artist : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"duration\">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"status\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n <div *ngIf=\"tracks[currentIndex]?.title === element.title\">\n <!-- <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>\n </mat-icon> -->\n <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\" class=\"currently-playing\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z\" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-select-content\" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>",
styles: ["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.mat-expansion-panel,::ng-deep .ngx-audio-player{min-width:375px}::ng-deep .mat-paginator-container{justify-content:space-between!important}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:768px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]
},] }

@@ -270,2 +295,3 @@ ];

displayVolumeControls: [{ type: Input }],
displayRepeatControls: [{ type: Input }],
pageSizeOptions: [{ type: Input }],

@@ -286,2 +312,2 @@ expanded: [{ type: Input }],

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ZGlvLXBsYXllci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3Zpam11ZGlnL215LWRhdGEvbmd4LWF1ZGlvLXBsYXllci9wcm9qZWN0cy9uZ3gtYXVkaW8tcGxheWVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvbmd4LWF1ZGlvLXBsYXllci9uZ3gtYXVkaW8tcGxheWVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFHbEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFRL0IsTUFBTSxPQUFPLG9CQUFvQjtJQUc3QixZQUFZLElBQWdCO1FBa0I1QixlQUFVLEdBQUcsSUFBSSxrQkFBa0IsRUFBUyxDQUFDO1FBSzdDLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFFWixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2QiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDN0Isb0JBQWUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0IsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUVqQyxtQ0FBbUM7UUFDMUIsZ0JBQVcsR0FBRyxV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Q0FBQzs7O1lBclNKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsNENBQTRDO2dCQUN0RCw2dlpBQWdEOzthQUVuRDs7O1lBWnFELFVBQVU7Ozt1QkF3QjNELEtBQUs7MkJBS0wsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7MkJBYXpDLEtBQUs7OEJBQ0wsS0FBSztvQ0FDTCxLQUFLOzhCQUNMLEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLO29DQUNMLEtBQUs7NEJBQ0wsS0FBSzs4QkFDTCxLQUFLOzBCQUdMLEtBQUs7MEJBQ0wsS0FBSzsyQkFDTCxLQUFLOzZCQUNMLEtBQUs7eUJBSUwsTUFBTTtxQkFHTixTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTswQkFZekMsS0FBSzt3QkFTTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRWxlbWVudFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFjayB9IGZyb20gJy4uLy4uL21vZGVsL3RyYWNrLm1vZGVsJztcbmltcG9ydCB7IE1hdFNsaWRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlcic7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgQXVkaW9QbGF5ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hdWRpby1wbGF5ZXItc2VydmljZS9hdWRpby1wbGF5ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbWF0LWFkdmFuY2VkLWF1ZGlvLXBsYXllcixuZ3gtYXVkaW8tcGxheWVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd4LWF1ZGlvLXBsYXllci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmd4LWF1ZGlvLXBsYXllci5jb21wb25lbnQuY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBBdWRpb1BsYXllckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICAgIGF1ZGlvUGxheWVyU2VydmljZTogQXVkaW9QbGF5ZXJTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKGVsZW06IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgaWYgKGVsZW0ubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdtYXQtYWR2YW5jZWQtYXVkaW8tcGxheWVyJykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGAnbWF0LWFkdmFuY2VkLWF1ZGlvLXBsYXllcicgc2VsZWN0b3IgaXMgZGVwcmVjYXRlZDsgdXNlICduZ3gtYXVkaW8tcGxheWVyJyBpbnN0ZWFkLmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXVkaW9QbGF5ZXJTZXJ2aWNlID0gbmV3IEF1ZGlvUGxheWVyU2VydmljZSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHBsYXlsaXN0KHBsYXlsaXN0OiBUcmFja1tdKSB7XG4gICAgICAgIHRoaXMuYXVkaW9QbGF5ZXJTZXJ2aWNlLnNldFBsYXlsaXN0KHBsYXlsaXN0KTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IGZhbHNlIH0pIHNldCBtYXRQYWdpbmF0b3IobXA6IE1hdFBhZ2luYXRvcikge1xuICAgICAgICB0aGlzLnBhZ2luYXRvciA9IG1wO1xuICAgICAgICB0aGlzLnNldERhdGFTb3VyY2VBdHRyaWJ1dGVzKCk7XG4gICAgfVxuXG4gICAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW107XG4gICAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VHJhY2s+KCk7XG4gICAgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cbiAgICB0aW1lTGluZUR1cmF0aW9uOiBNYXRTbGlkZXI7XG5cbiAgICB0cmFja3M6IFRyYWNrW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGRpc3BsYXlUaXRsZSA9IHRydWU7XG4gICAgQElucHV0KCkgZGlzcGxheVBsYXlsaXN0ID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBkaXNwbGF5Vm9sdW1lQ29udHJvbHMgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFsxMCwgMjAsIDMwXTtcbiAgICBASW5wdXQoKSBleHBhbmRlZCA9IHRydWU7XG4gICAgQElucHV0KCkgYXV0b1BsYXkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlUG9zaXRpb25TbGlkZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNwbGF5QXJ0aXN0ID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGlzcGxheUR1cmF0aW9uID0gZmFsc2U7XG5cbiAgICAvLyBTdXBwb3J0IGZvciBpbnRlcm5hdGlvbmFsaXphdGlvblxuICAgIEBJbnB1dCgpIHRhYmxlSGVhZGVyID0gJ1BsYXlsaXN0JztcbiAgICBASW5wdXQoKSB0aXRsZUhlYWRlciA9ICdUaXRsZSc7XG4gICAgQElucHV0KCkgYXJ0aXN0SGVhZGVyID0gJ0FydGlzdCc7XG4gICAgQElucHV0KCkgZHVyYXRpb25IZWFkZXIgPSAnRHVyYXRpb24nO1xuXG4gICAgY3VycmVudEluZGV4ID0gMDtcblxuICAgIEBPdXRwdXQoKVxuICAgIHRyYWNrRW5kZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2F1ZGlvUGxheWVyJywgeyBzdGF0aWM6IHRydWUgfSkgcGxheWVyOiBFbGVtZW50UmVmO1xuXG4gICAgaU9TID0gKC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSlcbiAgICAgICAgfHwgKG5hdmlnYXRvci5wbGF0Zm9ybSA9PT0gJ01hY0ludGVsJyAmJiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAxKSk7XG5cbiAgICBsb2FkZXJEaXNwbGF5ID0gZmFsc2U7XG4gICAgaXNQbGF5aW5nID0gZmFsc2U7XG4gICAgY3VycmVudFRpbWUgPSAwO1xuICAgIHZvbHVtZSA9IDAuMTtcbiAgICBkdXJhdGlvbiA9IDAuMDE7XG5cbiAgICBwcml2YXRlIHN0YXJ0T2Zmc2V0VmFsdWUgPSAwO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXJ0T2Zmc2V0KHNlY29uZHM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnN0YXJ0T2Zmc2V0VmFsdWUgPSBzZWNvbmRzO1xuICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmN1cnJlbnRUaW1lID0gc2Vjb25kcztcbiAgICB9XG4gICAgZ2V0IHN0YXJ0T2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0T2Zmc2V0VmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5kT2Zmc2V0ID0gMDtcblxuICAgIGN1cnJUaW1lUG9zQ2hhbmdlZChldmVudCkge1xuICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmN1cnJlbnRUaW1lID0gZXZlbnQudmFsdWU7XG4gICAgfVxuXG4gICAgYmluZFBsYXllckV2ZW50KCk6IHZvaWQge1xuXG4gICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNQbGF5aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZHVyYXRpb24gPSBNYXRoLmZsb29yKHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuZHVyYXRpb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lID0gTWF0aC5mbG9vcih0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmN1cnJlbnRUaW1lKTtcbiAgICAgICAgICAgIC8vIEJVRzogQ29tbWVudGluZyBmb3IgYGVuZGVkYCBldmVudCBub3QgZmlyaW5nICM2NlxuICAgICAgICAgICAgLy8gaWYgKHRoaXMuY3VycmVudFRpbWUgPj0gdGhpcy5kdXJhdGlvbiAtIHRoaXMuZW5kT2Zmc2V0KSB7XG4gICAgICAgICAgICAvLyAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5wYXVzZSgpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd2b2x1bWUnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZvbHVtZSA9IE1hdGguZmxvb3IodGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC52b2x1bWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCF0aGlzLmlPUykge1xuICAgICAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdsb2Fkc3RhcnQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZXJEaXNwbGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyRGlzcGxheSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kdXJhdGlvbiA9IE1hdGguZmxvb3IodGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5kdXJhdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmFja0VuZGVkLm5leHQoJ2VuZGVkJyk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgcGxheUJ0bkhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlckRpc3BsYXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5wYXVzZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUaW1lID49IHRoaXMuZHVyYXRpb24gLSB0aGlzLmVuZE9mZnNldCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUgPSB0aGlzLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmN1cnJlbnRUaW1lID0gdGhpcy5jdXJyZW50VGltZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5wbGF5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lID0gdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZTtcbiAgICAgICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQucGF1c2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBsYXkodHJhY2s/OiBUcmFjayk6IHZvaWQge1xuXG4gICAgICAgIGlmICh0cmFjaykge1xuICAgICAgICAgICAgdGhpcy5zdGFydE9mZnNldCA9IHRyYWNrLnN0YXJ0T2Zmc2V0IHx8IDA7XG4gICAgICAgICAgICB0aGlzLmVuZE9mZnNldCA9IHRyYWNrLmVuZE9mZnNldCB8fCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LnBsYXkoKTtcbiAgICAgICAgfSwgNTApO1xuXG4gICAgfVxuXG4gICAgdG9nZ2xlVm9sdW1lKCkge1xuICAgICAgICBpZiAodGhpcy52b2x1bWUgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Vm9sdW1lKDEuMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFZvbHVtZSgwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Vm9sdW1lKHZvbCkge1xuICAgICAgICB0aGlzLnZvbHVtZSA9IHZvbDtcbiAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC52b2x1bWUgPSB0aGlzLnZvbHVtZTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgICAgICB0aGlzLmJpbmRQbGF5ZXJFdmVudCgpO1xuXG4gICAgICAgIC8vIGF1dG8gcGxheSBuZXh0IHRyYWNrXG4gICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja0lmU29uZ0hhc1N0YXJ0ZWRTaW5jZUF0bGVhc3RUd29TZWNvbmRzKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRTb25nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXVkaW9QbGF5ZXJTZXJ2aWNlLnNldEN1cnJlbnRUaW1lKHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gcGxheWxpc3Qgb2JzZXJ2ZXIgZnJvbSBBdWRpb1BsYXllclNlcnZpY2UgYW5kXG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgcGxheWxpc3Qgd2l0aGluIE1hdEFkdmFuY2VkQXVkaW9QbGF5ZXJDb21wb25lbnRcbiAgICAgICAgdGhpcy5hdWRpb1BsYXllclNlcnZpY2UuZ2V0UGxheWxpc3QoKS5zdWJzY3JpYmUodHJhY2tzID0+IHtcbiAgICAgICAgICAgIGlmICh0cmFja3MgIT09IG51bGwgJiYgdHJhY2tzICE9PSBbXSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhY2tzID0gdHJhY2tzO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2Rpc3BsYXlBcnRpc3QnKSB8fCBjaGFuZ2VzLmhhc093blByb3BlcnR5KCdkaXNwbGF5RHVyYXRpb24nKSkge1xuICAgICAgICAgICAgdGhpcy5idWlsZERpc3BsYXllZENvbHVtbnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGREaXNwbGF5ZWRDb2x1bW5zKCkge1xuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBbJ3RpdGxlJ107XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlBcnRpc3QpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wdXNoKCdhcnRpc3QnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNwbGF5RHVyYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wdXNoKCdkdXJhdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wdXNoKCdzdGF0dXMnKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICB0aGlzLmJ1aWxkRGlzcGxheWVkQ29sdW1ucygpO1xuXG4gICAgICAgIC8vIHBvcHVsYXRlIGluZGV4cyBmb3IgdGhlIHRyYWNrIGFuZCBjb25maWd1cmVcbiAgICAgICAgLy8gbWF0ZXJpYWwgdGFibGUgZGF0YSBzb3VyY2UgYW5kIHBhZ2luYXRvclxuICAgICAgICB0aGlzLnNldERhdGFTb3VyY2VBdHRyaWJ1dGVzKCk7XG5cblxuICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmN1cnJlbnRUaW1lID0gdGhpcy5zdGFydE9mZnNldDtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50VHJhY2soKTtcblxuICAgICAgICBpZiAodGhpcy5hdXRvUGxheSkge1xuICAgICAgICAgICAgdGhpcy5wbGF5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREYXRhU291cmNlQXR0cmlidXRlcygpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMTtcbiAgICAgICAgaWYgKHRoaXMudHJhY2tzKSB7XG4gICAgICAgICAgICB0aGlzLnRyYWNrcy5mb3JFYWNoKCh0cmFjazogVHJhY2spID0+IHtcbiAgICAgICAgICAgICAgICB0cmFjay5pbmRleCA9IGluZGV4Kys7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VHJhY2s+KHRoaXMudHJhY2tzKTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5leHRTb25nKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5UGxheWxpc3QgPT09IHRydWVcbiAgICAgICAgICAgICYmICgoKHRoaXMuY3VycmVudEluZGV4ICsgMSkgJSB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSkgPT09IDBcbiAgICAgICAgICAgICAgICB8fCAodGhpcy5jdXJyZW50SW5kZXggKyAxKSA9PT0gdGhpcy5wYWdpbmF0b3IubGVuZ3RoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yLmhhc05leHRQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5uZXh0UGFnZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5wYWdpbmF0b3IuaGFzTmV4dFBhZ2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmZpcnN0UGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSAwO1xuICAgICAgICB0aGlzLmR1cmF0aW9uID0gMC4wMTtcbiAgICAgICAgaWYgKCh0aGlzLmN1cnJlbnRJbmRleCArIDEpID49IHRoaXMudHJhY2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRUcmFjaygpO1xuICAgICAgICB0aGlzLnBsYXkoKTtcbiAgICB9XG5cbiAgICBwcmV2aW91c1NvbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSAwO1xuICAgICAgICB0aGlzLmR1cmF0aW9uID0gMC4wMTtcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrSWZTb25nSGFzU3RhcnRlZFNpbmNlQXRsZWFzdFR3b1NlY29uZHMoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGxheVBsYXlsaXN0ID09PSB0cnVlXG4gICAgICAgICAgICAgICAgJiYgKCgodGhpcy5jdXJyZW50SW5kZXgpICUgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUpID09PSAwXG4gICAgICAgICAgICAgICAgICAgIHx8ICh0aGlzLmN1cnJlbnRJbmRleCA9PT0gMCkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yLmhhc1ByZXZpb3VzUGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnByZXZpb3VzUGFnZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMucGFnaW5hdG9yLmhhc1ByZXZpb3VzUGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmxhc3RQYWdlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh0aGlzLmN1cnJlbnRJbmRleCAtIDEpIDwgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gKHRoaXMudHJhY2tzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldFNvbmcoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRUcmFjaygpO1xuICAgICAgICB0aGlzLnBsYXkoKTtcbiAgICB9XG5cbiAgICByZXNldFNvbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuc3JjID0gdGhpcy50cmFja3NbdGhpcy5jdXJyZW50SW5kZXhdLmxpbms7XG4gICAgfVxuXG4gICAgc2VsZWN0VHJhY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4IC0gMTtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50VHJhY2soKTtcbiAgICAgICAgdGhpcy5wbGF5KCk7XG4gICAgfVxuXG4gICAgY2hlY2tJZlNvbmdIYXNTdGFydGVkU2luY2VBdGxlYXN0VHdvU2Vjb25kcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUgPiAyO1xuICAgIH1cblxuICAgIHVwZGF0ZUN1cnJlbnRUcmFjaygpIHtcbiAgICAgICAgdGhpcy5hdWRpb1BsYXllclNlcnZpY2Uuc2V0Q3VycmVudFRyYWNrKHRoaXMudHJhY2tzW3RoaXMuY3VycmVudEluZGV4XSk7XG4gICAgfVxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ZGlvLXBsYXllci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3ZpamF5ZW5kcmEvRG9jdW1lbnRzL3Byb2plY3RzL25neC1hdWRpby1wbGF5ZXIvcHJvamVjdHMvbmd4LWF1ZGlvLXBsYXllci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L25neC1hdWRpby1wbGF5ZXIvbmd4LWF1ZGlvLXBsYXllci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBR2xILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTy9CLE1BQU0sT0FBTyxvQkFBb0I7SUFJN0IsWUFBWSxJQUFnQjtRQUQ1QixXQUFNLEdBQVcsS0FBSyxDQUFDO1FBb0J2QixlQUFVLEdBQUcsSUFBSSxrQkFBa0IsRUFBUyxDQUFDO1FBSzdDLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFFWixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2QiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDN0IsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLG9CQUFlLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxL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U0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzBCQVl6QyxLQUFLO3dCQVNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhY2sgfSBmcm9tICcuLi8uLi9tb2RlbC90cmFjay5tb2RlbCc7XG5pbXBvcnQgeyBNYXRTbGlkZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IEF1ZGlvUGxheWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXVkaW8tcGxheWVyLXNlcnZpY2UvYXVkaW8tcGxheWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21hdC1hZHZhbmNlZC1hdWRpby1wbGF5ZXIsbmd4LWF1ZGlvLXBsYXllcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25neC1hdWRpby1wbGF5ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL25neC1hdWRpby1wbGF5ZXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEF1ZGlvUGxheWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gICAgYXVkaW9QbGF5ZXJTZXJ2aWNlOiBBdWRpb1BsYXllclNlcnZpY2U7XG4gICAgcmVwZWF0OiBzdHJpbmcgPSAnYWxsJztcbiAgICBjb25zdHJ1Y3RvcihlbGVtOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIGlmIChlbGVtLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnbWF0LWFkdmFuY2VkLWF1ZGlvLXBsYXllcicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJ21hdC1hZHZhbmNlZC1hdWRpby1wbGF5ZXInIHNlbGVjdG9yIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnbmd4LWF1ZGlvLXBsYXllcicgaW5zdGVhZC5gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmF1ZGlvUGxheWVyU2VydmljZSA9IG5ldyBBdWRpb1BsYXllclNlcnZpY2UoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBwbGF5bGlzdChwbGF5bGlzdDogVHJhY2tbXSkge1xuICAgICAgICB0aGlzLmF1ZGlvUGxheWVyU2VydmljZS5zZXRQbGF5bGlzdChwbGF5bGlzdCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiBmYWxzZSB9KSBzZXQgbWF0UGFnaW5hdG9yKG1wOiBNYXRQYWdpbmF0b3IpIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IgPSBtcDtcbiAgICAgICAgdGhpcy5zZXREYXRhU291cmNlQXR0cmlidXRlcygpO1xuICAgIH1cblxuXG4gICAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW107XG4gICAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VHJhY2s+KCk7XG4gICAgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cbiAgICB0aW1lTGluZUR1cmF0aW9uOiBNYXRTbGlkZXI7XG5cbiAgICB0cmFja3M6IFRyYWNrW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGRpc3BsYXlUaXRsZSA9IHRydWU7XG4gICAgQElucHV0KCkgZGlzcGxheVBsYXlsaXN0ID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBkaXNwbGF5Vm9sdW1lQ29udHJvbHMgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGRpc3BsYXlSZXBlYXRDb250cm9scyA9IHRydWU7XG4gICAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zID0gWzEwLCAyMCwgMzBdO1xuICAgIEBJbnB1dCgpIGV4cGFuZGVkID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBhdXRvUGxheSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRpc2FibGVQb3NpdGlvblNsaWRlciA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRpc3BsYXlBcnRpc3QgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNwbGF5RHVyYXRpb24gPSBmYWxzZTtcblxuICAgIC8vIFN1cHBvcnQgZm9yIGludGVybmF0aW9uYWxpemF0aW9uXG4gICAgQElucHV0KCkgdGFibGVIZWFkZXIgPSAnUGxheWxpc3QnO1xuICAgIEBJbnB1dCgpIHRpdGxlSGVhZGVyID0gJ1RpdGxlJztcbiAgICBASW5wdXQoKSBhcnRpc3RIZWFkZXIgPSAnQXJ0aXN0JztcbiAgICBASW5wdXQoKSBkdXJhdGlvbkhlYWRlciA9ICdEdXJhdGlvbic7XG5cblxuICAgIGN1cnJlbnRJbmRleCA9IDA7XG5cbiAgICBAT3V0cHV0KClcbiAgICB0cmFja0VuZGVkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdhdWRpb1BsYXllcicsIHsgc3RhdGljOiB0cnVlIH0pIHBsYXllcjogRWxlbWVudFJlZjtcblxuICAgIGlPUyA9ICgvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pXG4gICAgICAgIHx8IChuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdNYWNJbnRlbCcgJiYgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMSkpO1xuXG4gICAgbG9hZGVyRGlzcGxheSA9IGZhbHNlO1xuICAgIGlzUGxheWluZyA9IGZhbHNlO1xuICAgIGN1cnJlbnRUaW1lID0gMDtcbiAgICB2b2x1bWUgPSAwLjE7XG4gICAgZHVyYXRpb24gPSAwLjAxO1xuXG4gICAgcHJpdmF0ZSBzdGFydE9mZnNldFZhbHVlID0gMDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGFydE9mZnNldChzZWNvbmRzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zdGFydE9mZnNldFZhbHVlID0gc2Vjb25kcztcbiAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZSA9IHNlY29uZHM7XG4gICAgfVxuICAgIGdldCBzdGFydE9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mZnNldFZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVuZE9mZnNldCA9IDA7XG5cbiAgICBjdXJyVGltZVBvc0NoYW5nZWQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZSA9IGV2ZW50LnZhbHVlO1xuICAgIH1cblxuICAgIGJpbmRQbGF5ZXJFdmVudCgpOiB2b2lkIHtcblxuICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzUGxheWluZyA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUpO1xuICAgICAgICAgICAgLy8gQlVHOiBDb21tZW50aW5nIGZvciBgZW5kZWRgIGV2ZW50IG5vdCBmaXJpbmcgIzY2XG4gICAgICAgICAgICAvLyBpZiAodGhpcy5jdXJyZW50VGltZSA+PSB0aGlzLmR1cmF0aW9uIC0gdGhpcy5lbmRPZmZzZXQpIHtcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LnBhdXNlKCk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3ZvbHVtZScsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudm9sdW1lID0gTWF0aC5mbG9vcih0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LnZvbHVtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXRoaXMuaU9TKSB7XG4gICAgICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRzdGFydCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlckRpc3BsYXkgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyRGlzcGxheSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kdXJhdGlvbiA9IE1hdGguZmxvb3IodGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5kdXJhdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmFja0VuZGVkLm5leHQoJ2VuZGVkJyk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgcGxheUJ0bkhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlckRpc3BsYXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5wYXVzZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUaW1lID49IHRoaXMuZHVyYXRpb24gLSB0aGlzLmVuZE9mZnNldCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUgPSB0aGlzLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LmN1cnJlbnRUaW1lID0gdGhpcy5jdXJyZW50VGltZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5wbGF5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lID0gdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZTtcbiAgICAgICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQucGF1c2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBsYXkodHJhY2s/OiBUcmFjayk6IHZvaWQge1xuXG4gICAgICAgIGlmICh0cmFjaykge1xuICAgICAgICAgICAgdGhpcy5zdGFydE9mZnNldCA9IHRyYWNrLnN0YXJ0T2Zmc2V0IHx8IDA7XG4gICAgICAgICAgICB0aGlzLmVuZE9mZnNldCA9IHRyYWNrLmVuZE9mZnNldCB8fCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsYXllci5uYXRpdmVFbGVtZW50LnBsYXkoKTtcbiAgICAgICAgfSwgNTApO1xuXG4gICAgfVxuXG4gICAgdG9nZ2xlVm9sdW1lKCkge1xuICAgICAgICBpZiAodGhpcy52b2x1bWUgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Vm9sdW1lKDEuMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFZvbHVtZSgwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZVJlcGVhdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVwZWF0ID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgIHRoaXMucmVwZWF0ID0gJ2FsbCc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXBlYXQgPT09ICdhbGwnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmFja3MubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwZWF0ID0gJ29uZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwZWF0ID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVwZWF0ID09PSAnb25lJyAmJiB0aGlzLnRyYWNrcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdCA9ICdub25lJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Vm9sdW1lKHZvbCkge1xuICAgICAgICB0aGlzLnZvbHVtZSA9IHZvbDtcbiAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC52b2x1bWUgPSB0aGlzLnZvbHVtZTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgICAgICB0aGlzLmJpbmRQbGF5ZXJFdmVudCgpO1xuXG4gICAgICAgIC8vIGF1dG8gcGxheSBuZXh0IHRyYWNrXG4gICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja0lmU29uZ0hhc1N0YXJ0ZWRTaW5jZUF0bGVhc3RUd29TZWNvbmRzKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXBlYXQgPT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dFNvbmcoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVwZWF0ID09PSAnb25lJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXkoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVwZWF0ID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hdWRpb1BsYXllclNlcnZpY2Uuc2V0Q3VycmVudFRpbWUodGhpcy5wbGF5ZXIubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFN1YnNjcmliZSB0byBwbGF5bGlzdCBvYnNlcnZlciBmcm9tIEF1ZGlvUGxheWVyU2VydmljZSBhbmRcbiAgICAgICAgLy8gdXBkYXRlIHRoZSBwbGF5bGlzdCB3aXRoaW4gTWF0QWR2YW5jZWRBdWRpb1BsYXllckNvbXBvbmVudFxuICAgICAgICB0aGlzLmF1ZGlvUGxheWVyU2VydmljZS5nZXRQbGF5bGlzdCgpLnN1YnNjcmliZSh0cmFja3MgPT4ge1xuICAgICAgICAgICAgaWYgKHRyYWNrcyAhPT0gbnVsbCAmJiB0cmFja3MgIT09IFtdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFja3MgPSB0cmFja3M7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZGlzcGxheUFydGlzdCcpIHx8IGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2Rpc3BsYXlEdXJhdGlvbicpKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkRGlzcGxheWVkQ29sdW1ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZERpc3BsYXllZENvbHVtbnMoKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IFsndGl0bGUnXTtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheUFydGlzdCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ2FydGlzdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlEdXJhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ2R1cmF0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ3N0YXR1cycpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHRoaXMuYnVpbGREaXNwbGF5ZWRDb2x1bW5zKCk7XG5cbiAgICAgICAgLy8gcG9wdWxhdGUgaW5kZXhzIGZvciB0aGUgdHJhY2sgYW5kIGNvbmZpZ3VyZVxuICAgICAgICAvLyBtYXRlcmlhbCB0YWJsZSBkYXRhIHNvdXJjZSBhbmQgcGFnaW5hdG9yXG4gICAgICAgIHRoaXMuc2V0RGF0YVNvdXJjZUF0dHJpYnV0ZXMoKTtcblxuXG4gICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUgPSB0aGlzLnN0YXJ0T2Zmc2V0O1xuICAgICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRUcmFjaygpO1xuXG4gICAgICAgIGlmICh0aGlzLmF1dG9QbGF5KSB7XG4gICAgICAgICAgICB0aGlzLnBsYXkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERhdGFTb3VyY2VBdHRyaWJ1dGVzKCkge1xuICAgICAgICBsZXQgaW5kZXggPSAxO1xuICAgICAgICBpZiAodGhpcy50cmFja3MpIHtcbiAgICAgICAgICAgIHRoaXMudHJhY2tzLmZvckVhY2goKHRyYWNrOiBUcmFjaykgPT4ge1xuICAgICAgICAgICAgICAgIHRyYWNrLmluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUcmFjaz4odGhpcy50cmFja3MpO1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmV4dFNvbmcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlQbGF5bGlzdCA9PT0gdHJ1ZVxuICAgICAgICAgICAgJiYgKCgodGhpcy5jdXJyZW50SW5kZXggKyAxKSAlIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplKSA9PT0gMFxuICAgICAgICAgICAgICAgIHx8ICh0aGlzLmN1cnJlbnRJbmRleCArIDEpID09PSB0aGlzLnBhZ2luYXRvci5sZW5ndGgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IuaGFzTmV4dFBhZ2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLm5leHRQYWdlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnBhZ2luYXRvci5oYXNOZXh0UGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50VGltZSA9IDA7XG4gICAgICAgIHRoaXMuZHVyYXRpb24gPSAwLjAxO1xuICAgICAgICBpZiAoKHRoaXMuY3VycmVudEluZGV4ICsgMSkgPj0gdGhpcy50cmFja3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFRyYWNrKCk7XG4gICAgICAgIHRoaXMucGxheSgpO1xuICAgIH1cblxuICAgIHByZXZpb3VzU29uZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VGltZSA9IDA7XG4gICAgICAgIHRoaXMuZHVyYXRpb24gPSAwLjAxO1xuICAgICAgICBpZiAoIXRoaXMuY2hlY2tJZlNvbmdIYXNTdGFydGVkU2luY2VBdGxlYXN0VHdvU2Vjb25kcygpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5UGxheWxpc3QgPT09IHRydWVcbiAgICAgICAgICAgICAgICAmJiAoKCh0aGlzLmN1cnJlbnRJbmRleCkgJSB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSkgPT09IDBcbiAgICAgICAgICAgICAgICAgICAgfHwgKHRoaXMuY3VycmVudEluZGV4ID09PSAwKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IuaGFzUHJldmlvdXNQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucHJldmlvdXNQYWdlKCk7ICAgICAgIFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMucGFnaW5hdG9yLmhhc1ByZXZpb3VzUGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmxhc3RQYWdlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh0aGlzLmN1cnJlbnRJbmRleCAtIDEpIDwgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gKHRoaXMudHJhY2tzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldFNvbmcoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRUcmFjaygpO1xuICAgICAgICB0aGlzLnBsYXkoKTtcbiAgICB9XG5cbiAgICByZXNldFNvbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuc3JjID0gdGhpcy50cmFja3NbdGhpcy5jdXJyZW50SW5kZXhdLmxpbms7XG4gICAgfVxuXG4gICAgc2VsZWN0VHJhY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4IC0gMTtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50VHJhY2soKTtcbiAgICAgICAgdGhpcy5wbGF5KCk7XG4gICAgfVxuXG4gICAgY2hlY2tJZlNvbmdIYXNTdGFydGVkU2luY2VBdGxlYXN0VHdvU2Vjb25kcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheWVyLm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUgPiAyO1xuICAgIH1cblxuICAgIHVwZGF0ZUN1cnJlbnRUcmFjaygpIHtcbiAgICAgICAgdGhpcy5hdWRpb1BsYXllclNlcnZpY2Uuc2V0Q3VycmVudFRyYWNrKHRoaXMudHJhY2tzW3RoaXMuY3VycmVudEluZGV4XSk7XG4gICAgfVxuXG59XG4iXX0=

@@ -8,2 +8,2 @@ export class Track {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2subW9kZWwuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3Zpam11ZGlnL215LWRhdGEvbmd4LWF1ZGlvLXBsYXllci9wcm9qZWN0cy9uZ3gtYXVkaW8tcGxheWVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbC90cmFjay5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sS0FBSztJQUFsQjtRQVFTLGFBQVEsR0FBRyxHQUFXLEVBQUU7WUFDN0IsT0FBTyxpQkFBaUIsSUFBSSxDQUFDLEtBQUssWUFBWSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDOUQsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRyYWNrIHtcbiAgaW5kZXg/OiBudW1iZXI7XG4gIGxpbms6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgc3RhcnRPZmZzZXQ/OiBudW1iZXI7XG4gIGVuZE9mZnNldD86IG51bWJlcjtcbiAgZHVyYXRpb24/OiBudW1iZXI7XG4gIGFydGlzdD86IHN0cmluZztcbiAgcHVibGljIHRvU3RyaW5nID0gKCk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIGBUcmFjayAoaW5kZXg6ICR7dGhpcy5pbmRleH0sIHRpdGxlOiAke3RoaXMudGl0bGV9KWA7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2subW9kZWwuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3ZpamF5ZW5kcmEvRG9jdW1lbnRzL3Byb2plY3RzL25neC1hdWRpby1wbGF5ZXIvcHJvamVjdHMvbmd4LWF1ZGlvLXBsYXllci9zcmMvIiwic291cmNlcyI6WyJsaWIvbW9kZWwvdHJhY2subW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLEtBQUs7SUFBbEI7UUFRUyxhQUFRLEdBQUcsR0FBVyxFQUFFO1lBQzdCLE9BQU8saUJBQWlCLElBQUksQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQzlELENBQUMsQ0FBQTtJQUNILENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBUcmFjayB7XG4gIGluZGV4PzogbnVtYmVyO1xuICBsaW5rOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXJ0T2Zmc2V0PzogbnVtYmVyO1xuICBlbmRPZmZzZXQ/OiBudW1iZXI7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBhcnRpc3Q/OiBzdHJpbmc7XG4gIHB1YmxpYyB0b1N0cmluZyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiBgVHJhY2sgKGluZGV4OiAke3RoaXMuaW5kZXh9LCB0aXRsZTogJHt0aGlzLnRpdGxlfSlgO1xuICB9XG59XG4iXX0=

@@ -24,2 +24,2 @@ import { NgModule } from '@angular/core';

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ZGlvLXBsYXllci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3Zpam11ZGlnL215LWRhdGEvbmd4LWF1ZGlvLXBsYXllci9wcm9qZWN0cy9uZ3gtYXVkaW8tcGxheWVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtYXVkaW8tcGxheWVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQVEvRixNQUFNLE9BQU8sb0JBQW9COzs7WUFOaEMsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDO2dCQUMxRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGtCQUFrQjtvQkFDckcsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGFBQWEsQ0FBQztnQkFDekUsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7YUFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlY29uZHNUb01pbnV0ZXNQaXBlIH0gZnJvbSAnLi9waXBlL3NlY29uZHMtdG8tbWludXRlcyc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQXVkaW9QbGF5ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC9uZ3gtYXVkaW8tcGxheWVyL25neC1hdWRpby1wbGF5ZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2Vjb25kc1RvTWludXRlc1BpcGUsIEF1ZGlvUGxheWVyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0VGFibGVNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRTbGlkZXJNb2R1bGUsIE1hdEV4cGFuc2lvbk1vZHVsZSwgTWF0UGFnaW5hdG9yTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgZXhwb3J0czogW0F1ZGlvUGxheWVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hBdWRpb1BsYXllck1vZHVsZSB7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ZGlvLXBsYXllci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3ZpamF5ZW5kcmEvRG9jdW1lbnRzL3Byb2plY3RzL25neC1hdWRpby1wbGF5ZXIvcHJvamVjdHMvbmd4LWF1ZGlvLXBsYXllci9zcmMvIiwic291cmNlcyI6WyJsaWIvbmd4LWF1ZGlvLXBsYXllci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFRL0YsTUFBTSxPQUFPLG9CQUFvQjs7O1lBTmhDLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztnQkFDMUQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxrQkFBa0I7b0JBQ3JHLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLENBQUM7Z0JBQ3pFLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2FBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWNvbmRzVG9NaW51dGVzUGlwZSB9IGZyb20gJy4vcGlwZS9zZWNvbmRzLXRvLW1pbnV0ZXMnO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEF1ZGlvUGxheWVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQvbmd4LWF1ZGlvLXBsYXllci9uZ3gtYXVkaW8tcGxheWVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NlY29uZHNUb01pbnV0ZXNQaXBlLCBBdWRpb1BsYXllckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdENhcmRNb2R1bGUsIE1hdFRhYmxlTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0U2xpZGVyTW9kdWxlLCBNYXRFeHBhbnNpb25Nb2R1bGUsIE1hdFBhZ2luYXRvck1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtBdWRpb1BsYXllckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4QXVkaW9QbGF5ZXJNb2R1bGUge1xufVxuIl19

@@ -20,2 +20,2 @@ import { Pipe } from '@angular/core';

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vjb25kcy10by1taW51dGVzLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy92aWptdWRpZy9teS1kYXRhL25neC1hdWRpby1wbGF5ZXIvcHJvamVjdHMvbmd4LWF1ZGlvLXBsYXllci9zcmMvIiwic291cmNlcyI6WyJsaWIvcGlwZS9zZWNvbmRzLXRvLW1pbnV0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQ7OztFQUdFO0FBRUYsTUFBTSxPQUFPLG9CQUFvQjtJQUM3QixTQUFTLENBQUMsSUFBWTtRQUNsQixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFDO1lBQUUsT0FBTyxHQUFHLEtBQUssSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7U0FBRTtRQUMvRCxPQUFPLEdBQUcsT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7OztZQVJKLElBQUksU0FBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8qXG4gKiBUcmFuc2Zvcm0gc2Vjb25kcyB0byBtaW51dGVzOnNlY29uZHNcbiAqIEV4YW1wbGUgOiAyNzAgLT4gMDI6MzBcbiovXG5AUGlwZSh7IG5hbWU6ICdzZWNvbmRzVG9NaW51dGVzJyB9KVxuZXhwb3J0IGNsYXNzIFNlY29uZHNUb01pbnV0ZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHRpbWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gKCcwJyArIE1hdGguZmxvb3IodGltZSAvIDM2MDApKS5zbGljZSgtMik7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSAoJzAnICsgTWF0aC5mbG9vcigodGltZSAlIDM2MDApIC8gNjApKS5zbGljZSgtMik7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSAoJzAnICsgdGltZSAlIDYwKS5zbGljZSgtMik7XG4gICAgICAgIGlmIChob3VycyAhPT0gJzAwJyl7IHJldHVybiBgJHtob3Vyc306JHttaW51dGVzfToke3NlY29uZHN9YDsgfVxuICAgICAgICByZXR1cm4gYCR7bWludXRlc306JHtzZWNvbmRzfWA7XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vjb25kcy10by1taW51dGVzLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy92aWpheWVuZHJhL0RvY3VtZW50cy9wcm9qZWN0cy9uZ3gtYXVkaW8tcGxheWVyL3Byb2plY3RzL25neC1hdWRpby1wbGF5ZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL3BpcGUvc2Vjb25kcy10by1taW51dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BEOzs7RUFHRTtBQUVGLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0IsU0FBUyxDQUFDLElBQVk7UUFDbEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUFFLE9BQU8sR0FBRyxLQUFLLElBQUksT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDO1NBQUU7UUFDaEUsT0FBTyxHQUFHLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs7WUFSSixJQUFJLFNBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vKlxuICogVHJhbnNmb3JtIHNlY29uZHMgdG8gbWludXRlczpzZWNvbmRzXG4gKiBFeGFtcGxlIDogMjcwIC0+IDAyOjMwXG4qL1xuQFBpcGUoeyBuYW1lOiAnc2Vjb25kc1RvTWludXRlcycgfSlcbmV4cG9ydCBjbGFzcyBTZWNvbmRzVG9NaW51dGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh0aW1lOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBob3VycyA9ICgnMCcgKyBNYXRoLmZsb29yKHRpbWUgLyAzNjAwKSkuc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gKCcwJyArIE1hdGguZmxvb3IoKHRpbWUgJSAzNjAwKSAvIDYwKSkuc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gKCcwJyArIHRpbWUgJSA2MCkuc2xpY2UoLTIpO1xuICAgICAgICBpZiAoaG91cnMgIT09ICcwMCcpIHsgcmV0dXJuIGAke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc31gOyB9XG4gICAgICAgIHJldHVybiBgJHttaW51dGVzfToke3NlY29uZHN9YDtcbiAgICB9XG59XG4iXX0=

@@ -44,2 +44,2 @@ import { Injectable } from '@angular/core';

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tcGxheWVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3Zpam11ZGlnL215LWRhdGEvbmd4LWF1ZGlvLXBsYXllci9wcm9qZWN0cy9uZ3gtYXVkaW8tcGxheWVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlL2F1ZGlvLXBsYXllci1zZXJ2aWNlL2F1ZGlvLXBsYXllci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7QUFNbkQsTUFBTSxPQUFPLGtCQUFrQjtJQUgvQjtRQUtFLDZCQUE2QjtRQUM3QixXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ3JCLHFCQUFnQixHQUNkLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1Qyx3QkFBd0I7UUFDeEIsaUJBQVksR0FBVSxJQUFJLENBQUM7UUFDM0IseUJBQW9CLEdBQ2xCLElBQUksZUFBZSxDQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoRCx1QkFBdUI7UUFDdkIsZ0JBQVcsR0FBUSxJQUFJLENBQUM7UUFDeEIsd0JBQW1CLEdBQ2pCLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQTZCOUM7SUEzQkMsV0FBVyxDQUFDLE1BQWU7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQW1CO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFnQjtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pELENBQUM7Ozs7WUE3Q0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmFjayB9IGZyb20gJy4uLy4uL21vZGVsL3RyYWNrLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1ZGlvUGxheWVyU2VydmljZSB7XG5cbiAgLy8gRHluYW1pYyB1cGRhdGUgb2YgcGxheWxpc3RcbiAgdHJhY2tzOiBUcmFja1tdID0gW107XG4gIHBsYXlsaXN0U3ViamVjdCQ6IEJlaGF2aW9yU3ViamVjdDxUcmFja1tdPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFja1tdPih0aGlzLnRyYWNrcyk7XG5cbiAgLy8gR2V0IHRoZSBjdXJyZW50IHRyYWNrXG4gIGN1cnJlbnRUcmFjazogVHJhY2sgPSBudWxsO1xuICBjdXJyZW50VHJhY2tTdWJqZWN0JDogQmVoYXZpb3JTdWJqZWN0PFRyYWNrPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFjaz4odGhpcy5jdXJyZW50VHJhY2spO1xuXG4gIC8vIEdldCB0aGUgY3VycmVudCB0aW1lXG4gIGN1cnJlbnRUaW1lOiBhbnkgPSBudWxsO1xuICBjdXJyZW50VGltZVN1YmplY3QkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHRoaXMuY3VycmVudFRpbWUpO1xuXG4gIHNldFBsYXlsaXN0KHRyYWNrczogVHJhY2tbXSkge1xuICAgIHRoaXMudHJhY2tzID0gdHJhY2tzO1xuICAgIHRoaXMucGxheWxpc3RTdWJqZWN0JC5uZXh0KHRoaXMudHJhY2tzKTtcbiAgfVxuXG4gIGdldFBsYXlsaXN0KCk6IE9ic2VydmFibGU8VHJhY2tbXT4ge1xuICAgIHJldHVybiB0aGlzLnBsYXlsaXN0U3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzZXRDdXJyZW50VHJhY2soY3VycmVudFRyYWNrOiBUcmFjaykge1xuICAgIHRoaXMuY3VycmVudFRyYWNrID0gY3VycmVudFRyYWNrO1xuICAgIHRoaXMuY3VycmVudFRyYWNrU3ViamVjdCQubmV4dCh0aGlzLmN1cnJlbnRUcmFjayk7XG4gIH1cblxuICBnZXRDdXJyZW50VHJhY2soKTogT2JzZXJ2YWJsZTxUcmFjaz4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRUcmFja1N1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWU6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFRpbWUgPSBjdXJyZW50VGltZTtcbiAgICB0aGlzLmN1cnJlbnRUaW1lU3ViamVjdCQubmV4dCh0aGlzLmN1cnJlbnRUaW1lKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRUaW1lKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRpbWVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tcGxheWVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3ZpamF5ZW5kcmEvRG9jdW1lbnRzL3Byb2plY3RzL25neC1hdWRpby1wbGF5ZXIvcHJvamVjdHMvbmd4LWF1ZGlvLXBsYXllci9zcmMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZS9hdWRpby1wbGF5ZXItc2VydmljZS9hdWRpby1wbGF5ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxrQkFBa0I7SUFIL0I7UUFLRSw2QkFBNkI7UUFDN0IsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FDZCxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUMsd0JBQXdCO1FBQ3hCLGlCQUFZLEdBQVUsSUFBSSxDQUFDO1FBQzNCLHlCQUFvQixHQUNsQixJQUFJLGVBQWUsQ0FBUSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEQsdUJBQXVCO1FBQ3ZCLGdCQUFXLEdBQVEsSUFBSSxDQUFDO1FBQ3hCLHdCQUFtQixHQUNqQixJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0E2QjlDO0lBM0JDLFdBQVcsQ0FBQyxNQUFlO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFtQjtRQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxjQUFjLENBQUMsV0FBZ0I7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNqRCxDQUFDOzs7O1lBN0NGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhY2sgfSBmcm9tICcuLi8uLi9tb2RlbC90cmFjay5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdWRpb1BsYXllclNlcnZpY2Uge1xuXG4gIC8vIER5bmFtaWMgdXBkYXRlIG9mIHBsYXlsaXN0XG4gIHRyYWNrczogVHJhY2tbXSA9IFtdO1xuICBwbGF5bGlzdFN1YmplY3QkOiBCZWhhdmlvclN1YmplY3Q8VHJhY2tbXT4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8VHJhY2tbXT4odGhpcy50cmFja3MpO1xuXG4gIC8vIEdldCB0aGUgY3VycmVudCB0cmFja1xuICBjdXJyZW50VHJhY2s6IFRyYWNrID0gbnVsbDtcbiAgY3VycmVudFRyYWNrU3ViamVjdCQ6IEJlaGF2aW9yU3ViamVjdDxUcmFjaz4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8VHJhY2s+KHRoaXMuY3VycmVudFRyYWNrKTtcblxuICAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZVxuICBjdXJyZW50VGltZTogYW55ID0gbnVsbDtcbiAgY3VycmVudFRpbWVTdWJqZWN0JDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih0aGlzLmN1cnJlbnRUaW1lKTtcblxuICBzZXRQbGF5bGlzdCh0cmFja3M6IFRyYWNrW10pIHtcbiAgICB0aGlzLnRyYWNrcyA9IHRyYWNrcztcbiAgICB0aGlzLnBsYXlsaXN0U3ViamVjdCQubmV4dCh0aGlzLnRyYWNrcyk7XG4gIH1cblxuICBnZXRQbGF5bGlzdCgpOiBPYnNlcnZhYmxlPFRyYWNrW10+IHtcbiAgICByZXR1cm4gdGhpcy5wbGF5bGlzdFN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0Q3VycmVudFRyYWNrKGN1cnJlbnRUcmFjazogVHJhY2spIHtcbiAgICB0aGlzLmN1cnJlbnRUcmFjayA9IGN1cnJlbnRUcmFjaztcbiAgICB0aGlzLmN1cnJlbnRUcmFja1N1YmplY3QkLm5leHQodGhpcy5jdXJyZW50VHJhY2spO1xuICB9XG5cbiAgZ2V0Q3VycmVudFRyYWNrKCk6IE9ic2VydmFibGU8VHJhY2s+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VHJhY2tTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lOiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRUaW1lID0gY3VycmVudFRpbWU7XG4gICAgdGhpcy5jdXJyZW50VGltZVN1YmplY3QkLm5leHQodGhpcy5jdXJyZW50VGltZSk7XG4gIH1cblxuICBnZXRDdXJyZW50VGltZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRUaW1lU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxufVxuIl19

@@ -6,2 +6,2 @@ /**

export { SecondsToMinutesPipe as ɵa } from './lib/pipe/seconds-to-minutes';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ZGlvLXBsYXllci5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvdmlqbXVkaWcvbXktZGF0YS9uZ3gtYXVkaW8tcGxheWVyL3Byb2plY3RzL25neC1hdWRpby1wbGF5ZXIvc3JjLyIsInNvdXJjZXMiOlsibmd4LWF1ZGlvLXBsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtTZWNvbmRzVG9NaW51dGVzUGlwZSBhcyDJtWF9IGZyb20gJy4vbGliL3BpcGUvc2Vjb25kcy10by1taW51dGVzJzsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ZGlvLXBsYXllci5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvdmlqYXllbmRyYS9Eb2N1bWVudHMvcHJvamVjdHMvbmd4LWF1ZGlvLXBsYXllci9wcm9qZWN0cy9uZ3gtYXVkaW8tcGxheWVyL3NyYy8iLCJzb3VyY2VzIjpbIm5neC1hdWRpby1wbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7U2Vjb25kc1RvTWludXRlc1BpcGUgYXMgybVhfSBmcm9tICcuL2xpYi9waXBlL3NlY29uZHMtdG8tbWludXRlcyc7Il19

@@ -7,2 +7,2 @@ /*

export * from './lib/model/track.model';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvdmlqbXVkaWcvbXktZGF0YS9uZ3gtYXVkaW8tcGxheWVyL3Byb2plY3RzL25neC1hdWRpby1wbGF5ZXIvc3JjLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtYXVkaW8tcGxheWVyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L25neC1hdWRpby1wbGF5ZXIvbmd4LWF1ZGlvLXBsYXllci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWF1ZGlvLXBsYXllci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvdHJhY2subW9kZWwnO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvdmlqYXllbmRyYS9Eb2N1bWVudHMvcHJvamVjdHMvbmd4LWF1ZGlvLXBsYXllci9wcm9qZWN0cy9uZ3gtYXVkaW8tcGxheWVyL3NyYy8iLCJzb3VyY2VzIjpbInB1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LWF1ZGlvLXBsYXllclxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC9uZ3gtYXVkaW8tcGxheWVyL25neC1hdWRpby1wbGF5ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1hdWRpby1wbGF5ZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL3RyYWNrLm1vZGVsJztcbiJdfQ==

@@ -57,2 +57,3 @@ import { ɵɵdefineInjectable, Injectable, Component, ElementRef, Input, ViewChild, Output, Pipe, NgModule } from '@angular/core';

constructor(elem) {
this.repeat = 'all';
this.dataSource = new MatTableDataSource();

@@ -63,2 +64,3 @@ this.tracks = [];

this.displayVolumeControls = true;
this.displayRepeatControls = true;
this.pageSizeOptions = [10, 20, 30];

@@ -111,3 +113,2 @@ this.expanded = true;

this.isPlaying = true;
this.duration = Math.floor(this.player.nativeElement.duration);
});

@@ -132,3 +133,3 @@ this.player.nativeElement.addEventListener('pause', () => {

}
this.player.nativeElement.addEventListener('loadeddata', () => {
this.player.nativeElement.addEventListener('loadedmetadata', () => {
this.loaderDisplay = false;

@@ -176,2 +177,18 @@ this.duration = Math.floor(this.player.nativeElement.duration);

}
toggleRepeat() {
if (this.repeat === 'none') {
this.repeat = 'all';
}
else if (this.repeat === 'all') {
if (this.tracks.length > 1) {
this.repeat = 'one';
}
else {
this.repeat = 'none';
}
}
else if (this.repeat === 'one' && this.tracks.length > 1) {
this.repeat = 'none';
}
}
setVolume(vol) {

@@ -186,3 +203,11 @@ this.volume = vol;

if (this.checkIfSongHasStartedSinceAtleastTwoSeconds()) {
this.nextSong();
if (this.repeat === 'all') {
this.nextSong();
}
else if (this.repeat === 'one') {
this.play();
}
else if (this.repeat === 'none') {
// Do nothing
}
}

@@ -305,4 +330,4 @@ });

selector: 'mat-advanced-audio-player,ngx-audio-player',
template: "<mat-card class=\"ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2\"\n style=\"margin: 0px;\">\n\n <audio #audioPlayer [src]=\"tracks[currentIndex]?.link\"></audio>\n\n <button *ngIf=\"tracks.length > 1\" (click)='previousSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1\" mat-button>\n <mat-icon aria-hidden=\"true\">\n <!-- Skip previous icon (skip_previous) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6h2v12H6zm3.5 6l8.5 6V6z\" />\n <path d=\"M0 0h32v32H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button (click)='playBtnHandler();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 play-pause\" mat-button>\n\n <svg *ngIf=\"loaderDisplay\" height=\"34px\" preserveAspectRatio=\"xMidYMid\"\n style=\"margin: auto; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"34px\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"rotate(0 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.9166666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(30 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.8333333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(60 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.75s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(90 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.6666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(120 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5833333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(150 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(180 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.4166666666666667s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(210 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.3333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(240 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.25s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(270 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.16666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(300 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.08333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(330 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"0s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf=\"!loaderDisplay && !isPlaying\" aria-hidden=\"true\" class=\"play-track\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 5v14l11-7z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"!loaderDisplay && isPlaying\" aria-hidden=\"true\" class=\"pause-track\">\n <!-- Pause icon (pause) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf=\"tracks.length > 1\" (click)='nextSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 skip-next\"\n mat-button>\n <mat-icon aria-hidden=\"true\" class=\"next-track\">\n <!-- Skip next icon (skip_next) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n\n <div class=\"ngx-col\">\n <div class=\"ngx-d-flex ngx-flex-fill ngx-justify-content-center\">\n <div class=\"ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1\" style=\"font-size: 12px\">\n <span *ngIf=\"duration !== 0.01\">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]=\"disablePositionSlider\" (change)=\"currTimePosChanged($event)\" [min]=\"startOffset\"\n class=\"ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1\" max=\"{{duration-endOffset}}\" style=\"width: 100%\"\n value=\"{{currentTime}}\"></mat-slider>\n <div class=\"ngx-py-3 ngx-px-1\" style=\"font-size: 12px; text-align: right\">\n <span *ngIf=\"duration !== 0.01\">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)='toggleVolume();' *ngIf=\"displayVolumeControls\" class=\"ngx-p-1 volume\" mat-button>\n <mat-icon *ngIf=\"volume === 0\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Volume mute icon (volume_off) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"volume > 0\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Volume up icon (volume_up) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf=\"displayTitle\" class=\"mat-elevation-z1\">\n <div style=\"text-align: center;\">\n <div style=\"margin: 1px 2px; padding: 1em\">\n <span\n *ngIf=\"!isPlaying\">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}</span>\n <marquee *ngIf=\"isPlaying\" behavior=\"scroll\" direction=\"left\">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}\n </marquee>\n </div>\n <div class=\"clear\"></div>\n </div>\n</mat-card>\n\n<mat-accordion *ngIf=\"displayPlaylist && tracks.length > 1\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]=\"dataSource\" class=\"mat-elevation-z6\" mat-table>\n <ng-container matColumnDef=\"title\">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"artist\">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.artist ? element?.artist : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"duration\">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"status\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n <div *ngIf=\"tracks[currentIndex]?.title === element.title\">\n <!-- <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>\n </mat-icon> -->\n <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\" class=\"currently-playing\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z\" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-select-content\" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>",
styles: ["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.ngx-advanced-audio-player{min-width:325px}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:720px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]
template: "<mat-card class=\"ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2\"\n style=\"margin: 0px;\">\n\n <audio #audioPlayer [src]=\"tracks[currentIndex]?.link\"></audio>\n\n <button *ngIf=\"tracks.length > 1\" (click)='previousSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1\" mat-button>\n <mat-icon aria-hidden=\"true\">\n <!-- Skip previous icon (skip_previous) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6h2v12H6zm3.5 6l8.5 6V6z\" />\n <path d=\"M0 0h32v32H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button (click)='playBtnHandler();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 play-pause\" mat-button>\n\n <svg *ngIf=\"loaderDisplay\" height=\"34px\" preserveAspectRatio=\"xMidYMid\"\n style=\"margin: auto; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"34px\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"rotate(0 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.9166666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(30 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.8333333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(60 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.75s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(90 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.6666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(120 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5833333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(150 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(180 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.4166666666666667s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(210 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.3333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(240 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.25s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(270 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.16666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(300 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.08333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(330 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"0s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf=\"!loaderDisplay && !isPlaying\" aria-hidden=\"true\" class=\"play-track\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 5v14l11-7z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"!loaderDisplay && isPlaying\" aria-hidden=\"true\" class=\"pause-track\">\n <!-- Pause icon (pause) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf=\"tracks.length > 1\" (click)='nextSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 skip-next\"\n mat-button>\n <mat-icon aria-hidden=\"true\" class=\"next-track\">\n <!-- Skip next icon (skip_next) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n\n <div class=\"ngx-col\">\n <div class=\"ngx-d-flex ngx-flex-fill ngx-justify-content-center\">\n <div class=\"ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1\" style=\"font-size: 12px\">\n <span *ngIf=\"duration !== 0.01\">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]=\"disablePositionSlider\" (change)=\"currTimePosChanged($event)\" [min]=\"startOffset\"\n class=\"ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1\" max=\"{{duration-endOffset}}\" style=\"width: 100%\"\n value=\"{{currentTime}}\"></mat-slider>\n\n <div class=\"ngx-py-3 ngx-px-1\" style=\"font-size: 12px; text-align: right\">\n <span *ngIf=\"duration !== 0.01\">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)='toggleRepeat();' *ngIf=\"displayRepeatControls\" class=\"ngx-p-1 volume justify-content-center\"\n mat-button>\n <mat-icon *ngIf=\"repeat === 'none'\" aria-hidden=\"true\" class=\"volume-mute justify-content-center\">\n <!-- Repeat None -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <g>\n <path d=\"m0,0l24,0l0,24l-24,0l0,-24z\" fill=\"none\" />\n <path\n d=\"m8,20l0,1.932a0.5,0.5 0 0 1 -0.82,0.385l-4.12,-3.433a0.5,0.5 0 0 1 0.322,-0.884l14.618,0a2,2 0 0 0 2,-2l0,-8l2,0l0,8a4,4 0 0 1 -4,4l-10,0zm8,-16l0,-1.932a0.5,0.5 0 0 1 0.82,-0.385l4.12,3.433a0.5,0.5 0 0 1 -0.321,0.884l-14.619,0a2,2 0 0 0 -2,2l0,8l-2,0l0,-8a4,4 0 0 1 4,-4l10,0z\" />\n <path d=\"M 3 0 L 22.4164 22.2706 L 21 24 L 1.5836 1.8128 L 3 0\"></path>\n </g>\n <!-- <line xmlns=\"http://www.w3.org/2000/svg\" id=\"svg_4\" y2=\"22.27056\" x2=\"22.41638\" y1=\"1.81276\" x1=\"1.58362\" stroke-width=\"2\" fill=\"none\"/> -->\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"repeat === 'all'\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Repeat All -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10z\" />\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"repeat === 'one'\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Repeat ONE -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10zm-5 4h2v8h-2v-6H9V9l2-1z\" />\n </g>\n </svg>\n </mat-icon>\n </button>\n <button (click)='toggleVolume();' *ngIf=\"displayVolumeControls\" class=\"ngx-p-1 volume\" mat-button>\n <mat-icon *ngIf=\"volume === 0\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Volume mute icon (volume_off) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"volume > 0\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Volume up icon (volume_up) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf=\"displayTitle\" class=\"mat-elevation-z1 ngx-audio-player\">\n <div style=\"text-align: center;\">\n <div style=\"margin: 1px 2px; padding: 1em\">\n <span *ngIf=\"!isPlaying\">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ?\n ' | ' + tracks[currentIndex]?.artist : ''}}</span>\n <marquee *ngIf=\"isPlaying\" behavior=\"scroll\" direction=\"left\">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}\n </marquee>\n </div>\n <div class=\"clear\"></div>\n </div>\n</mat-card>\n\n<mat-accordion class=\"ngx-audio-player\" *ngIf=\"displayPlaylist && tracks.length > 1\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]=\"dataSource\" class=\"mat-elevation-z6\" mat-table>\n <ng-container matColumnDef=\"title\">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"artist\">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.artist ? element?.artist : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"duration\">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"status\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n <div *ngIf=\"tracks[currentIndex]?.title === element.title\">\n <!-- <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>\n </mat-icon> -->\n <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\" class=\"currently-playing\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z\" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-select-content\" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>",
styles: ["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.mat-expansion-panel,::ng-deep .ngx-audio-player{min-width:375px}::ng-deep .mat-paginator-container{justify-content:space-between!important}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:768px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]
},] }

@@ -319,2 +344,3 @@ ];

displayVolumeControls: [{ type: Input }],
displayRepeatControls: [{ type: Input }],
pageSizeOptions: [{ type: Input }],

@@ -321,0 +347,0 @@ expanded: [{ type: Input }],

@@ -10,2 +10,3 @@ import { OnInit, ElementRef, OnChanges, SimpleChanges } from '@angular/core';

audioPlayerService: AudioPlayerService;
repeat: string;
constructor(elem: ElementRef);

@@ -22,2 +23,3 @@ set playlist(playlist: Track[]);

displayVolumeControls: boolean;
displayRepeatControls: boolean;
pageSizeOptions: number[];

@@ -51,2 +53,3 @@ expanded: boolean;

toggleVolume(): void;
toggleRepeat(): void;
private setVolume;

@@ -53,0 +56,0 @@ ngOnInit(): void;

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"AudioPlayerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"mat-advanced-audio-player,ngx-audio-player","template":"<mat-card class=\"ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2\"\n style=\"margin: 0px;\">\n\n <audio #audioPlayer [src]=\"tracks[currentIndex]?.link\"></audio>\n\n <button *ngIf=\"tracks.length > 1\" (click)='previousSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1\" mat-button>\n <mat-icon aria-hidden=\"true\">\n <!-- Skip previous icon (skip_previous) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6h2v12H6zm3.5 6l8.5 6V6z\" />\n <path d=\"M0 0h32v32H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button (click)='playBtnHandler();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 play-pause\" mat-button>\n\n <svg *ngIf=\"loaderDisplay\" height=\"34px\" preserveAspectRatio=\"xMidYMid\"\n style=\"margin: auto; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"34px\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"rotate(0 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.9166666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(30 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.8333333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(60 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.75s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(90 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.6666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(120 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5833333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(150 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(180 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.4166666666666667s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(210 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.3333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(240 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.25s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(270 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.16666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(300 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.08333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(330 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"0s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf=\"!loaderDisplay && !isPlaying\" aria-hidden=\"true\" class=\"play-track\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 5v14l11-7z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"!loaderDisplay && isPlaying\" aria-hidden=\"true\" class=\"pause-track\">\n <!-- Pause icon (pause) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf=\"tracks.length > 1\" (click)='nextSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 skip-next\"\n mat-button>\n <mat-icon aria-hidden=\"true\" class=\"next-track\">\n <!-- Skip next icon (skip_next) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n\n <div class=\"ngx-col\">\n <div class=\"ngx-d-flex ngx-flex-fill ngx-justify-content-center\">\n <div class=\"ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1\" style=\"font-size: 12px\">\n <span *ngIf=\"duration !== 0.01\">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]=\"disablePositionSlider\" (change)=\"currTimePosChanged($event)\" [min]=\"startOffset\"\n class=\"ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1\" max=\"{{duration-endOffset}}\" style=\"width: 100%\"\n value=\"{{currentTime}}\"></mat-slider>\n <div class=\"ngx-py-3 ngx-px-1\" style=\"font-size: 12px; text-align: right\">\n <span *ngIf=\"duration !== 0.01\">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)='toggleVolume();' *ngIf=\"displayVolumeControls\" class=\"ngx-p-1 volume\" mat-button>\n <mat-icon *ngIf=\"volume === 0\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Volume mute icon (volume_off) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"volume > 0\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Volume up icon (volume_up) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf=\"displayTitle\" class=\"mat-elevation-z1\">\n <div style=\"text-align: center;\">\n <div style=\"margin: 1px 2px; padding: 1em\">\n <span\n *ngIf=\"!isPlaying\">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}</span>\n <marquee *ngIf=\"isPlaying\" behavior=\"scroll\" direction=\"left\">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}\n </marquee>\n </div>\n <div class=\"clear\"></div>\n </div>\n</mat-card>\n\n<mat-accordion *ngIf=\"displayPlaylist && tracks.length > 1\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]=\"dataSource\" class=\"mat-elevation-z6\" mat-table>\n <ng-container matColumnDef=\"title\">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"artist\">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.artist ? element?.artist : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"duration\">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"status\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n <div *ngIf=\"tracks[currentIndex]?.title === element.title\">\n <!-- <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>\n </mat-icon> -->\n <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\" class=\"currently-playing\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z\" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-select-content\" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>","styles":["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.ngx-advanced-audio-player{min-width:325px}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:720px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":17,"character":22}]}],"playlist":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":5}}]}],"matPaginator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":29,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginator","line":29,"character":15},{"static":false}]}]}],"displayTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":5}}]}],"displayPlaylist":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":5}}]}],"displayVolumeControls":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":5}}]}],"pageSizeOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":5}}]}],"expanded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":5}}]}],"autoPlay":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":5}}]}],"disablePositionSlider":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":5}}]}],"displayArtist":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":5}}]}],"displayDuration":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":5}}]}],"tableHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":5}}]}],"titleHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":5}}]}],"artistHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":5}}]}],"durationHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":5}}]}],"trackEnded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":60,"character":5}}]}],"player":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":63,"character":5},"arguments":["audioPlayer",{"static":true}]}]}],"startOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":5}}]}],"endOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":5}}]}],"currTimePosChanged":[{"__symbolic":"method"}],"bindPlayerEvent":[{"__symbolic":"method"}],"playBtnHandler":[{"__symbolic":"method"}],"play":[{"__symbolic":"method"}],"toggleVolume":[{"__symbolic":"method"}],"setVolume":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"buildDisplayedColumns":[{"__symbolic":"method"}],"initialize":[{"__symbolic":"method"}],"setDataSourceAttributes":[{"__symbolic":"method"}],"nextSong":[{"__symbolic":"method"}],"previousSong":[{"__symbolic":"method"}],"resetSong":[{"__symbolic":"method"}],"selectTrack":[{"__symbolic":"method"}],"checkIfSongHasStartedSinceAtleastTwoSeconds":[{"__symbolic":"method"}],"updateCurrentTrack":[{"__symbolic":"method"}]}},"NgxAudioPlayerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"AudioPlayerComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":19,"character":26},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":19,"character":39},{"__symbolic":"reference","module":"@angular/material/card","name":"MatCardModule","line":19,"character":56},{"__symbolic":"reference","module":"@angular/material/table","name":"MatTableModule","line":19,"character":71},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":19,"character":87},{"__symbolic":"reference","module":"@angular/material/slider","name":"MatSliderModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/expansion","name":"MatExpansionModule","line":20,"character":21},{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginatorModule","line":20,"character":41},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":20,"character":61}],"exports":[{"__symbolic":"reference","name":"AudioPlayerComponent"}]}]}],"members":{}},"Track":{"__symbolic":"class","members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":5,"character":1},"arguments":[{"name":"secondsToMinutes"}]}],"members":{"transform":[{"__symbolic":"method"}]}}},"origins":{"AudioPlayerComponent":"./lib/component/ngx-audio-player/ngx-audio-player.component","NgxAudioPlayerModule":"./lib/ngx-audio-player.module","Track":"./lib/model/track.model","ɵa":"./lib/pipe/seconds-to-minutes"},"importAs":"ngx-audio-player"}
{"__symbolic":"module","version":4,"metadata":{"AudioPlayerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"mat-advanced-audio-player,ngx-audio-player","template":"<mat-card class=\"ngx-d-flex ngx-justify-content-center ngx-audio-player z-depth-1 mat-elevation-z2\"\n style=\"margin: 0px;\">\n\n <audio #audioPlayer [src]=\"tracks[currentIndex]?.link\"></audio>\n\n <button *ngIf=\"tracks.length > 1\" (click)='previousSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1\" mat-button>\n <mat-icon aria-hidden=\"true\">\n <!-- Skip previous icon (skip_previous) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6h2v12H6zm3.5 6l8.5 6V6z\" />\n <path d=\"M0 0h32v32H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button (click)='playBtnHandler();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 play-pause\" mat-button>\n\n <svg *ngIf=\"loaderDisplay\" height=\"34px\" preserveAspectRatio=\"xMidYMid\"\n style=\"margin: auto; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"34px\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"rotate(0 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.9166666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(30 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.8333333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(60 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.75s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(90 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.6666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(120 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5833333333333334s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(150 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.5s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(180 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.4166666666666667s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(210 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.3333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(240 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.25s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(270 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.16666666666666666s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(300 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"-0.08333333333333333s\" dur=\"1s\" keyTimes=\"0;1\"\n repeatCount=\"indefinite\" values=\"1;0\" />\n </rect>\n </g>\n <g transform=\"rotate(330 50 50)\">\n <rect fill=\"#7a7a7a\" height=\"12\" rx=\"3\" ry=\"6\" width=\"6\" x=\"47\" y=\"20\">\n <animate attributeName=\"opacity\" begin=\"0s\" dur=\"1s\" keyTimes=\"0;1\" repeatCount=\"indefinite\"\n values=\"1;0\" />\n </rect>\n </g>\n </svg>\n\n <mat-icon *ngIf=\"!loaderDisplay && !isPlaying\" aria-hidden=\"true\" class=\"play-track\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 5v14l11-7z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"!loaderDisplay && isPlaying\" aria-hidden=\"true\" class=\"pause-track\">\n <!-- Pause icon (pause) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n <button *ngIf=\"tracks.length > 1\" (click)='nextSong();' [disabled]=\"loaderDisplay\" class=\"ngx-p-1 skip-next\"\n mat-button>\n <mat-icon aria-hidden=\"true\" class=\"next-track\">\n <!-- Skip next icon (skip_next) -->\n <svg height=\"32\" viewBox=\"0 0 24 24\" width=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n\n <div class=\"ngx-col\">\n <div class=\"ngx-d-flex ngx-flex-fill ngx-justify-content-center\">\n <div class=\"ngx-d-none ngx-d-sm-block ngx-py-3 ngx-px-1\" style=\"font-size: 12px\">\n <span *ngIf=\"duration !== 0.01\">\n {{currentTime | secondsToMinutes}}\n </span>\n </div>\n <mat-slider [disabled]=\"disablePositionSlider\" (change)=\"currTimePosChanged($event)\" [min]=\"startOffset\"\n class=\"ngx-d-none ngx-d-sm-block ngx-flex-fill ngx-p-1\" max=\"{{duration-endOffset}}\" style=\"width: 100%\"\n value=\"{{currentTime}}\"></mat-slider>\n\n <div class=\"ngx-py-3 ngx-px-1\" style=\"font-size: 12px; text-align: right\">\n <span *ngIf=\"duration !== 0.01\">\n -{{duration-currentTime | secondsToMinutes }}\n </span>\n </div>\n </div>\n </div>\n <button (click)='toggleRepeat();' *ngIf=\"displayRepeatControls\" class=\"ngx-p-1 volume justify-content-center\"\n mat-button>\n <mat-icon *ngIf=\"repeat === 'none'\" aria-hidden=\"true\" class=\"volume-mute justify-content-center\">\n <!-- Repeat None -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <g>\n <path d=\"m0,0l24,0l0,24l-24,0l0,-24z\" fill=\"none\" />\n <path\n d=\"m8,20l0,1.932a0.5,0.5 0 0 1 -0.82,0.385l-4.12,-3.433a0.5,0.5 0 0 1 0.322,-0.884l14.618,0a2,2 0 0 0 2,-2l0,-8l2,0l0,8a4,4 0 0 1 -4,4l-10,0zm8,-16l0,-1.932a0.5,0.5 0 0 1 0.82,-0.385l4.12,3.433a0.5,0.5 0 0 1 -0.321,0.884l-14.619,0a2,2 0 0 0 -2,2l0,8l-2,0l0,-8a4,4 0 0 1 4,-4l10,0z\" />\n <path d=\"M 3 0 L 22.4164 22.2706 L 21 24 L 1.5836 1.8128 L 3 0\"></path>\n </g>\n <!-- <line xmlns=\"http://www.w3.org/2000/svg\" id=\"svg_4\" y2=\"22.27056\" x2=\"22.41638\" y1=\"1.81276\" x1=\"1.58362\" stroke-width=\"2\" fill=\"none\"/> -->\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"repeat === 'all'\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Repeat All -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10z\" />\n </g>\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"repeat === 'one'\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Repeat ONE -->\n <svg height=\"24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\">\n <g>\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10zm-5 4h2v8h-2v-6H9V9l2-1z\" />\n </g>\n </svg>\n </mat-icon>\n </button>\n <button (click)='toggleVolume();' *ngIf=\"displayVolumeControls\" class=\"ngx-p-1 volume\" mat-button>\n <mat-icon *ngIf=\"volume === 0\" aria-hidden=\"true\" class=\"volume-mute\">\n <!-- Volume mute icon (volume_off) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n <mat-icon *ngIf=\"volume > 0\" aria-hidden=\"true\" class=\"volume-up\">\n <!-- Volume up icon (volume_up) -->\n <svg height=\"28\" viewBox=\"0 0 24 24\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n </mat-icon>\n </button>\n</mat-card>\n\n<mat-card *ngIf=\"displayTitle\" class=\"mat-elevation-z1 ngx-audio-player\">\n <div style=\"text-align: center;\">\n <div style=\"margin: 1px 2px; padding: 1em\">\n <span *ngIf=\"!isPlaying\">{{ tracks[currentIndex]?.title }}{{ displayArtist && tracks[currentIndex]?.artist ?\n ' | ' + tracks[currentIndex]?.artist : ''}}</span>\n <marquee *ngIf=\"isPlaying\" behavior=\"scroll\" direction=\"left\">{{ tracks[currentIndex]?.title\n }}{{ displayArtist && tracks[currentIndex]?.artist ? ' | ' + tracks[currentIndex]?.artist : ''}}\n </marquee>\n </div>\n <div class=\"clear\"></div>\n </div>\n</mat-card>\n\n<mat-accordion class=\"ngx-audio-player\" *ngIf=\"displayPlaylist && tracks.length > 1\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n {{tableHeader}}\n </mat-expansion-panel-header>\n <table [dataSource]=\"dataSource\" class=\"mat-elevation-z6\" mat-table>\n <ng-container matColumnDef=\"title\">\n <th *matHeaderCellDef mat-header-cell>{{titleHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element.title}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"artist\">\n <th *matHeaderCellDef mat-header-cell>{{artistHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.artist ? element?.artist : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"duration\">\n <th *matHeaderCellDef mat-header-cell>{{durationHeader}}</th>\n <td (click)=\"selectTrack(element.index)\" *matCellDef=\"let element\" mat-cell>\n {{element?.duration ? (element?.duration | secondsToMinutes) : ''}}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"status\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n <div *ngIf=\"tracks[currentIndex]?.title === element.title\">\n <!-- <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>\n </mat-icon> -->\n <mat-icon *ngIf=\"isPlaying\" aria-hidden=\"true\" class=\"currently-playing\">\n <!-- Play icon (play_arrow) -->\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z\" />\n </svg>\n </mat-icon>\n </div>\n </td>\n </ng-container>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"mat-select-content\" mat-row></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons></mat-paginator>\n </mat-expansion-panel>\n</mat-accordion>","styles":["mat-card,mat-slider{padding:0!important}button:focus,button:hover{outline:0!important}svg{vertical-align:top}.mat-icon{height:32px!important;width:32px!important}mat-icon>.currently-playing{height:16px!important;width:16px!important}table{width:100%}.mat-expansion-panel,::ng-deep .ngx-audio-player{min-width:375px}::ng-deep .mat-paginator-container{justify-content:space-between!important}.material-icons{font-size:16px!important}.play-pause{border-right:1px solid rgba(0,0,0,.1)}.play-pause,.volume{border-left:1px solid rgba(0,0,0,.1)}.skip-next{border-right:1px solid rgba(0,0,0,.1)}*,:after,:before{box-sizing:inherit}.ngx-p-1{padding:.25rem!important}.ngx-col,.ngx-col-1,.ngx-col-2,.ngx-col-3,.ngx-col-4,.ngx-col-5,.ngx-col-6,.ngx-col-7,.ngx-col-8,.ngx-col-9,.ngx-col-10,.ngx-col-11,.ngx-col-12,.ngx-col-auto,.ngx-col-lg,.ngx-col-lg-1,.ngx-col-lg-2,.ngx-col-lg-3,.ngx-col-lg-4,.ngx-col-lg-5,.ngx-col-lg-6,.ngx-col-lg-7,.ngx-col-lg-8,.ngx-col-lg-9,.ngx-col-lg-10,.ngx-col-lg-11,.ngx-col-lg-12,.ngx-col-lg-auto,.ngx-col-md,.ngx-col-md-1,.ngx-col-md-2,.ngx-col-md-3,.ngx-col-md-4,.ngx-col-md-5,.ngx-col-md-6,.ngx-col-md-7,.ngx-col-md-8,.ngx-col-md-9,.ngx-col-md-10,.ngx-col-md-11,.ngx-col-md-12,.ngx-col-md-auto,.ngx-col-sm,.ngx-col-sm-1,.ngx-col-sm-2,.ngx-col-sm-3,.ngx-col-sm-4,.ngx-col-sm-5,.ngx-col-sm-6,.ngx-col-sm-7,.ngx-col-sm-8,.ngx-col-sm-9,.ngx-col-sm-10,.ngx-col-sm-11,.ngx-col-sm-12,.ngx-col-sm-auto,.ngx-col-xl,.ngx-col-xl-1,.ngx-col-xl-2,.ngx-col-xl-3,.ngx-col-xl-4,.ngx-col-xl-5,.ngx-col-xl-6,.ngx-col-xl-7,.ngx-col-xl-8,.ngx-col-xl-9,.ngx-col-xl-10,.ngx-col-xl-11,.ngx-col-xl-12,.ngx-col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.ngx-col{flex-basis:0;flex-grow:1;max-width:100%}.ngx-justify-content-center{justify-content:center!important}.ngx-flex-fill{flex:1 1 auto!important}.ngx-d-flex{display:flex!important}.ngx-pb-3,.ngx-py-3{padding-bottom:1rem!important}.ngx-pt-3,.ngx-py-3{padding-top:1rem!important}.ngx-pl-1,.ngx-px-1{padding-left:.25rem!important}.ngx-pr-1,.ngx-px-1{padding-right:.25rem!important}@media (max-width:768px){.ngx-sm-block{display:block!important}.ngx-d-none{display:none!important}}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":18,"character":22}]}],"playlist":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":5}}]}],"matPaginator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":30,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginator","line":30,"character":15},{"static":false}]}]}],"displayTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":5}}]}],"displayPlaylist":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":5}}]}],"displayVolumeControls":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":5}}]}],"displayRepeatControls":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":5}}]}],"pageSizeOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":5}}]}],"expanded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":5}}]}],"autoPlay":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":5}}]}],"disablePositionSlider":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":5}}]}],"displayArtist":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":5}}]}],"displayDuration":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":5}}]}],"tableHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":5}}]}],"titleHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":5}}]}],"artistHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":5}}]}],"durationHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":5}}]}],"trackEnded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":64,"character":5}}]}],"player":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":67,"character":5},"arguments":["audioPlayer",{"static":true}]}]}],"startOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":5}}]}],"endOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":5}}]}],"currTimePosChanged":[{"__symbolic":"method"}],"bindPlayerEvent":[{"__symbolic":"method"}],"playBtnHandler":[{"__symbolic":"method"}],"play":[{"__symbolic":"method"}],"toggleVolume":[{"__symbolic":"method"}],"toggleRepeat":[{"__symbolic":"method"}],"setVolume":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"buildDisplayedColumns":[{"__symbolic":"method"}],"initialize":[{"__symbolic":"method"}],"setDataSourceAttributes":[{"__symbolic":"method"}],"nextSong":[{"__symbolic":"method"}],"previousSong":[{"__symbolic":"method"}],"resetSong":[{"__symbolic":"method"}],"selectTrack":[{"__symbolic":"method"}],"checkIfSongHasStartedSinceAtleastTwoSeconds":[{"__symbolic":"method"}],"updateCurrentTrack":[{"__symbolic":"method"}]}},"NgxAudioPlayerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"AudioPlayerComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":19,"character":26},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":19,"character":39},{"__symbolic":"reference","module":"@angular/material/card","name":"MatCardModule","line":19,"character":56},{"__symbolic":"reference","module":"@angular/material/table","name":"MatTableModule","line":19,"character":71},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":19,"character":87},{"__symbolic":"reference","module":"@angular/material/slider","name":"MatSliderModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/expansion","name":"MatExpansionModule","line":20,"character":21},{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginatorModule","line":20,"character":41},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":20,"character":61}],"exports":[{"__symbolic":"reference","name":"AudioPlayerComponent"}]}]}],"members":{}},"Track":{"__symbolic":"class","members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":5,"character":1},"arguments":[{"name":"secondsToMinutes"}]}],"members":{"transform":[{"__symbolic":"method"}]}}},"origins":{"AudioPlayerComponent":"./lib/component/ngx-audio-player/ngx-audio-player.component","NgxAudioPlayerModule":"./lib/ngx-audio-player.module","Track":"./lib/model/track.model","ɵa":"./lib/pipe/seconds-to-minutes"},"importAs":"ngx-audio-player"}
{
"name": "ngx-audio-player",
"version": "10.1.3",
"version": "10.1.4",
"repository": {

@@ -5,0 +5,0 @@ "type": "git",

@@ -5,5 +5,4 @@

[![Travis-CI](https://travis-ci.com/vmudigal/ngx-audio-player.svg?branch=master)](https://travis-ci.com/vmudigal/ngx-audio-player.svg?branch=master) [![npm](https://img.shields.io/badge/demo-online-ed1c46.svg?colorB=orange)](https://vmudigal.github.io/ngx-audio-player/) [![npm version](https://img.shields.io/npm/v/ngx-audio-player.svg?colorB=red)](https://www.npmjs.com/package/ngx-audio-player) [![Downloads](https://img.shields.io/npm/dm/ngx-audio-player.svg?colorB=48C9B0)](https://www.npmjs.com/package/ngx-audio-player) [![licence](https://img.shields.io/npm/l/ngx-audio-player.svg?colorB=yellow)](https://www.npmjs.com/package/ngx-audio-player) [![Support](https://img.shields.io/badge/support-Angular%207%2B-blue.svg)](https://www.npmjs.com/package/ngx-audio-player/v/7.2.0) [![Support](https://img.shields.io/badge/support-Angular%208+-brown.svg)](https://www.npmjs.com/package/ngx-audio-player/v/8.1.4) [![Support](https://img.shields.io/badge/support-Angular%209+-black.svg)](https://www.npmjs.com/package/ngx-audio-player/v/9.2.3) [![Support](https://img.shields.io/badge/support-Angular%2010+-teal.svg)](https://www.npmjs.com/package/ngx-audio-player/v/10.1.4) [![Support](https://img.shields.io/badge/support-Angular%2011+-grey.svg)](https://www.npmjs.com/package/ngx-audio-player/v/11.0.3)
[![Travis-CI](https://travis-ci.com/vmudigal/ngx-audio-player.svg?branch=master)](https://travis-ci.com/vmudigal/ngx-audio-player.svg?branch=master) [![npm](https://img.shields.io/badge/demo-online-ed1c46.svg?colorB=orange)](https://vmudigal.github.io/ngx-audio-player/) [![npm version](https://img.shields.io/npm/v/ngx-audio-player.svg?colorB=red)](https://www.npmjs.com/package/ngx-audio-player) [![Downloads](https://img.shields.io/npm/dm/ngx-audio-player.svg?colorB=48C9B0)](https://www.npmjs.com/package/ngx-audio-player) [![licence](https://img.shields.io/npm/l/ngx-audio-player.svg?colorB=yellow)](https://www.npmjs.com/package/ngx-audio-player) [![Support](https://img.shields.io/badge/support-Angular%207%2B-blue.svg)](https://www.npmjs.com/package/ngx-audio-player/v/7.2.0) [![Support](https://img.shields.io/badge/support-Angular%208+-brown.svg)](https://www.npmjs.com/package/ngx-audio-player/v/8.1.3) [![Support](https://img.shields.io/badge/support-Angular%209+-black.svg)](https://www.npmjs.com/package/ngx-audio-player/v/9.2.2) [![Support](https://img.shields.io/badge/support-Angular%2010+-teal.svg)](https://www.npmjs.com/package/ngx-audio-player/v/10.1.3) [![Support](https://img.shields.io/badge/support-Angular%2011+-grey.svg)](https://www.npmjs.com/package/ngx-audio-player/v/11.0.2)
## Table of contents

@@ -74,5 +73,5 @@

muted="muted" [displayPlaylist]="msaapDisplayPlayList" [pageSizeOptions]="pageSizeOptions" (trackEnded)="onEnded($event)"
[displayVolumeControls]="msaapDisplayVolumeControls" [disablePositionSlider]="msaapDisablePositionSlider"
[displayArtist]="msaapDisplayArtist" [displayDuration]="msaapDisplayDuration"
[expanded]="true"></ngx-audio-player>
[displayVolumeControls]="msaapDisplayVolumeControls" [displayRepeatControls]="msaapDisplayRepeatControls"
[disablePositionSlider]="msaapDisablePositionSlider" [displayArtist]="msaapDisplayArtist"
[displayDuration]="msaapDisplayDuration" [expanded]="true"></ngx-audio-player>
```

@@ -92,2 +91,3 @@

msaapDisplayVolumeControls = true;
msaapDisplayRepeatControls = true;
msaapDisplayArtist = false;

@@ -131,2 +131,3 @@ msaapDisplayDuration = false;

| @Input() displayVolumeControls = true; | false - if the volume controls needs to be hidden | optional | true |
| @Input() displayRepeatControls = true; | false - if the repeat controls needs to be hidden | optional | true |
| @Input() displayArtist = false; | true - if the artist data is to be shown | optional | false |

@@ -133,0 +134,0 @@ | @Input() displayDuration = false; | true - if the track duration is to be shown | optional | false |

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc