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