{"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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"}