{"version":3,"file":"obliczeniowo-elementary-loading.mjs","sources":["../../../../projects/components/loading/components/spinner/spinner.component.ts","../../../../projects/components/loading/components/spinner/spinner.component.html","../../../../projects/components/loading/components/loading-state/loading-state.component.ts","../../../../projects/components/loading/components/loading-state/loading-state.component.html","../../../../projects/components/loading/loading.module.ts","../../../../projects/components/loading/obliczeniowo-elementary-loading.ts"],"sourcesContent":["import { DrawingSvgInterface } from '@obliczeniowo/elementary/drawing';\nimport { Component, ElementRef, ViewChild, AfterViewInit, OnDestroy, Renderer2 } from '@angular/core';\nimport { Point2D } from '@obliczeniowo/elementary/classes';\n@Component({\n    selector: 'obl-spinner',\n    templateUrl: './spinner.component.html',\n    styleUrls: ['./spinner.component.scss'],\n    standalone: false\n})\nexport class SpinnerComponent implements AfterViewInit, OnDestroy {\n  protected dc!: DrawingSvgInterface;\n  protected time: any;\n\n  @ViewChild('svg') svg!: ElementRef<SVGSVGElement>;\n\n  constructor(protected renderer: Renderer2) {}\n\n  ngAfterViewInit(): void {\n    this.dc = new DrawingSvgInterface(this.svg.nativeElement, this.renderer);\n    this.time = setInterval(() => { this.draw(new Date().getTime() / 100); }, 100);\n  }\n\n  draw(dt: number): void {\n    this.dc.clear();\n    this.dc.drawArch(\n      new Point2D(5, 5),\n      4,\n      4,\n      0,\n      Math.sin(dt * 4 / 180 * Math.PI) * Math.PI * 0.6 + Math.PI * 1.3,\n      1.2,\n      'var(--obl-spinner-color, gold)');\n  }\n\n  ngOnDestroy(): void {\n    clearInterval(this.time);\n  }\n}\n","<svg viewBox=\"0 0 10 10\" #svg></svg>","import { Component, Input, OnInit, SimpleChanges, OnChanges, OnDestroy } from '@angular/core';\n\n@Component({\n    selector: 'obl-loading-state',\n    templateUrl: './loading-state.component.html',\n    styleUrls: ['./loading-state.component.scss'],\n    standalone: false\n})\nexport class LoadingStateComponent implements OnInit, OnDestroy, OnChanges {\n  @Input() status: 'waiting' | 'failure' | 'progress' | 'done' = 'progress';\n\n  protected highlighted: number[] = [];\n\n  protected offset = 0;\n\n  readonly ray = 6;\n  readonly positions = [[0, 2], [0, 1], [0, 0], [1, 0], [1, 1], [1, 2]].map(v => {\n    return { x: this.ray + this.ray * 3 * (v[0] % 2), y: this.ray + v[1] * 3 * this.ray };\n  });\n\n  protected time: any;\n\n  ngOnInit(): void {\n    this.setTime();\n  }\n\n  ngOnDestroy(): void {\n    if (this.time) {\n      clearInterval(this.time);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.status) {\n      switch (changes.status.currentValue) {\n        case 'done':\n        case 'failure':\n        case 'waiting': {\n          if (this.time) {\n            clearInterval(this.time);\n            this.time = undefined;\n          }\n          break;\n        }\n        case 'progress': {\n          if (!this.time) {\n            this.setTime();\n          }\n        }\n      }\n    }\n  }\n\n  protected setTime(): void {\n    if (!this.time) {\n      this.time = setInterval(() => {\n        this.offset = (this.offset + 1) % 6;\n        this.highlighted = [this.offset, (this.offset + 1) % 6, (this.offset + 2) % 6];\n      }, 100);\n    }\n  }\n}\n","@if (status === 'progress' || status === 'waiting') {\n  <svg width=\"10\" viewBox=\"0 0 30 48\">\n    @for (position of positions; track $index) {\n      <circle\n        [attr.cx]=\"position.x\"\n        [attr.cy]=\"position.y\"\n        [attr.r]=\"ray\"\n        [class]=\"\n          status === 'progress'\n            ? highlighted.includes($index) && 'highlighted' || ''\n            : ''\n        \"\n      ></circle>\n    }\n  </svg>\n} @else {\n  @if (status === 'failure') {\n    <obl-icon [name]=\"'cancel'\" class=\"cancel\" [width]=\"10\"></obl-icon>\n  } @else if (status === 'done') {\n    <obl-icon [name]=\"'ok'\" class=\"done\" [width]=\"15\"></obl-icon>\n  }\n}\n","import { IconsModule } from '@obliczeniowo/elementary/icons';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpinnerComponent } from './components/spinner/spinner.component';\nimport { LoadingStateComponent } from './components/loading-state/loading-state.component';\n\n@NgModule({\n  declarations: [\n    SpinnerComponent,\n    LoadingStateComponent\n  ],\n  imports: [\n    CommonModule,\n    IconsModule\n  ],\n  exports: [\n    SpinnerComponent,\n    LoadingStateComponent\n  ],\n})\nexport class LoadingModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}