{"version":3,"file":"obliczeniowo-elementary-year-picker.mjs","sources":["../../../../projects/components/year-picker/models/year-value-picker.model.ts","../../../../projects/components/year-picker/components/year-picker/year-picker.component.ts","../../../../projects/components/year-picker/components/year-picker/year-picker.component.html","../../../../projects/components/year-picker/year-picker.module.ts","../../../../projects/components/year-picker/obliczeniowo-elementary-year-picker.ts"],"sourcesContent":["import { Observable, of } from 'rxjs';\n\nimport { ElementaryMath } from '@obliczeniowo/elementary/math';\nimport { AbstractValueSetModel, ValuePickerItem } from '@obliczeniowo/elementary/value-picker';\n\nexport class YearValuePickerModel extends AbstractValueSetModel {\n  next(current?: ValuePickerItem<number, any> | undefined): Observable<ValuePickerItem<number, any> | undefined> {\n    return of({ value: current && ElementaryMath.minmax(current.value + 1, this.start, this.end)  || this.start });\n  }\n\n  previous(current?: ValuePickerItem<any, any> | undefined): Observable<ValuePickerItem<number, any> | undefined> {\n    return of({ value: current && ElementaryMath.minmax(current.value - 1, this.start, this.end)  || this.start });\n  }\n\n  constructor(public start: number, public end: number) {\n    super();\n  }\n\n  init(current?: ValuePickerItem<number> | undefined): Observable<void> {\n    if (current) {\n      const { value } = current;\n\n      if (value < this.start || value > this.end) {\n        this.set = new Array(Math.min(this.end - this.start, this.max)).fill(0).map((_, index) => ({ value: this.start + index }));\n      } else {\n        const start = Math.min(value, this.end - this.max + 1);\n        this.set = new Array(Math.min(this.end - this.start, this.max)).fill(0).map((_, index) => ({ value: start + index }));\n      }\n    } else {\n      this.set = new Array(Math.min(this.end - this.start, this.max)).fill(0).map((_, index) => ({ value: this.start + index }));\n    }\n\n    return of();\n  }\n\n  getNextSet(): Observable<boolean> {\n    const end = this.set[this.set.length - 1].value;\n    if (end === this.end) {\n      return of(false);\n    }\n    const start = Math.min(end, this.end - this.max);\n    this.set = new Array(this.max).fill(0).map((_, index) => ({ value: start + index + 1 }));\n\n    return of(true);\n  }\n\n  getPreviousSet(): Observable<boolean> {\n    let start = this.set[0].value;\n    if (start === this.start) {\n      return of(false);\n    }\n    start = Math.max(start - this.max, this.start);\n    this.set = new Array(this.max).fill(0).map((_, index) => ({ value: start + index }));\n\n    return of(true);\n  }\n\n  getCurrentSet(): Observable<ValuePickerItem<number, any>[]> {\n    return of(this.set);\n  }\n\n  displayNextPrevious(): Observable<boolean> {\n    return of(true);\n  }\n\n  decreaseDisabled(current?: ValuePickerItem) {\n    return current?.value === this.start;\n  }\n\n  increaseDisabled(current?: ValuePickerItem) {\n    return current?.value === this.end;\n  }\n\n  selected(item: ValuePickerItem, current?: ValuePickerItem): boolean {\n    return current?.value === item.value;\n  }\n\n  nextDisabled(): Observable<boolean> {\n    return of(this.set[this.set.length - 1].value === this.end);\n  }\n\n  previousDisabled(): Observable<boolean> {\n    return of(this.set[0].value === this.start);\n  }\n}\n","import { Component, Input, EventEmitter, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PickerSettings } from '@obliczeniowo/elementary/value-picker';\n\nimport { YearPickerDisplay } from './../../models/year-picker-display';\nimport { YearValuePickerModel } from './../../models/year-value-picker.model';\n\n@Component({\n    selector: 'obl-year-picker',\n    templateUrl: './year-picker.component.html',\n    styleUrls: ['./year-picker.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            multi: true,\n            useExisting: YearPickerComponent\n        },\n    ],\n    standalone: false\n})\nexport class YearPickerComponent {\n  protected model = new YearValuePickerModel(new Date().getFullYear() - 20, new Date().getFullYear() + 20);\n\n  @Input() current?: number;\n\n  @Input() set start(year: number) {\n    this.model.start = year;\n  }\n\n  @Input() set end(year: number) {\n    this.model.end = year;\n  }\n\n  @Input() placeholder?: string;\n\n  /**\n   * disable the whole things\n   */\n  @Input() disabled = false;\n\n  @Input() display: YearPickerDisplay = {\n    nextPrevious: true\n  }\n\n  @Input() picker: PickerSettings = {};\n\n  @Output() changed = new EventEmitter<number>();\n\n  protected touched: boolean = false;\n\n  onChange = (value: number | undefined) => { };\n\n  onTouched = () => { };\n\n  registerOnValidatorChange(fn: () => void): void { this.onChange = fn; }\n\n  writeValue(set?: number): void {\n    this.current = set;\n  }\n\n  registerOnChange(onChange: any): void {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any): void {\n    this.onTouched = onTouched;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  markAsTouched(): void {\n    if (this.disabled) {\n      return;\n    }\n    if (!this.touched) {\n      this.onTouched();\n      this.touched = true;\n    }\n  }\n\n  protected itemChanged(item: number) {\n    this.current = item;\n    this.onChange(this.current);\n    this.changed.emit(this.current);\n  }\n\n  ngOnInit() {\n    this.model.init(this.current && { value: this.current } || undefined);\n  }\n}\n","<obl-value-picker\n  [model]=\"model\"\n  [current]=\"(current && { value: current }) || undefined\"\n  [disabled]=\"disabled\"\n  [display]=\"display\"\n  [picker]=\"picker\"\n  [placeholder]=\"placeholder\"\n  (changed)=\"itemChanged($event.value)\"\n></obl-value-picker>\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ValuePickerModule } from '@obliczeniowo/elementary/value-picker';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { YearPickerComponent } from './components/year-picker/year-picker.component';\n\n@NgModule({\n  declarations: [\n    YearPickerComponent\n  ],\n  imports: [\n    CommonModule,\n    ValuePickerModule,\n    FormsModule,\n    ReactiveFormsModule\n  ],\n  exports: [\n    YearPickerComponent\n  ]\n})\nexport class YearPickerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}