{"version":3,"file":"ng-nest-ui-list.mjs","sources":["../../../../lib/ng-nest/ui/list/list.property.ts","../../../../lib/ng-nest/ui/list/list-option.component.ts","../../../../lib/ng-nest/ui/list/list-option.component.html","../../../../lib/ng-nest/ui/list/list-drop-group.directive.ts","../../../../lib/ng-nest/ui/list/list.component.ts","../../../../lib/ng-nest/ui/list/list.component.html","../../../../lib/ng-nest/ui/list/list.module.ts","../../../../lib/ng-nest/ui/list/ng-nest-ui-list.ts"],"sourcesContent":["import {\r\n  XData,\r\n  XParentIdentityProperty,\r\n  XNumber,\r\n  XBoolean,\r\n  XTemplate,\r\n  XSize,\r\n  XToNumber,\r\n  XToBoolean,\r\n  XStyle\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, ElementRef, input, output, model } from '@angular/core';\r\nimport { XFormControlFunction } from '@ng-nest/ui/base-form';\r\nimport type { CdkDragDrop } from '@angular/cdk/drag-drop';\r\n\r\n/**\r\n * List\r\n * @selector x-list\r\n * @decorator component\r\n */\r\nexport const XListPrefix = 'x-list';\r\nconst X_LIST_CONFIG_NAME = 'list';\r\n\r\n/**\r\n * List Property\r\n */\r\n@Component({ selector: `${XListPrefix}-property`, template: '' })\r\nexport class XListProperty extends XFormControlFunction(X_LIST_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 列表数据\r\n   * @en_US List data\r\n   */\r\n  readonly data = input<XData<XListNode>>([]);\r\n  /**\r\n   * @zh_CN 多选个数，设置为0，不限制选择个数\r\n   * @en_US Multiple choice\r\n   */\r\n  readonly multiple = input<number, XNumber>(1, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 多选添加全选功能，适用于 multiple=0\r\n   * @en_US Multi choice to add full selection function\r\n   */\r\n  readonly selectAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 全选的文字\r\n   * @en_US Selected all text\r\n   * @default '全选'\r\n   */\r\n  readonly selectAllText = input<string>(this.config?.selectAllText ?? '');\r\n  /**\r\n   * @zh_CN 选中\r\n   * @en_US Selected\r\n   */\r\n  readonly checked = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 拖动\r\n   * @en_US Drag\r\n   */\r\n  readonly drag = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 当开启多选的时候，ngModel 的值为对象数组\r\n   * @en_US When multiple selection is enabled, the value of ngmodel is an array of objects\r\n   */\r\n  readonly objectArray = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 节点模板\r\n   * @en_US Node template\r\n   */\r\n  readonly nodeTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 节点样式\r\n   * @en_US Node style\r\n   */\r\n  readonly nodeStyle = input<XStyle>();\r\n  /**\r\n   * @zh_CN 分组模板\r\n   * @en_US Group template\r\n   */\r\n  readonly groupTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 列表头部\r\n   * @en_US List header\r\n   */\r\n  readonly header = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 列表底部\r\n   * @en_US List footer\r\n   */\r\n  readonly footer = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 滚动区域元素\r\n   * @en_US Rolling area element\r\n   */\r\n  readonly scrollElement = input<HTMLElement>();\r\n  /**\r\n   * @zh_CN 是否使用键盘控制\r\n   * @en_US Whether to use keyboard control\r\n   */\r\n  readonly isKeyboardControlled = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 加载更多\r\n   * @en_US load more\r\n   */\r\n  readonly loadMore = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 加载更多的文字\r\n   * @en_US Load more text\r\n   * @default '加载更多'\r\n   */\r\n  readonly loadMoreText = input<string>(this.config?.loadMoreText ?? '');\r\n  /**\r\n   * @zh_CN 正在加载中的文字\r\n   * @en_US Loading\r\n   * @default '正在加载中'\r\n   */\r\n  readonly loadingMoreText = input<string>(this.config?.loadingMoreText ?? '');\r\n  /**\r\n   * @zh_CN 开启虚拟滚动，不支持节点拖动功能\r\n   * @en_US Turn on virtual scrolling\r\n   */\r\n  readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 虚拟滚动高度, 实际会去掉头尾、全选、更多的高度\r\n   * @en_US The virtual rolling height will actually remove the head and end, the full selection, more height\r\n   */\r\n  readonly scrollHeight = input<number, XNumber>(this.config?.scrollHeight ?? 400, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 虚拟滚动高度自适应指定元素\r\n   * @en_US virtual rolling height follows the specified object\r\n   */\r\n  readonly heightAdaption = input<ElementRef<HTMLElement> | HTMLElement>();\r\n  /**\r\n   * @zh_CN 超出可视窗口缓冲区的最小值，对应 cdk scroll 中的参数\r\n   * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 渲染新数据缓冲区的像素，对应 cdk scroll 中的参数\r\n   * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 关键字高亮\r\n   * @en_US Keyword highlighting\r\n   */\r\n  readonly keywordText = input<string | string[]>();\r\n  /**\r\n   * @zh_CN 匹配关键字区分大小写\r\n   * @en_US Case-sensitive\r\n   */\r\n  readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 在弹框中选择时的样式，根据尺寸来决定\r\n   * @en_US The style selected in the pop-up box is determined by size\r\n   */\r\n  readonly inPortal = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN Full event\r\n   * @en_US 全选事件\r\n   */\r\n  readonly onSelectAll = output<boolean>();\r\n  /**\r\n   * @zh_CN 节点 mouseenter 事件\r\n   * @en_US Node mouseenter event\r\n   */\r\n  readonly nodeMouseenter = output<XListNode>();\r\n  /**\r\n   * @zh_CN 节点 mouseleave 事件\r\n   * @en_US Node mouseleave event\r\n   */\r\n  readonly nodeMouseleave = output<XListNode>();\r\n  /**\r\n   * @zh_CN 节点点击事件\r\n   * @en_US Node click event\r\n   */\r\n  readonly nodeClick = output<XListNode>();\r\n  /**\r\n   * @zh_CN 拖动结束事件\r\n   * @en_US Drag the end\r\n   */\r\n  readonly dropListDropped = output<XListDragDrop>();\r\n  /**\r\n   * @zh_CN Tab out 事件\r\n   * @en_US Tab Out event\r\n   */\r\n  readonly keyManagerTabOut = output<void>();\r\n  /**\r\n   * @zh_CN Tab out 事件\r\n   * @en_US Tab Out event\r\n   */\r\n  readonly keyManagerChange = output<number>();\r\n  /**\r\n   * @zh_CN 尺寸\r\n   * @en_US Size\r\n   */\r\n  override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n}\r\n\r\n/**\r\n * @zh_CN List 数据对象\r\n * @en_US List data object\r\n */\r\nexport interface XListNode extends XParentIdentityProperty<XListNode> {\r\n  /**\r\n   * @zh_CN 图标\r\n   * @en_US Iicon\r\n   */\r\n  icon?: string;\r\n  /**\r\n   * @zh_CN 分割线\r\n   * @en_US Split line\r\n   */\r\n  divided?: boolean;\r\n  /**\r\n   * @zh_CN 事件\r\n   * @en_US Event\r\n   */\r\n  event?: Event;\r\n  /**\r\n   * @zh_CN 悬停\r\n   * @en_US Hover\r\n   */\r\n  hover?: boolean;\r\n  /**\r\n   * @zh_CN 节点样式\r\n   * @en_US Node style\r\n   */\r\n  style?: XStyle;\r\n  /**\r\n   * @zh_CN 打开弹框\r\n   * @en_US open portal\r\n   */\r\n  openPortal?: boolean;\r\n  /**\r\n   * @zh_CN 激活\r\n   * @en_US Active\r\n   */\r\n  active?: boolean;\r\n  /**\r\n   * @zh_CN 检查更新\r\n   * @en_US Check for updates\r\n   */\r\n  change?: Function;\r\n  /**\r\n   * @zh_CN 分组名称\r\n   * @en_US Group name\r\n   */\r\n  group?: boolean;\r\n  /**\r\n   * @zh_CN 是否是分组节点\r\n   * @en_US Group node\r\n   */\r\n  groupable?: boolean;\r\n  /**\r\n   * @zh_CN 对应的节点组件\r\n   * @en_US List option component\r\n   */\r\n  component?: XListOptionHandle;\r\n}\r\n\r\n/**\r\n * @zh_CN 对应的节点组件\r\n * @en_US List option component\r\n */\r\nexport type XListOptionHandle = {\r\n  setActiveStyles(): void;\r\n  setInactiveStyles(): void;\r\n  getLabel(): string;\r\n  getElementRef(): ElementRef<HTMLElement>;\r\n};\r\n\r\n/**\r\n * List Option\r\n * @selector x-list-option\r\n * @decorator component\r\n */\r\nexport const XListOptionPrefix = 'x-list-option';\r\n\r\n/**\r\n * List Option Property\r\n */\r\n@Component({ selector: `${XListOptionPrefix}-property`, template: '' })\r\nexport class XListOptionProperty {\r\n  /**\r\n   * @zh_CN 节点参数\r\n   * @en_US Node param\r\n   */\r\n  readonly node = input<XListNode>();\r\n  /**\r\n   * @zh_CN 选中\r\n   * @en_US Selected\r\n   */\r\n  readonly checked = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 节点模板\r\n   * @en_US Node template\r\n   */\r\n  readonly nodeTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 节点样式\r\n   * @en_US Node style\r\n   */\r\n  readonly nodeStyle = input<XStyle>();\r\n  /**\r\n   * @zh_CN 分组模板\r\n   * @en_US Group template\r\n   */\r\n  readonly groupTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 选中\r\n   * @en_US selected\r\n   */\r\n  readonly selected = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 分组节点\r\n   * @en_US Group node\r\n   */\r\n  readonly groupable = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US forbidden\r\n   */\r\n  readonly forbidden = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 激活\r\n   * @en_US active\r\n   */\r\n  readonly active = model<boolean>(false);\r\n  /**\r\n   * @zh_CN 打开弹框\r\n   * @en_US open portal\r\n   */\r\n  readonly openPortal = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 自定义数据对象样式\r\n   * @en_US Customize data object styles\r\n   */\r\n  readonly optionClass = input<(node: XListNode) => { [className: string]: boolean }>();\r\n  /**\r\n   * @zh_CN 图标\r\n   * @en_US icon\r\n   */\r\n  readonly icon = input<string>();\r\n  /**\r\n   * @zh_CN 分割线\r\n   * @en_US Split line\r\n   */\r\n  readonly divided = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 标签\r\n   * @en_US label\r\n   */\r\n  readonly label = input<string>();\r\n  /**\r\n   * @zh_CN 叶子节点\r\n   * @en_US leaf\r\n   */\r\n  readonly leaf = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 尺寸\r\n   * @en_US Size\r\n   */\r\n  readonly size = input<XSize>('medium');\r\n  /**\r\n   * @zh_CN 关键字高亮\r\n   * @en_US Keyword highlighting\r\n   */\r\n  readonly keywordText = input<string | string[]>();\r\n  /**\r\n   * @zh_CN 匹配关键字区分大小写\r\n   * @en_US Case-sensitive\r\n   */\r\n  readonly caseSensitive = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 拖动相关的数据\r\n * @en_US Drag related data\r\n */\r\nexport type XListDragDrop = {\r\n  /**\r\n   * @zh_CN 节点数据集合\r\n   * @en_US Node data collection\r\n   */\r\n  data: XListNode[];\r\n  /**\r\n   * @zh_CN 当前拖动节点\r\n   * @en_US The current drag nodes\r\n   */\r\n  current: XListNode;\r\n  /**\r\n   * @zh_CN 当前拖动节点的索引\r\n   * @en_US The current drag index of the node\r\n   */\r\n  currentIndex: number;\r\n  /**\r\n   * @zh_CN 当前拖动节点事件\r\n   * @en_US The current drag nodes event\r\n   */\r\n  event: CdkDragDrop<XListNode[]>;\r\n};\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  HostBinding,\r\n  ViewEncapsulation,\r\n  computed,\r\n  effect,\r\n  inject\r\n} from '@angular/core';\r\nimport { XListOptionHandle, XListOptionPrefix, XListOptionProperty } from './list.property';\r\nimport type { Highlightable } from '@angular/cdk/a11y';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n  selector: `${XListOptionPrefix}`,\r\n  imports: [NgClass, NgTemplateOutlet, XIconComponent, XKeywordDirective],\r\n  templateUrl: './list-option.component.html',\r\n  styleUrls: ['./list-option.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XListOptionComponent extends XListOptionProperty implements Highlightable, XListOptionHandle {\r\n  @HostBinding('attr.role') role = 'option';\r\n  elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n  classMap = computed(() => ({}));\r\n  disabled = false;\r\n\r\n  nodeStyleComputed = computed(() => {\r\n    return {\r\n      ...(this.nodeStyle() ?? {}),\r\n      ...(this.node()?.style ?? {})\r\n    };\r\n  });\r\n\r\n  constructor() {\r\n    super();\r\n    effect(() => (this.disabled = this.forbidden()));\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.active.set(false);\r\n  }\r\n\r\n  setActiveStyles(): void {\r\n    this.active.set(true);\r\n  }\r\n  setInactiveStyles(): void {\r\n    this.active.set(false);\r\n  }\r\n\r\n  getLabel() {\r\n    return this.label() as string;\r\n  }\r\n\r\n  getElementRef() {\r\n    return this.elementRef;\r\n  }\r\n}\r\n","<div\r\n  class=\"x-list-option\"\r\n  [ngClass]=\"classMap()\"\r\n  [style]=\"nodeStyleComputed()\"\r\n  [class.x-selected]=\"selected()\"\r\n  [class.x-disabled]=\"forbidden()\"\r\n  [class.x-open-portal]=\"openPortal()\"\r\n  [class.x-active]=\"active()\"\r\n  [class.x-group]=\"groupable()\"\r\n  [class.x-list-icon]=\"icon()\"\r\n  [class.x-list-divided]=\"divided()\"\r\n>\r\n  <div class=\"x-list-option-content\">\r\n    @if (groupable() && groupTpl()) {\r\n      <ng-template *ngTemplateOutlet=\"groupTpl()!; context: { $group: label() }\"></ng-template>\r\n    } @else {\r\n      @if (nodeTpl()) {\r\n        <ng-template *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node() }\"></ng-template>\r\n      } @else {\r\n        @if (icon()) {\r\n          <x-icon class=\"x-list-option-icon\" [type]=\"icon()\"></x-icon>\r\n        }\r\n        <span x-keyword [text]=\"keywordText()\" [caseSensitive]=\"caseSensitive()\" [attr.title]=\"label()\">{{\r\n          label()\r\n        }}</span>\r\n      }\r\n    }\r\n  </div>\r\n  @if (leaf()) {\r\n    <x-icon class=\"x-list-leaf\" type=\"fto-chevron-right\"></x-icon>\r\n  }\r\n  @if (checked() && !leaf() && selected()) {\r\n    <x-icon class=\"x-list-checked\" type=\"fto-check\"></x-icon>\r\n  }\r\n</div>\r\n","import { coerceArray } from '@angular/cdk/coercion';\r\nimport { CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { Directive, InjectionToken, OnDestroy, input } from '@angular/core';\r\nimport { XBoolean, XToBoolean } from '@ng-nest/ui/core';\r\n\r\nexport const X_LIST_DROP_GROUP = new InjectionToken<XListDropGroup>('XListDropGroup');\r\n\r\n@Directive({\r\n  selector: '[xListDropGroup]',\r\n  providers: [{ provide: X_LIST_DROP_GROUP, useExisting: XListDropGroup }]\r\n})\r\nexport class XListDropGroup implements OnDestroy {\r\n  readonly dropLists = new Set<CdkDropList>();\r\n\r\n  disabled = input<boolean, XBoolean>(false, { transform: XToBoolean, alias: 'xListDropGroupDisabled' });\r\n\r\n  setConnectedTo() {\r\n    this.dropLists.forEach((x) => {\r\n      this.dropLists.forEach((y) => {\r\n        const { connectedTo } = y;\r\n        if (Array.isArray(connectedTo) && connectedTo.length === 0) {\r\n          y.connectedTo = [x];\r\n        } else {\r\n          if (!coerceArray(y.connectedTo).includes(x)) {\r\n            coerceArray(y.connectedTo).push(x);\r\n          }\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.dropLists.clear();\r\n  }\r\n}\r\n","import { Subject, Subscription } from 'rxjs';\r\nimport {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ChangeDetectionStrategy,\r\n  SimpleChanges,\r\n  OnChanges,\r\n  QueryList,\r\n  ElementRef,\r\n  HostBinding,\r\n  HostListener,\r\n  ViewChildren,\r\n  inject,\r\n  afterEveryRender,\r\n  viewChild,\r\n  signal,\r\n  computed\r\n} from '@angular/core';\r\nimport { XListPrefix, XListNode, XListProperty } from './list.property';\r\nimport {\r\n  XIsChange,\r\n  XSetData,\r\n  XIsEmpty,\r\n  XIsUndefined,\r\n  XIsNull,\r\n  XResize,\r\n  XResizeObserver,\r\n  XGroupBy\r\n} from '@ng-nest/ui/core';\r\nimport { CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\r\nimport { XListOptionComponent } from './list-option.component';\r\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\r\nimport { ENTER } from '@angular/cdk/keycodes';\r\nimport { map, takeUntil, debounceTime } from 'rxjs/operators';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XI18nList, XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XListDropGroup, X_LIST_DROP_GROUP } from './list-drop-group.directive';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XEmptyComponent } from '@ng-nest/ui/empty';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n  selector: `${XListPrefix}`,\r\n  imports: [\r\n    NgClass,\r\n    NgTemplateOutlet,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    CdkDropList,\r\n    CdkDrag,\r\n    ScrollingModule,\r\n    XIconComponent,\r\n    XEmptyComponent,\r\n    XListOptionComponent,\r\n    XOutletDirective\r\n  ],\r\n  templateUrl: './list.component.html',\r\n  styleUrls: ['./list.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [XValueAccessor(XListComponent), { provide: X_LIST_DROP_GROUP, useValue: undefined }]\r\n})\r\nexport class XListComponent extends XListProperty implements OnChanges {\r\n  private unSubject = new Subject<void>();\r\n  private i18n = inject(XI18nService);\r\n  private listDropGroup = inject<XListDropGroup>(X_LIST_DROP_GROUP, { optional: true, skipSelf: true });\r\n  nodes = signal<XListNode[]>([]);\r\n  selectedNodes = signal<XListNode[]>([]);\r\n  headerRef = viewChild<ElementRef<HTMLElement>>('headerRef');\r\n  footerRef = viewChild<ElementRef<HTMLElement>>('footerRef');\r\n  selectAllRef = viewChild<ElementRef<HTMLElement>>('selectAllRef');\r\n  loadMoreRef = viewChild<ElementRef<HTMLElement>>('loadMoreRef');\r\n  virtualBody = viewChild<CdkVirtualScrollViewport>('virtualBody');\r\n  dropList = viewChild<CdkDropList>(CdkDropList);\r\n  @ViewChildren(XListOptionComponent)\r\n  options!: QueryList<XListOptionComponent>;\r\n  keyManager!: ActiveDescendantKeyManager<XListOptionComponent>;\r\n  isSelectAll = signal(false);\r\n  locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.list as XI18nList)), { initialValue: zh_CN.list });\r\n  loadMoreIndex = signal(0);\r\n  icon = signal('');\r\n  iconSpin = signal(false);\r\n  scrollHeightSignal = signal(0);\r\n  classMap = computed(() => ({\r\n    [`${XListPrefix}-${this.size()}`]: this.size() ? true : false,\r\n    [`${XListPrefix}-group`]: this.groupable() ? true : false\r\n  }));\r\n  sizeChange: Subscription | null = null;\r\n  activeNode = signal<XListNode | null>(null);\r\n  private resizeObserver!: XResizeObserver;\r\n\r\n  @HostBinding('attr.role') role = 'listbox';\r\n  @HostBinding('attr.tabindex') tabindex = -1;\r\n\r\n  @HostListener('keydown', ['$event']) keydown($event: KeyboardEvent) {\r\n    if (!this.isKeyboardControlled()) return;\r\n    this.keyManager.onKeydown($event);\r\n    const activeIndex = this.keyManager.activeItemIndex as number;\r\n    if ($event.keyCode === ENTER && !XIsUndefined(activeIndex)) {\r\n      this.setUnActive(activeIndex);\r\n      this.onNodeClick($event, this.nodes()[activeIndex]);\r\n    }\r\n  }\r\n\r\n  groupable = computed(() => this.nodes().some((x) => !!x.group));\r\n\r\n  itemSizeMap: { [key: string]: number } = {\r\n    mini: 22,\r\n    small: 24,\r\n    medium: 28,\r\n    large: 32,\r\n    big: 36\r\n  };\r\n\r\n  itemSize = computed(() => this.itemSizeMap[this.size()]);\r\n  isEmpty = computed(() => XIsEmpty(this.nodes()));\r\n  getSelectAllText = computed(() => this.selectAllText() || this.locale()?.selectAllText);\r\n  getLoadMoreText = computed(() => this.loadMoreText() || this.locale()?.loadMoreText);\r\n  getLoadingMoreText = computed(() => this.loadingMoreText() || this.locale()?.loadingMoreText);\r\n\r\n  getVirtualScrollHeight() {\r\n    let headerH = 0,\r\n      footerH = 0,\r\n      selectAllH = 0,\r\n      loadMoreH = 0;\r\n    if (this.headerRef()) headerH = this.headerRef()!.nativeElement.clientHeight;\r\n    if (this.footerRef()) footerH = this.footerRef()!.nativeElement.clientHeight;\r\n    if (this.selectAllRef()) selectAllH = this.selectAllRef()!.nativeElement.clientHeight;\r\n    if (this.loadMoreRef()) loadMoreH = this.loadMoreRef()!.nativeElement.clientHeight;\r\n\r\n    return this.scrollHeightSignal() - headerH - footerH - selectAllH - loadMoreH;\r\n  }\r\n\r\n  override writeValue(value: any): void {\r\n    this.value.set(value);\r\n    this.setSelected();\r\n    this.setKeyManager();\r\n  }\r\n\r\n  constructor() {\r\n    super();\r\n    afterEveryRender({\r\n      mixedReadWrite: () => {\r\n        if (this.virtualScroll() && this.scrollHeight()) {\r\n          this.virtualBody()?.checkViewportSize();\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { data, scrollHeight, heightAdaption } = changes;\r\n    XIsChange(data) && this.setData();\r\n    XIsChange(scrollHeight) &&\r\n      this.virtualScroll() &&\r\n      !this.heightAdaption() &&\r\n      this.scrollHeightSignal.set(this.scrollHeight());\r\n    XIsChange(heightAdaption) && this.virtualScroll() && this.setHeightAdaption();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.initKeyManager();\r\n    if (this.virtualScroll() && this.heightAdaption()) {\r\n      this.setHeightAdaption();\r\n    } else {\r\n      this.scrollHeightSignal.set(this.scrollHeight());\r\n    }\r\n    if (this.listDropGroup && this.dropList()) {\r\n      this.listDropGroup.dropLists.add(this.dropList()!);\r\n      this.listDropGroup.setConnectedTo();\r\n    }\r\n  }\r\n\r\n  setHeightAdaption() {\r\n    this.setVirtualScrollHeight();\r\n    if (this.sizeChange) this.sizeChange.unsubscribe();\r\n    this.sizeChange = XResize(this.heightAdaption() as HTMLElement)\r\n      .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n      .subscribe((x) => {\r\n        this.resizeObserver = x.resizeObserver;\r\n        this.setVirtualScrollHeight();\r\n      });\r\n  }\r\n\r\n  minBufferPxSignal = computed(() => {\r\n    if (this.virtualScroll() && this.heightAdaption()) {\r\n      return this.getVirtualScrollHeight();\r\n    } else {\r\n      return this.minBufferPx();\r\n    }\r\n  });\r\n  maxBufferPxSignal = computed(() => {\r\n    if (this.virtualScroll() && this.heightAdaption()) {\r\n      return this.getVirtualScrollHeight() * 1.2;\r\n    } else {\r\n      return this.maxBufferPx();\r\n    }\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.listDropGroup?.dropLists.delete(this.dropList()!);\r\n  }\r\n\r\n  private setVirtualScrollHeight() {\r\n    this.scrollHeightSignal.set((this.heightAdaption() as HTMLElement).clientHeight);\r\n    if (!this.virtualBody()) return;\r\n    this.virtualBody()!['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n    this.virtualBody()!['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n  }\r\n\r\n  private setData() {\r\n    if (this.loadMore()) {\r\n      this.icon.set('fto-loader');\r\n      this.iconSpin.set(true);\r\n    }\r\n    XSetData<XListNode>(this.data(), this.unSubject, true, this.loadMoreIndex()).subscribe((x) => {\r\n      if (this.loadMore()) {\r\n        this.nodes.update((y) => [...y, ...x]);\r\n        this.icon.set('');\r\n        this.iconSpin.set(false);\r\n      } else {\r\n        this.nodes.set(x);\r\n      }\r\n      this.setGroup();\r\n      this.setSelected();\r\n      this.setKeyManager();\r\n    });\r\n  }\r\n\r\n  private initKeyManager() {\r\n    this.keyManager = new ActiveDescendantKeyManager<XListOptionComponent>(this.options)\r\n      .withWrap()\r\n      .withVerticalOrientation()\r\n      .withHomeAndEnd();\r\n    this.keyManager.tabOut.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n      this.setUnActive(this.keyManager.activeItemIndex as number);\r\n      this.keyManagerTabOut.emit();\r\n    });\r\n    this.keyManager.change.pipe(takeUntil(this.unSubject)).subscribe((num: number) => {\r\n      this.setScorllTop(num);\r\n      this.keyManagerChange.emit(num);\r\n    });\r\n  }\r\n\r\n  private setGroup() {\r\n    const nodes = this.nodes();\r\n    if (!nodes.some((x) => !!x.group)) return;\r\n    const groups = XGroupBy(nodes, 'group');\r\n    const groupNodes: XListNode[] = [];\r\n    for (let key in groups) {\r\n      groupNodes.push({ id: `$group-${key}`, label: key, groupable: true });\r\n      groupNodes.push(...groups[key]);\r\n    }\r\n    this.nodes.set(groupNodes);\r\n  }\r\n\r\n  setScorllTop(_num: number) {\r\n    let list = this.scrollElement();\r\n    if (!list || !this.keyManager.activeItem) return;\r\n    let ele = this.keyManager.activeItem.elementRef.nativeElement as HTMLElement;\r\n    let min = list.scrollTop;\r\n    let max = list.scrollTop + list.clientHeight;\r\n    if (ele.offsetTop + ele.clientHeight > max) {\r\n      let scrollTop = ele.offsetTop + ele.clientHeight - list.clientHeight;\r\n      list.scrollTop = scrollTop;\r\n    }\r\n    if (ele.offsetTop < min) {\r\n      list.scrollTop = ele.offsetTop;\r\n    }\r\n  }\r\n\r\n  setSelected() {\r\n    const nodes = this.nodes();\r\n    const value = this.value();\r\n    const objectArray = this.objectArray();\r\n    if (nodes.length > 0) {\r\n      nodes\r\n        .filter((x) => x.selected)\r\n        .map((x) => {\r\n          x.selected = false;\r\n        });\r\n      let valArry: any[] = [];\r\n      if (value instanceof Array) {\r\n        valArry = value;\r\n        if (valArry.length === nodes.length) {\r\n          this.isSelectAll.set(true);\r\n        }\r\n      } else {\r\n        valArry = [value];\r\n      }\r\n\r\n      let ids = [];\r\n      let selectedNodes = [];\r\n      if (objectArray) {\r\n        ids = valArry.filter((x) => !XIsUndefined(x) && !XIsNull(x)).map((x) => x.id);\r\n      } else {\r\n        ids = valArry;\r\n      }\r\n      for (let id of ids) {\r\n        let node = nodes.find((x) => x.id === id);\r\n        if (node) {\r\n          node.selected = true;\r\n          selectedNodes.push(node);\r\n        }\r\n      }\r\n      this.selectedNodes.set(selectedNodes);\r\n    }\r\n  }\r\n\r\n  setKeyManager() {\r\n    if (XIsUndefined(this.keyManager) || XIsEmpty(this.nodes())) return;\r\n    let activeIndex = 0;\r\n    let value = this.value();\r\n    let objectArray = this.objectArray();\r\n    if (XIsEmpty(value)) {\r\n      return;\r\n    }\r\n    let valArry: any[] = [];\r\n    if (value instanceof Array) {\r\n      valArry = value;\r\n    } else {\r\n      valArry = [value];\r\n    }\r\n    const first = valArry[0];\r\n    if (objectArray) {\r\n      activeIndex = this.nodes().findIndex((x) => x.id === first.id);\r\n    } else {\r\n      activeIndex = this.nodes().findIndex((x) => x.id === first);\r\n    }\r\n\r\n    this.keyManager.setActiveItem(activeIndex);\r\n    this.setScorllTop(activeIndex);\r\n  }\r\n\r\n  onNodeClick(event: Event, node: XListNode) {\r\n    if (XIsUndefined(node) || node.disabled || node.groupable) {\r\n      event.stopPropagation();\r\n      return;\r\n    }\r\n    const index = this.nodes().findIndex((x) => x.id === node.id);\r\n    const component = this.options.get(index)!;\r\n    if (node.disabled) return;\r\n    if (node.selected && this.multiple() === 1) {\r\n      node.event = event;\r\n      node.component = component;\r\n      this.nodeClick.emit(node);\r\n      return;\r\n    }\r\n    const selected = !node.selected;\r\n    if (selected) {\r\n      if (this.selectedNodes().length < this.multiple() || this.multiple() === 0 || isNaN(this.multiple())) {\r\n        node.selected = selected;\r\n        this.selectedNodes.update((x) => [...x, node]);\r\n        if (this.selectedNodes().length === this.nodes().length) {\r\n          this.isSelectAll.set(true);\r\n        }\r\n      } else if (this.multiple() === 1 && this.selectedNodes().length === 1) {\r\n        node.selected = selected;\r\n        this.selectedNodes.update((x) => {\r\n          x[0].selected = false;\r\n          x[0] = node;\r\n          return [...x];\r\n        });\r\n      } else {\r\n        return;\r\n      }\r\n    } else {\r\n      node.selected = selected;\r\n      this.selectedNodes.update((x) => {\r\n        x.splice(\r\n          x.findIndex((x) => x.id == node.id),\r\n          1\r\n        );\r\n        return [...x];\r\n      });\r\n      this.isSelectAll.set(false);\r\n    }\r\n\r\n    if (this.multiple() === 1 && this.selectedNodes().length === 1) {\r\n      this.value.set(this.objectArray() ? this.selectedNodes()[0] : this.selectedNodes()[0].id);\r\n    } else {\r\n      this.value.set(this.objectArray() ? this.selectedNodes() : this.selectedNodes().map((x) => x.id));\r\n    }\r\n    if (this.onChange) this.onChange(this.value());\r\n    node.event = event;\r\n    node.component = component;\r\n    this.nodeClick.emit(node);\r\n  }\r\n\r\n  onMouseenter(event: Event, node: XListNode) {\r\n    if (node.disabled) {\r\n      event.stopPropagation();\r\n      return;\r\n    }\r\n    const index = this.nodes().findIndex((x) => x.id === node.id);\r\n    const component = this.options.get(index)!;\r\n    node.event = event;\r\n    node.component = component;\r\n    this.nodeMouseenter.emit(node);\r\n  }\r\n\r\n  onMouseleave(event: Event, node: XListNode) {\r\n    if (node.disabled) {\r\n      event.stopPropagation();\r\n      return;\r\n    }\r\n    const index = this.nodes().findIndex((x) => x.id === node.id);\r\n    const component = this.options.get(index)!;\r\n    node.event = event;\r\n    node.component = component;\r\n    this.nodeMouseleave.emit(node);\r\n  }\r\n\r\n  dropCdk(event: CdkDragDrop<XListNode[]>) {\r\n    if (event.previousContainer === event.container) {\r\n      moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n      this.dropListDropped.emit({\r\n        data: this.nodes(),\r\n        current: this.nodes()[event.currentIndex],\r\n        currentIndex: event.currentIndex,\r\n        event: event\r\n      });\r\n    } else {\r\n      transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\r\n      this.dropListDropped.emit({\r\n        data: event.container.data,\r\n        current: event.container.data[event.currentIndex],\r\n        currentIndex: event.currentIndex,\r\n        event: event\r\n      });\r\n    }\r\n  }\r\n\r\n  predicate(_drag: CdkDrag<XListNode>, _drop: CdkDropList<XListNode>) {\r\n    return true;\r\n  }\r\n\r\n  onSelectAllNodes() {\r\n    this.isSelectAll.update((x) => !x);\r\n    if (this.isSelectAll()) {\r\n      this.nodes.update((x) => {\r\n        x.forEach((y) => (y.selected = true));\r\n        return [...x];\r\n      });\r\n      this.selectedNodes.set(this.nodes());\r\n    } else {\r\n      this.nodes.update((x) => {\r\n        x.forEach((y) => (y.selected = false));\r\n        return [...x];\r\n      });\r\n      this.selectedNodes.set([]);\r\n    }\r\n    this.value.set(this.objectArray() ? this.selectedNodes() : this.selectedNodes().map((x) => x.id));\r\n    if (this.onChange) this.onChange(this.value());\r\n    this.onSelectAll.emit(this.isSelectAll());\r\n  }\r\n\r\n  onLoadMore() {\r\n    this.loadMoreIndex.update((x) => x + 1);\r\n    this.setData();\r\n  }\r\n\r\n  trackByNode(_index: number, item: XListNode) {\r\n    return item.id;\r\n  }\r\n\r\n  setUnActive(num: number) {\r\n    if (num > -1) {\r\n      this.nodes()[num].active = false;\r\n    }\r\n  }\r\n}\r\n","<div class=\"x-list\" [class.x-list-portal]=\"inPortal()\" [ngClass]=\"classMap()\">\r\n  @if (header()) {\r\n    <div #headerRef class=\"x-list-header\" *xOutlet=\"header()\">{{ header() }}</div>\r\n  }\r\n  @if (selectAll() && multiple() === 0) {\r\n    <div #selectAllRef class=\"x-list-select-all\">\r\n      <x-list-option\r\n        [size]=\"size()\"\r\n        [label]=\"getSelectAllText()\"\r\n        [nodeStyle]=\"nodeStyle()\"\r\n        [checked]=\"true\"\r\n        [selected]=\"isSelectAll()\"\r\n        (click)=\"onSelectAllNodes()\"\r\n      ></x-list-option>\r\n    </div>\r\n  }\r\n  @if (virtualScroll()) {\r\n    <cdk-virtual-scroll-viewport\r\n      #virtualBody\r\n      [itemSize]=\"itemSize()\"\r\n      [minBufferPx]=\"minBufferPxSignal()\"\r\n      [maxBufferPx]=\"maxBufferPxSignal()\"\r\n      class=\"x-list-content\"\r\n      [style.height.px]=\"getVirtualScrollHeight()\"\r\n      [hidden]=\"isEmpty()\"\r\n    >\r\n      <x-list-option\r\n        *cdkVirtualFor=\"let node of nodes(); trackBy: trackByNode\"\r\n        [node]=\"node\"\r\n        [checked]=\"checked()\"\r\n        [nodeTpl]=\"nodeTpl()\"\r\n        [nodeStyle]=\"nodeStyle()\"\r\n        [groupTpl]=\"groupTpl()\"\r\n        [selected]=\"node.selected!\"\r\n        [groupable]=\"node.groupable!\"\r\n        [forbidden]=\"node.disabled!\"\r\n        [active]=\"node.active!\"\r\n        (activeChange)=\"node.active = $event\"\r\n        [openPortal]=\"node.openPortal!\"\r\n        [icon]=\"node.icon\"\r\n        [label]=\"node.label\"\r\n        [leaf]=\"node.leaf!\"\r\n        [divided]=\"node.divided!\"\r\n        [size]=\"size()\"\r\n        [keywordText]=\"keywordText()\"\r\n        [caseSensitive]=\"caseSensitive()\"\r\n        (click)=\"onNodeClick($event, node)\"\r\n        (mouseenter)=\"onMouseenter($event, node)\"\r\n        (mouseleave)=\"onMouseleave($event, node)\"\r\n        tabindex=\"-1\"\r\n      ></x-list-option>\r\n    </cdk-virtual-scroll-viewport>\r\n  } @else {\r\n    <ng-container *ngTemplateOutlet=\"listTpl; context: { $list: nodes() }\"></ng-container>\r\n  }\r\n\r\n  @if (loadMore() && !isEmpty()) {\r\n    <div #loadMoreRef class=\"x-list-load-more\">\r\n      <x-list-option\r\n        [size]=\"size()\"\r\n        [nodeTpl]=\"loadMoreTpl\"\r\n        [nodeStyle]=\"nodeStyle()\"\r\n        (click)=\"onLoadMore()\"\r\n      ></x-list-option>\r\n    </div>\r\n    <ng-template #loadMoreTpl>\r\n      @if (icon() && iconSpin()) {\r\n        <x-icon [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n      }\r\n      {{ icon() && iconSpin() ? getLoadingMoreText() : getLoadMoreText() }}</ng-template\r\n    >\r\n  }\r\n  @if (isEmpty()) {\r\n    <x-empty></x-empty>\r\n  }\r\n  @if (footer()) {\r\n    <div #footerRef class=\"x-list-footer\" *xOutlet=\"footer()\">{{ footer() }}</div>\r\n  }\r\n</div>\r\n\r\n<ng-template #listTpl let-list=\"$list\">\r\n  <div\r\n    class=\"x-list-content\"\r\n    cdkDropList\r\n    (cdkDropListDropped)=\"dropCdk($event)\"\r\n    [cdkDropListDisabled]=\"!drag()\"\r\n    [hidden]=\"isEmpty()\"\r\n    [cdkDropListData]=\"list\"\r\n    [cdkDropListEnterPredicate]=\"predicate\"\r\n  >\r\n    @for (node of list; track node.id) {\r\n      <x-list-option\r\n        cdkDrag\r\n        [cdkDragDisabled]=\"node.disabled || node.groupable\"\r\n        [node]=\"node\"\r\n        [checked]=\"checked()\"\r\n        [nodeTpl]=\"nodeTpl()\"\r\n        [groupTpl]=\"groupTpl()\"\r\n        [nodeStyle]=\"nodeStyle()\"\r\n        [selected]=\"node.selected!\"\r\n        [groupable]=\"node.groupable!\"\r\n        [forbidden]=\"node.disabled!\"\r\n        [active]=\"node.active!\"\r\n        (activeChange)=\"node.active = $event\"\r\n        [openPortal]=\"node.openPortal!\"\r\n        [icon]=\"node.icon\"\r\n        [label]=\"node.label\"\r\n        [leaf]=\"node.leaf!\"\r\n        [divided]=\"node.divided!\"\r\n        [size]=\"size()\"\r\n        [keywordText]=\"keywordText()\"\r\n        [caseSensitive]=\"caseSensitive()\"\r\n        (click)=\"onNodeClick($event, node)\"\r\n        (mouseenter)=\"onMouseenter($event, node)\"\r\n        (mouseleave)=\"onMouseleave($event, node)\"\r\n        tabindex=\"-1\"\r\n      ></x-list-option>\r\n    }\r\n  </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XListComponent } from './list.component';\r\nimport { XListOptionComponent } from './list-option.component';\r\nimport { XListDropGroup } from './list-drop-group.directive';\r\n\r\n@NgModule({\r\n  exports: [XListComponent, XListDropGroup, XListOptionComponent],\r\n  imports: [XListComponent, XListDropGroup, XListOptionComponent]\r\n})\r\nexport class XListModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}