{"version":3,"file":"ng-tactful-lib.mjs","sources":["../../../projects/ng-tactful-lib/src/lib/ng-tactful-lib.service.ts","../../../projects/ng-tactful-lib/src/lib/ng-tactful-lib.component.ts","../../../projects/ng-tactful-lib/src/lib/second-letter-capital.pipe.ts","../../../projects/ng-tactful-lib/src/lib/ng-tactful-video-tag/video-js-marker-plugin.ts","../../../projects/ng-tactful-lib/src/lib/ng-tactful-video-tag/ng-tactful-video-tag.component.ts","../../../projects/ng-tactful-lib/src/lib/ng-tactful-video-tag/ng-tactful-video-tag.component.html","../../../projects/ng-tactful-lib/src/lib/ng-tactful-lib.module.ts","../../../projects/ng-tactful-lib/src/public-api.ts","../../../projects/ng-tactful-lib/src/ng-tactful-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgTactfulLibService {\n\n  constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'lib-ng-tactful-lib',\n  template: `\n    <p>\n      Welcome Component in ng-tactful-lib\n    </p>\n  `,\n  styles: []\n})\nexport class NgTactfulLibComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'secondLetterCapital'\n})\nexport class SecondLetterCapitalPipe implements PipeTransform {\n\n  transform(value: string, args?: any): any {\n    if (!value) {\n      return value;\n    }\n    return value.replace(/\\w\\S*/g, str => str.charAt(0) + str.charAt(1).toUpperCase() + str.substr(2).toLowerCase());\n  }\n\n\n}\n","import videojs, { VideoJsPlayer } from 'video.js';\r\n\r\nconst Plugin = videojs.getPlugin('plugin');\r\n\r\n// default setting\r\nconst defaultSetting: VideoJsMarkerPluginSettings = {\r\n  markerStyle: {\r\n    width: '7px',\r\n    'border-radius': '30%',\r\n    'background-color': 'red'\r\n  },\r\n  markerTip: {\r\n    display: true,\r\n    text(marker) {\r\n      return 'Break : ' + marker.text;\r\n    },\r\n    time(marker) {\r\n      return marker.time;\r\n    },\r\n    html(marker){\r\n      return  marker.html;\r\n    }\r\n  },\r\n  breakOverlay: {\r\n    display: false,\r\n    displayTime: 3,\r\n    text(marker) {\r\n      return 'Break overlay: ' + marker.overlayText;\r\n    },\r\n    style: {\r\n      width: '100%',\r\n      height: '20%',\r\n      'background-color': 'rgba(0,0,0,0.7)',\r\n      color: 'white',\r\n      'font-size': '17px'\r\n    }\r\n  },\r\n  onMarkerClick(marker) {},\r\n  onMarkerReached(marker, index) {},\r\n  markers: []\r\n};\r\n\r\n// create a non-colliding random number\r\nfunction generateUUID(): string {\r\n  let d = new Date().getTime();\r\n  const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n    // tslint:disable-next-line:no-bitwise\r\n    const r = (d + Math.random() * 16) % 16 | 0;\r\n    d = Math.floor(d / 16);\r\n    // tslint:disable-next-line:no-bitwise\r\n    return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n  });\r\n  return uuid;\r\n}\r\n\r\nfunction getElementBounding(\r\n  element: HTMLElement\r\n): {\r\n  top: number;\r\n  bottom: number;\r\n  left: number;\r\n  right: number;\r\n  width: number;\r\n  height: number;\r\n} {\r\n  let elementBounding;\r\n  const defaultBoundingRect = {\r\n    top: 0,\r\n    bottom: 0,\r\n    left: 0,\r\n    width: 0,\r\n    height: 0,\r\n    right: 0\r\n  };\r\n\r\n  try {\r\n    elementBounding = element.getBoundingClientRect();\r\n  } catch (e) {\r\n    elementBounding = defaultBoundingRect;\r\n  }\r\n\r\n  return elementBounding;\r\n}\r\n\r\nconst NULL_INDEX = -1;\r\n\r\nexport class VideoJsMarkerPlugin extends Plugin {\r\n  private setting: VideoJsMarkerPluginSettings;\r\n  private markersMap: { [key: string]: VideoJsMarker } = {};\r\n  private markersList: Array<VideoJsMarker> = [];\r\n  private breakOverlay: HTMLElement = null;\r\n  private markerTip: HTMLElement = null;\r\n  private currentMarkerIndex = NULL_INDEX;\r\n  private overlayIndex = NULL_INDEX;\r\n\r\n  constructor(player: VideoJsPlayer, options?: VideoJsMarkerPluginSettings) {\r\n    super(player);\r\n    if (options) {\r\n      this.setting = videojs.mergeOptions(defaultSetting, options);\r\n    }\r\n    this.player.on('loadedmetadata', () => {\r\n      this.initialize();\r\n    });\r\n  }\r\n  initialize(): void {\r\n    if (this.setting.markerTip.display) {\r\n      this.initializeMarkerTip();\r\n    }\r\n\r\n    // remove existing markers if already initialized\r\n    this.removeAll();\r\n    this.addMarkers(this.setting.markers);\r\n\r\n    if (this.setting.breakOverlay.display) {\r\n      this.initializeOverlay();\r\n    }\r\n\r\n    const startOfGameMarkers: VideoJsMarker[] = this.setting.markers.filter(marker => marker.text === 'start' && !marker.disabled);\r\n\r\n    if (startOfGameMarkers.length) {\r\n      this.player.currentTime(startOfGameMarkers[0].time);\r\n    }\r\n\r\n    this.onTimeUpdate();\r\n    this.player.on('timeupdate', () => this.onTimeUpdate());\r\n    this.player.off('loadedmetadata');\r\n  }\r\n  getMarkers(): Array<VideoJsMarker> {\r\n    return this.markersList;\r\n  }\r\n  onTimeUpdate(): void {\r\n    this.onUpdateMarker();\r\n    this.updateBreakOverlay();\r\n    if (this.setting.onTimeUpdateAfterMarkerUpdate) {\r\n      this.setting.onTimeUpdateAfterMarkerUpdate();\r\n    }\r\n  }\r\n  onUpdateMarker() {\r\n    /*\r\n      check marker reached in between markers\r\n      the logic here is that it triggers a new marker reached event only if the player\r\n      enters a new marker range (e.g. from marker 1 to marker 2).\r\n        Thus, if player is on marker 1 and user clicked on marker 1 again, no new reached event is triggered)\r\n    */\r\n    if (!this.markersList.length) {\r\n      return;\r\n    }\r\n\r\n    this.updateMarkers(true);\r\n\r\n    const getNextMarkerTime: (index: number) => number = (index: number) => {\r\n      if (index < this.markersList.length - 1) {\r\n        return this.setting.markerTip.time(this.markersList[index + 1]);\r\n      }\r\n      // next marker time of last marker would be end of video time\r\n      return this.player.duration();\r\n    };\r\n    const currentTime = this.player.currentTime();\r\n    let newMarkerIndex = NULL_INDEX;\r\n\r\n    if (this.currentMarkerIndex !== NULL_INDEX) {\r\n      // check if staying at same marker\r\n      const nextMarkerTime = getNextMarkerTime(this.currentMarkerIndex);\r\n      if (\r\n        currentTime >=\r\n          this.setting.markerTip.time(\r\n            this.markersList[this.currentMarkerIndex]\r\n          ) &&\r\n        currentTime < nextMarkerTime\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      // check for ending (at the end current time equals player duration)\r\n      if (\r\n        this.currentMarkerIndex === this.markersList.length - 1 &&\r\n        currentTime === this.player.duration()\r\n      ) {\r\n        return;\r\n      }\r\n    }\r\n\r\n    // check first marker, no marker is selected\r\n    if (currentTime < this.setting.markerTip.time(this.markersList[0])) {\r\n      newMarkerIndex = NULL_INDEX;\r\n    } else {\r\n      // look for new index\r\n      let nextMarkerTime;\r\n      for (let i = 0; i < this.markersList.length; i++) {\r\n        nextMarkerTime = getNextMarkerTime(i);\r\n        if (\r\n          currentTime >= this.setting.markerTip.time(this.markersList[i]) &&\r\n          currentTime < nextMarkerTime\r\n        ) {\r\n          newMarkerIndex = i;\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    // set new marker index\r\n    if (newMarkerIndex !== this.currentMarkerIndex) {\r\n      // trigger event if index is not null\r\n      if (newMarkerIndex !== NULL_INDEX && this.setting.onMarkerReached) {\r\n        this.setting.onMarkerReached(\r\n          this.markersList[newMarkerIndex],\r\n          newMarkerIndex\r\n        );\r\n      }\r\n      this.currentMarkerIndex = newMarkerIndex;\r\n    }\r\n  }\r\n  initializeOverlay(): void {\r\n    this.breakOverlay = videojs.dom.createEl('div', {\r\n      className: 'vjs-break-overlay',\r\n      innerHTML: `<div class='vjs-break-overlay-text'></div>`\r\n    }) as HTMLElement;\r\n    Object.keys(this.setting.breakOverlay.style).forEach(key => {\r\n      if (this.breakOverlay) {\r\n        (this.breakOverlay.style as any)[key] = (this.setting.breakOverlay\r\n          .style as any)[key];\r\n      }\r\n    });\r\n    this.player.el().appendChild(this.breakOverlay);\r\n    this.overlayIndex = NULL_INDEX;\r\n  }\r\n  updateBreakOverlay(): void {\r\n    if (!this.setting.breakOverlay.display || this.currentMarkerIndex < 0) {\r\n      return;\r\n    }\r\n\r\n    const currentTime = this.player.currentTime();\r\n    const marker = this.markersList[this.currentMarkerIndex];\r\n    const markerTime = this.setting.markerTip.time(marker);\r\n\r\n    if (\r\n      currentTime >= markerTime &&\r\n      currentTime <= markerTime + this.setting.breakOverlay.displayTime\r\n    ) {\r\n      if (this.overlayIndex !== this.currentMarkerIndex) {\r\n        this.overlayIndex = this.currentMarkerIndex;\r\n        if (this.breakOverlay) {\r\n          this.breakOverlay.querySelector(\r\n            '.vjs-break-overlay-text'\r\n          ).innerHTML = this.setting.breakOverlay.text(marker);\r\n        }\r\n      }\r\n\r\n      if (this.breakOverlay) {\r\n        this.breakOverlay.style.visibility = 'visible';\r\n      }\r\n    } else {\r\n      this.overlayIndex = NULL_INDEX;\r\n      if (this.breakOverlay) {\r\n        this.breakOverlay.style.visibility = 'hidden';\r\n      }\r\n    }\r\n  }\r\n  setMarkderDivStyle(marker: VideoJsMarker, markerDiv: HTMLElement): void {\r\n    markerDiv.className = `vjs-marker ${marker.class || ''}`;\r\n\r\n    Object.keys(this.setting.markerStyle).forEach(key => {\r\n      (markerDiv.style as any)[key] = (this.setting.markerStyle as any)[key];\r\n    });\r\n\r\n    // hide out-of-bound markers\r\n    const ratio = marker.time / this.player.duration();\r\n    if (ratio < 0 || ratio > 1) {\r\n      markerDiv.style.display = 'none';\r\n    }\r\n\r\n    // set position\r\n    markerDiv.style.left = this.getPosition(marker) + '%';\r\n    if (marker.duration) {\r\n      markerDiv.style.width =\r\n        (marker.duration / this.player.duration()) * 100 + '%';\r\n      markerDiv.style.marginLeft = '0px';\r\n    } else {\r\n      const markerDivBounding = getElementBounding(markerDiv);\r\n      markerDiv.style.marginLeft = -markerDivBounding.width / 2 + 'px';\r\n    }\r\n  }\r\n  updateMarkers(force: boolean): void {\r\n    // update UI for markers whose time changed\r\n    this.markersList.forEach((marker: VideoJsMarker) => {\r\n      const markerDiv = this.player\r\n        .el()\r\n        .querySelector(\r\n          `.vjs-marker[data-marker-key='${marker.key}']`\r\n        ) as HTMLElement;\r\n      const markerTime = this.setting.markerTip.time(marker);\r\n\r\n      if (\r\n        force ||\r\n        parseFloat(markerDiv.getAttribute('data-marker-time')) !== markerTime\r\n      ) {\r\n        this.setMarkderDivStyle(marker, markerDiv);\r\n        markerDiv.setAttribute('data-marker-time', String(markerTime));\r\n      }\r\n    });\r\n    this.sortMarkersList();\r\n  }\r\n  registerMarkerTipHandler(markerDiv: HTMLElement): void {\r\n    markerDiv.addEventListener('mouseover', () => {\r\n      const marker = this.markersMap[markerDiv.getAttribute('data-marker-key')];\r\n      if (!!this.markerTip) {\r\n        if (this.setting.markerTip.html) {\r\n          this.markerTip.querySelector(\r\n            '.vjs-tip-inner'\r\n          ).innerHTML = this.setting.markerTip.html(marker);\r\n        } else {\r\n          (this.markerTip.querySelector(\r\n            '.vjs-tip-inner'\r\n          ) as HTMLElement).innerText = this.setting.markerTip.text(marker);\r\n        }\r\n        // margin-left needs to minus the padding length to align correctly with the marker\r\n        this.markerTip.style.left = this.getPosition(marker) + '%';\r\n        const markerTipBounding = getElementBounding(this.markerTip);\r\n        const markerDivBounding = getElementBounding(markerDiv);\r\n        this.markerTip.style.marginLeft =\r\n          -(markerTipBounding.width / 2) + markerDivBounding.width / 4 + 'px';\r\n        this.markerTip.style.visibility = 'visible';\r\n      }\r\n    });\r\n\r\n    markerDiv.addEventListener('mouseout', () => {\r\n      if (!!this.markerTip) {\r\n        this.markerTip.style.visibility = 'hidden';\r\n      }\r\n    });\r\n  }\r\n  removeMarkers(indexArray: Array<number>): void {\r\n    // reset overlay\r\n    if (!!this.breakOverlay) {\r\n      this.overlayIndex = NULL_INDEX;\r\n      this.breakOverlay.style.visibility = 'hidden';\r\n    }\r\n    this.currentMarkerIndex = NULL_INDEX;\r\n\r\n    const deleteIndexList: Array<number> = [];\r\n    indexArray.forEach((index: number) => {\r\n      const marker = this.markersList[index];\r\n      if (marker) {\r\n        // delete from memory\r\n        delete this.markersMap[marker.key];\r\n        deleteIndexList.push(index);\r\n\r\n        // delete from dom\r\n        const el = this.player\r\n          .el()\r\n          .querySelector(`.vjs-marker[data-marker-key='${marker.key}']`);\r\n        if (el) {\r\n          el.parentNode.removeChild(el);\r\n        }\r\n      }\r\n    });\r\n\r\n    // clean up markers array\r\n    deleteIndexList.reverse();\r\n    deleteIndexList.forEach((deleteIndex: number) => {\r\n      this.markersList.splice(deleteIndex, 1);\r\n    });\r\n\r\n    // sort again\r\n    this.sortMarkersList();\r\n  }\r\n  next(): void {\r\n    // go to the next marker from current timestamp\r\n    const currentTime = this.player.currentTime();\r\n    for (const marker of this.markersList) {\r\n      const markerTime = this.setting.markerTip.time(marker);\r\n      if (markerTime > currentTime) {\r\n        this.player.currentTime(markerTime);\r\n        break;\r\n      }\r\n    }\r\n  }\r\n  prev(): void {\r\n    // go to previous marker\r\n    const currentTime = this.player.currentTime();\r\n    for (let i = this.markersList.length - 1; i >= 0; i--) {\r\n      const markerTime = this.setting.markerTip.time(this.markersList[i]);\r\n      // add a threshold\r\n      if (markerTime + 0.5 < currentTime) {\r\n        this.player.currentTime(markerTime);\r\n        return;\r\n      }\r\n    }\r\n  }\r\n  add(newMarkers: Array<VideoJsMarker>): void {\r\n    // add new markers given an array of index\r\n    this.addMarkers(newMarkers);\r\n  }\r\n\r\n  addMarkers(newMarkers: Array<VideoJsMarker>): void {\r\n    newMarkers.forEach((marker: VideoJsMarker) => {\r\n      marker.key = generateUUID();\r\n\r\n      this.player\r\n        .el()\r\n        .querySelector('.vjs-progress-holder')\r\n        .appendChild(this.createMarkerDiv(marker));\r\n\r\n      // store marker in an internal hash map\r\n      this.markersMap[marker.key] = marker;\r\n      this.markersList.push(marker);\r\n    });\r\n\r\n    this.sortMarkersList();\r\n  }\r\n\r\n  sortMarkersList(): void {\r\n    // sort the list by time in asc order\r\n    this.markersList.sort((a, b) => {\r\n      return this.setting.markerTip.time(a) - this.setting.markerTip.time(b);\r\n    });\r\n  }\r\n\r\n  createMarkerDiv(marker: VideoJsMarker): HTMLElement {\r\n    const markerDiv = videojs.dom.createEl(\r\n      'div',\r\n      {},\r\n      {\r\n        'data-marker-key': marker.key,\r\n        'data-marker-time': this.setting.markerTip.time(marker)\r\n      }\r\n    ) as HTMLElement;\r\n\r\n    this.setMarkderDivStyle(marker, markerDiv);\r\n\r\n    // bind click event to seek to marker time\r\n    markerDiv.addEventListener('click', (e: Event) => {\r\n      let preventDefault = false;\r\n      if (typeof this.setting.onMarkerClick === 'function') {\r\n        // if return false, prevent default behavior\r\n        preventDefault = this.setting.onMarkerClick(marker) === false;\r\n      }\r\n\r\n      if (!preventDefault) {\r\n        const key = (e.target as HTMLElement).getAttribute('data-marker-key');\r\n        this.player.currentTime(\r\n          this.setting.markerTip.time(this.markersMap[key])\r\n        );\r\n      }\r\n    });\r\n\r\n    if (this.setting.markerTip.display) {\r\n      this.registerMarkerTipHandler(markerDiv);\r\n    }\r\n\r\n    return markerDiv;\r\n  }\r\n\r\n  getPosition(marker: VideoJsMarker): number {\r\n    const liveTracker = this.player[\"liveTracker\"];\r\n    const windowOrDuration = liveTracker.isLive()\r\n      ? liveTracker.liveWindow()\r\n      : this.player.duration();\r\n    return (this.setting.markerTip.time(marker) / windowOrDuration) * 100;\r\n  }\r\n  remove(indexArray: Array<number>): void {\r\n    // remove markers given an array of index\r\n    this.removeMarkers(indexArray);\r\n  }\r\n  removeAll(): void {\r\n    const indexArray = [];\r\n    for (let i = 0; i < this.markersList.length; i++) {\r\n      indexArray.push(i);\r\n    }\r\n    this.removeMarkers(indexArray);\r\n  }\r\n  // force - force all markers to be updated, regardless of if they have changed or not.\r\n  updateTime(force: boolean): void {\r\n    // notify the plugin to update the UI for changes in marker times\r\n    this.updateMarkers(force);\r\n  }\r\n  reset(newMarkers: Array<VideoJsMarker>): void {\r\n    // remove all the existing markers and add new ones\r\n    this.removeAll();\r\n    this.addMarkers(newMarkers);\r\n  }\r\n  destroy(): void {\r\n    // unregister the plugins and clean up even handlers\r\n    this.removeAll();\r\n    if (this.breakOverlay) {\r\n      this.breakOverlay.remove();\r\n    }\r\n    if (this.markerTip) {\r\n      this.markerTip.remove();\r\n    }\r\n    this.player.off('timeupdate', this.updateBreakOverlay);\r\n    delete this.player.markers;\r\n  }\r\n  initializeMarkerTip(): void {\r\n    this.markerTip = videojs.dom.createEl('div', {\r\n      className: 'vjs-tip',\r\n      innerHTML: `<div class='vjs-tip-arrow'></div><div class='vjs-tip-inner'></div>`\r\n    }) as HTMLElement;\r\n    this.player\r\n      .el()\r\n      .querySelector('.vjs-progress-holder')\r\n      .appendChild(this.markerTip);\r\n  }\r\n}\r\n\r\n//videojs.registerPlugin('markers', VideoJsMarkerPlugin);\r\n\r\ndeclare module 'video.js' {\r\n  export interface VideoJsPlayer {\r\n    markers: (options?: VideoJsMarkerPluginSettings) => VideoJsMarkerPlugin;\r\n  }\r\n  export interface VideoJsPlayerOptions {\r\n    markers?: boolean;\r\n  }\r\n}\r\n\r\nexport interface VideoJsMarker {\r\n  time: number;\r\n  duration?: number;\r\n  text?: string;\r\n  class?: string;\r\n  overlayText?: string;\r\n  key?: string;\r\n  id?: string;\r\n  disabled?: boolean;\r\n  html?:string;\r\n}\r\n\r\nexport interface VideoJsMarkerPluginSettings {\r\n  markerStyle?: object;\r\n  markerTip?: {\r\n    display?: boolean;\r\n    html?(marker: VideoJsMarker): string;\r\n    text?(marker: VideoJsMarker): string;\r\n    time?(marker: VideoJsMarker): number;\r\n  };\r\n  breakOverlay?: {\r\n    display: boolean;\r\n    displayTime: number;\r\n    style: object;\r\n    text(marker: VideoJsMarker): string;\r\n  };\r\n  markers?: VideoJsMarker[];\r\n  onMarkerClick?(marker: VideoJsMarker): boolean | void;\r\n  onMarkerReached?(marker: VideoJsMarker, index: number): void;\r\n  onTimeUpdateAfterMarkerUpdate?(): void;\r\n}","import { Component, OnInit,ViewEncapsulation, Input } from '@angular/core';\r\nimport videojs from 'video.js';\r\nimport  {VideoJsMarkerPlugin}  from './video-js-marker-plugin';\r\nimport { DatePipe } from '@angular/common';\r\nimport { MarkingText } from './markers'\r\n\r\n@Component({\r\n  selector: 'ngtactful-video-tag',\r\n  templateUrl: './ng-tactful-video-tag.component.html',\r\n  styleUrls: ['./ng-tactful-video-tag.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  providers:[DatePipe]\r\n})\r\nexport class NgTactFulVideoTagComponent implements OnInit {\r\n\r\n  @Input()  download_url:string ;\r\n  player\r\n  constructor(private datePipe: DatePipe) {\r\n   if (videojs.getPlugin('markers') == undefined){\r\n     videojs.registerPlugin('markers', VideoJsMarkerPlugin);\r\n    }\r\n   }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  ngAfterViewInit(){\r\n    this.player = videojs('ngtactfulplayer',{\r\n      playbackRates: [ 1, 1.5, 2],\r\n      autoplay: true\r\n    });\r\n    // Click play\r\n    // --> NO ALERT\r\n    // Click pause\r\n    // Initialize plugin using the plugin function on the player instance\r\n    this.player.markers({\r\n      markerStyle: {\r\n        'width':'16px',\r\n        'height': '16px',\r\n        'background-color': '#FFFFFF',\r\n        'border-radius' : '100%',\r\n        'border' : '4px solid #4FA399',\r\n        'top': '-4px'\r\n      },      \r\n        markers: [ ]\r\n  \r\n    });\r\n  }\r\n\r\n/**\r\n* onAddMarker is a function.\r\n* @description : Adding Marker in playtime\r\n* \r\n**/\r\n  onAddMarker() : any{\r\n    this.player.pause();\r\n    let currentTime =  parseInt(this.player.currentTime());\r\n    let markers = this.player.markers().getMarkers();\r\n    if(markers.length>0){\r\n      let mIndex = markers.findIndex(m=>{\r\n        return m.time == currentTime;\r\n      });\r\n      if(mIndex==-1){\r\n        this.player.markers().add( [{time: currentTime, html: `<p>${ this.datePipe.transform(currentTime*1000,'H:mm:ss','UTC')}</p>`}]);\r\n      }\r\n    }else{\r\n      this.player.markers().add( [{time: currentTime,  html: `<p>${ this.datePipe.transform(currentTime*1000,'H:mm:ss','UTC')}</p>`}]);\r\n    }\r\n    \r\n    return currentTime;\r\n\r\n  }\r\n\r\n  /**\r\n* gettingTimeAndPausePlayer is a function.\r\n* @description : pause and give time\r\n* \r\n**/\r\n\r\n  gettingTimeAndPausePlayer():number{\r\n    this.player.pause();\r\n    return parseInt(this.player.currentTime());\r\n  }\r\n\r\n\r\n/**\r\n* onAddMarkers is a function.\r\n* @description : Adding Marker in playtime\r\n* \r\n**/\r\n  onAddMarkers(addingMarkers) : any{\r\n      this.player.markers().removeAll();\r\n      if(addingMarkers && addingMarkers.length){\r\n        addingMarkers.map(mark=>{\r\n           // making function and dynamically adding markers with name\r\n          this.player.markers().add( [{time: mark.timing, html: this.makeMarkerHtml(mark.markingTexts) }]);\r\n        })\r\n      }\r\n \r\n    }\r\n    \r\n\r\n    /**\r\n* onAddMarkersOnLoad is a function.\r\n* @description : Adding Marker in playtime after load data video\r\n* \r\n**/\r\n  onAddMarkersOnLoad(addingMarkers) : any{\r\n    this.player.on('loadedmetadata',()=>{\r\n      if(addingMarkers && addingMarkers.length){\r\n        addingMarkers.map(mark=>{\r\n           // making function and dynamically adding markers\r\n          this.player.markers().add( [{time: mark.timing, html: this.makeMarkerHtml(mark.markingTexts) }]);\r\n        })\r\n      }\r\n    })\r\n    }\r\n   \r\n\r\n  \r\n\r\n  /**\r\n* removeMarker is a function.\r\n* @description : removing the marker\r\n* @param {time} time in timeline\r\n* @param {index} index of marker\r\n* \r\n**/\r\n  removeMarker(time,index?){\r\n    if(index){\r\n      let markers = this.player.markers().getMarkers();\r\n      if(markers.length>0){\r\n        let mIndex = markers.findIndex(m=>{\r\n          return m.time == time;\r\n        });\r\n        if(mIndex!==-1){\r\n          this.player.markers().remove([mIndex])\r\n        }\r\n    }\r\n   }else{\r\n    this.player.markers().remove([index]);\r\n   }\r\n   \r\n   \r\n  }\r\n\r\n  /**\r\n* playFrom is a function.\r\n* @description : play from time\r\n* @param {time} time in timeline\r\n* \r\n**/\r\n\r\n  playFrom(time){\r\n    this.player.currentTime(parseInt(time));\r\n    this.player.play();\r\n  }\r\n\r\n  \r\n  /**\r\n* makeMarkerHtml is a function.\r\n* @description : make html\r\n* @param {marking array} list of markers\r\n* @returns string html\r\n**/\r\n\r\n makeMarkerHtml(markingTexts:MarkingText[]):string{\r\n  let str = '<ul>'\r\n\r\n  markingTexts.map(mark=>{\r\n    str += `<li>${mark.name}</li>`\r\n  })\r\n  \r\n  return str + '</ul>'\r\n }\r\n\r\n\r\n  ngOnDestroy(){\r\n    if (this.player) {\r\n      this.player.dispose();\r\n    }\r\n  }\r\n\r\n}\r\n","<video id=\"ngtactfulplayer\" class=\"video-js\" data-setup=''  width=\"auto\" height=\"356\" controls>\r\n    <source src=\"{{download_url}}\" type=\"video/mp4\">\r\n    Your browser does not support the video tag.\r\n  </video>","import { NgModule } from '@angular/core';\nimport { NgTactfulLibComponent } from './ng-tactful-lib.component';\nimport { SecondLetterCapitalPipe } from './second-letter-capital.pipe';\nimport { NgTactFulVideoTagComponent } from './ng-tactful-video-tag/ng-tactful-video-tag.component';\n\n@NgModule({\n  declarations: [NgTactfulLibComponent, SecondLetterCapitalPipe, NgTactFulVideoTagComponent],\n  imports: [\n  ],\n  exports: [NgTactfulLibComponent,SecondLetterCapitalPipe, NgTactFulVideoTagComponent,]\n})\nexport class NgTactfulLibModule { }\n","/*\n * Public API Surface of ng-tactful-lib\n */\n\nexport * from './lib/ng-tactful-lib.service';\nexport * from './lib/ng-tactful-lib.component';\nexport * from './lib/ng-tactful-lib.module';\nexport * from './lib/second-letter-capital.pipe';\nexport * from './lib/ng-tactful-video-tag/ng-tactful-video-tag.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}