{"version":3,"file":"ng-scroll-picker.mjs","sources":["../../../projects/ng-scroll-picker/src/lib/ng-scroll-picker.component.ts","../../../projects/ng-scroll-picker/src/lib/ng-scroll-picker.module.ts","../../../projects/ng-scroll-picker/src/public-api.ts","../../../projects/ng-scroll-picker/src/ng-scroll-picker.ts"],"sourcesContent":["import {\r\n  OnInit,\r\n  AfterViewInit,\r\n  OnDestroy,\r\n  Inject,\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  ElementRef,\r\n  ViewChild,\r\n  ViewChildren,\r\n} from '@angular/core';\r\n\r\nimport { PickerDataModel, PickerResponseModel } from './ng-scroll-data.model';\r\nexport { PickerDataModel, PickerResponseModel };\r\n\r\n@Component({\r\n  selector: 'ng-scroll-picker',\r\n  template: `\r\n    <div class=\"ng-data-picker flex-box\">\r\n      <div class=\"picker-handle-layer flex-box dir-column\">\r\n        <div data-type=\"top\" class=\"picker-top weight-1\"></div>\r\n        <div data-type=\"middle\" class=\"picker-middle tengah\"></div>\r\n        <div data-type=\"bottom\" class=\"picker-bottom weight-1\"></div>\r\n      </div>\r\n\r\n      <div\r\n        #pickerGroupLayer\r\n        *ngFor=\"let group of data; let gIndex = index\"\r\n        class=\"picker-group\"\r\n        [ngClass]=\"getGroupClass(gIndex)\"\r\n      >\r\n        <div class=\"picker-list\">\r\n          <div\r\n            *ngIf=\"group.divider; else ngIfElse\"\r\n            class=\"picker-item divider\"\r\n            [ngClass]=\"getItemClass(gIndex, gIndex, true)\"\r\n          >\r\n            {{ group.text }}\r\n          </div>\r\n\r\n          <ng-template #ngIfElse>\r\n            <div\r\n              #ngIfElse\r\n              *ngFor=\"let item of group.list; let iIndex = index\"\r\n              class=\"picker-item\"\r\n              [ngClass]=\"getItemClass(gIndex, iIndex)\"\r\n              [ngStyle]=\"getItemStyle(gIndex, iIndex)\"\r\n            >\r\n              {{ item.label }}\r\n            </div>\r\n          </ng-template>\r\n        </div>\r\n      </div>\r\n\r\n      <div #pickerHandleLayer class=\"picker-handle-layer flex-box dir-column\">\r\n        <div data-type=\"top\" class=\"picker-top weight-1\"></div>\r\n        <div data-type=\"middle\" class=\"picker-middle\"></div>\r\n        <div data-type=\"bottom\" class=\"picker-bottom weight-1\"></div>\r\n      </div>\r\n    </div>\r\n  `,\r\n  styles: [\r\n    `\r\n      .ng-data-picker {\r\n        font-size: 1rem;\r\n        height: 10em;\r\n        position: relative;\r\n        background-color: white;\r\n        overflow: hidden;\r\n      }\r\n      .ng-data-picker.black {\r\n        color: white;\r\n      }\r\n      .ng-data-picker .picker-group {\r\n      }\r\n      .ng-data-picker .picker-list {\r\n        height: 6.25em;\r\n        position: relative;\r\n        top: 4em;\r\n      }\r\n      .ng-data-picker .picker-item {\r\n        position: absolute;\r\n        top: 0;\r\n        left: 0;\r\n        overflow: hidden;\r\n        width: 100%;\r\n        text-overflow: ellipsis;\r\n        white-space: nowrap;\r\n        display: block;\r\n        text-align: center;\r\n        will-change: transform;\r\n        contain: strict;\r\n        height: 2em;\r\n        line-height: 2;\r\n        font-size: 1em;\r\n      }\r\n      .ng-data-picker .selected-item {\r\n      }\r\n\r\n      /* picker handle layer */\r\n      .ng-data-picker .picker-handle-layer {\r\n        position: absolute;\r\n        width: 100%;\r\n        height: calc(100% + 2px);\r\n        left: 0;\r\n        right: 0;\r\n        top: -1px;\r\n        bottom: -1px;\r\n      }\r\n      .ng-data-picker .picker-handle-layer .picker-top {\r\n        /* border-bottom: 0.55px solid rgba(74, 73, 89, 0.5); */\r\n        background: linear-gradient(\r\n          to bottom,\r\n          white 2%,\r\n          rgba(255, 255, 255, 0.1) 100%\r\n        );\r\n        transform: translate3d(0, 0, 5.625em);\r\n      }\r\n\r\n      .ng-data-picker .picker-handle-layer .picker-middle {\r\n        height: 2em;\r\n      }\r\n\r\n      .tengah {\r\n        background-color: rgba(220, 220, 220, 1);\r\n        border-radius: 5px;\r\n      }\r\n\r\n      .ng-data-picker .picker-handle-layer .picker-bottom {\r\n        /* border-top: 0.55px solid rgba(74, 73, 89, 0.5); */\r\n        background: linear-gradient(\r\n          to top,\r\n          white 2%,\r\n          rgba(255, 255, 255, 0.1) 100%\r\n        );\r\n        transform: translate3d(0, 0, 5.625em);\r\n      }\r\n\r\n      /* flex system */\r\n      .flex-box {\r\n        display: flex;\r\n      }\r\n      .flex-box.dir-column {\r\n        flex-direction: column;\r\n      }\r\n      .flex-box.dir-row {\r\n        flex-direction: row;\r\n      }\r\n\r\n      /* flex system - for items */\r\n      .flex-box .weight-1 {\r\n        flex: 1;\r\n      }\r\n      .flex-box .weight-2 {\r\n        flex: 2;\r\n      }\r\n      .flex-box .weight-3 {\r\n        flex: 3;\r\n      }\r\n      .flex-box .weight-4 {\r\n        flex: 4;\r\n      }\r\n      .flex-box .weight-5 {\r\n        flex: 5;\r\n      }\r\n      .flex-box .weight-6 {\r\n        flex: 6;\r\n      }\r\n      .flex-box .weight-7 {\r\n        flex: 7;\r\n      }\r\n      .flex-box .weight-8 {\r\n        flex: 8;\r\n      }\r\n      .flex-box .weight-9 {\r\n        flex: 9;\r\n      }\r\n      .flex-box .weight-10 {\r\n        flex: 10;\r\n      }\r\n      .flex-box .weight-11 {\r\n        flex: 11;\r\n      }\r\n      .flex-box .weight-12 {\r\n        flex: 12;\r\n      }\r\n    `,\r\n  ],\r\n})\r\nexport class NgScrollPickerComponent\r\n  implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n  @ViewChildren('pickerGroupLayer') pickerGroupLayer: any;\r\n  @ViewChild('pickerHandleLayer') pickerHandleLayer: any;\r\n\r\n  @Input() data: PickerDataModel[] = [];\r\n  @Output() change: EventEmitter<PickerResponseModel> =\r\n    new EventEmitter<PickerResponseModel>();\r\n\r\n  currentIndexList!: number[];\r\n  lastCurrentIndexList!: number[];\r\n  groupsRectList!: any[];\r\n  touchOrMouse = {\r\n    isTouchable: 'ontouchstart' in window,\r\n    isMouseDown: false,\r\n  };\r\n  draggingInfo = {\r\n    isDragging: false,\r\n    groupIndex: null,\r\n    startPageY: null,\r\n  } as {\r\n    isDragging: boolean;\r\n    groupIndex: number | null;\r\n    startPageY: number | null;\r\n  };\r\n  itemPerDegree = 23;\r\n  safeDoTimeoutId: any = null;\r\n\r\n  constructor(@Inject(ElementRef) elementRef: ElementRef) {}\r\n\r\n  ngOnInit() {\r\n    this.currentIndexList = this.getInitialCurrentIndexList();\r\n    this.lastCurrentIndexList = new Array<number>().concat(\r\n      this.currentIndexList\r\n    );\r\n\r\n    this.groupsRectList = new Array(this.data.length);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.eventsRegister();\r\n    window.addEventListener('resize', this.safeGetRectsBindEvents.bind(this));\r\n    this.getGroupsRectList();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    window.removeEventListener(\r\n      'resize',\r\n      this.safeGetRectsBindEvents.bind(this)\r\n    );\r\n  }\r\n\r\n  setGroupData(gIndex: number, groupData: PickerDataModel) {\r\n    if (!this.currentIndexList) {\r\n      this.currentIndexList = this.getInitialCurrentIndexList();\r\n    }\r\n    this.data[gIndex] = groupData;\r\n    const iCI = groupData.currentIndex;\r\n    let movedIndex = 0;\r\n    if (\r\n      typeof iCI === 'number' &&\r\n      iCI >= 0 &&\r\n      groupData.list &&\r\n      groupData.list.length &&\r\n      iCI <= groupData.list.length - 1\r\n    ) {\r\n      movedIndex = Math.round(iCI);\r\n    }\r\n    this.currentIndexList[gIndex] = movedIndex;\r\n    this.lastCurrentIndexList = new Array<number>().concat(\r\n      this.currentIndexList\r\n    );\r\n  }\r\n\r\n  getInitialCurrentIndexList() {\r\n    return this.data.map((item, index) => {\r\n      const iCI = item.currentIndex;\r\n      if (\r\n        typeof iCI === 'number' &&\r\n        iCI >= 0 &&\r\n        item.list &&\r\n        item.list.length &&\r\n        iCI <= item.list.length - 1\r\n      ) {\r\n        return Math.round(iCI);\r\n      }\r\n      return 0;\r\n    });\r\n  }\r\n\r\n  safeGetRectsBindEvents() {\r\n    if (this.safeDoTimeoutId) {\r\n      clearTimeout(this.safeDoTimeoutId);\r\n    }\r\n    this.safeDoTimeoutId = setTimeout(() => {\r\n      this.getGroupsRectList();\r\n    }, 200);\r\n  }\r\n\r\n  getGroupsRectList() {\r\n    if (this.pickerGroupLayer) {\r\n      this.pickerGroupLayer.toArray().forEach((item: any, index: number) => {\r\n        this.groupsRectList[index] = item.nativeElement.getBoundingClientRect();\r\n      });\r\n    }\r\n  }\r\n\r\n  eventsRegister() {\r\n    const handleEventLayer = this.pickerHandleLayer.nativeElement;\r\n    if (handleEventLayer) {\r\n      this.addEventsForElement(handleEventLayer);\r\n    }\r\n  }\r\n\r\n  addEventsForElement(el: any) {\r\n    const _ = this.touchOrMouse.isTouchable;\r\n    const eventHandlerList = [\r\n      { name: _ ? 'touchstart' : 'mousedown', handler: this.handleStart },\r\n      { name: _ ? 'touchmove' : 'mousemove', handler: this.handleMove },\r\n      { name: _ ? 'touchend' : 'mouseup', handler: this.handleEnd },\r\n      { name: _ ? 'touchcancel' : 'mouseleave', handler: this.handleCancel },\r\n      { name: 'wheel', handler: this.handleScroll },\r\n    ];\r\n    eventHandlerList.forEach((item, index) => {\r\n      el.removeEventListener(item.name, item.handler, false);\r\n      el.addEventListener(item.name, item.handler.bind(this), false);\r\n    });\r\n  }\r\n\r\n  triggerMiddleLayerGroupClick(gIndex: any) {\r\n    const data = this.data;\r\n    if (data[gIndex].onClick !== undefined) {\r\n      const click = data[gIndex].onClick as Function;\r\n      if (\r\n        typeof gIndex === 'number' &&\r\n        typeof data[gIndex].onClick === 'function'\r\n      ) {\r\n        // click(\r\n        //   gIndex,\r\n        //   this.currentIndexList[gIndex],\r\n        //   this.data[gIndex].list[this.currentIndexList[gIndex]]\r\n        // );\r\n        const response: PickerResponseModel = {\r\n          gIndex,\r\n          iIndex: this.currentIndexList[gIndex],\r\n          selectedValue: this.data[gIndex].list[this.currentIndexList[gIndex]],\r\n          groupName: this.data[gIndex].groupName,\r\n        };\r\n        click(response);\r\n      }\r\n    }\r\n  }\r\n\r\n  triggerAboveLayerClick(ev: any, gIndex: any) {\r\n    const movedIndex = this.currentIndexList[gIndex] + 1;\r\n    this.currentIndexList[gIndex] = movedIndex;\r\n    this.correctionCurrentIndex(ev, gIndex);\r\n  }\r\n\r\n  triggerMiddleLayerClick(ev: any, gIndex: any) {\r\n    this.triggerMiddleLayerGroupClick(gIndex);\r\n  }\r\n\r\n  triggerBelowLayerClick(ev: any, gIndex: any) {\r\n    const movedIndex = this.currentIndexList[gIndex] - 1;\r\n    this.currentIndexList[gIndex] = movedIndex;\r\n    this.correctionCurrentIndex(ev, gIndex);\r\n  }\r\n\r\n  getTouchInfo(ev: any) {\r\n    return this.touchOrMouse.isTouchable\r\n      ? ev.changedTouches[0] || ev.touches[0]\r\n      : ev;\r\n  }\r\n\r\n  getGroupIndexBelongsEvent(ev: any) {\r\n    const touchInfo = this.getTouchInfo(ev);\r\n    for (let i = 0; i < this.groupsRectList.length; i++) {\r\n      const item = this.groupsRectList[i];\r\n      if (item.left < touchInfo.pageX && touchInfo.pageX < item.right) {\r\n        return i;\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  handleEventClick(ev: any) {\r\n    const gIndex = this.getGroupIndexBelongsEvent(ev);\r\n    switch (ev.target.dataset.type) {\r\n      case 'top':\r\n        this.triggerAboveLayerClick(ev, gIndex);\r\n        break;\r\n      case 'middle':\r\n        this.triggerMiddleLayerClick(ev, gIndex);\r\n        break;\r\n      case 'bottom':\r\n        this.triggerBelowLayerClick(ev, gIndex);\r\n        break;\r\n      default:\r\n    }\r\n  }\r\n\r\n  handleStart(ev: any) {\r\n    if (ev.cancelable) {\r\n      ev.preventDefault();\r\n      ev.stopPropagation();\r\n    }\r\n    const touchInfo = this.getTouchInfo(ev);\r\n    this.draggingInfo.startPageY = touchInfo.pageY;\r\n    if (!this.touchOrMouse.isTouchable) {\r\n      this.touchOrMouse.isMouseDown = true;\r\n    }\r\n  }\r\n\r\n  handleMove(ev: any) {\r\n    ev.preventDefault();\r\n    ev.stopPropagation();\r\n    if (this.touchOrMouse.isTouchable || this.touchOrMouse.isMouseDown) {\r\n      this.draggingInfo.isDragging = true;\r\n      this.setCurrentIndexOnMove(ev);\r\n    }\r\n  }\r\n\r\n  handleEnd(ev: any) {\r\n    ev.preventDefault();\r\n    ev.stopPropagation();\r\n    if (!this.draggingInfo.isDragging) {\r\n      this.handleEventClick(ev);\r\n    }\r\n    this.draggingInfo.isDragging = false;\r\n    this.touchOrMouse.isMouseDown = false;\r\n    this.correctionAfterDragging(ev);\r\n  }\r\n\r\n  handleCancel(ev: any) {\r\n    ev.preventDefault();\r\n    ev.stopPropagation();\r\n    if (this.touchOrMouse.isTouchable || this.touchOrMouse.isMouseDown) {\r\n      this.correctionAfterDragging(ev);\r\n      this.touchOrMouse.isMouseDown = false;\r\n      this.draggingInfo.isDragging = false;\r\n    }\r\n  }\r\n\r\n  handleScroll(ev: any) {\r\n    ev.preventDefault();\r\n    ev.stopPropagation();\r\n    if (ev instanceof WheelEvent) {\r\n      ev = ev as WheelEvent;\r\n      const gIndex = this.getGroupIndexBelongsEvent(ev);\r\n\r\n      const deltaY = ev.deltaY;\r\n\r\n      if (deltaY > 0) {\r\n        // Scrolling down\r\n        console.log('Scrolling down');\r\n        this.triggerAboveLayerClick(ev, gIndex);\r\n      } else if (deltaY < 0) {\r\n        // Scrolling up\r\n        console.log('Scrolling up');\r\n        this.triggerBelowLayerClick(ev, gIndex);\r\n      } else {\r\n        // No vertical scrolling\r\n        console.log('No vertical scrolling');\r\n      }\r\n    }\r\n  }\r\n\r\n  setCurrentIndexOnMove(ev: any) {\r\n    const touchInfo = this.getTouchInfo(ev);\r\n    if (this.draggingInfo.groupIndex === null) {\r\n      this.draggingInfo.groupIndex = this.getGroupIndexBelongsEvent(ev);\r\n    }\r\n    if (this.draggingInfo.groupIndex !== null) {\r\n      const gIndex = this.draggingInfo.groupIndex;\r\n      if (\r\n        typeof gIndex === 'number' &&\r\n        (this.data[gIndex].divider || !this.data[gIndex].list)\r\n      ) {\r\n        return;\r\n      }\r\n      if (this.draggingInfo.startPageY !== null) {\r\n        const moveCount = (this.draggingInfo.startPageY - touchInfo.pageY) / 32;\r\n        const movedIndex = this.currentIndexList[gIndex] + moveCount;\r\n        this.currentIndexList[gIndex] = movedIndex;\r\n        this.draggingInfo.startPageY = touchInfo.pageY;\r\n      }\r\n    }\r\n  }\r\n\r\n  correctionAfterDragging(ev: any) {\r\n    const gIndex = this.draggingInfo.groupIndex;\r\n    this.correctionCurrentIndex(ev, gIndex);\r\n    this.draggingInfo.groupIndex = null;\r\n    this.draggingInfo.startPageY = null;\r\n    this.getCurrentIndexList();\r\n  }\r\n\r\n  correctionCurrentIndex(ev: any, gIndex: any) {\r\n    setTimeout(() => {\r\n      if (\r\n        typeof gIndex === 'number' &&\r\n        this.data[gIndex].divider !== true &&\r\n        this.data[gIndex].list.length > 0\r\n      ) {\r\n        const unsafeGroupIndex = this.currentIndexList[gIndex];\r\n        let movedIndex = unsafeGroupIndex;\r\n        if (unsafeGroupIndex > this.data[gIndex].list.length - 1) {\r\n          movedIndex = this.data[gIndex].list.length - 1;\r\n        } else if (unsafeGroupIndex < 0) {\r\n          movedIndex = 0;\r\n        }\r\n        movedIndex = Math.round(movedIndex);\r\n        this.currentIndexList[gIndex] = movedIndex;\r\n        if (movedIndex !== this.lastCurrentIndexList[gIndex]) {\r\n          const response: PickerResponseModel = {\r\n            gIndex,\r\n            iIndex: movedIndex,\r\n            selectedValue: this.data[gIndex].list[movedIndex],\r\n            groupName: this.data[gIndex].groupName,\r\n          };\r\n          // this.change.emit({\r\n          //   gIndex,\r\n          //   iIndex: movedIndex,\r\n          //   selectedValue: this.data[gIndex].list[movedIndex],\r\n          // });\r\n          this.change.emit(response);\r\n        }\r\n        this.lastCurrentIndexList = new Array<number>().concat(\r\n          this.currentIndexList\r\n        );\r\n      }\r\n    }, 100);\r\n  }\r\n\r\n  isCurrentItem(gIndex: any, iIndex: any) {\r\n    return this.currentIndexList[gIndex] === iIndex;\r\n  }\r\n\r\n  getCurrentIndexList() {\r\n    return this.currentIndexList;\r\n  }\r\n\r\n  getGroupClass(gIndex: any) {\r\n    const group = this.data[gIndex];\r\n    const defaultWeightClass = 'weight-' + (group.weight || 1);\r\n    const groupClass = [defaultWeightClass];\r\n    if (group.className) {\r\n      groupClass.push(group.className);\r\n    }\r\n    return groupClass;\r\n  }\r\n\r\n  getItemClass(gIndex: any, iIndex: any, isDivider = false) {\r\n    const group = this.data[gIndex];\r\n    const itemClass = [];\r\n    if (!isDivider && this.isCurrentItem(gIndex, iIndex)) {\r\n      itemClass.push('smooth-item-selected');\r\n    }\r\n    if (group.textAlign) {\r\n      itemClass.push('text-' + group.textAlign);\r\n    }\r\n    return itemClass;\r\n  }\r\n\r\n  getItemStyle(gIndex: any, iIndex: any) {\r\n    const gapCount = this.currentIndexList[gIndex] - iIndex;\r\n    if (Math.abs(gapCount) < 90 / this.itemPerDegree) {\r\n      const rotateStyle: {\r\n        transform: string;\r\n        opacity: string;\r\n        transition?: string;\r\n        color?: string;\r\n      } = {\r\n        transform:\r\n          'rotateX(' +\r\n          gapCount * this.itemPerDegree +\r\n          'deg) translate3d(0, 0, 5.625em)',\r\n        opacity: (\r\n          1 -\r\n          Math.abs(gapCount) / (90 / this.itemPerDegree)\r\n        ).toString(),\r\n        // color: gapCount === 0 ? 'rgba(237, 27, 45, 1)' : '',\r\n      };\r\n      if (!this.draggingInfo.isDragging) {\r\n        rotateStyle['transition'] = 'transform 150ms ease-out';\r\n      }\r\n      return rotateStyle;\r\n    }\r\n    if (gapCount > 0) {\r\n      return { transform: 'rotateX(90deg) translate3d(0, 0, 5.625em)' };\r\n    } else {\r\n      return { transform: 'rotateX(-90deg) translate3d(0, 0, 5.625em)' };\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgScrollPickerComponent } from './ng-scroll-picker.component';\r\n\r\n@NgModule({\r\n  declarations: [NgScrollPickerComponent],\r\n  imports: [CommonModule],\r\n  exports: [NgScrollPickerComponent],\r\n})\r\nexport class NgScrollPickerModule {}\r\n","/*\r\n * Public API Surface of ng-scroll-picker\r\n */\r\n\r\nexport * from './lib/ng-scroll-picker.component';\r\nexport * from './lib/ng-scroll-picker.module';\r\nexport * from './lib/ng-scroll-data.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}