UNPKG

@obliczeniowo/elementary

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