{"version":3,"file":"obliczeniowo-elementary-time.mjs","sources":["../../../../projects/components/time/components/clock-time/clock-time.component.ts","../../../../projects/components/time/components/clock-time/clock-time.component.html","../../../../projects/components/time/pipes/time.pipe.ts","../../../../projects/components/time/time.module.ts","../../../../projects/components/time/obliczeniowo-elementary-time.ts"],"sourcesContent":["import { ElementaryMath } from '@obliczeniowo/elementary/math';\nimport { AfterViewInit, Component, ElementRef, Input, ViewChild, HostBinding, EventEmitter, Output, Renderer2, input, effect } from '@angular/core';\nimport { Dates, Point2D } from '@obliczeniowo/elementary/classes';\nimport { DrawingSvgInterface } from '@obliczeniowo/elementary/drawing';\n\nexport interface DisplayClockTime {\n  seconds?: boolean;\n  time?: boolean;\n  interactive?: boolean;\n}\n\n/**\n * Basic usage of component is to display time as HH:mm:ss format combined with a little dynamic svg\n * element that display clock pointing time given in input time as Date object or [h, m, s]\n *\n * You can set 'interactive' mode by 'display' input set { interactive: true, ... }\n * In this mode you can change time by clicking on modifying area fields, this will emit\n * new date every time you click on this areas\n *\n * To have easy way of manipulate time size of clock-time must be at least 150px\n *\n * In interactive mode you can add own controls buttons:\n *\n * @example\n *\n * <obl-clock-time [display]=\"{ time: true; interactive: true }\" [column]=\"true\" #clock>\n *   <button (click)=\"setDate(clock)\">OK</button>\n * <obl-clock-time>\n */\n@Component({\n    selector: 'obl-clock-time',\n    templateUrl: './clock-time.component.html',\n    styleUrls: ['./clock-time.component.scss'],\n    standalone: false\n})\nexport class ClockTimeComponent implements AfterViewInit {\n  /** size of clock */\n  size = input<number>(30);\n\n  /** switch on/off displaying time text */\n  display = input<DisplayClockTime>({\n    seconds: true,\n    time: true\n  });\n\n  /** font size */\n  fontSize = input<number>();\n\n  /** if display time is set to tru this one will control if clock and time text is displayed in one row or in column */\n  @Input()\n  @HostBinding('class.column') column = false;\n\n  /**\n   * set time by Date object or table of [hours, minutes, seconds]\n   */\n  date = input(new Date(), {\n      transform: (value: Date | [number, number, number]) => {\n        let date;\n        if (value instanceof Date) {\n          date = value;\n        } else {\n          date = new Date();\n          date.setHours(value[0]);\n          date.setMinutes(value[1]);\n          date.setSeconds(value[2]);\n        }\n        const h = date.getHours();\n        const m = date.getMinutes();\n        const s = date.getSeconds();\n        this.hAngle = ((h % 12) + m / 60 + s / 3600) * Math.PI / 6;\n        this.mAngle = (m + s / 60) * Math.PI / 30;\n        this.sAngle = s * Math.PI / 30;\n        this.pmAm = date.getHours() / 12 > 1;\n        return date;\n      }\n    }\n  );\n\n  /** Emit when date is changed */\n  @Output() changed = new EventEmitter<Date>();\n\n  @ViewChild('svg') protected svg!: ElementRef<SVGSVGElement>;\n\n  @HostBinding('class.no-time') protected get noTime() {\n    return !this.display().time;\n  }\n\n  protected interactiveTime?: Date;\n\n  protected dc!: DrawingSvgInterface;\n  protected hRay = 2;\n  protected mRay = 3;\n  protected sRay = 3.5;\n\n  protected hAngle = 0;\n  protected mAngle = 0;\n  protected sAngle = 0;\n\n  protected pmAm: boolean = false;\n\n  protected mouse = new Point2D();\n\n  constructor(protected renderer: Renderer2) {\n    effect(() => {\n      this.draw();\n    })\n  }\n\n  ngAfterViewInit(): void {\n    if (this.svg) {\n      this.dc = new DrawingSvgInterface(this.svg.nativeElement, this.renderer);\n      this.draw();\n    }\n  }\n\n  protected switchPmAm() {\n    this.pmAm = !this.pmAm;\n    this.date().setHours(this.date().getHours() + (this.pmAm ? -12 : 12));\n    if (this.interactiveTime) {\n      this.interactiveTime = new Date(this.date());\n    }\n  }\n\n  protected clicked(event: MouseEvent) {\n    if (!this.display().interactive) {\n      return;\n    }\n\n    if (this.interactiveTime) {\n      this.date().setSeconds(this.interactiveTime.getSeconds());\n      this.date().setMinutes(this.interactiveTime.getMinutes());\n      this.date().setHours(this.interactiveTime.getHours());\n      this.changed.emit(new Date(this.date()));\n    }\n  }\n\n  protected mouseMove(event: MouseEvent) {\n    if (!this.display().interactive) {\n      return;\n    }\n\n    const scale = (this.getBrowserName() === 'firefox' ? 10 : 11) / this.size();\n    const box = this.dc.svgContainer.getBoundingClientRect();\n\n    this.mouse = new Point2D((event.x - box.left) * scale, (event.y - box.top) * scale).subtract(new Point2D(5, 5));\n\n    const { hRay, mRay, mouse } = this;\n    const len = mouse.sickLength();\n    const angle = mouse.angle();\n    const date = new Date(this.date());\n\n    if (len < hRay * hRay) {\n      date.setHours(Math.round(ElementaryMath.fmod(angle + Math.PI * 2.5, 2 * Math.PI) / (2 * Math.PI) * 11 + (this.pmAm ? 12 : 0)) % (12 + (this.pmAm ? 12 : 0)));\n    } else if (len < mRay * mRay) {\n      date.setMinutes(Math.round((angle + Math.PI) / (2 * Math.PI) * 60 + 45) % 60);\n    }\n\n    this.interactiveTime = date;\n    this.draw();\n  }\n\n  protected draw(dc: DrawingSvgInterface = this.dc): void {\n    if (dc) {\n      const center = new Point2D(5, 5);\n      dc.clear();\n      dc.drawCircle(center, 4.5, 0.7, 'var(--default-text-color)');\n\n      if (this.display().interactive) {\n        dc.drawCircle(center, this.mRay, 0, undefined, undefined, {\n          svgOnly: {\n            classes: ['minutes-area']\n          }\n        });\n        dc.drawCircle(center, this.hRay, 0, undefined, undefined, {\n          svgOnly: {\n            classes: ['hours-area']\n          }\n        });\n      }\n\n      dc.drawPolyline([\n        center.add(new Point2D(this.hRay * Math.sin(this.hAngle), -this.hRay * Math.cos(this.hAngle))),\n        center,\n        center.add(new Point2D(this.mRay * Math.sin(this.mAngle), -this.mRay * Math.cos(this.mAngle)))],\n        0.5,\n        'var(--default-text-color)'\n      );\n\n      if (this.display().interactive) {\n        if (this.interactiveTime && !Dates.equalToTimeLevel(this.interactiveTime, this.date())) {\n          const h = this.interactiveTime.getHours();\n          const m = this.interactiveTime.getMinutes();\n          const hAngle = ((h % 12) + m / 60) * Math.PI / 6;\n          const mAngle = m * Math.PI / 30;\n\n          dc.drawPolyline([\n            center.add(new Point2D(this.hRay * Math.sin(hAngle), -this.hRay * Math.cos(hAngle))),\n            center,\n            center.add(new Point2D(this.mRay * Math.sin(mAngle), -this.mRay * Math.cos(mAngle)))],\n            0.5,\n            'var(--obl-clock-time-set-pointer, gray)'\n          );\n        }\n      }\n\n      if (this.size() > 99) {\n        /** draw seconds pointer */\n        if (this.display().seconds) {\n          dc.drawLine(center, center.add(new Point2D(this.sRay * Math.sin(this.sAngle), -this.sRay * Math.cos(this.sAngle))), 0.25,\n            'var(--default-text-color)');\n        }\n\n        /** draw scale */\n        for (let i = 0; i < 12; i++) {\n          const angle = i * Math.PI / 6;\n          dc.drawLine(\n            center.add(new Point2D(this.sRay * Math.sin(angle), -this.sRay * Math.cos(angle))),\n            center.add(new Point2D(1.1 * this.sRay * Math.sin(angle), -(this.sRay * 1.1) * Math.cos(angle))), 0.1, 'var(--default-text-color)');\n        }\n      }\n    }\n  }\n\n  protected getBrowserName() {\n    const agent = window.navigator.userAgent.toLowerCase()\n    switch (true) {\n      case agent.includes('edge'):\n        return 'edge';\n      case agent.includes('opr') && !!(window as any).opr:\n        return 'opera';\n      case agent.includes('chrome') && !!(window as any).chrome:\n        return 'chrome';\n      case agent.includes('trident'):\n        return 'ie';\n      case agent.includes('firefox'):\n        return 'firefox';\n      case agent.includes('safari'):\n        return 'safari';\n      default:\n        return 'other';\n    }\n}\n}\n","<svg\n  [attr.width]=\"size()\"\n  [attr.height]=\"size()\"\n  viewBox=\"0 0 10 10\"\n  (mousemove)=\"mouseMove($event)\"\n  (click)=\"clicked($event)\"\n  #svg\n></svg>\n\n@if (display().time) {\n  <span\n    [style.font-size.px]=\"fontSize() || size() * 0.6\"\n    [style.line-height.px]=\"fontSize() || size() * 0.6\"\n  >\n    {{ (interactiveTime ?? date()) | date : (display().seconds ? 'HH:mm:ss' : 'HH:mm') }}\n    <ng-content></ng-content>\n  </span>\n}\n\n@if (display().interactive) {\n  <div class=\"actions\">\n    <button oblButton (click)=\"switchPmAm()\"> {{ pmAm && 'PM' || 'AM' }} </button>\n  </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'time',\n  standalone: true\n})\nexport class TimePipe implements PipeTransform {\n  transform(time: number, ...args: unknown[]): string {\n    time = Math.ceil(time);\n\n    const hours = Math.floor(time / 3600);\n    const minutes = Math.floor(time / 60) % 60\n    const seconds = time % 60;\n\n    return (hours ? hours + ':' : '') + `0${minutes}`.slice(-2) + ':' + `0${seconds}`.slice(-2);\n  }\n}\n","import { ButtonsModule } from '@obliczeniowo/elementary/buttons';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ClockTimeComponent } from './components/clock-time/clock-time.component';\nimport { TimePipe } from './pipes/time.pipe';\n\n@NgModule({\n  declarations: [\n    ClockTimeComponent,\n  ],\n  providers: [\n    TimePipe\n  ],\n  imports: [\n    CommonModule,\n    ButtonsModule\n  ],\n  exports: [\n    ClockTimeComponent,\n  ]\n})\nexport class TimeModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}