{"version":3,"file":"timeless-picker.mjs","sources":["../../../projects/timeless-picker/src/lib/components/pages/base-picker/base-picker.component.ts","../../../projects/timeless-picker/src/lib/components/pages/base-picker/base-picker.component.html","../../../projects/timeless-picker/src/lib/components/pages/base-picker/base-picker.module.ts","../../../projects/timeless-picker/src/lib/constants/time.ts","../../../projects/timeless-picker/src/lib/constants/category.ts","../../../projects/timeless-picker/src/lib/constants/themes.ts","../../../projects/timeless-picker/src/lib/services/theme-service/theme.service.ts","../../../projects/timeless-picker/src/lib/components/templates/timeless-container/timeless-container.component.ts","../../../projects/timeless-picker/src/lib/components/templates/timeless-container/timeless-container.component.html","../../../projects/timeless-picker/src/lib/components/pages/time-picker/time-picker.component.ts","../../../projects/timeless-picker/src/lib/components/pages/time-picker/time-picker.component.html","../../../projects/timeless-picker/src/lib/components/templates/timeless-container/timeless-container.module.ts","../../../projects/timeless-picker/src/lib/components/pages/time-picker/time-picker.module.ts","../../../projects/timeless-picker/src/lib/timeless-picker.module.ts","../../../projects/timeless-picker/src/public_api.ts","../../../projects/timeless-picker/src/timeless-picker.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport * as Hammer from 'hammerjs';\r\n\r\n@Component({\r\n  selector: 'timeless-base-picker',\r\n  templateUrl: './base-picker.component.html',\r\n  styleUrls: ['./base-picker.component.scss']\r\n})\r\nexport class BasePickerComponent implements OnInit {\r\n  @ViewChild('wheel', { static: true, read: ElementRef }) wheel: ElementRef = {} as ElementRef;\r\n\r\n  /** General configurations **/\r\n  // An infinite wheel means that items can be scrolled in an infinite loop (the user can scroll\r\n  // past the last item and before the first item). Otherwise, it's a picker bounded by its\r\n  // first and last items.\r\n  @Input() infiniteWheelStyle = true;\r\n  // Size of the picker\r\n  @Input() size: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' = 'medium';\r\n  // Apply fading opacity to the elements around the middle element (for wheel effect)\r\n  @Input() enableOpacity = true;\r\n  // Draw a box around the middle (selected) element of each picker\r\n  @Input() addBorder = false;\r\n\r\n  /** Data handling and display **/\r\n  // How many items are displayed on the wheel. Must be odd so that the selection is in the middle\r\n  // of the wheel\r\n  @Input() visibleItemsCount = 5;\r\n  // A list of the data to display, ordered relatively - i.e. items ordered relative to each\r\n  // other, and not necessarily according to how they are displayed on the wheel.\r\n  @Input() displayData: string[] = [];\r\n  // The index of the item the user wishes to display in the middle upon initialization. The index\r\n  // of the item within the displayData list. E.g.: [a,b,c,d,e] -> 1 displays item b in the middle\r\n  @Input() selectedItemIndex = 0;\r\n\r\n  /** Controls **/\r\n  // Enables scrolling using the mouse wheel\r\n  @Input() enableMouseWheel = true;\r\n\r\n  @Output() newSelectedIndex = new EventEmitter<number>();\r\n\r\n  // Number of items in input data\r\n  itemsCount = 0;\r\n  // A normalized, cumulative measurement of user swipe distance to compare against the\r\n  // distThreshold to determine actual movement of the picker. The speed of user swiping is\r\n  // factored in. After an actual movement is triggered, the value is reset to zero.\r\n  movementMeasure = 0;\r\n  // A threshold that divides the movement measurement to control actual picker movement.\r\n  distThreshold = 550;\r\n  // The index (relative to the number of visible items on the picker\r\n  wheelMiddleIndex = 0;\r\n  // A range of the count of visible items, e.g. range = [0 ... 6] if visibleItemsCount = 7\r\n  range: number[] = [];\r\n  // Maps order (as displayed to the user - or wheel index) to the item-id (the index of the\r\n  // item within the input data list - which in turn is mapped to displayed values).\r\n  orderMapping: {[key: number]: number} = {};\r\n  // Opacity for each of the items based on position to give the impression of a 3D.\r\n  opacityMapping: {[key: number]: number} = {}\r\n  indexPaddingSize = 0;\r\n\r\n  constructor() {\r\n    this.moveWheelUp = this.moveWheelUp.bind(this);\r\n    this.moveWheelDown = this.moveWheelDown.bind(this);\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.displayData.length === 0) {\r\n      throw new Error('You must provide an array of data to display as options in a wheel picker.')\r\n    }\r\n\r\n    if (this.visibleItemsCount % 2 == 0 || this.visibleItemsCount < 3) {\r\n      throw new Error('Number of visible items must be odd and between 3-9 (inclusive). Consult' +\r\n        ' the documentations for more information.');\r\n    }\r\n    this.visibleItemsCount = Math.min(this.visibleItemsCount, 9);\r\n    // Ensures that the selected item index is not beyond the range of the number of items.\r\n    this.selectedItemIndex %= this.displayData.length;\r\n    // This max is chosen for better aesthetics\r\n    this.wheelMiddleIndex = (this.visibleItemsCount - 1) / 2;\r\n    if (!this.infiniteWheelStyle) {\r\n      this.indexPaddingSize = Math.floor(this.visibleItemsCount / 2);\r\n      this.displayData = this.adaptDataForBoundedStyle();\r\n    }\r\n    this.itemsCount = this.displayData.length;\r\n    this.range = Array.from({ length: this.visibleItemsCount }, (_, i) => i);\r\n    this.range.map(num => {\r\n      this.orderMapping[num] = num;\r\n    });\r\n\r\n    this.setOpacityMapping(this.range);\r\n    this.adjustItemsOrder(this.orderMapping);\r\n\r\n    // Set up the library that handles swipe/scroll actions\r\n    const mc = new Hammer.Manager(this.wheel.nativeElement);\r\n    const pan = new Hammer.Pan({\r\n      direction: Hammer.DIRECTION_VERTICAL,\r\n      threshold: 5,\r\n    });\r\n    mc.add(pan);\r\n    mc.on('panup', (event: any) => {\r\n      this.transition(0, event);\r\n    });\r\n    mc.on('pandown', (event: any) => {\r\n      this.transition(1, event);\r\n    });\r\n  }\r\n\r\n  //  direction: 0 -> up, 1 -> down\r\n  // todo: sensitivity parameters interface for user to tune\r\n  transition(direction: number, event: any) {\r\n    const factor = this.speedFactor(event.velocityY);\r\n    this.movementMeasure += event.distance * factor;\r\n    if (this.movementMeasure > this.distThreshold) {\r\n      const times = Math.round(this.movementMeasure / this.distThreshold);\r\n      this.movementMeasure = 0;\r\n      if (direction === 0) {\r\n        this.callFor(this.moveWheelUp, times);\r\n      } else {\r\n        this.callFor(this.moveWheelDown, times);\r\n      }\r\n    }\r\n  }\r\n\r\n  callFor(func: any, times: number, timeout?: number) {\r\n    for (let i = 0; i < times; i++) {\r\n      setTimeout(() => {\r\n        func();\r\n      }, timeout ? timeout * i : 0);\r\n    }\r\n  }\r\n\r\n  moveWheelUp() {\r\n    if (!this.infiniteWheelStyle && this.orderMapping[this.wheelMiddleIndex] === (this.displayData.length-this.wheelMiddleIndex-1)) {\r\n      return;\r\n    }\r\n    for (let i = 0; i < this.visibleItemsCount; i++) {\r\n      this.orderMapping[i] = (this.orderMapping[i] + 1) % this.itemsCount;\r\n    }\r\n    this.emitNewSelection();\r\n  }\r\n\r\n  moveWheelDown() {\r\n    if (!this.infiniteWheelStyle && this.orderMapping[this.wheelMiddleIndex] === this.wheelMiddleIndex) {\r\n      return;\r\n    }\r\n    for (let i = 0; i < this.visibleItemsCount; i++) {\r\n      this.orderMapping[i] = ((this.orderMapping[i] - 1 + this.itemsCount) % this.itemsCount);\r\n    }\r\n    this.emitNewSelection();\r\n  }\r\n\r\n  // Scroll the wheel to the clicked number, with animation.\r\n  numberClicked(index: number) {\r\n    if (index < this.visibleItemsCount) {\r\n      if (index < this.wheelMiddleIndex) {\r\n        this.callFor(this.moveWheelDown, this.wheelMiddleIndex - index, 90);\r\n      } else if (index > this.wheelMiddleIndex) {\r\n        this.callFor(this.moveWheelUp, index - this.wheelMiddleIndex, 90);\r\n      }\r\n    }\r\n  }\r\n\r\n  private speedFactor(velocity: number) {\r\n    // This bounded function rewards high scroll speeds by returning > 1 factors and penalizes slow\r\n    // speeds with < 1 values. Used to factor the movement distance calculation. The idea is to\r\n    // improve user experience with variable scrolling speeds.\r\n    // const factor = 8 / (1 + Math.exp(6 - Math.abs(velocity)));\r\n    const factor = Math.exp(Math.abs(velocity)-1);\r\n    return Math.min(Math.max(factor, 0.25), 8);\r\n  }\r\n\r\n  emitNewSelection() {\r\n    this.newSelectedIndex\r\n    .emit(this.orderMapping[this.wheelMiddleIndex - this.indexPaddingSize]);\r\n  }\r\n\r\n  onMouseWheel(event: any) {\r\n    if (this.enableMouseWheel) {\r\n      if (event.deltaY > 0) {\r\n        this.moveWheelDown();\r\n      } else if (event.deltaY < 0) {\r\n        this.moveWheelUp();\r\n      }\r\n    }\r\n  }\r\n\r\n  // Changes the order of the input data to align the user's choice of the initially selected item\r\n  adjustItemsOrder(orderMapping: {[key: number]: number}) {\r\n    // The number of steps needed to move the target item (specified by the user) to the middle\r\n    // of the wheel.\r\n    const distance = this.wheelMiddleIndex - this.selectedItemIndex;\r\n    const offset = ((- distance % this.itemsCount) + this.itemsCount) % this.itemsCount;\r\n    for (let i = 0; i < this.itemsCount; i++) {\r\n      orderMapping[i] = (orderMapping[i] + offset) % this.itemsCount;\r\n    }\r\n  }\r\n\r\n  // Adds padding (or empty placeholder items) to the beginning and end of the input data list\r\n  // if the user chooses the bounded wheel mode. This allows the wheel to scroll to the first and\r\n  // last items.\r\n  adaptDataForBoundedStyle(): string[] {\r\n    const emptyPaddingArray = Array(this.indexPaddingSize).fill('');\r\n    this.selectedItemIndex += this.indexPaddingSize;\r\n    return emptyPaddingArray.concat(this.displayData, emptyPaddingArray);\r\n  }\r\n\r\n  // Change the opacity (gradually) of the items before and after the selected item to give the\r\n  // impression of a turning wheel.\r\n  setOpacityMapping(range: number[]) {\r\n    for (const index of range) {\r\n      const k = Math.abs(index - this.wheelMiddleIndex);\r\n      const numerator = 1 - Math.pow(Math.sin((index - this.wheelMiddleIndex) / 4), 2);\r\n      const denominator = 1 + k;\r\n      this.opacityMapping[index] = numerator / denominator;\r\n    }\r\n  }\r\n}\r\n","<div #wheel class=\"wheel\" (wheel)=\"onMouseWheel($event)\">\r\n  <ng-container *ngFor=\"let i of range\" >\r\n    <div\r\n      [style.opacity]=\"enableOpacity ? opacityMapping[i] : 1\"\r\n      (click)=\"numberClicked(i)\"\r\n      class=\"hour-digit\"\r\n      [ngClass]=\"['timeless-size-' + size, addBorder && i === wheelMiddleIndex ? 'border-base': '']\"\r\n    >\r\n      {{ displayData[orderMapping[i]] }}\r\n\r\n      <ng-container  class=\"content-container\" *ngIf=\"i === wheelMiddleIndex\">\r\n        <ng-content select=\"[selection-box]\"></ng-content>\r\n      </ng-container>\r\n\r\n    </div>\r\n  </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BasePickerComponent } from \"./base-picker.component\";\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [BasePickerComponent],\r\n  exports: [BasePickerComponent],\r\n  imports: [CommonModule]\r\n})\r\nexport class BasePickerModule { }\r\n","export const hoursArray24 = [\r\n  '00',\r\n  '01',\r\n  '02',\r\n  '03',\r\n  '04',\r\n  '05',\r\n  '06',\r\n  '07',\r\n  '08',\r\n  '09',\r\n  '10',\r\n  '11',\r\n  '12',\r\n  '13',\r\n  '14',\r\n  '15',\r\n  '16',\r\n  '17',\r\n  '18',\r\n  '19',\r\n  '20',\r\n  '21',\r\n  '22',\r\n  '23'\r\n]\r\n\r\nexport const hoursArray12 = [\r\n  '12',\r\n  '1',\r\n  '2',\r\n  '3',\r\n  '4',\r\n  '5',\r\n  '6',\r\n  '7',\r\n  '8',\r\n  '9',\r\n  '10',\r\n  '11'\r\n]\r\n\r\nexport const minutesArray1 = [\r\n  \"00\",\r\n  \"01\",\r\n  \"02\",\r\n  \"03\",\r\n  \"04\",\r\n  \"05\",\r\n  \"06\",\r\n  \"07\",\r\n  \"08\",\r\n  \"09\",\r\n  \"10\",\r\n  \"11\",\r\n  \"12\",\r\n  \"13\",\r\n  \"14\",\r\n  \"15\",\r\n  \"16\",\r\n  \"17\",\r\n  \"18\",\r\n  \"19\",\r\n  \"20\",\r\n  \"21\",\r\n  \"22\",\r\n  \"23\",\r\n  \"24\",\r\n  \"25\",\r\n  \"26\",\r\n  \"27\",\r\n  \"28\",\r\n  \"29\",\r\n  \"30\",\r\n  \"31\",\r\n  \"32\",\r\n  \"33\",\r\n  \"34\",\r\n  \"35\",\r\n  \"36\",\r\n  \"37\",\r\n  \"38\",\r\n  \"39\",\r\n  \"40\",\r\n  \"41\",\r\n  \"42\",\r\n  \"43\",\r\n  \"44\",\r\n  \"45\",\r\n  \"46\",\r\n  \"47\",\r\n  \"48\",\r\n  \"49\",\r\n  \"50\",\r\n  \"51\",\r\n  \"52\",\r\n  \"53\",\r\n  \"54\",\r\n  \"55\",\r\n  \"56\",\r\n  \"57\",\r\n  \"58\",\r\n  \"59\"\r\n];\r\n\r\nexport const minutesArray5 = [\r\n  \"00\",\r\n  \"05\",\r\n  \"10\",\r\n  \"15\",\r\n  \"20\",\r\n  \"25\",\r\n  \"30\",\r\n  \"35\",\r\n  \"40\",\r\n  \"45\",\r\n  \"50\",\r\n  \"55\"\r\n]\r\n\r\nexport const minutesArray10= [\r\n  \"00\",\r\n  \"10\",\r\n  \"20\",\r\n  \"30\",\r\n  \"40\",\r\n  \"50\"\r\n]\r\n\r\nexport const minutesArray15 = [\r\n  \"00\",\r\n  \"15\",\r\n  \"30\",\r\n  \"45\"\r\n]\r\n\r\nexport const minutesArray20 = [\r\n  \"00\",\r\n  \"20\",\r\n  \"40\"\r\n]\r\n\r\nexport const minutesArray30 = [\r\n  \"00\",\r\n  \"30\"\r\n]\r\n\r\nexport const minutesArray = {\r\n  1: minutesArray1,\r\n  5: minutesArray5,\r\n  10: minutesArray10,\r\n  15: minutesArray15,\r\n  20: minutesArray20,\r\n  30: minutesArray30\r\n}\r\n\r\nexport const periodsArray = [\r\n  'AM',\r\n  'PM'\r\n]\r\n","export enum PickerCategory {\r\n  hours= 'hours',\r\n  minutes= 'minutes',\r\n  seconds= 'seconds',\r\n  period= 'period'\r\n}\r\n\r\nexport interface TimeIndex {\r\n  hours: number,\r\n  minutes: number,\r\n  seconds: number,\r\n  period: number\r\n}\r\n\r\nexport enum PeriodIndex {\r\n  AM = 0,\r\n  PM = 1,\r\n}\r\n","export interface Theme {\r\n  background: string;\r\n  primary: string;\r\n  selectionBoxBackground: string;\r\n  selectionBoxBorderColor: string;\r\n}\r\n\r\nexport const darkTheme: Theme = {\r\n  background: '#222',\r\n  primary: '#fff',\r\n  selectionBoxBackground: '#3b3b3b',\r\n  selectionBoxBorderColor: '#fff',\r\n};\r\n\r\nexport const lightTheme: Theme = {\r\n  background: '#fff',\r\n  primary: '#222',\r\n  selectionBoxBackground: '#e3e3e3',\r\n  selectionBoxBorderColor: '#222',\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { darkTheme, lightTheme, Theme } from \"../../constants/themes\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ThemeService {\r\n  private lightTheme = lightTheme;\r\n  private darkTheme = darkTheme;\r\n  private currentTheme: Theme = this.lightTheme;\r\n\r\n  // Theme: light vs dark mode\r\n  // boxBorder: if true, shows a solid border around the selection box\r\n  // boxBackground: if true, adds background color to the selection box (compatible with mode color)\r\n  setMainTheme(theme: 'light' | 'dark',\r\n               boxBorder = false,\r\n               boxBackground  = true,\r\n               spanningHeightFactor: number) {\r\n    this.currentTheme = theme === 'light' ? this.lightTheme : this.darkTheme;\r\n\r\n    this.setElemStyle('--timeless-background-color', this.currentTheme.background);\r\n    this.setElemStyle('--timeless-primary-color', this.currentTheme.primary);\r\n\r\n    this.setElemStyle('--timeless-selection-box-background-color',boxBackground ? this.currentTheme.selectionBoxBackground : 'transparent');\r\n    this.setElemStyle('--timeless-selection-box-border-width',boxBorder ? '1px' : '0');\r\n    this.setElemStyle('--timeless-selection-box-border-color',boxBorder ? this.currentTheme.selectionBoxBorderColor : 'transparent');\r\n    this.setElemStyle('--timeless-selection-spanning-height-factor', spanningHeightFactor.toString())\r\n  }\r\n\r\n  createThemes(customLightTheme: Partial<Theme>, customDarkTheme: Partial<Theme>) {\r\n      this.lightTheme = { ...lightTheme, ...customLightTheme };\r\n      this.darkTheme = { ...darkTheme, ...customDarkTheme };\r\n  }\r\n\r\n  private setElemStyle(selector: string, style: string) {\r\n    document.documentElement.style.setProperty(selector, style);\r\n  }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'timeless-container',\r\n  templateUrl: './timeless-container.component.html',\r\n  styleUrls: ['./timeless-container.component.scss']\r\n})\r\nexport class TimelessContainerComponent {\r\n\r\n}\r\n","<div class=\"timeless-container\">\r\n  <ng-content select=\"[selection-highlight-spanning]\"></ng-content>\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport {\r\n  hoursArray12,\r\n  hoursArray24,\r\n  minutesArray1,\r\n  periodsArray, minutesArray\r\n} from \"../../../constants/time\";\r\nimport { PeriodIndex, PickerCategory, TimeIndex} from \"../../../constants/category\";\r\nimport { ThemeService } from \"../../../services/theme-service/theme.service\";\r\nimport { darkTheme, lightTheme, Theme } from \"../../../constants/themes\";\r\n\r\n@Component({\r\n  selector: 'timeless-time-picker',\r\n  templateUrl: './time-picker.component.html',\r\n  styleUrls: ['./time-picker.component.scss']\r\n})\r\nexport class TimePickerComponent implements OnInit{\r\n  /** General style configurations **/\r\n  @Input() theme: 'dark' | 'light' = 'light';\r\n  // User customized themes to substitute the defaults\r\n  @Input() customLightTheme: Partial<Theme> = lightTheme;\r\n  @Input() customDarkTheme: Partial<Theme> = darkTheme;\r\n  // Determines the size of the time picker component\r\n  @Input() size: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' = 'medium';\r\n\r\n\r\n  /** Selection box/highlight configuration **/\r\n  @Input() selectionHighlightStyle: 'spanning' | 'separate' | 'none' = 'none';\r\n  // Draws a solid border around the selection box\r\n  @Input() selectionBoxBorder = true;\r\n  // Adds background color to the selection box\r\n  @Input() selectionBoxBackground = true;\r\n  // Adds a colon divider between adjacent pickers\r\n  @Input() showDivider = false;\r\n\r\n\r\n  /** Time format configurations **/\r\n  @Input() hourFormat: 'hours24' | 'hours12' = 'hours24';\r\n  // Add a picker for seconds\r\n  @Input() showSeconds = false;\r\n  @Input() visibleItemsCount = 5;\r\n  @Input() startTime = '11:25:00';\r\n  // Show minutes that are a multiple of minuteStep\r\n  @Input() minuteStep: 1 | 5 | 10 | 15 | 20 | 30 = 1;\r\n\r\n\r\n  /** Return the time in both ISO and simple format **/\r\n  @Output() timeChangeIso = new EventEmitter<string>();\r\n  @Output() timeChangeSimple = new EventEmitter<string>();\r\n\r\n  pickerCategory = PickerCategory;\r\n  selectedIndex: TimeIndex = {\r\n    hours: 11,\r\n    minutes: 30,\r\n    seconds: 0,\r\n    period: PeriodIndex.AM\r\n  }\r\n\r\n  // Input arrays to pass to the picker\r\n  hourValues: string[] = hoursArray24;\r\n  minuteValues: string[] = minutesArray1;\r\n  secondValues: string[] = minutesArray1;\r\n  dayPeriods: string[] = periodsArray;\r\n\r\n  constructor(\r\n    private readonly themeService: ThemeService,\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.themeService.createThemes(this.customLightTheme, this.customDarkTheme);\r\n    this.themeService.setMainTheme(\r\n      this.theme,\r\n      this.selectionBoxBorder,\r\n      this.selectionBoxBackground,\r\n      this.visibleItemsCount + 1\r\n    );\r\n\r\n    this.hourValues = (this.hourFormat === 'hours24') ? hoursArray24 : hoursArray12;\r\n    this.minuteValues = minutesArray[this.minuteStep];\r\n    this.convertTimeToIndex(this.startTime, this.selectedIndex);\r\n  }\r\n\r\n  selectionChange(newIndex: number, type: string) {\r\n    switch (type) {\r\n      case this.pickerCategory.hours:\r\n        this.selectedIndex.hours = newIndex;\r\n        break;\r\n      case this.pickerCategory.minutes:\r\n        this.selectedIndex.minutes = newIndex;\r\n        break;\r\n      case this.pickerCategory.seconds:\r\n        this.selectedIndex.seconds = newIndex;\r\n        break;\r\n      case this.pickerCategory.period:\r\n        this.selectedIndex.period = newIndex;\r\n    }\r\n\r\n    this.emitTimeChange(this.selectedIndex);\r\n  }\r\n\r\n  // The base picker component doesn't care what the value is, but it rather works with the\r\n  // index within the input data array, so we must translate time to index (that matches the\r\n  // predefined times constants).\r\n  convertTimeToIndex(timeInput: string, selectedIndexes: TimeIndex) {\r\n    let hoursInput: number;\r\n    const timeDate = new Date(timeInput);\r\n    // Determine if the input string is in ISO or simple HH:mm:ss format\r\n    if (!isNaN(timeDate.getTime())) {\r\n      selectedIndexes.minutes = timeDate.getMinutes();\r\n      selectedIndexes.seconds = timeDate.getSeconds();\r\n      hoursInput = timeDate.getHours();\r\n    } else {\r\n      const [hours, minutes, seconds=0] = timeInput.split(':').map(Number);\r\n      selectedIndexes.minutes = minutes;\r\n      selectedIndexes.seconds = seconds;\r\n      hoursInput = hours;\r\n    }\r\n\r\n    // Make sure that the starting value of the minutes is a multiple of the minuteStep; round up\r\n    // to the nearest multiple otherwise.\r\n    selectedIndexes.minutes = Math.round(selectedIndexes.minutes / this.minuteStep) * this.minuteStep;\r\n    // Adjust the index based on the step value\r\n    selectedIndexes.minutes /= this.minuteStep;\r\n\r\n    if (this.hourFormat === 'hours24') {\r\n      selectedIndexes.hours = hoursInput\r\n    } else {\r\n      const hours = hoursInput % 12;\r\n      selectedIndexes.period = (hours >= 12) ? PeriodIndex.PM : PeriodIndex.AM;\r\n      selectedIndexes.hours = (hours === 0) ? 12 : hours;\r\n    }\r\n  }\r\n\r\n  emitTimeChange(selectedIndexes: TimeIndex) {\r\n    // We have to convert the index back to time format (both ISO and simple)\r\n    let hoursInput: number = this.selectedIndex.hours;\r\n    if (this.hourFormat === 'hours12') {\r\n      hoursInput = selectedIndexes.hours + (12 * selectedIndexes.period);\r\n      hoursInput %= 24;\r\n    }\r\n\r\n    const hours = hoursInput.toString().padStart(2, '0')\r\n    const minutes = (selectedIndexes.minutes * this.minuteStep).toString().padStart(2, '0');\r\n    const seconds = selectedIndexes.seconds.toString().padStart(2, '0');\r\n\r\n    const timeSimple = `${hours}:${minutes}:${seconds}`;\r\n\r\n    const timeIso = new Date();\r\n    timeIso.setHours(\r\n      Number(hours),\r\n      Number(minutes),\r\n      Number(seconds),\r\n      0\r\n    )\r\n\r\n    this.timeChangeSimple.emit(timeSimple);\r\n    this.timeChangeIso.emit(timeIso.toISOString());\r\n  }\r\n\r\n  minutesInfiniteStyle(): boolean {\r\n    const uniqueValues = 60 / this.minuteStep;\r\n    return uniqueValues >= this.visibleItemsCount;\r\n  }\r\n}\r\n","<timeless-container>\r\n  <div *ngIf=\"selectionHighlightStyle === 'spanning'\" selection-highlight-spanning\r\n       class=\"selection-box-spanning\"></div>\r\n  <ng-content selection-highlight-spanning select=\"[custom-selection-highlight]\"></ng-content>\r\n\r\n  <timeless-base-picker\r\n    [displayData]=\"hourValues\"\r\n    [visibleItemsCount]=\"visibleItemsCount\"\r\n    [size]=\"size\"\r\n    [selectedItemIndex]=\"selectedIndex.hours\"\r\n    (newSelectedIndex)=\"selectionChange($event, pickerCategory.hours)\"\r\n    [ngClass]=\"showDivider ? 'wheel-divider' : ''\"\r\n  >\r\n    <div *ngIf=\"selectionHighlightStyle === 'separate'\"\r\n         class=\"selection-box\"\r\n         selection-box></div>\r\n  </timeless-base-picker>\r\n\r\n  <timeless-base-picker\r\n    [displayData]=\"minuteValues\"\r\n    [visibleItemsCount]=\"visibleItemsCount\"\r\n    [size]=\"size\"\r\n    [selectedItemIndex]=\"selectedIndex.minutes\"\r\n    [infiniteWheelStyle]=\"minutesInfiniteStyle()\"\r\n    (newSelectedIndex)=\"selectionChange($event, pickerCategory.minutes)\"\r\n    [ngClass]=\"(showDivider && showSeconds) ? 'wheel-divider' : ''\"\r\n  >\r\n    <div *ngIf=\"selectionHighlightStyle === 'separate'\" class=\"selection-box\" selection-box></div>\r\n  </timeless-base-picker>\r\n\r\n  <timeless-base-picker\r\n    *ngIf=\"showSeconds\"\r\n    [displayData]=\"secondValues\"\r\n    [visibleItemsCount]=\"visibleItemsCount\"\r\n    [size]=\"size\"\r\n    [selectedItemIndex]=\"selectedIndex.seconds\"\r\n    (newSelectedIndex)=\"selectionChange($event,pickerCategory.seconds)\"\r\n  >\r\n    <div *ngIf=\"selectionHighlightStyle === 'separate'\" class=\"selection-box\" selection-box></div>\r\n  </timeless-base-picker>\r\n\r\n  <timeless-base-picker\r\n    *ngIf=\"hourFormat === 'hours12'\"\r\n    [displayData]=\"dayPeriods\"\r\n    [visibleItemsCount]=\"3\"\r\n    [selectedItemIndex]=\"selectedIndex.period\"\r\n    [size]=\"size\"\r\n    [infiniteWheelStyle]=\"false\"\r\n    (newSelectedIndex)=\"selectionChange($event, pickerCategory.period)\"\r\n  >\r\n    <div *ngIf=\"selectionHighlightStyle === 'separate'\" class=\"selection-box\" selection-box></div>\r\n  </timeless-base-picker>\r\n</timeless-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {TimelessContainerComponent} from \"./timeless-container.component\";\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [TimelessContainerComponent],\r\n  exports: [TimelessContainerComponent],\r\n  imports: [CommonModule]\r\n})\r\nexport class TimelessContainerModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {TimePickerComponent} from \"./time-picker.component\";\r\nimport {BasePickerModule} from \"../base-picker/base-picker.module\";\r\nimport {\r\n  TimelessContainerModule\r\n} from \"../../templates/timeless-container/timeless-container.module\";\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    TimePickerComponent,\r\n  ],\r\n  exports: [TimePickerComponent],\r\n  imports: [\r\n    CommonModule,\r\n    BasePickerModule,\r\n    TimelessContainerModule,\r\n  ]\r\n})\r\nexport class TimePickerModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { BasePickerModule } from \"./components/pages/base-picker/base-picker.module\";\r\nimport { TimePickerComponent } from \"./components/pages/time-picker/time-picker.component\";\r\nimport { TimePickerModule } from \"./components/pages/time-picker/time-picker.module\";\r\nimport {\r\n  TimelessContainerModule\r\n} from \"./components/templates/timeless-container/timeless-container.module\";\r\nimport { BasePickerComponent } from \"./components/pages/base-picker/base-picker.component\";\r\nimport {\r\n  TimelessContainerComponent\r\n} from \"./components/templates/timeless-container/timeless-container.component\";\r\nimport {CommonModule} from \"@angular/common\";\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    BasePickerModule,\r\n    TimePickerModule,\r\n    TimelessContainerModule,\r\n  ],\r\n  exports: [\r\n    BasePickerModule,\r\n    BasePickerComponent,\r\n    TimePickerModule,\r\n    TimePickerComponent,\r\n    TimelessContainerModule,\r\n    TimelessContainerComponent,\r\n  ]\r\n})\r\nexport class TimelessPickerModule { }\r\n","/*\r\n * Public API Surface of timeless-picker\r\n */\r\n\r\nexport * from './lib/timeless-picker.module';\r\nexport * from './lib/components/pages/base-picker/base-picker.module';\r\nexport * from './lib/components/pages/base-picker/base-picker.component';\r\nexport * from './lib/components/pages/time-picker/time-picker.module';\r\nexport * from './lib/components/pages/time-picker/time-picker.component';\r\nexport * from './lib/components/templates/timeless-container/timeless-container.module';\r\nexport * from './lib/components/templates/timeless-container/timeless-container.component';\r\nexport * from './lib/services/theme-service/theme.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ThemeService","i2","i3.BasePickerComponent","i4.TimelessContainerComponent"],"mappings":"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"}