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