{"version":3,"file":"obliczeniowo-elementary-html-line.mjs","sources":["../../../../projects/components/html-line/components/html-line/html-line.component.ts","../../../../projects/components/html-line/components/html-line/html-line.component.html","../../../../projects/components/html-line/components/html-lines/html-lines.component.ts","../../../../projects/components/html-line/components/html-lines/html-lines.component.html","../../../../projects/components/html-line/html-line.module.ts","../../../../projects/components/html-line/obliczeniowo-elementary-html-line.ts"],"sourcesContent":["import { Component, Input, HostBinding, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n    selector: 'obl-html-line',\n    templateUrl: './html-line.component.html',\n    styleUrls: ['./html-line.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class HtmlLineComponent {\n  /** coordinates as table [x1, y1, x2, y2] */\n  @Input() set coords(coords: [number, number, number, number]) {\n    this._coords = coords;\n\n    this.recalc();\n  }\n\n  private _coords!: [number, number, number, number];\n\n  protected recalc() {\n    const thickness = this.thickness;\n    const coords = this._coords;\n\n    if (!coords) {\n      return;\n    }\n\n    this.width = Math.abs(Math.sqrt((coords[0] - coords[2]) * (coords[0] - coords[2]) + (coords[1] - coords[3]) * (coords[1] - coords[3]))) + thickness;\n    const angle = Math.atan2(coords[1] - coords[3], coords[0] - coords[2]);\n    const translateTo0 = `translate(${-this.width / 2 - ((this.width - thickness) / 2) * Math.cos(angle)}px, ${-thickness / 2 - ((this.width - thickness) / 2) * Math.sin(angle)}px)`;\n    const translate = `translate(${coords[0]}px, ${coords[1]}px)`;\n\n    const rotate = `rotate(${angle}rad)`;\n\n    this.transform = `${translateTo0} ${translate} ${rotate}`;\n\n    this.radius = this.thickness / 2;\n  }\n\n  /** line (div) height */\n\n  @HostBinding('style.height.px')\n  private _thickness = 2;\n\n  public get thickness(): number {\n    return this._thickness;\n  }\n\n  @Input() set thickness(value: number) {\n    this._thickness = value;\n    this.radius = value / 2;\n    this.recalc();\n  }\n\n  /** */\n  @Input()\n  @HostBinding('style.background-color') background: string = 'black';\n\n  @HostBinding('style.transform') protected transform!: string;\n\n  @HostBinding('style.width.px') protected width!: number;\n\n  @HostBinding('style.border-radius.px') radius: number = 10;\n}\n","","import { LinesSetDef } from './../../models/lines-def';\nimport { ChangeDetectionStrategy, Component, computed, input, Input } from '@angular/core';\n\n@Component({\n    selector: 'obl-html-lines',\n    templateUrl: './html-lines.component.html',\n    styleUrls: ['./html-lines.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class HtmlLinesComponent {\n  protected minMax = computed<[[number, number], [number, number]] | undefined>(() => {\n    let minMax: [[number, number], [number, number]] | undefined;\n\n    this.lines().forEach(points =>\n      points.points.forEach((c, index) => {\n        if (minMax) {\n          minMax = [\n            [Math.min(minMax[0][0], c[0]), Math.max(minMax[0][1], c[0])],\n            [Math.min(minMax[1][0], c[1]), Math.max(minMax[1][1], c[1])],\n          ];\n        } else {\n          minMax = [\n            [c[0], c[0]],\n            [c[1], c[1]],\n          ];\n        }\n      }),\n    );\n\n    return minMax;\n  });\n\n  lines = input<LinesSetDef[]>([]);\n\n  /** line thickness in px */\n  @Input() thickness = 2;\n  /** color as any css color style */\n  @Input() color = 'black';\n\n  style = computed<any>(() => {\n      const { thickness } = this;\n      const minMax = this.minMax();\n\n      if (!minMax) {\n        return {};\n      }\n      const width = minMax[0][1] - minMax[0][0] + thickness;\n      const height = minMax[1][1] - minMax[1][0] + thickness;\n      return { width: `${width}px`, height: `${height}px`, transform: `translate(${-minMax[0][0] + thickness / 2}px, ${-minMax[1][0] + thickness / 2}px)` }\n    }\n  );\n\n  coords(fp: number[], sp: number[]) {\n    return [...fp, ...sp] as [number, number, number, number];\n  }\n}\n","<div [ngStyle]=\"style\">\n  @for (lineSet of lines(); track $index) {\n    @for (line of lineSet.points; track $index) {\n      @if ($index) {\n        <obl-html-line\n          [thickness]=\"lineSet.thickness || this.thickness\"\n          [background]=\"lineSet.color || color\"\n          [coords]=\"coords(lineSet.points[$index - 1], line)\"\n        >\n        </obl-html-line>\n      }\n    }\n  }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HtmlLineComponent } from './components/html-line/html-line.component';\nimport { HtmlLinesComponent } from './components/html-lines/html-lines.component';\n\n@NgModule({\n  declarations: [\n    HtmlLineComponent,\n    HtmlLinesComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    HtmlLineComponent,\n    HtmlLinesComponent\n  ]\n})\nexport class HtmlLineModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.HtmlLineComponent"],"mappings":"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"}