{"version":3,"file":"ngx-telly-plugin-timecode.mjs","sources":["../../../../libs/plugin-timecode/src/lib/smpte.ts","../../../../libs/plugin-timecode/src/lib/directives/timecode.directive.ts","../../../../libs/plugin-timecode/src/lib/components/timecode.component.ts","../../../../libs/plugin-timecode/src/lib/icons.ts","../../../../libs/plugin-timecode/src/lib/components/step-back/step-back.component.ts","../../../../libs/plugin-timecode/src/lib/components/step-back/step-back.component.html","../../../../libs/plugin-timecode/src/lib/components/step-forward/step-forward.component.ts","../../../../libs/plugin-timecode/src/lib/components/step-forward/step-forward.component.html","../../../../libs/plugin-timecode/src/lib/components/scrub-bar-timecode/scrub-bar-timecode.component.ts","../../../../libs/plugin-timecode/src/lib/components/scrub-bar-timecode/scrub-bar-timecode.component.html","../../../../libs/plugin-timecode/src/ngx-telly-plugin-timecode.ts"],"sourcesContent":["export const secondsToTimecode = (seconds: number, framerate: number): string => {\n  let frames = Math.round(seconds * framerate);\n  const dropFrame = framerate % 1 !== 0;\n  const delimiter = dropFrame ? ';' : ':';\n\n  if (dropFrame) {\n    const df = framerate <= 30 ? 2 : 4;\n    const dfDiv2 = df >> 1;\n    const framesPer10Min = 17982 * dfDiv2;\n    const framesPer1Min = 1798 * dfDiv2;\n\n    const div = Math.floor(frames / framesPer10Min);\n    let mod = frames % framesPer10Min;\n    if (mod < df) mod = mod + df;\n    frames += 9 * df * div + df * Math.floor((mod - df) / framesPer1Min);\n  }\n\n  const fps = Math.round(framerate);\n  const totalSeconds = Math.floor(frames / fps);\n\n  const h = Math.floor(totalSeconds / 3600) % 24;\n  const m = Math.floor(totalSeconds / 60) % 60;\n  const s = totalSeconds % 60;\n  const f = Math.trunc(frames % fps);\n\n  return `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}:${s\n    .toString()\n    .padStart(2, '0')}${delimiter}${f.toString().padStart(2, '0')}`;\n};\n","import { Directive, inject, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { PlayerComponent } from '@ngx-telly/player';\nimport { TellyMedia } from '@ngx-telly/player/core';\nimport { TellyMediaService } from '@ngx-telly/player/services';\nimport { secondsToTimecode } from '../smpte';\nimport { TellyMediaWithTimecode } from '../telly-media.extension';\n\n@Directive({\n  selector: '[tellyTimecode]',\n  standalone: true,\n})\nexport class TellyTimecodeDirective implements OnInit, OnChanges {\n  @Input('tellyTimecode') fps = 24;\n\n  player = inject(PlayerComponent);\n  mediaService = inject(TellyMediaService);\n  interval = 0;\n\n  ngOnInit(): void {\n    if (!this.fps) throw new Error('FPS not set, cannot evaluate frame interval!');\n    this.interval = 1 / this.fps;\n    this.registerFactory();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['fps']?.currentValue && !changes['fps']?.firstChange) {\n      this.interval = 1 / changes['fps']?.currentValue;\n      this.registerFactory();\n    }\n  }\n\n  step = (sec: number): void => {\n    this.player.media.pause(true);\n\n    if (this.player.media.windowTime <= 0) {\n      this.player.media.seek(Math.abs(sec) / 20);\n    }\n\n    const nextPos = this.player.media.windowTime + sec;\n    const closestFrame = Math.round(nextPos / this.interval) * this.interval;\n\n    this.player.media.seek(closestFrame + this.interval / 4);\n    this.player.media.indicate(`Step ${sec < 0 ? 'back' : 'forward'}`);\n  };\n\n  getTimeCode = (): string => {\n    const { media, timeOffset } = this.player;\n    return secondsToTimecode(media.time + timeOffset(), this.fps);\n  };\n\n  private registerFactory() {\n    this.mediaService.registerFactory('TellyTimecode', (media: TellyMedia) => {\n      Object.assign(media, {\n        timecode: this.getTimeCode,\n        step: this.step,\n        fps: this.fps,\n        stepInterval: this.interval,\n      });\n\n      return media as TellyMediaWithTimecode;\n    });\n  }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, OnInit, Output } from '@angular/core';\nimport { PlayerComponent } from '@ngx-telly/player';\nimport { TellyEventsService } from '@ngx-telly/player/services';\nimport { distinctUntilChanged, map, Observable } from 'rxjs';\nimport { TellyTimecodeDirective } from '../directives/timecode.directive';\nimport { secondsToTimecode } from '../smpte';\n\n@Component({\n    selector: 'telly-timecode',\n    template: `<span (click)=\"onTimeClick()\">{{ time$ | async }}</span>`,\n    styles: [':host { padding-inline: 5px; user-select: none }'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [AsyncPipe]\n})\nexport class TimecodeComponent implements OnInit {\n  @Output() timeClicked = new EventEmitter<string>();\n\n  player = inject(PlayerComponent);\n  directive = inject(TellyTimecodeDirective);\n  events = inject(TellyEventsService);\n  time$!: Observable<string>;\n\n  ngOnInit(): void {\n    this.time$ = this.events.timer$.pipe(\n      map(() => this.player.media.time + this.player.timeOffset()),\n      distinctUntilChanged(),\n      map((sec) => this.round(sec)),\n      map((sec) => secondsToTimecode(sec, this.directive.fps))\n    );\n  }\n\n  onTimeClick(): void {\n    const { media, timeOffset } = this.player;\n    this.timeClicked.emit(secondsToTimecode(this.round(media.time + timeOffset()), this.directive.fps));\n  }\n\n  round(sec: number): number {\n    return Math.round(sec * 100) / 100;\n  }\n}\n","export const stepForward = 'M16,18H18V6H16M6,18L14.5,12L6,6V18Z';\nexport const stepBackward = 'M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z';\n","import { ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, Input } from '@angular/core';\nimport { TellyTimecodeDirective } from '../../directives/timecode.directive';\nimport { stepBackward } from '../../icons';\n\n@Component({\n  selector: 'telly-step-back',\n  templateUrl: './step-back.component.html',\n  styleUrls: ['./step-back.component.scss'],\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepBackComponent {\n  @Input() icon = stepBackward;\n  @Input() size = '1.6rem';\n\n  directive = inject(TellyTimecodeDirective);\n\n  @HostBinding('attr.tip') title = 'Step back';\n\n  @HostListener('pointerdown')\n  onClick(): void {\n    this.directive.step(-this.directive.interval);\n  }\n}\n","<svg\n    viewBox=\"0 0 24 24\"\n    [style.width]=\"size\"\n>\n  <path\n      fill=\"white\"\n      [attr.d]=\"icon\"\n  />\n</svg>\n","import { ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, Input } from '@angular/core';\nimport { TellyTimecodeDirective } from '../../directives/timecode.directive';\nimport { stepForward } from '../../icons';\n\n@Component({\n  selector: 'telly-step-forward',\n  templateUrl: './step-forward.component.html',\n  styleUrls: ['./step-forward.component.scss'],\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepForwardComponent {\n  @Input() icon = stepForward;\n  @Input() size = '1.6rem';\n\n  directive = inject(TellyTimecodeDirective);\n\n  @HostBinding('attr.tip') title = 'Step forward';\n\n  @HostListener('pointerdown')\n  onClick(): void {\n    this.directive.step(this.directive.interval);\n  }\n}\n","<svg\n    viewBox=\"0 0 24 24\"\n    [style.width]=\"size\"\n>\n  <path\n      fill=\"white\"\n      [attr.d]=\"icon\"\n  />\n</svg>\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { PlayerComponent, ScrubBarComponent } from '@ngx-telly/player';\nimport { combineLatest, map, timer } from 'rxjs';\nimport { TellyTimecodeDirective } from '../../directives/timecode.directive';\nimport { secondsToTimecode } from '../../smpte';\n\n@Component({\n    selector: 'telly-scrub-bar-timecode',\n    templateUrl: './scrub-bar-timecode.component.html',\n    styleUrls: ['./scrub-bar-timecode.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [AsyncPipe]\n})\nexport class ScrubBarTimecodeComponent {\n  scrubBar = inject(ScrubBarComponent);\n  directive = inject(TellyTimecodeDirective);\n  player = inject(PlayerComponent);\n\n  time$ = combineLatest([this.scrubBar.offset$, timer(0, 500)]).pipe(\n    map(([offset]) => {\n      const { media, timeOffset } = this.player;\n      const percentage = offset / this.scrubBar.ref.nativeElement.clientWidth;\n      const normalized = Math.max(0, Math.min(1, percentage));\n      return secondsToTimecode(timeOffset() + media.drift + (media.duration || 0) * normalized, this.directive.fps);\n    })\n  );\n}\n","<ng-content></ng-content>\n<div>\n  {{ time$ | async }}\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}