UNPKG

@obliczeniowo/elementary

Version:
1 lines 19.9 kB
{"version":3,"file":"obliczeniowo-elementary-hex-button.mjs","sources":["../../../../projects/components/hex-button/components/hex-button/hex-button.component.ts","../../../../projects/components/hex-button/components/hex-button/hex-button.component.html","../../../../projects/components/hex-button/components/hex-extended-button/hex-extended-button.component.ts","../../../../projects/components/hex-button/components/hex-extended-button/hex-extended-button.component.html","../../../../projects/components/hex-button/hex-button.module.ts","../../../../projects/components/hex-button/obliczeniowo-elementary-hex-button.ts"],"sourcesContent":["import { Component, ElementRef, HostBinding, HostListener, Input, EventEmitter, Output, input, effect } from '@angular/core';\n\nimport { IconResourceService } from '@obliczeniowo/elementary/icons';\n\n@Component({\n selector: 'g[obl-hex-button]',\n templateUrl: './hex-button.component.html',\n styleUrls: ['./hex-button.component.scss'],\n standalone: false\n})\nexport class HexButtonComponent {\n /** x pos can be css style like calc(50% + 10px) */\n x = input<string>('0');\n /** y pos can be css style like calc(50% + 10px) */\n y = input<string>('0');\n /** icon name */\n icon = input<string>();\n /** */\n scale = input<number>(1);\n /** */\n @HostBinding('class.disabled')\n @Input() disabled?: boolean;\n\n @Output() click: EventEmitter<void> = new EventEmitter<void>();\n\n @HostListener('mouseenter') mouseOver() {\n this.hover = true;\n }\n\n @HostListener('mouseleave') mouseLeave() {\n this.hover = false;\n }\n\n @HostBinding('style.transform') get transform(): string {\n return `translate(${this.x()}, ${this.y()}) scale(${this.scale()})`;\n };\n\n @HostBinding('class.hover')\n protected hover = false;\n\n clicked() {\n if (!this.disabled) {\n this.click.emit();\n }\n }\n\n protected _ray: number = 24;\n protected offset: number = 4;\n protected _iconSvg!: SVGSVGElement | undefined;\n protected _iconWidth: number = 0;\n\n get iconWidth(): number {\n return this._iconWidth;\n }\n\n readonly k: number = 0.5;\n\n iconScale = 1;\n\n get ray(): number {\n return this._ray;\n }\n\n protected _outside: string = '';\n\n get outside(): string {\n return this._outside;\n }\n\n protected _inside: string = '';\n\n get inside(): string {\n return this._inside;\n }\n\n constructor(\n protected icons: IconResourceService,\n protected elementRef: ElementRef<HTMLElement>\n ) {\n this.recalc();\n\n effect(() => {\n const iconName = this.icon();\n if (iconName) {\n this.icons.getIcon(iconName).subscribe(iconSvg => {\n this._iconSvg = iconSvg;\n const icon = this.elementRef.nativeElement.querySelector('g.icon');\n if (icon && this._iconSvg) {\n while (icon.firstChild) {\n icon.removeChild(icon.firstChild);\n }\n\n icon.innerHTML = this._iconSvg.innerHTML;\n\n const viewBox = (this._iconSvg.getAttribute('viewBox') || '').split(' ').map(v => +v)\n if (viewBox.length) {\n this._iconWidth = viewBox[2] - viewBox[0];\n this.iconScale = this.k * 2 * this.ray / (this._iconWidth || 1);\n }\n }\n });\n }\n })\n }\n\n protected recalc() {\n const n = 6\n const offset = Math.PI / n;\n const points = (ray: number) => new Array(n).fill(0).map((_, index: number) => {\n const angle = index * Math.PI / (n / 2) + offset;\n return [\n ray * Math.sin(angle),\n ray * Math.cos(angle)\n ].join(',')\n }).join(' ');\n this._outside = points(this.ray);\n this._inside = points(this.ray - this.offset);\n }\n}\n","<svg:polygon\n [attr.points]=\"outside\"\n class=\"clickable\"\n (click)=\"clicked()\"\n></svg:polygon>\n\n<svg:polygon\n [attr.points]=\"inside\"\n class=\"clickable\"\n></svg:polygon>\n\n<svg:g\n class=\"icon clickable\"\n [style.transform]=\"\n 'translate(' +\n (-ray * k) +\n 'px, ' +\n (-ray * k) +\n 'px)'\n + 'scale(' +\n iconScale +\n ')'\n \"\n></svg:g>\n","import { Component, Input, SimpleChanges, ChangeDetectorRef, HostBinding } from '@angular/core';\nimport { Point2D } from '@obliczeniowo/elementary/classes';\n\nexport interface HexButtonElement<T extends { [key: string]: any } = {}> {\n icon: string;\n data?: T;\n clicked: () => void;\n pos?: Point2D;\n animation?: number;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'obl-hex-extended-button',\n templateUrl: './hex-extended-button.component.html',\n styleUrls: ['./hex-extended-button.component.scss'],\n standalone: false\n})\nexport class HexExtendedButtonComponent {\n protected opened = false;\n\n readonly ray: number = 24;\n\n @Input() elements: HexButtonElement[] = [];\n\n translate = 'translate(50%, 50%)';\n\n private _width: number = 0;\n\n public get width(): number {\n return this.opened && this._width || this.ray * 2;\n }\n\n private _height: number = 0;\n\n public get height(): number {\n return this.opened && this._height || this.ray * 2;\n }\n\n @HostBinding('style.width.px') animatedWidth = this.ray * 2;\n @HostBinding('style.height.px') animatedHeight = this.ray * 2;\n\n readonly h = Math.sqrt(3) / 2;\n\n readonly rayTranslate = new Point2D(0, this.h * 2);\n readonly move = new Point2D(1.5, -this.h);\n\n protected time: any;\n\n constructor(protected change: ChangeDetectorRef) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.elements) {\n this.recalc();\n }\n }\n\n ngnDestroy() {\n if (this.time) {\n clearInterval(this.time);\n }\n }\n\n clicked(element: HexButtonElement) {\n if (!element.disabled) {\n this.toggleOpen();\n element.clicked();\n }\n }\n\n protected levelCount(level: number): number {\n return level === 0 && 1 || level * 6;\n }\n\n toggleOpen() {\n if (this.time) {\n clearInterval(this.time);\n }\n\n this.elements.forEach(e => e.animation = this.opened && 1 || 0);\n\n this.opened = !this.opened;\n this.animated();\n }\n\n maxRounds(elements: HexButtonElement[] = this.elements || []): number {\n let sum = 1;\n let countRound = 0;\n\n while (sum < elements.length + 1) {\n sum += this.levelCount(countRound);\n countRound++;\n }\n\n return countRound;\n }\n\n protected recalc() {\n const maxRounds = this.maxRounds();\n\n if (maxRounds === 0) {\n return;\n }\n\n const bray = this.ray + 3;\n\n this._width = (1.5 * (maxRounds - 1) + 1) * bray * 2 + 6;\n this._height = (this.h * (maxRounds - 1) * 2 + this.h) * bray * 2 + 6;\n let index = 0;\n for (let dRay = 1; dRay < maxRounds; dRay++) {\n for (let dAngle = 0; dAngle < 6; dAngle++) {\n const angle = Math.PI / 3 * dAngle;\n const ray = this.rayTranslate.multiply(bray * dRay).rotate(-angle);\n for (let dMove = 0; dMove < dRay; dMove++) {\n const move = this.move.multiply(bray * dMove).rotate(-angle);\n if (index < this.elements.length) {\n const t = ray.add(move);\n t.x = Math.floor(t.x);\n t.y = Math.floor(t.y);\n this.elements[index].pos = t;\n this.elements[index].animation = this.opened && 1 || 0;\n index++;\n }\n }\n }\n }\n }\n\n protected animated() {\n if (!this.elements.length) {\n return;\n }\n\n this.time = setInterval(() => {\n const t = this.elements.findIndex(e => (e?.animation || 0) < 1);\n if (t > -1) {\n for (let i = t; i < this.elements.length; i++) {\n const element = this.elements[i];\n const zero = !this.elements[i].animation;\n element.animation = Math.min((element?.animation || 0) + 0.08, 1);\n if (zero) {\n break;\n }\n }\n\n const rounds = this.maxRounds(this.elements.filter(e => e.animation) || []);\n\n const bray = this.ray + 3;\n\n this.animatedWidth = Math.min(this.animatedWidth + this.ray * 0.5, (1.5 * (rounds - 1) + 1) * bray * 2 + 6);\n this.animatedHeight = Math.min(this.animatedHeight + this.ray * 0.5, (this.h * (rounds - 1) * 2 + this.h) * bray * 2 + 6);\n } else if (this.animatedWidth > this.ray * 2 && !this.opened) {\n this.animatedWidth = Math.max(this.animatedWidth * 0.9, this.ray * 2);\n this.animatedHeight = Math.max(this.animatedHeight * 0.9, this.ray * 2);\n } else {\n clearInterval(this.time);\n this.time = undefined;\n }\n this.change.detectChanges();\n }, 10)\n }\n}\n","<svg\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n [attr.viewBox]=\"'0 0 ' + width + ' ' + height\"\n [style.minWidth.px]=\"width\"\n [style.minHeight.px]=\"height\"\n>\n @if (!opened) {\n <g\n obl-hex-button\n [icon]=\"'add'\"\n x=\"50%\"\n y=\"50%\"\n (click)=\"toggleOpen()\"\n ></g>\n }\n\n @if (opened) {\n <g\n obl-hex-button\n [icon]=\"'subtract'\"\n x=\"50%\"\n y=\"50%\"\n (click)=\"toggleOpen()\"\n class=\"central\"\n ></g>\n }\n\n @if (opened) {\n @for (element of elements; track $index) {\n <g>\n <g\n obl-hex-button\n [icon]=\"element.icon\"\n [x]=\"'calc(50% + ' + (element?.pos?.x || 0) + 'px)'\"\n [y]=\"'calc(50% + ' + (element?.pos?.y || 0) + 'px)'\"\n [scale]=\"element.animation || 0\"\n [disabled]=\"element.disabled\"\n (click)=\"clicked(element)\"\n ></g>\n </g>\n }\n }\n</svg>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HexButtonComponent } from './components/hex-button/hex-button.component';\nimport { HexExtendedButtonComponent } from './components/hex-extended-button/hex-extended-button.component';\n\n@NgModule({\n declarations: [\n HexButtonComponent,\n HexExtendedButtonComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n HexExtendedButtonComponent\n ]\n})\nexport class HexButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.HexButtonComponent"],"mappings":"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"}