{"version":3,"sources":["jsdelivr-header.js","/projects/moment-timezone-picker/src/lib/core/defaults/_select-config.default.ts","/projects/moment-timezone-picker/src/lib/core/types/_tzone.model.ts","/projects/moment-timezone-picker/src/lib/core/utils/_format-zone.util.ts","/projects/moment-timezone-picker/src/lib/moment-timezone-picker.component.ts","/projects/moment-timezone-picker/src/lib/moment-timezone-picker.module.ts"],"names":[],"mappings":"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","file":"/npm/moment-timezone-picker@9.0.0/fesm2022/moment-timezone-picker.mjs/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/moment-timezone-picker@9.0.0/fesm2022/moment-timezone-picker.mjs\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import {SelectConfig} from '../types';\n\nexport const DEFAULT_SELECT_CONFIG: SelectConfig = {\n  hideSelected: false,\n  dropdownPosition: 'auto',\n  appearance: 'underline',\n  clearOnBackspace: true,\n  closeOnSelect: true,\n  appendTo: null,\n  searchable: true,\n};\n","export class TZone {\n  name: string;\n  nameValue: string;\n  timeValue: string;\n  group: string;\n  abbr: string;\n}\n","import {TZone} from '../types';\nimport * as momentZone from 'moment-timezone';\n\n/**\n * Make TZone object from simple string.\n */\nexport const formatZone = (zone: string): TZone => {\n  const foundZone = momentZone.tz(zone);\n  const utc: string = foundZone.format('Z');\n  const abbr: string = foundZone.zoneAbbr();\n  return {\n    name: `${zone} (${utc})`,\n    nameValue: zone,\n    timeValue: utc,\n    group: zone.split('/', 1)[0],\n    abbr: abbr\n  };\n};\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport * as momentZone from 'moment-timezone';\nimport {ControlValueAccessor, UntypedFormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {DEFAULT_SELECT_CONFIG, formatZone, SelectConfig, TZone} from './core';\n\n@Component({\n  selector: 'ng-moment-timezone-picker',\n  template: `\n    <div class=\"wrapper\" [formGroup]=\"form\">\n      <ng-select [formControlName]=\"'timezone'\"\n                 [items]=\"timeZones\"\n                 [clearable]=\"clearable\"\n                 [virtualScroll]=\"virtualScroll\"\n                 [groupBy]=\"'group'\"\n                 bindLabel=\"name\"\n                 [placeholder]=\"customPlaceholderText\"\n                 [notFoundText]=\"customNotFoundText\"\n\n                 [appearance]=\"config.appearance\"\n                 [appendTo]=\"config.appendTo\"\n                 [clearOnBackspace]=\"config.clearOnBackspace\"\n                 [closeOnSelect]=\"config.closeOnSelect\"\n                 [dropdownPosition]=\"config.dropdownPosition\"\n                 [hideSelected]=\"config.hideSelected\"\n                 [searchable]=\"config.searchable\">\n      </ng-select>\n    </div>\n  `,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => MomentTimezonePickerComponent),\n      multi: true\n    }\n  ],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MomentTimezonePickerComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges, ControlValueAccessor {\n\n  /**\n   * Setup section.\n   */\n  @Input() getUserZone = false;\n  @Input() customPlaceholderText = 'Choose...';\n  @Input() customNotFoundText = 'No zone found';\n  @Input() clearable = false;\n  @Input() virtualScroll = true;\n  @Input() disabled = false;\n  @Input() valueTransformFN?: (obj: TZone | null) => any;\n\n  @Input()\n  set config(conf: SelectConfig) {\n    this._config = conf;\n  }\n\n  private _config: SelectConfig = DEFAULT_SELECT_CONFIG;\n\n  get config(): SelectConfig {\n    return this._config;\n  }\n\n  /**\n   * Internals section.\n   */\n  timeZones: Array<TZone>;\n  form: UntypedFormGroup = this.fb.group({\n    timezone: []\n  });\n  private propagateChange: (_: any) => {};\n  private destroy$ = new Subject<void>();\n\n  constructor(private fb: UntypedFormBuilder, private cdr: ChangeDetectorRef) {\n  }\n\n  /**\n   * Lifecycle hooks\n   */\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.getUserZone && changes.getUserZone.currentValue) {\n      this.guessUserTimezone();\n    }\n    if (changes.disabled) {\n      this.toggleTimezoneCtrl(changes.disabled.currentValue);\n    }\n  }\n\n  public ngOnInit(): void {\n    this.timeZones = momentZone.tz.names().map((zone: string) => formatZone(zone));\n    this.setTimezoneChangeListener();\n  }\n\n  public ngAfterViewInit(): void {\n    this.guessUserTimezone();\n  }\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  /**\n   * Private\n   */\n\n  private toggleTimezoneCtrl(isDisabled: boolean): void {\n    isDisabled\n      ? this.form.get('timezone').disable()\n      : this.form.get('timezone').enable();\n    this.cdr.detectChanges();\n  }\n\n  private setTimezoneChangeListener(): void {\n    this.form.get('timezone').valueChanges\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.fireChanges());\n  }\n\n  private guessUserTimezone(): void {\n    setTimeout(() => {\n      if (!this.getUserZone) {\n        console.warn('User zone guess turned off');\n        return;\n      }\n      const guessedZone = momentZone.tz.guess(true);\n      this.form.get('timezone').setValue(formatZone(guessedZone));\n    });\n  }\n\n  /**\n   * Propagate result to parent component.\n   */\n  private fireChanges() {\n    if (!this.propagateChange) {\n      return;\n    }\n    const timezone = this.form.get('timezone').value;\n    const transformedValue = this.valueTransformFN\n      ? this.valueTransformFN(timezone)\n      : timezone;\n    this.propagateChange(transformedValue);\n  }\n\n  private clearZone() {\n    this.form.get('timezone').reset();\n  }\n\n  private validateZoneFromUpperLevels(zone: string | TZone): TZone | null {\n    if (typeof zone === 'string' && zone.length > 0) {\n      return this.timeZones.find(z => z.nameValue === zone) ?? null;\n    }\n    if (typeof zone === 'object') {\n      return this.timeZones.find(z => z.nameValue === zone.nameValue) ?? null;\n    }\n    return null;\n  }\n\n  /**\n   * Access controls\n   */\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    // not used\n  }\n\n  writeValue(zone: string | TZone | null | undefined): void {\n    if (!zone) {\n      this.clearZone();\n      console.warn('Invalid zone passed');\n      return;\n    }\n\n    let _zone: TZone | null = this.validateZoneFromUpperLevels(zone);\n    if (_zone) {\n      this.form.get('timezone').setValue(_zone);\n    }\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { MomentTimezonePickerComponent } from './moment-timezone-picker.component';\nimport {NgSelectModule} from '@ng-select/ng-select';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\n\n@NgModule({\n  declarations: [MomentTimezonePickerComponent],\n  imports: [\n    NgSelectModule,\n    FormsModule,\n    ReactiveFormsModule\n  ],\n  exports: [MomentTimezonePickerComponent]\n})\nexport class MomentTimezonePickerModule { }\n"]}