{"version":3,"file":"ng-devui-splitter.mjs","sources":["../../devui/splitter/resize.directive.ts","../../devui/splitter/splitter.service.ts","../../devui/splitter/splitter-bar.component.ts","../../devui/splitter/splitter-bar.component.html","../../devui/splitter/splitter-pane.component.ts","../../devui/splitter/splitter-pane.component.html","../../devui/splitter/splitter.component.ts","../../devui/splitter/splitter.component.html","../../devui/splitter/splitter.module.ts","../../devui/splitter/ng-devui-splitter.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\n\n@Directive({\n  selector: '[dResize]'\n})\nexport class ResizeDirective implements OnInit, OnDestroy {\n  // 是否允许拖动\n  @Input() enableResize = true;\n  // 按下事件，mousedown，touchstart等\n  @Output() pressEvent = new EventEmitter<any>();\n  // 拖动中事件，mousemove，touchmove等\n  @Output() dragEvent = new EventEmitter<any>();\n  // 释放事件，mouseup，touchend等\n  @Output() releaseEvent = new EventEmitter<any>();\n  constructor(private el: ElementRef, private ngZone: NgZone) {}\n\n  ngOnInit() {\n    if (this.enableResize) {\n      this.ngZone.runOutsideAngular(() => {\n        this.bindEvent();\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.enableResize) {\n      this.unbind(this.el.nativeElement, 'mousedown', this.mousedown);\n      this.unbind(this.el.nativeElement, 'touchstart', this.touchstart);\n    }\n  }\n\n  bind = (el, event, callback) => el.addEventListener && el.addEventListener(event, callback);\n\n  unbind = (el, event, callback) => el && el.removeEventListener && el.removeEventListener(event, callback);\n\n  bindEvent() {\n    const element = this.el.nativeElement;\n    // 绑定mousedown事件\n    this.bind(element, 'mousedown', this.mousedown);\n    // 绑定触屏事件\n    this.bind(element, 'touchstart', this.touchstart);\n  }\n\n  mousedown = (e) => {\n    this.bind(document, 'mousemove', this.mousemove);\n    this.bind(document, 'mouseup', this.mouseup);\n    this.pressEvent.emit(this.normalizeEvent(e));\n  };\n\n  mousemove = (e) => {\n    this.dragEvent.emit(this.normalizeEvent(e));\n  };\n\n  mouseup = (e) => {\n    this.unbind(document, 'mousemove', this.mousemove);\n    this.unbind(document, 'mouseup', this.mouseup);\n    this.releaseEvent.emit(this.normalizeEvent(e));\n  };\n\n  touchstart = (e) => {\n    this.bind(document, 'touchmove', this.touchmove);\n    this.bind(document, 'touchend', this.touchend);\n    if (e.touches.length === 1) {\n      this.pressEvent.emit(this.normalizeEvent(e));\n    }\n  };\n\n  touchmove = (e) => {\n    if (e.touches.length === 1) {\n      this.dragEvent.emit(this.normalizeEvent(e));\n    }\n  };\n\n  touchend = (e) => {\n    this.unbind(document, 'touchmove', this.touchmove);\n    this.unbind(document, 'touchend', this.touchend);\n    if (e.touches.length === 0) {\n      this.releaseEvent.emit(this.normalizeEvent(e));\n    }\n  };\n\n  // 返回常用位置信息\n  normalizeEvent(e) {\n    // 判断事件类型，用于计算位置坐标\n    if (e.type.match(/touch/)) {\n      return {\n        pageX: e.changedTouches[0].pageX,\n        pageY: e.changedTouches[0].pageY,\n        clientX: e.changedTouches[0].clientX,\n        clientY: e.changedTouches[0].clientY,\n        type: e.type,\n        originalEvent: e,\n        isTouch: true\n      };\n    }\n    return {\n      pageX: e.pageX,\n      pageY: e.pageY,\n      clientX: e.clientX,\n      clientY: e.clientY,\n      offsetX: e.offsetX,\n      offsetY: e.offsetY,\n      type: e.type,\n      originalEvent: e\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SplitterBarComponent } from './splitter-bar.component';\r\nimport { SplitterPaneComponent } from './splitter-pane.component';\r\n\r\n@Injectable()\r\nexport class SplitterService {\r\n  panes: SplitterPaneComponent[];\r\n  bars: SplitterBarComponent[];\r\n  private containerSize: Function;\r\n  paneCount = 0;\r\n  paneChangeSubject = new Subject();\r\n  // 配置pane信息，panes列表，方向，容器大小，方便后续计算使用\r\n  configPane({ panes, orientation, containerSize }) {\r\n    this.panes = panes;\r\n    this.panes.forEach((pane, index) => {\r\n      pane.order = index * 2;\r\n      pane.orientation = orientation;\r\n    });\r\n    this.paneCount = this.panes.length;\r\n    this.containerSize = containerSize;\r\n  }\r\n\r\n  // 按下的时候计算pane的size信息\r\n  dragState(splitbarIndex) {\r\n    const prev = this.getPane(splitbarIndex);\r\n    const next = this.getPane(splitbarIndex + 1);\r\n    const total = prev.computedSize + next.computedSize;\r\n    return {\r\n      prev: {\r\n        index: splitbarIndex,\r\n        initialSize: prev.computedSize,\r\n        // 设置有最小值，直接取值，如果没有设置就用两个pane总和减去相邻pane的最大值，都没设置（NAN）在取0\r\n        minSize: this.toPixels(prev.minSize) || total - this.toPixels(next.maxSize) || 0,\r\n        // 设置有最大值，直接取值，如果没有设置就用两个pane总和减去相邻pane的最小值，都没设置（NAN）在取两个pane总和\r\n        maxSize: this.toPixels(prev.maxSize) || total - this.toPixels(next.minSize) || total,\r\n      },\r\n      next: {\r\n        index: splitbarIndex + 1,\r\n        initialSize: next.computedSize,\r\n        minSize: this.toPixels(next.minSize) || total - this.toPixels(prev.maxSize) || 0,\r\n        maxSize: this.toPixels(next.maxSize) || total - this.toPixels(prev.minSize) || total,\r\n      },\r\n    };\r\n  }\r\n\r\n  // 设置pane大小\r\n  setSize(state, distance) {\r\n    const prev = this.getPane(state.prev.index);\r\n    const next = this.getPane(state.next.index);\r\n    if (prev.size && next.size) {\r\n      // 相邻的两个pane都指定了size，需要同时修改size\r\n      this.resize(state.prev, distance);\r\n      this.resize(state.next, -distance);\r\n    } else if (next.size) {\r\n      // 如果 next pane，指定了size就修改next pane\r\n      this.resize(state.next, -distance);\r\n    } else {\r\n      // 最后不管pre pane，有没有指定，都修改 pre pane\r\n      this.resize(state.prev, distance);\r\n    }\r\n  }\r\n\r\n  // 大小限制函数，（max）小于最小值时取最小值， （min）大于最大值时取最大值\r\n  clamp(minSize, maxSize, initialSize) {\r\n    return Math.min(maxSize, Math.max(minSize, initialSize));\r\n  }\r\n\r\n  // resize pane的大小\r\n  resize(paneState, moveSize) {\r\n    const pane = this.getPane(paneState.index);\r\n    const splitterSize = this.containerSize();\r\n    const newSize = this.clamp(paneState.minSize, paneState.maxSize, paneState.initialSize + moveSize);\r\n    let size = '';\r\n    if (this.isPercent(pane.size)) {\r\n      size = (100 * newSize) / splitterSize + '%';\r\n    } else {\r\n      size = newSize + 'px';\r\n    }\r\n    pane.size = size;\r\n    pane.sizeChange.emit(size);\r\n  }\r\n\r\n  // 判断pane是否可以调整大小，只要有一边设置了不可调整或者收起，相邻pane调整就失效\r\n  isResizable(splitBarIndex) {\r\n    const prevPane = this.getPane(splitBarIndex);\r\n    const nextPane = this.getPane(splitBarIndex + 1);\r\n    const paneCollapsed = prevPane.collapsed || nextPane.collapsed;\r\n    return prevPane.resizable && nextPane.resizable && !paneCollapsed;\r\n  }\r\n\r\n  // 判断分割条是否是固定的，只要有一边不能调整, 就是禁用状态固定bar\r\n  isStaticBar(splitBarIndex) {\r\n    const prevPane = this.getPane(splitBarIndex);\r\n    const nextPane = this.getPane(splitBarIndex + 1);\r\n    return !(prevPane.resizable && nextPane.resizable);\r\n  }\r\n\r\n  // 获取pane，防止没有初始化的时候调用内部方法取值\r\n  getPane(index) {\r\n    if (!this.panes || index < 0 || index >= this.panes.length) {\r\n      throw new Error('no pane can return.');\r\n    }\r\n    return this.panes[index];\r\n  }\r\n\r\n  getBar(index) {\r\n    if (!this.bars || index < 0 || index >= this.bars.length) {\r\n      return;\r\n    }\r\n    return this.bars[index];\r\n  }\r\n\r\n  // 判断是不是百分比设置宽度\r\n  isPercent(size) {\r\n    return /%$/.test(size);\r\n  }\r\n\r\n  // 计算时把百分比转换为像素\r\n  toPixels(size) {\r\n    // 值不满足转换时，result为NAN，方便计算最小、最大宽度判断\r\n    let result = parseFloat(size);\r\n    if (this.isPercent(size)) {\r\n      result = (this.containerSize() * result) / 100;\r\n    }\r\n    return result;\r\n  }\r\n\r\n  // 切换pane展开，收起\r\n  togglePane(paneIndex, nearPaneIndex, lockStatus?) {\r\n    const pane = this.getPane(paneIndex);\r\n    const nearPane = this.getPane(nearPaneIndex);\r\n    if (pane.collapsible) {\r\n      pane._collapsed = lockStatus ? pane._collapsed : !pane._collapsed;\r\n      pane.toggleCollapseClass();\r\n      nearPane.toggleNearPaneFlexGrow(pane._collapsed);\r\n      pane.collapsedChange.emit(pane._collapsed);\r\n    }\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  Host,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  SkipSelf,\r\n} from '@angular/core';\r\nimport { I18nService } from 'ng-devui/i18n';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter, map, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { ResizeDirective } from './resize.directive';\r\nimport { SplitterService } from './splitter.service';\r\nimport { SplitterOrientation } from './splitter.types';\r\n\r\n@Component({\r\n  selector: 'd-splitter-bar',\r\n  templateUrl: './splitter-bar.component.html',\r\n  styleUrls: ['./splitter-bar.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  preserveWhitespaces: false,\r\n})\r\nexport class SplitterBarComponent implements OnInit, AfterViewInit, OnDestroy {\r\n  // 当前pane索引\r\n  @Input() index: number;\r\n  // 窗格排列方向\r\n  @Input() orientation: SplitterOrientation;\r\n  // 是否显示展开/收缩按钮\r\n  @Input() showCollapseButton;\r\n  @Input() collapsePosLeft: string;\r\n  @Input() collapsePosTop: string;\r\n  // 分隔条大小\r\n  _splitBarSize;\r\n  @Input()\r\n  set splitBarSize(size) {\r\n    this._splitBarSize = size;\r\n    this.renderer.setStyle(this.el.nativeElement, 'flex-basis', size);\r\n  }\r\n  get splitBarSize() {\r\n    return this._splitBarSize;\r\n  }\r\n  @Input() disabledBarSize;\r\n\r\n  @HostBinding('class') get class() {\r\n    let bindClass = 'devui-splitter-bar devui-splitter-bar-' + this.orientation;\r\n    if (!this.splitter.isStaticBar(this.index)) {\r\n      bindClass += ' resizable';\r\n    } else {\r\n      this.renderer.setStyle(this.el.nativeElement, 'flex-basis', this.disabledBarSize);\r\n    }\r\n    return bindClass;\r\n  }\r\n  // 国际化文案\r\n  splitterText;\r\n  // 提示内容\r\n  preTip;\r\n  nextTip;\r\n  subscriptions = new Subscription();\r\n  // 移动的时候，阻止事件冒泡\r\n  private stopPropagation = ({ originalEvent: event }) => {\r\n    event.stopPropagation();\r\n    if (event.cancelable) {\r\n      event.preventDefault();\r\n    }\r\n  };\r\n\r\n  // 处理移动过程中的数据流, 合并到pressEvent事件流中\r\n  private moveStream = (resize) => (mouseDown) =>\r\n    resize.dragEvent.pipe(\r\n      takeUntil(resize.releaseEvent),\r\n      map(({ pageX, pageY }: MouseEvent) => ({\r\n        originalX: mouseDown.pageX,\r\n        originalY: mouseDown.pageY,\r\n        pageX,\r\n        pageY,\r\n      }))\r\n    );\r\n\r\n  constructor(\r\n    public el: ElementRef,\r\n    private splitter: SplitterService,\r\n    private renderer: Renderer2,\r\n    @Host() private resize: ResizeDirective,\r\n    @SkipSelf() private cdr: ChangeDetectorRef,\r\n    private cdrSelf: ChangeDetectorRef,\r\n    private i18n: I18nService\r\n  ) {\r\n    this.splitter.paneChangeSubject.subscribe(() => {\r\n      this.initialCollapseStatus();\r\n      this.cdr.detectChanges();\r\n      this.cdrSelf.detectChanges();\r\n    });\r\n    this.splitterText = this.i18n.getI18nText().splitter;\r\n    this.subscriptions.add(\r\n      this.i18n.langChange().subscribe((data) => {\r\n        this.splitterText = data.splitter;\r\n      })\r\n    );\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    let state;\r\n    const resizeListener = this.resize.pressEvent\r\n      .pipe(\r\n        tap(this.stopPropagation),\r\n        filter(() => this.splitter.isResizable(this.index)),\r\n        tap(() => {\r\n          state = this.splitter.dragState(this.index);\r\n        }),\r\n        switchMap(this.moveStream(this.resize))\r\n      )\r\n      .subscribe(({ pageX, pageY, originalX, originalY }) => {\r\n        let distance;\r\n        if (this.orientation === 'vertical') {\r\n          distance = pageY - originalY;\r\n        } else {\r\n          distance = pageX - originalX;\r\n        }\r\n        this.splitter.setSize(state, distance);\r\n      });\r\n    this.subscriptions.add(resizeListener);\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.initialCollapseStatus();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subscriptions.unsubscribe();\r\n    this.splitter.paneChangeSubject.unsubscribe();\r\n  }\r\n\r\n  initialCollapseStatus() {\r\n    this.collapsePrePane(true);\r\n    this.collapseNextPane(true);\r\n  }\r\n\r\n  collapsePrePane(lockStatus?) {\r\n    this.splitter.togglePane(this.index, this.index + 1, lockStatus);\r\n    this.toggleResize();\r\n    this.hidePrevIsCovered();\r\n  }\r\n\r\n  collapseNextPane(lockStatus?) {\r\n    this.splitter.togglePane(this.index + 1, this.index, lockStatus);\r\n    this.toggleResize();\r\n    this.hideNextIsCovered();\r\n  }\r\n\r\n  queryPanes(index, nearIndex) {\r\n    const pane = this.splitter.getPane(index);\r\n    const nearPane = this.splitter.getPane(nearIndex);\r\n    return { pane, nearPane };\r\n  }\r\n\r\n  // 切换是否允许拖拽，收起时不能拖拽\r\n  toggleResize() {\r\n    const { pane, nearPane } = this.queryPanes(this.index, this.index + 1);\r\n    const isCollapsed = pane.collapsed || nearPane.collapsed;\r\n    if (isCollapsed) {\r\n      this.renderer.addClass(this.el.nativeElement, 'none-resizable');\r\n    } else {\r\n      this.renderer.removeClass(this.el.nativeElement, 'none-resizable');\r\n    }\r\n  }\r\n\r\n  // 计算前面板收起操作样式\r\n  get prevClass() {\r\n    const { pane, nearPane } = this.queryPanes(this.index, this.index + 1);\r\n    this.preTip = pane.collapsed ? this.splitterText.expand : this.splitterText.collapse;\r\n    // 第一个面板或者其它面板折叠方向不是向后的显示操作按钮\r\n    const showIcon = pane.collapseDirection !== 'after' || this.index === 0;\r\n    return this.generateCollapseClass(pane, nearPane, showIcon);\r\n  }\r\n\r\n  // 计算相邻面板收起操作样式\r\n  get nextClass() {\r\n    const { pane, nearPane } = this.queryPanes(this.index + 1, this.index);\r\n    this.nextTip = pane.collapsed ? this.splitterText.expand : this.splitterText.collapse;\r\n    // 最后一个面板或者其它面板折叠方向不是向前的显示操作按钮\r\n    const showIcon = pane.collapseDirection !== 'before' || this.index + 1 === this.splitter.paneCount - 1;\r\n    return this.generateCollapseClass(pane, nearPane, showIcon);\r\n  }\r\n\r\n  // 生成拼接样式\r\n  generateClass(classes) {\r\n    return Object.keys(classes)\r\n      .filter((c) => classes[c])\r\n      .join(' ');\r\n  }\r\n\r\n  // 根据当前状态生成收起按钮样式\r\n  generateCollapseClass(pane, nearPane, showIcon) {\r\n    // 是否允许收起\r\n    const isCollapsible = pane.collapsible && showIcon;\r\n    // 当前收起状态\r\n    const isCollapsed = pane.collapsed;\r\n    // 一个pane收起的时候，隐藏相邻pane的收起按钮\r\n    const isNearPaneCollapsed = nearPane.collapsed;\r\n    return this.generateClass({\r\n      'devui-collapse': isCollapsible,\r\n      collapsed: isCollapsed,\r\n      hidden: isNearPaneCollapsed,\r\n    });\r\n  }\r\n\r\n  hidePrevIsCovered() {\r\n    const pane = this.splitter.getPane(this.index);\r\n    const prevBar = this.splitter.getBar(this.index - 1);\r\n    const prevBarDom = prevBar?.el.nativeElement.querySelector('.prev');\r\n    if (prevBarDom) {\r\n      const rules = [pane.collapsed, pane.collapsible, pane.collapseDirection === 'before'];\r\n      if (rules.includes(false)) {\r\n        prevBarDom.classList.remove('hidden');\r\n      } else {\r\n        prevBarDom.classList.add('hidden');\r\n      }\r\n    }\r\n  }\r\n\r\n  hideNextIsCovered() {\r\n    const pane = this.splitter.getPane(this.index + 1);\r\n    const nextBar = this.splitter.getBar(this.index + 1);\r\n    const nextBarDom = nextBar?.el.nativeElement.querySelector('.next');\r\n    if (nextBarDom) {\r\n      const rules = [pane.collapsed, pane.collapsible, pane.collapseDirection === 'after'];\r\n      if (rules.includes(false)) {\r\n        nextBarDom.classList.remove('hidden');\r\n      } else {\r\n        nextBarDom.classList.add('hidden');\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div\n  class=\"prev\"\n  *ngIf=\"showCollapseButton\"\n  dPopover\n  [style.left]=\"collapsePosLeft\"\n  [style.top]=\"collapsePosTop\"\n  [trigger]=\"'hover'\"\n  [controlled]=\"true\"\n  [ngClass]=\"prevClass\"\n  [content]=\"preTip\"\n  [showAnimation]=\"false\"\n  [mouseEnterDelay]=\"100\"\n  [mouseLeaveDelay]=\"0\"\n  (click)=\"collapsePrePane()\"\n  (touchstart)=\"collapsePrePane()\"\n></div>\n<div class=\"devui-resize-handle\"></div>\n<div\n  class=\"next\"\n  *ngIf=\"showCollapseButton\"\n  dPopover\n  [trigger]=\"'hover'\"\n  [controlled]=\"true\"\n  [ngClass]=\"nextClass\"\n  [content]=\"nextTip\"\n  (click)=\"collapseNextPane()\"\n  (touchstart)=\"collapseNextPane()\"\n></div>\n","import {\n  AfterViewChecked, ChangeDetectionStrategy, Component, ElementRef, EventEmitter,\n  HostBinding, Input, OnChanges, Output, Renderer2, SimpleChanges\n} from '@angular/core';\nimport { SplitterService } from './splitter.service';\nimport { CollapseDirection, SplitterOrientation } from './splitter.types';\n@Component({\n  selector: 'd-splitter-pane',\n  templateUrl: './splitter-pane.component.html',\n  styleUrls: ['./splitter-pane.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n})\n\nexport class SplitterPaneComponent implements OnChanges, AfterViewChecked {\n  // pane的最小值\n  @Input() minSize: string;\n  // pane的最大值\n  @Input() maxSize: string;\n  // 当前panel是否可调整大小\n  @Input() resizable = true;\n  // 面板是否可折叠\n  @Input() collapsible = false;\n  // 是否折叠收缩\n  @Input() shrink = false;\n  // 折叠收缩后宽度\n  @Input() shrinkWidth = 36;\n  // 面板初始化是否折叠，默认不折叠\n  _collapsed = false;\n  @Input()\n  set collapsed(newCollapsed) {\n    if (this._collapsed !== newCollapsed) {\n      this._collapsed = newCollapsed;\n      this.splitter.paneChangeSubject.next(true);\n    }\n  }\n  get collapsed() {\n    return this._collapsed;\n  }\n  // 非边缘面板折叠方向，before只生成向前折叠的按钮，after生成向后折叠按钮，both生成两个\n  @Input() collapseDirection: CollapseDirection = 'both';\n  widthBeforeShrink;\n  // pane初始化大小\n  _size;\n  @Input()\n  set size(newSize) {\n    this._size = newSize;\n    this.widthBeforeShrink = newSize;\n    this.renderer.setStyle(this.element, 'flex-basis', newSize);\n    const paneFixedClass = 'devui-splitter-pane-fixed';\n    if (this.size) {\n      // 设置 flex-grow 和 flex-shrink\n      this.renderer.addClass(this.element, paneFixedClass);\n    } else {\n      this.renderer.removeClass(this.element, paneFixedClass);\n    }\n  }\n  get size() {\n    return this._size;\n  }\n  // 大小改变事件\n  @Output() sizeChange = new EventEmitter<any>();\n\n  // 收起和展开事件\n  @Output() collapsedChange = new EventEmitter<any>();\n\n  // 收缩和展开事件\n  @Output() shrinkStatusChange = new EventEmitter<boolean>();\n\n  @HostBinding('class.devui-splitter-pane') paneClass = true;\n\n  orientation: SplitterOrientation; // 分割条方向\n  _order = 0; // flex布局下pane位置\n  element; // nativeElement句柄\n\n  set order(paneOrder) {\n    this._order = paneOrder;\n    this.setOrderStyles();\n  }\n  get order() {\n    return this._order;\n  }\n\n  constructor(private splitter: SplitterService, private el: ElementRef, private renderer: Renderer2) {\n    this.element = this.el.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ((changes.collapsible && !changes.collapsible.isFirstChange()) || (changes.resizable && !changes.resizable.isFirstChange())) {\n      this.splitter.paneChangeSubject.next(true);\n    }\n  }\n\n  // 设置order\n  setOrderStyles() {\n    this.renderer.setStyle(this.element, 'order', this.order);\n  }\n\n  // 获取当前pane大小\n  get computedSize() {\n    if (this.orientation === 'vertical') {\n      return this.element.offsetHeight;\n    } else {\n      return this.element.offsetWidth;\n    }\n  }\n\n  // 收起时隐藏当前pane\n  toggleCollapseClass() {\n    const paneHiddenClass = 'devui-splitter-pane-hidden';\n\n    if (!this._collapsed) {\n      this.renderer.removeClass(this.element, paneHiddenClass);\n    } else {\n      this.renderer.addClass(this.element, paneHiddenClass);\n    }\n\n    if (this._collapsed && this.shrink) {\n      this.renderer.removeClass(this.element, paneHiddenClass);\n      this.renderer.setStyle(this.element, 'flex-basis', `${this.shrinkWidth}px`);\n      this.shrinkStatusChange.emit(true);\n    } else {\n      this.renderer.setStyle(this.element, 'flex-basis', this.widthBeforeShrink);\n      this.shrinkStatusChange.emit(false);\n    }\n  }\n\n  // 收起时用于改变相邻pane的flex-grow属性来改变非自适应pane的size\n  toggleNearPaneFlexGrow(collapsed) {\n    const flexGrowClass = 'devui-splitter-pane-grow';\n    const hasFlexGrowClass = this.element.classList.contains(flexGrowClass);\n    if (hasFlexGrowClass) {\n      this.renderer.removeClass(this.element, flexGrowClass);\n    } else if (collapsed) {\n      this.renderer.addClass(this.element, flexGrowClass);\n    }\n  }\n\n  ngAfterViewChecked() {\n    // 视图检查完对resizeable pane设置flex属性\n    if (!this.size && !this.resizable) {\n      this.renderer.addClass(this.element, 'devui-splitter-pane-fixed');\n    }\n  }\n}\n","<ng-content></ng-content>\n","import {\r\n  AfterContentInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  HostBinding,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  QueryList,\r\n  SimpleChanges,\r\n  ViewChildren,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SplitterBarComponent } from './splitter-bar.component';\r\nimport { SplitterPaneComponent } from './splitter-pane.component';\r\nimport { SplitterService } from './splitter.service';\r\nimport { SplitterOrientation } from './splitter.types';\r\n@Component({\r\n  selector: 'd-splitter',\r\n  exportAs: 'dSplitter',\r\n  templateUrl: './splitter.component.html',\r\n  styleUrls: ['./splitter.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [SplitterService],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class SplitterComponent implements OnChanges, AfterContentInit, OnDestroy {\r\n  // 指定Splitter中窗格的方向，默认水平分割。\r\n  @Input() orientation: SplitterOrientation = 'horizontal';\r\n  // 分隔条大小\r\n  @Input() splitBarSize = '2px';\r\n  // pane设置为不可调整大小时，生效\r\n  @Input() disabledBarSize = '1px';\r\n  // 是否显示展开/收缩按钮\r\n  @Input() showCollapseButton = true;\r\n  @Input() collapsePosLeft: string;\r\n  @Input() collapsePosTop: string;\r\n\r\n  @HostBinding('class') get class() {\r\n    return 'devui-splitter devui-splitter-' + this.orientation;\r\n  }\r\n  // 内嵌面板\r\n  @ContentChildren(SplitterPaneComponent) panes: QueryList<SplitterPaneComponent>;\r\n  @ViewChildren('bar') splitterBars: QueryList<SplitterBarComponent>;\r\n  paneChangesSubscription: Subscription;\r\n\r\n  constructor(private el: ElementRef, private splitter: SplitterService, private cdr: ChangeDetectorRef) {}\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes.orientation && !changes.orientation.isFirstChange()) {\r\n      this.reconfigure();\r\n    }\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    this.reconfigure();\r\n    // contentChildren 变化时，触发重新设置pane\r\n    this.paneChangesSubscription = this.panes.changes.subscribe((panes) => {\r\n      this.reconfigure();\r\n      this.cdr.detectChanges();\r\n    });\r\n  }\r\n\r\n  public toggleCollapsed(index = 0) {\r\n    const target = this.splitterBars.toArray()[index];\r\n    target.collapsePrePane();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.paneChangesSubscription) {\r\n      this.paneChangesSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  // 配置pane\r\n  reconfigure() {\r\n    this.splitter.configPane({\r\n      panes: this.panes.toArray(),\r\n      orientation: this.orientation,\r\n      // 内容投影进组件之后，组件还没有渲染出dom，此时获取不到宽度，此处设置一个回调函数\r\n      containerSize: () => {\r\n        if (this.orientation === 'vertical') {\r\n          return this.el.nativeElement.clientHeight;\r\n        } else {\r\n          return this.el.nativeElement.clientWidth;\r\n        }\r\n      },\r\n    });\r\n    // 投影后获取panes才能循环渲染出bar\r\n    setTimeout(() => {\r\n      if (this.splitterBars.length) {\r\n        this.splitter.bars = this.splitterBars.toArray();\r\n      }\r\n    });\r\n  }\r\n}\r\n","<ng-content select=\"d-splitter-pane\"></ng-content>\n<ng-container *ngFor=\"let pane of panes; let index = index; let last = last\">\n  <d-splitter-bar\n    #bar\n    dResize\n    [style.order]=\"index * 2 + 1\"\n    *ngIf=\"!last\"\n    [index]=\"index\"\n    [splitBarSize]=\"splitBarSize\"\n    [disabledBarSize]=\"disabledBarSize\"\n    [orientation]=\"orientation\"\n    [showCollapseButton]=\"showCollapseButton\"\n    [collapsePosLeft]=\"collapsePosLeft\"\n    [collapsePosTop]=\"collapsePosTop\"\n  >\n  </d-splitter-bar>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { PopoverModule } from 'ng-devui/popover';\nimport { ResizeDirective } from './resize.directive';\nimport { SplitterBarComponent } from './splitter-bar.component';\nimport { SplitterPaneComponent } from './splitter-pane.component';\nimport { SplitterComponent } from './splitter.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    PopoverModule\n  ],\n  exports: [\n    SplitterComponent,\n    SplitterPaneComponent,\n    SplitterBarComponent,\n    ResizeDirective\n  ],\n  declarations: [\n    SplitterComponent,\n    SplitterPaneComponent,\n    SplitterBarComponent,\n    ResizeDirective\n  ],\n  providers: []\n})\nexport class SplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SplitterService","i2.ResizeDirective","i2","i3.SplitterBarComponent","i4.ResizeDirective"],"mappings":"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"}