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