{"version":3,"file":"ng-nest-ui-slider.mjs","sources":["../../../../lib/ng-nest/ui/slider/slider.property.ts","../../../../lib/ng-nest/ui/slider/slider.component.ts","../../../../lib/ng-nest/ui/slider/slider.component.html","../../../../lib/ng-nest/ui/slider/slider.module.ts","../../../../lib/ng-nest/ui/slider/ng-nest-ui-slider.ts"],"sourcesContent":["import { XPropertyFunction, XToDataArray, XToBoolean, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, model, output } from '@angular/core';\r\nimport type {\r\n  XTemplate,\r\n  XIdentityProperty,\r\n  XJustify,\r\n  XSize,\r\n  XNumber,\r\n  XBoolean,\r\n  XTrigger,\r\n  XDataArray\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Slider\r\n * @selector x-slider\r\n * @decorator component\r\n */\r\nexport const XSliderPrefix = 'x-slider';\r\nconst X_SLIDER_CONFIG_NAME = 'slider';\r\n\r\n/**\r\n * Slider Property\r\n */\r\n@Component({ selector: `${XSliderPrefix}-property`, template: '' })\r\nexport class XSliderProperty extends XPropertyFunction(X_SLIDER_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 节点数据\r\n   * @en_US Node data\r\n   */\r\n  readonly data = input<XSliderNode[], XDataArray<XSliderNode>>([], { transform: XToDataArray });\r\n  /**\r\n   * @zh_CN 滑动动画\r\n   * @en_US Sliding animation\r\n   */\r\n  readonly animated = input<boolean, XBoolean>(this.config?.animated ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 当前激活的索引\r\n   * @en_US Currently active index\r\n   */\r\n  readonly activatedIndex = model<number>(0);\r\n  /**\r\n   * @zh_CN 触发方式\r\n   * @en_US Trigger mode\r\n   */\r\n  readonly trigger = input<XSliderTrigger>(this.config?.trigger ?? 'click');\r\n  /**\r\n   * @zh_CN 排列方式\r\n   * @en_US Arrangement\r\n   */\r\n  readonly layout = input<XSliderLayout>('row');\r\n  /**\r\n   * @zh_CN 对齐方式\r\n   * @en_US Alignment\r\n   */\r\n  readonly justify = input<XJustify>('start');\r\n  /**\r\n   * @zh_CN 节点文字对齐方式\r\n   * @en_US Node text alignment\r\n   */\r\n  readonly nodeJustify = input<XJustify>('center');\r\n  /**\r\n   * @zh_CN 节点自定义模板\r\n   * @en_US Node custom template\r\n   */\r\n  readonly nodeTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 尺寸\r\n   * @en_US Size\r\n   */\r\n  readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n  /**\r\n   * @zh_CN 节点显示不下的时候显示展开所有的按钮，排列方式为 row 的时候生效\r\n   * @en_US When the node is not displayed, display all the buttons, and the arrangement is effective when the arrangement is row\r\n   */\r\n  readonly showExpand = input<boolean, XBoolean>(this.config?.showExpand ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 节点显示不下的时候显示左右/上下的箭头\r\n   * @en_US Nodes can't show the show about/of the up and down arrow\r\n   */\r\n  readonly autoShowArrow = input<boolean, XBoolean>(this.config?.autoShowArrow ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 展开所有弹框的最大高度\r\n   * @en_US Expand the maximum height of all bomb frames\r\n   */\r\n  readonly expandMaxHeight = input<string, XNumber>(this.config?.expandMaxHeight ?? '15rem', {\r\n    transform: XToCssPixelValue\r\n  });\r\n  /**\r\n   * @zh_CN 显示描点\r\n   * @en_US Show anchor\r\n   */\r\n  readonly showAnchor = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 激活节点改变事件\r\n   * @en_US Activate node change event\r\n   */\r\n  readonly indexChange = output<number>();\r\n  /**\r\n   * @zh_CN 激活节点改变事件\r\n   * @en_US Activate node change event\r\n   */\r\n  readonly nodeChange = output<XSliderNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN Slider 数据对象\r\n * @en_US Slider data object\r\n */\r\nexport interface XSliderNode extends XIdentityProperty {\r\n  /**\r\n   * @zh_CN 标题，支持模板\r\n   * @en_US Title, support template\r\n   */\r\n  label?: XTemplate;\r\n  /**\r\n   * @zh_CN 禁用节点\r\n   * @en_US Node disabled\r\n   */\r\n  disabled?: boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\nexport type XSliderTrigger = XTrigger;\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XSliderLayout = 'row' | 'column';\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  ChangeDetectionStrategy,\r\n  AfterViewInit,\r\n  OnDestroy,\r\n  inject,\r\n  computed,\r\n  signal,\r\n  viewChild\r\n} from '@angular/core';\r\nimport { XSliderPrefix, XSliderNode, XSliderProperty } from './slider.property';\r\nimport { XResize, XPosition, XIsUndefined, XIsEmpty, XResizeObserver } from '@ng-nest/ui/core';\r\nimport { Subject, of } from 'rxjs';\r\nimport { takeUntil, debounceTime, delay } from 'rxjs/operators';\r\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XDropdownComponent } from '@ng-nest/ui/dropdown';\r\n\r\n@Component({\r\n  selector: `${XSliderPrefix}`,\r\n  imports: [NgClass, NgStyle, NgTemplateOutlet, XLinkComponent, XButtonComponent, XOutletDirective, XDropdownComponent],\r\n  templateUrl: './slider.component.html',\r\n  styleUrls: ['./slider.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSliderComponent extends XSliderProperty implements OnDestroy, AfterViewInit {\r\n  sliderScroll = viewChild.required('sliderScroll', { read: ElementRef<HTMLElement> });\r\n  sliderNodes = viewChild.required('sliderNodes', { read: ElementRef<HTMLElement> });\r\n  activated = signal<XSliderNode | null>(null);\r\n  showArrow = signal(false);\r\n  activatedId = signal('');\r\n  timeoutHide: any;\r\n  hoverDelay = 200;\r\n  hoverDelayUnsub = new Subject<void>();\r\n  offset = signal(0);\r\n  transform = computed(() => `translate${this.dir()}(-${this.offset()}px)`);\r\n\r\n  direction = signal<XPosition>('right');\r\n  maxOffset = signal(0);\r\n  dir = computed(() => (this.layout() === 'row' ? 'X' : 'Y'));\r\n  sizeName = computed(() => (this.layout() === 'row' ? 'Width' : 'Height'));\r\n  highlightBox = computed(() => {\r\n    this.resizeChanged();\r\n    if (!this.activated()) return {};\r\n    const activeEle: HTMLElement = this.sliderNodes().nativeElement.querySelector(\r\n      `li:nth-child(${this.activatedIndex() + 1})`\r\n    )!;\r\n    if (!activeEle) return {};\r\n    return {\r\n      width: `${activeEle.offsetWidth}px`,\r\n      height: `${activeEle.offsetHeight}px`,\r\n      left: `${activeEle.offsetLeft}px`,\r\n      top: `${activeEle.offsetTop}px`\r\n    };\r\n  });\r\n  resizeChanged = signal<DOMRectReadOnly | null>(null);\r\n  private unSubject = new Subject<void>();\r\n  private resizeObserver!: XResizeObserver;\r\n  elementRef = inject(ElementRef);\r\n\r\n  classMap = computed(() => ({\r\n    [`${XSliderPrefix}-${this.layout()}`]: !XIsEmpty(this.layout()),\r\n    [`${XSliderPrefix}-show-arrow`]: this.showArrow()\r\n  }));\r\n  scrollClassMap = computed(() => ({\r\n    [`x-justify-${this.justify()}`]: !XIsEmpty(this.justify())\r\n  }));\r\n  nodeClassMap = computed(() => ({\r\n    [`x-justify-${this.nodeJustify()}`]: !XIsEmpty(this.nodeJustify()),\r\n    [`x-size-${this.size()}`]: !XIsEmpty(this.size())\r\n  }));\r\n\r\n  ngOnDestroy(): void {\r\n    this.unSubject.next();\r\n    this.unSubject.complete();\r\n    this.resizeObserver?.disconnect();\r\n    this.hoverDelayUnsub.next();\r\n    this.hoverDelayUnsub.complete();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.setSubscribe();\r\n    this.setActivated();\r\n  }\r\n\r\n  setSubscribe() {\r\n    XResize(this.sliderScroll().nativeElement, this.sliderNodes().nativeElement)\r\n      .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n      .subscribe((x) => {\r\n        this.resizeObserver = x.resizeObserver;\r\n        this.sizeChecked();\r\n        this.setActivated();\r\n        this.resizeChanged.set(x.entry?.contentRect || null);\r\n      });\r\n  }\r\n\r\n  onEnter(event: Event | null, node: XSliderNode, index: number) {\r\n    if (node.disabled || this.trigger() === 'click') return;\r\n    of(true)\r\n      .pipe(delay(this.hoverDelay), takeUntil(this.hoverDelayUnsub))\r\n      .subscribe(() => {\r\n        if (this.timeoutHide) {\r\n          clearTimeout(this.timeoutHide);\r\n          this.timeoutHide = null;\r\n        }\r\n        this.nodeClick(event, node, index);\r\n      });\r\n  }\r\n\r\n  onLeave(node: XSliderNode) {\r\n    if (node.disabled || this.trigger() === 'click') return;\r\n    this.hoverDelayUnsub.next();\r\n  }\r\n\r\n  nodeClick(event: Event | null, node: XSliderNode, index: number) {\r\n    if (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n    }\r\n    if (node.disabled) return;\r\n    this.setDirection(index, this.activatedIndex());\r\n    this.activatedIndex.set(index);\r\n    this.activated.set(node);\r\n    this.activatedId.set(node.id);\r\n    this.setTranslate();\r\n    this.indexChange.emit(index);\r\n    this.nodeChange.emit(node);\r\n  }\r\n\r\n  dropdownClick(node: XSliderNode) {\r\n    const index = this.data().indexOf(node);\r\n    this.nodeClick(null, node, index);\r\n  }\r\n\r\n  scrollPrev() {\r\n    if (this.offset() === 0) return;\r\n    const scrollSize = this.sliderScroll().nativeElement[`offset${this.sizeName()}`];\r\n    const currentOffset = this.offset();\r\n    if (!currentOffset) return;\r\n    const offset = currentOffset > scrollSize ? currentOffset - scrollSize : 0;\r\n    this.offset.set(Math.floor(offset));\r\n  }\r\n\r\n  scrollNext() {\r\n    if (this.offset() === this.maxOffset()) return;\r\n    const sliderSize = this.sliderNodes().nativeElement[`offset${this.sizeName()}`];\r\n    const scrollSize = this.sliderScroll().nativeElement[`offset${this.sizeName()}`];\r\n    const currentOffset = this.offset();\r\n    if (sliderSize - currentOffset <= scrollSize) return;\r\n    const offset = sliderSize - currentOffset > scrollSize * 2 ? currentOffset + scrollSize : sliderSize - scrollSize;\r\n    this.offset.set(Math.floor(offset));\r\n  }\r\n\r\n  setDirection(index: number, before: number) {\r\n    const increase = index > before;\r\n    this.direction.set(this.layout() === 'row' ? (increase ? 'right' : 'left') : increase ? 'bottom' : 'top');\r\n    return this.direction();\r\n  }\r\n\r\n  setTranslate() {\r\n    if (\r\n      XIsUndefined(this.sliderScroll()) ||\r\n      XIsUndefined(this.sliderNodes()) ||\r\n      typeof this.sliderScroll().nativeElement.getBoundingClientRect !== 'function'\r\n    )\r\n      return;\r\n    const sliderRect = this.sliderScroll().nativeElement?.getBoundingClientRect();\r\n    const sliderNodesRect = this.sliderNodes().nativeElement?.getBoundingClientRect();\r\n    let moveIndex =\r\n      ['bottom', 'right'].indexOf(this.direction()) !== -1 ? this.activatedIndex() + 2 : this.activatedIndex();\r\n    moveIndex = moveIndex > this.data().length ? this.data().length : moveIndex === 0 ? 1 : moveIndex;\r\n    let moveEle = this.sliderNodes().nativeElement?.querySelector(`li:nth-child(${moveIndex})`);\r\n    let maxOffset = 0;\r\n    if (XIsEmpty(moveEle)) return;\r\n    const moveRect = moveEle!.getBoundingClientRect();\r\n    const currentOffset = this.offset();\r\n    let offset = currentOffset;\r\n    if (this.layout() === 'row') {\r\n      maxOffset = sliderNodesRect.width - sliderRect.width;\r\n      if (moveRect.left < sliderRect.left) {\r\n        offset = currentOffset - (sliderRect.left - moveRect.left);\r\n      }\r\n      if (moveRect.right > sliderRect.right) {\r\n        offset = currentOffset + moveRect.right - sliderRect.right;\r\n      }\r\n    } else {\r\n      maxOffset = sliderNodesRect.height - sliderRect.height;\r\n      if (moveRect.top < sliderRect.top) {\r\n        offset = currentOffset - (sliderRect.top - moveRect.top);\r\n      }\r\n      if (moveRect.bottom > sliderRect.bottom) {\r\n        offset = currentOffset + (moveRect.bottom - sliderRect.bottom);\r\n      }\r\n    }\r\n    this.maxOffset.set(Math.ceil(maxOffset));\r\n    offset = Math.max(Math.ceil(offset), 0);\r\n    if (!this.showArrow()) {\r\n      this.offset.set(0);\r\n    } else {\r\n      if ([this.maxOffset() + 1, this.maxOffset() - 1].includes(offset)) {\r\n        this.offset.set(this.maxOffset());\r\n      } else {\r\n        this.offset.set(Math.min(offset, this.maxOffset()));\r\n      }\r\n    }\r\n  }\r\n\r\n  sizeChecked() {\r\n    const size = this.sliderNodes().nativeElement[`offset${this.sizeName()}`];\r\n    const scrollSize = this.sliderScroll().nativeElement[`offset${this.sizeName()}`];\r\n    const showArrow = this.data().length > 1 && size > scrollSize;\r\n    if (this.showArrow() !== showArrow) {\r\n      this.showArrow.set(showArrow);\r\n      if (!this.showArrow()) {\r\n        this.offset.set(0);\r\n      }\r\n    }\r\n  }\r\n\r\n  setActivated() {\r\n    if (this.data().length > 0) {\r\n      this.activated.set(this.data()[this.activatedIndex()]);\r\n      if (this.activated()) {\r\n        this.activatedId.set(this.activated()?.id);\r\n      }\r\n    } else {\r\n      this.activated.set(null);\r\n    }\r\n    this.setTranslate();\r\n  }\r\n\r\n  getActivated(index: number) {\r\n    return this.activatedIndex() === index;\r\n  }\r\n}\r\n","<div #slider class=\"x-slider\" [ngClass]=\"classMap()\">\r\n  @if (autoShowArrow() && showArrow()) {\r\n    <x-link\r\n      [disabled]=\"offset() === 0\"\r\n      class=\"x-slider-arrow-left\"\r\n      icon=\"fto-chevron-left\"\r\n      (click)=\"scrollPrev()\"\r\n    ></x-link>\r\n  }\r\n  <div class=\"x-slider-scroll\" #sliderScroll [ngClass]=\"scrollClassMap()\">\r\n    <ul #sliderNodes [style.transform]=\"transform()\">\r\n      @for (node of data(); track node.id; let i = $index) {\r\n        <li [class.x-slider-activated]=\"getActivated(i)\" [class.x-slider-disabled]=\"node.disabled\" [title]=\"node.label\">\r\n          <x-link\r\n            (click)=\"nodeClick($event, node, i)\"\r\n            (mouseenter)=\"onEnter($event, node, i)\"\r\n            (mouseleave)=\"onLeave(node)\"\r\n            [ngClass]=\"nodeClassMap()\"\r\n            [href]=\"showAnchor() ? '#' + node.id : ''\"\r\n          >\r\n            <ng-container *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node }\"></ng-container>\r\n            @if (!nodeTpl()) {\r\n              <ng-container *xOutlet=\"node.label\">{{ node.label }}</ng-container>\r\n            }\r\n          </x-link>\r\n        </li>\r\n      }\r\n      <li class=\"x-slider-highlight\" [class.x-slider-highlight-animated]=\"animated()\" [ngStyle]=\"highlightBox()\"></li>\r\n    </ul>\r\n  </div>\r\n  @if (autoShowArrow() && showArrow()) {\r\n    <x-link\r\n      [disabled]=\"offset() === maxOffset()\"\r\n      class=\"x-slider-arrow-right\"\r\n      icon=\"fto-chevron-right\"\r\n      (click)=\"scrollNext()\"\r\n    ></x-link>\r\n  }\r\n  @if (showExpand() && showArrow() && layout() === 'row') {\r\n    <x-dropdown\r\n      class=\"x-slider-all\"\r\n      [data]=\"data()\"\r\n      trigger=\"click\"\r\n      [(activatedId)]=\"activatedId\"\r\n      (nodeClick)=\"dropdownClick($event)\"\r\n      [portalMaxHeight]=\"expandMaxHeight()\"\r\n    >\r\n      <x-button icon=\"fto-list\" onlyIcon flat plain [size]=\"size()\"> </x-button>\r\n    </x-dropdown>\r\n  }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XSliderComponent } from './slider.component';\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  exports: [XSliderComponent],\r\n  imports: [XSliderComponent]\r\n})\r\nexport class XSliderModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}