UNPKG

@obliczeniowo/elementary

Version:
1 lines 32.5 kB
{"version":3,"file":"obliczeniowo-elementary-circle-menu.mjs","sources":["../../../../projects/components/circle-menu/components/arch/arch.component.ts","../../../../projects/components/circle-menu/components/arch/arch.component.html","../../../../projects/components/circle-menu/components/menu-item/menu-item.component.ts","../../../../projects/components/circle-menu/components/menu-item/menu-item.component.html","../../../../projects/components/circle-menu/components/svg-icon-button/svg-icon-button.component.ts","../../../../projects/components/circle-menu/components/svg-icon-button/svg-icon-button.component.html","../../../../projects/components/circle-menu/components/extended-menu-item/extended-menu-item.component.ts","../../../../projects/components/circle-menu/components/extended-menu-item/extended-menu-item.component.html","../../../../projects/components/circle-menu/components/circle-menu/circle-menu.component.ts","../../../../projects/components/circle-menu/components/circle-menu/circle-menu.component.html","../../../../projects/components/circle-menu/circle-menu.module.ts","../../../../projects/components/circle-menu/obliczeniowo-elementary-circle-menu.ts"],"sourcesContent":["import { ElementaryMath } from '@obliczeniowo/elementary/math';\nimport { DrawingSvgInterface } from '@obliczeniowo/elementary/drawing';\nimport { Component, effect, input } from '@angular/core';\nimport { Point2D } from '@obliczeniowo/elementary/classes';\n\n@Component({\n selector: 'g[obl-arch]',\n templateUrl: './arch.component.html',\n styleUrls: ['./arch.component.scss'],\n standalone: false\n})\nexport class ArchComponent {\n /** start angle in degrees */\n start = input<number>(0);\n /** end angle in degrees */\n end = input<number>(90);\n /** ray in pixels */\n ray = input<number>(10);\n /** */\n x = input<number>(0);\n /** */\n y = input<number>(0);\n /** arch thickness in pixels */\n width = input<number>(10);\n /** arch stroke color */\n background = input<string>('#ff0000');\n /** id if required */\n pathId = input<string>();\n /** reverse for change side of text */\n reverse = input<boolean>(false);\n /** angle scale */\n angleScale = input<number>(1);\n\n path!: string | undefined;\n\n protected scaledStart: number = 0;\n protected scaledEnd: number = 0;\n\n constructor() {\n this.recalculatePath();\n effect(() => {\n this.recalculatePath();\n })\n }\n\n protected recalculatePath() {\n const start = this.start();\n const end = this.end();\n const mid = (start + end) / 2;\n const ray = this.ray();\n const length = (end - start) / 2 * this.angleScale();\n this.scaledStart = mid - length;\n this.scaledEnd = mid + length;\n this.path = DrawingSvgInterface.archPath(\n new Point2D(this.x(), this.y()),\n ray,\n ray,\n 0,\n ElementaryMath.degreesToRadians(this.scaledEnd - this.scaledStart),\n this.reverse()\n )\n }\n}\n","@if (path) {\n <svg:path\n [attr.d]=\"path\"\n [style.strokeWidth]=\"width()\"\n [style.stroke]=\"background()\"\n [attr.transform]=\"(x() || y()) &&\n ('translate(' +\n x() +\n ', ' +\n y() + \n ') rotate(' +\n scaledStart +\n ') translate(' +\n -x() +\n ', ' +\n -y() +\n ')' + (reverse() ? ' scale(-1, 1)' : '')) || 'rotate(' +\n scaledStart +\n ')'\n \"\n [id]=\"pathId()\"\n></svg:path>\n} @else {\n <svg:circle\n [attr.r]=\"ray()\"\n [attr.cx]=\"x()\"\n [attr.cy]=\"y()\"\n [style.strokeWidth]=\"width()\"\n [style.stroke]=\"background()\"\n [id]=\"pathId()\"\n ></svg:circle>\n}\n","import { Component, HostBinding, HostListener, input, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'g[obl-menu-item]',\n templateUrl: './menu-item.component.html',\n styleUrls: ['./menu-item.component.scss'],\n standalone: false\n})\nexport class MenuItemComponent {\n /** start angle in degrees */\n start = input<number>(0);\n /** end angle in degrees */\n end = input<number>(90);\n /** ray */\n ray = input<number>(100);\n /** */\n x = input<number>(130);\n /** */\n y = input<number>(130);\n /** thickness of arch */\n width = input<number>(25);\n /** background (thickness) color as string */\n background = input<string>('#ff0000');\n /** text color */\n color = input<string>('#000000');\n /** text to display on item */\n text = input<string>('');\n /** */\n angleScale = input<number>(1);\n\n shadow = input<boolean>(false);\n\n @HostListener('mouseenter') mouseOver() {\n this.hover = true;\n }\n\n @HostListener('mouseleave') mouseLeave() {\n this.hover = false;\n }\n\n @HostBinding('class.hover')\n protected hover = false;\n\n textPathId!: string;\n\n @HostBinding('class.clickable') clickable = true;\n\n get textRay() {\n return this.reverse ? this.ray() + 4 : this.ray() - 8;\n }\n\n get reverse() {\n return Math.abs(this.end() + this.start()) / 2 < 180\n }\n\n protected _href: string | null = null;\n\n get href() {\n return this._href;\n }\n\n constructor() {\n this.setId();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.x || changes.y || changes.reverse || changes.ray || changes.start || changes.end || changes.angleScale) {\n setTimeout(() => {\n this.setId();\n });\n }\n }\n\n private setId() {\n do {\n this.textPathId = `textPath${Math.floor(Math.random() * 1000000)}`\n } while (document.body.querySelector(`#${this.textPathId}`))\n this._href = `#${this.textPathId}`;\n }\n}\n","<svg:g obl-arch [start]=\"start() + 5\" [end]=\"end() - 5\" [ray]=\"textRay\" [width]=\"0\" [background]=\"'none'\" [x]=\"x()\" [y]=\"y()\"\n [pathId]=\"textPathId\" [reverse]=\"reverse\" [angleScale]=\"angleScale()\"></svg:g>\n\n<svg:g obl-arch [start]=\"start()\" [end]=\"end()\" [ray]=\"ray()\" [x]=\"x()\" [y]=\"y()\" [width]=\"width()\" [background]=\"background()\"\n [angleScale]=\"angleScale()\"></svg:g>\n\n@if (href && angleScale()) {\n <svg:text [class.shadow]=\"shadow()\" [style.fill]=\"color()\">\n <svg:textPath [attr.href]=\"href\" startOffset=\"50%\">\n <tspan>{{ text() }}</tspan>\n </svg:textPath>\n </svg:text>\n}","import { Component, effect, ElementRef, HostBinding, HostListener, input, Input } from '@angular/core';\nimport { IconResourceService } from '@obliczeniowo/elementary/icons';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'g[obl-svg-icon-button]',\n templateUrl: './svg-icon-button.component.html',\n styleUrls: ['./svg-icon-button.component.scss'],\n standalone: false\n})\nexport class SvgIconButtonComponent {\n get iconWidth(): number {\n return this._iconWidth;\n }\n\n protected _ray: number = 24;\n\n get ray(): number {\n return this._ray;\n }\n\n readonly k: number = 0.5;\n\n /** icon name */\n icon = input<string>();\n /** */\n @HostBinding('class.disabled')\n @Input() disabled?: boolean;\n\n /** */\n @HostBinding('class.clickable') clickable = true;\n\n @HostListener('mouseenter') mouseOver() {\n this.hover = true;\n }\n\n @HostListener('mouseleave') mouseLeave() {\n this.hover = false;\n }\n\n @HostBinding('class.hover')\n protected hover = false;\n\n iconScale = 1;\n\n protected _iconSvg!: SVGSVGElement | undefined;\n protected _iconWidth: number = 0;\n\n constructor(\n protected icons: IconResourceService,\n protected elementRef: ElementRef<HTMLElement>\n ) {\n effect(() => {\n const icon = this.icon();\n if (icon) {\n firstValueFrom(this.icons.getIcon(icon)).then(\n (svg) => {\n this._iconSvg = svg;\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 icon.innerHTML = this._iconSvg.innerHTML;\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}\n","<svg:circle [attr.r]=\"ray\"></svg:circle>\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 [style.fill]=\"'var(--obl-default-icon-color)'\"\n></svg:g>\n","import { Component, EventEmitter, HostBinding, HostListener, input, Output } from '@angular/core';\n\nimport { CircleExtendedMenuItem } from './../../models/circle-extended-menu-item.model';\nimport { CircleMenuItem } from '../../models/circle-menu-item.model';\n\n@Component({\n selector: 'g[obl-extended-menu-item]',\n templateUrl: './extended-menu-item.component.html',\n styleUrls: ['./extended-menu-item.component.scss'],\n standalone: false\n})\nexport class ExtendedMenuItemComponent {\n /** start angle in degrees */\n start = input<number>(0);\n /** end angle in degrees */\n end = input<number>(90);\n /** ray */\n ray = input<number>(100);\n /** */\n x = input<number>(130);\n /** */\n y = input<number>(130);\n /** thickness of arch */\n width = input<number>(40);\n /** angle scale for animations */\n angleScale = input<number>(1);\n /** */\n closeOnClick = input<boolean>(false);\n\n item = input.required<CircleExtendedMenuItem>();\n\n @Output() clicked: EventEmitter<Partial<CircleMenuItem>> = new EventEmitter<Partial<CircleMenuItem>>();\n\n @HostListener('mouseenter') mouseOver() {\n this.hover = true;\n if (!this.time) {\n this.time = setInterval(() => this.animate(), 100)\n }\n }\n\n @HostListener('mouseleave') mouseLeave() {\n this.hover = false;\n if (!this.time) {\n this.time = setInterval(() => this.animate(), 100)\n }\n }\n\n @HostBinding('class.hover')\n protected hover = false;\n\n readonly length: number = 5;\n\n protected time: any;\n\n protected animation: number[] = new Array(this.length).fill(0);\n\n protected startIndex: number = 0;\n\n ngOnDestroy(): void {\n if (this.time) {\n clearInterval(this.time);\n this.time = undefined;\n }\n }\n\n itemClicked(item: CircleMenuItem, parent: boolean = false) {\n this.clicked.emit(parent\n ? item\n : {\n ...item,\n parent: {\n id: this.item().id,\n text: this.item().text,\n data: this.item().data,\n }\n });\n if (parent) {\n this.animation = new Array(this.length).fill(1);\n } else if (this.closeOnClick()) {\n this.animation = new Array(this.length).fill(0);\n }\n }\n\n move(move: number) {\n this.startIndex = Math.max(\n Math.min(\n this.startIndex + move,\n (this.item().subItems?.length || this.length) - this.length),\n 0\n );\n }\n\n protected animate() {\n for (let i = 0; i < this.animation.length; i++) {\n const before = this.animation[i];\n this.animation[i] = Math.min(Math.max(this.animation[i] + (this.hover ? 0.2 : -0.2), 0), 1);\n if (before === (this.hover ? 0 : 1)) {\n break;\n }\n }\n this.animation = [...this.animation];\n const sum = this.animation.reduce((prev, curr) => prev + curr, 0);\n if (this.hover && sum === 5 || !this.hover && sum === 0) {\n clearInterval(this.time);\n this.time = undefined;\n }\n }\n}\n","@if (item()) {\n <svg:g\n obl-menu-item\n [x]=\"x()\"\n [y]=\"y()\"\n [ray]=\"ray()\"\n [width]=\"50\"\n [start]=\"start()\"\n [end]=\"end()\"\n [background]=\"item().background.toString()\"\n [color]=\"item().color.toString()\"\n [text]=\"item().text\"\n [angleScale]=\"angleScale()\"\n (click)=\"itemClicked(item(), true)\"\n ></svg:g>\n\n @if (item().subItems) {\n @for (subItem of item().subItems; track subItem.id) {\n @if (startIndex + length > $index && $index >= startIndex) {\n <svg:g\n obl-menu-item\n [x]=\"x()\"\n [y]=\"y()\"\n [ray]=\"ray() + width() * ($index + 1 - startIndex) + 5\"\n [width]=\"width()\"\n [start]=\"start()\"\n [end]=\"end()\"\n [background]=\"subItem.background.toString()\"\n [color]=\"subItem.color.toString()\"\n [text]=\"subItem.text\"\n [angleScale]=\"animation[$index - startIndex]\"\n (click)=\"itemClicked(subItem)\"\n ></svg:g>\n }\n }\n @if ((item().subItems?.length || 0) > length && !time && hover) {\n <svg:g\n obl-svg-icon-button\n [icon]=\"'left'\"\n [style.transform]=\"\n 'translate(50%, 50%) rotate(' +\n start() +\n 'deg) translate(' +\n (ray() + 50) +\n 'px, 0) scale(0.8)'\n \"\n (click)=\"move(-1)\"\n ></svg:g>\n <svg:g\n obl-svg-icon-button\n [icon]=\"'right'\"\n [style.transform]=\"\n 'translate(50%, 50%) rotate(' +\n start() +\n 'deg) translate(' +\n (ray() + 40 * 5) +\n 'px, 0) scale(0.8)'\n \"\n (click)=\"move(1)\"\n ></svg:g>\n }\n }\n}\n","import { Component, OnInit, Output, EventEmitter, input } from '@angular/core';\n\nimport { ColorHSV } from '@obliczeniowo/elementary/classes';\nimport { CircleExtendedMenuItem } from '../../models/circle-extended-menu-item.model';\n\nimport { CircleMenuItem } from '../../models/circle-menu-item.model';\n\n@Component({\n selector: 'obl-circle-menu',\n templateUrl: './circle-menu.component.html',\n styleUrls: ['./circle-menu.component.scss'],\n standalone: false\n})\nexport class CircleMenuComponent implements OnInit {\n /** menu items options not optional must be at leas 1 base element, subItems optional */\n items = input<CircleExtendedMenuItem[]>(new Array(6).fill(0).map((_, index: number) => (\n {\n id: index,\n color: ColorHSV.createColorHSV(index * 60, 0.5, 255).convertToRGB(),\n background: ColorHSV.createColorHSV((index * 60 + 180) % 360, 0.5, 255).convertToRGB(),\n text: `text to display ${index + 1}`\n }\n )));\n\n /** menu description */\n menu = input<string>('Menu');\n\n /** */\n closeOnClick = input<boolean>(false);\n\n @Output() clicked: EventEmitter<Partial<CircleMenuItem>> = new EventEmitter<Partial<CircleMenuItem>>();\n\n get length() {\n return this.items().length < 6 && this.items().length || 6;\n }\n\n protected startIndex = 0;\n\n protected time: any;\n protected animation: number = 0;\n\n get start(): number {\n return this.startIndex;\n }\n\n readonly ray: number = 150;\n\n get angle(): number {\n return 360 / (this.length || 1);\n }\n\n readonly width: number = 780;\n\n readonly height: number = 780;\n\n get position() {\n return this.startIndex / (this.items().length - this.length || 1);\n }\n\n ngOnInit(): void {\n this.time = setInterval(() => {\n this.animation = Math.min(Math.max(this.animation + 0.2, 0), 1);\n if (this.animation === 1) {\n this.ngOnDestroy();\n }\n }, 100);\n }\n\n move(offset: number) {\n if (this.length < this.items().length) {\n this.startIndex = Math.min(Math.max(this.startIndex + offset, 0), this.items().length - 6);\n }\n }\n\n itemClicked(item: Partial<CircleMenuItem>) {\n this.clicked.emit({\n id: item.id,\n parent: item.parent,\n text: item.text,\n data: item.data\n });\n }\n\n ngOnDestroy(): void {\n if (this.time) {\n clearInterval(this.time);\n this.time = undefined;\n }\n }\n}\n","<svg\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n [attr.viewBox]=\"'0 0 ' + width + ' ' + height\"\n>\n @if (items().length > 6 && !time) {\n <g\n obl-svg-icon-button\n [icon]=\"'left'\"\n [style.transform]=\"\n 'translate(calc(50% - ' +\n 40 +\n 'px), calc(50% + ' +\n (ray - 70) +\n 'px)) rotate(30deg)'\n \"\n (click)=\"move(-1)\"\n ></g>\n <g\n obl-svg-icon-button\n [icon]=\"'right'\"\n [style.transform]=\"\n 'translate(calc(50% + ' +\n 40 +\n 'px), calc(50% + ' +\n (ray - 70) +\n 'px)) rotate(-30deg)'\n \"\n (click)=\"move(1)\"\n ></g>\n }\n\n @if (position) {\n <g\n obl-arch\n [x]=\"width / 2\"\n [y]=\"height / 2\"\n [ray]=\"ray\"\n [width]=\"60\"\n [start]=\"360 - position * 360 + 270\"\n [end]=\"360 + 270\"\n [background]=\"'#80e2ff'\"\n ></g>\n }\n\n @for (item of items(); track item.id) {\n @if ($index >= start && $index < start + length) {\n <g\n obl-extended-menu-item\n [x]=\"width / 2\"\n [y]=\"height / 2\"\n [ray]=\"ray\"\n [width]=\"40\"\n [start]=\"angle * ($index - start)\"\n [end]=\"angle * ($index - start + 1)\"\n [item]=\"item\"\n [angleScale]=\"animation\"\n [closeOnClick]=\"closeOnClick()\"\n (clicked)=\"itemClicked($event)\"\n ></g>\n }\n }\n\n @if (!time) {\n <text class=\"menu\" [class.more-items]=\"items().length - length === 0\">\n <tspan>{{ menu() }}</tspan>\n </text>\n }\n\n @if (!time && items().length - length) {\n <text class=\"position\">\n <tspan>{{ position * 100 | number : '0.0-0' }} %</tspan>\n </text>\n }\n</svg>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArchComponent } from './components/arch/arch.component';\nimport { MenuItemComponent } from './components/menu-item/menu-item.component';\nimport { CircleMenuComponent } from './components/circle-menu/circle-menu.component';\nimport { SvgIconButtonComponent } from './components/svg-icon-button/svg-icon-button.component';\nimport { ExtendedMenuItemComponent } from './components/extended-menu-item/extended-menu-item.component';\n\n@NgModule({\n declarations: [\n ArchComponent,\n MenuItemComponent,\n CircleMenuComponent,\n SvgIconButtonComponent,\n ExtendedMenuItemComponent,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n ArchComponent,\n MenuItemComponent,\n CircleMenuComponent,\n SvgIconButtonComponent,\n ExtendedMenuItemComponent\n ]\n})\nexport class CircleMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ArchComponent","i1.MenuItemComponent","i2.SvgIconButtonComponent","i3.ExtendedMenuItemComponent"],"mappings":"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"}