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