{"version":3,"file":"cty-mobile-ui-quick-access.mjs","sources":["../../../packages/components/quick-access/quick-access.ts","../../../packages/components/quick-access/quick-access.html","../../../packages/components/quick-access/module.ts","../../../packages/components/quick-access/cty-mobile-ui-quick-access.ts"],"sourcesContent":["import {\r\n  OnChanges,\r\n  ViewChild,\r\n  Output,\r\n  EventEmitter,\r\n  Renderer2,\r\n  AfterViewInit,\r\n  Component,\r\n  OnInit,\r\n  Input,\r\n  ElementRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { QuickAccessOption, Props, ClickEvent } from './types';\r\nimport { CtyIcon } from 'cty-mobile-ui/icon';\r\nimport { CTYDom } from 'cty-mobile-ui/utils';\r\n\r\n@Component({\r\n  selector: 'cty-quick-access',\r\n  standalone: true,\r\n  imports: [CommonModule, CtyIcon],\r\n  templateUrl: './quick-access.html',\r\n  styleUrl: './quick-access.scss',\r\n})\r\nexport class CtyQuickAccess implements OnInit, OnChanges, AfterViewInit {\r\n  @Input() options: QuickAccessOption[] = [];\r\n  @Input() col: number | string = 5;\r\n  @Input() row: number | string = 3;\r\n  @Input() props: Props = {};\r\n  @Input() paper: boolean = true;\r\n  @Input() quickThreshold: number = 10;\r\n  @Input() slideThreshold: number = 2;\r\n  @Input() transition: string | number = '0.5s';\r\n  @Output() ctyTap = new EventEmitter<object>();\r\n  @Output() ctySlide = new EventEmitter<CtyQuickAccess>();\r\n  @Output() ctySlideEnd = new EventEmitter<number>();\r\n  @Output() ctyInit = new EventEmitter<number>();\r\n  @ViewChild('slideRef') slideEl!: ElementRef;\r\n\r\n  totalWidth: number = 0; // 总宽度\r\n  width: number = 0; // 单个宽度\r\n  startVal: number = 0; // 拖拽开始的值\r\n  currentPage: number = 0; // 默认显示第一页\r\n  totalPage: number = 0; //总页数\r\n  list: QuickAccessOption[][] = [];\r\n  tranX = 0;\r\n  flag = 0;\r\n  childElWidth = 0;\r\n  changeX = 0;\r\n  _props = {\r\n    icon: 'icon',\r\n    image: 'image',\r\n    text: 'text',\r\n  };\r\n  isMouseDown = false;\r\n\r\n  constructor(private _render: Renderer2) {}\r\n\r\n  ngOnChanges() {\r\n    this.processData();\r\n  }\r\n  ngOnInit() {\r\n    this._props = Object.assign(this._props, this.props);\r\n    this.transition = typeof this.transition === 'number' ? `${this.transition}s` : this.transition;\r\n  }\r\n  ngAfterViewInit() {\r\n    this.processData();\r\n  }\r\n\r\n  processData() {\r\n    if (this.options.length > 0) {\r\n      const size = +this.col * +this.row;\r\n      this.totalPage = Math.ceil(this.options.length / size);\r\n      this.list.splice(0);\r\n      for (let i = 1; i <= this.totalPage; i++) {\r\n        this.list.push(this.options.splice(0, size));\r\n      }\r\n      this.width = 100 / +this.col;\r\n      this.totalWidth = 100 * this.totalPage;\r\n      this.ctyInit.emit(this.totalPage);\r\n      setTimeout(() => {\r\n        const elWidth = this.slideEl.nativeElement.offsetWidth;\r\n        this.childElWidth = elWidth / this.totalPage;\r\n      }, 100);\r\n    }\r\n  }\r\n\r\n  start(e: ClickEvent) {\r\n    const { x } = CTYDom.getPagePoint(e);\r\n    this.startVal = x;\r\n    this.isMouseDown = true;\r\n    this.flag = 0;\r\n    this._render.setStyle(this.slideEl.nativeElement, 'transition', `none`);\r\n  }\r\n  move(e: ClickEvent) {\r\n    if (!this.isMouseDown) {\r\n      return;\r\n    }\r\n    const { x:pageX } = CTYDom.getPagePoint(e);\r\n    let flag = pageX - this.startVal;\r\n    this.changeX = flag;\r\n    this.flag += flag;\r\n    this.startVal = pageX;\r\n    if (this.currentPage === this.totalPage - 1 && this.flag < 0) {\r\n      return;\r\n    }\r\n    if (this.currentPage === 0 && this.flag > 0) {\r\n      return;\r\n    }\r\n    this._render.setStyle( this.slideEl.nativeElement, 'transform', `translateX(${this.tranX + this.flag}px)` );\r\n    this.ctySlide.emit();\r\n  }\r\n  end() {\r\n    this.isMouseDown = false;\r\n    if (Math.abs(this.flag) > this.childElWidth / this.slideThreshold) {\r\n      this.flag > 0 ? this.currentPage-- : this.currentPage++;\r\n    } else if (Math.abs(this.changeX) > this.quickThreshold) {\r\n      this.changeX > 0 ? this.currentPage-- : this.currentPage++;\r\n    }\r\n    this.currentPage = Math.max(0, this.currentPage);\r\n    this.currentPage = Math.min(this.currentPage, this.totalPage - 1);\r\n    this.tranX = -this.currentPage * this.childElWidth;\r\n    this._render.setStyle( this.slideEl.nativeElement, 'transition', `all ${this.transition}` );\r\n    this._render.setStyle( this.slideEl.nativeElement, 'transform',  `translateX(${this.tranX}px)` );\r\n    this.ctySlideEnd.emit(this.currentPage);\r\n  }\r\n  getActiveIndex() {\r\n    return this.currentPage;\r\n  }\r\n  clickItem(item: QuickAccessOption, index: number) {\r\n    this.ctyTap.emit({ item, index });\r\n  }\r\n}\r\n","<div class=\"cty-quick-access\">\r\n    <ng-content select=\"[name=header]\"></ng-content>\r\n    <div\r\n      #slideRef\r\n      class=\"cty-quick-access__wrapper flex-align-start\"\r\n      [ngStyle]=\"{ width: totalWidth + '%' }\"\r\n      (touchstart)=\"start($event)\"\r\n      (touchmove)=\"move($event)\"\r\n      (touchend)=\"end()\"\r\n      (mousedown)=\"start($event)\"\r\n      (mousemove)=\"move($event)\"\r\n      (mouseup)=\"end()\"\r\n    >\r\n        <div class=\"cty-quick-access__list flex-wrap\" *ngFor=\"let dataList of list\">\r\n            <div\r\n                class=\"cty-quick-access__list-item flex-column-center\"\r\n                *ngFor=\"let item of dataList; let idx = index\"\r\n                [ngStyle]=\"{ width: width + '%' }\"\r\n                (click)=\"clickItem(item, idx)\"\r\n            >\r\n                <cty-icon\r\n                    *ngIf=\"item[_props.icon]\"\r\n                    [name]=\"item[_props.icon]\"\r\n                    class=\"cty-quick-access__list-item-icon\"\r\n                >\r\n                </cty-icon>\r\n                <img\r\n                    *ngIf=\"item[_props.image]\"\r\n                    [src]=\"item[_props.image]\"\r\n                    class=\"cty-quick-access__list-item-img\"\r\n                />\r\n                <div\r\n                    *ngIf=\"item[_props.text]\"\r\n                    class=\"cty-quick-access__list-item-text\"\r\n                >\r\n                    {{ item[_props.text] }}\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <ng-content select=\"[name=bottom]\"></ng-content>\r\n    <div\r\n      class=\"cty-quick-access__pagination flex-center\"\r\n      *ngIf=\"list.length > 1 && paper\"\r\n    >\r\n        <div\r\n            *ngFor=\"let dataList of list; let idx = index\"\r\n            class=\"cty-quick-access__pagination-point\"\r\n            [class.active]=\"idx === currentPage\"\r\n        ></div>\r\n    </div>\r\n    <ng-content select=\"[name=p-bottom]\"></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CtyQuickAccess } from './quick-access';\r\n@NgModule({\r\n  imports: [CommonModule, CtyQuickAccess],\r\n  exports: [CtyQuickAccess],\r\n})\r\nexport class CtyQuickAccessModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}