{"version":3,"file":"talentedaamer-angular-tree-component.mjs","sources":["../../../projects/angular-tree-component/src/lib/mobx-angular/tree-mobx-autorun.directive.ts","../../../projects/angular-tree-component/src/lib/constants/keys.ts","../../../projects/angular-tree-component/src/lib/models/tree-options.model.ts","../../../projects/angular-tree-component/src/lib/constants/events.ts","../../../projects/angular-tree-component/src/lib/models/tree-node.model.ts","../../../projects/angular-tree-component/src/lib/models/tree.model.ts","../../../projects/angular-tree-component/src/lib/models/tree-dragged-element.model.ts","../../../projects/angular-tree-component/src/lib/models/tree-virtual-scroll.model.ts","../../../projects/angular-tree-component/src/lib/components/loading.component.ts","../../../projects/angular-tree-component/src/lib/mobx-angular/mobx-proxy.ts","../../../projects/angular-tree-component/src/lib/directives/tree-drop.directive.ts","../../../projects/angular-tree-component/src/lib/components/tree-node-drop-slot.component.ts","../../../projects/angular-tree-component/src/lib/components/tree-viewport.component.ts","../../../projects/angular-tree-component/src/lib/directives/tree-animate-open.directive.ts","../../../projects/angular-tree-component/src/lib/directives/tree-drag.directive.ts","../../../projects/angular-tree-component/src/lib/components/tree-node-expander.component.ts","../../../projects/angular-tree-component/src/lib/components/tree-node-checkbox.component.ts","../../../projects/angular-tree-component/src/lib/components/tree.component.ts","../../../projects/angular-tree-component/src/lib/angular-tree-component.module.ts","../../../projects/angular-tree-component/src/public-api.ts","../../../projects/angular-tree-component/src/talentedaamer-angular-tree-component.ts"],"sourcesContent":["import {\r\n  Directive,\r\n  ViewContainerRef,\r\n  TemplateRef,\r\n  OnInit,\r\n  OnDestroy,\r\n  Input,\r\n  EmbeddedViewRef\r\n} from '@angular/core';\r\nimport { autorun } from 'mobx';\r\n\r\n@Directive({ selector: '[treeMobxAutorun]' })\r\nexport class TreeMobxAutorunDirective implements OnInit, OnDestroy {\r\n  protected templateBindings = {};\r\n  protected dispose: any;\r\n  protected view: EmbeddedViewRef<any>;\r\n  @Input() treeMobxAutorun;\r\n\r\n  constructor(\r\n    protected templateRef: TemplateRef<any>,\r\n    protected viewContainer: ViewContainerRef\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.view = this.viewContainer.createEmbeddedView(this.templateRef);\r\n\r\n    if (this.dispose) {\r\n      this.dispose();\r\n    }\r\n\r\n    if (this.shouldDetach()) {\r\n      this.view.detach();\r\n    }\r\n    this.autoDetect(this.view);\r\n  }\r\n\r\n  shouldDetach() {\r\n    return this.treeMobxAutorun && this.treeMobxAutorun.detach;\r\n  }\r\n\r\n  autoDetect(view: EmbeddedViewRef<any>) {\r\n    this.dispose = autorun(() => view.detectChanges());\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.dispose) {\r\n      this.dispose();\r\n    }\r\n  }\r\n}\r\n","export const KEYS = {\r\n  LEFT: 37,\r\n  UP: 38,\r\n  RIGHT: 39,\r\n  DOWN: 40,\r\n  ENTER: 13,\r\n  SPACE: 32,\r\n  CONTEXT_MENU: 32\r\n};\r\n","import { TreeNode } from './tree-node.model';\r\nimport { TreeModel } from './tree.model';\r\nimport { KEYS } from '../constants/keys';\r\nimport { ITreeOptions } from '../defs/api';\r\n\r\nexport interface IActionHandler {\r\n  (tree: TreeModel, node: TreeNode, $event: any, ...rest);\r\n}\r\n\r\nexport const TREE_ACTIONS = {\r\n  TOGGLE_ACTIVE: (tree: TreeModel, node: TreeNode, $event: any) => node && node.toggleActivated(),\r\n  TOGGLE_ACTIVE_MULTI: (tree: TreeModel, node: TreeNode, $event: any) => node && node.toggleActivated(true),\r\n  TOGGLE_SELECTED: (tree: TreeModel, node: TreeNode, $event: any) => node && node.toggleSelected(),\r\n  ACTIVATE: (tree: TreeModel, node: TreeNode, $event: any) => node.setIsActive(true),\r\n  DEACTIVATE: (tree: TreeModel, node: TreeNode, $event: any) => node.setIsActive(false),\r\n  SELECT: (tree: TreeModel, node: TreeNode, $event: any) => node.setIsSelected(true),\r\n  DESELECT: (tree: TreeModel, node: TreeNode, $event: any) => node.setIsSelected(false),\r\n  FOCUS: (tree: TreeModel, node: TreeNode, $event: any) => node.focus(),\r\n  TOGGLE_EXPANDED: (tree: TreeModel, node: TreeNode, $event: any) => node.hasChildren && node.toggleExpanded(),\r\n  EXPAND: (tree: TreeModel, node: TreeNode, $event: any) => node.expand(),\r\n  COLLAPSE: (tree: TreeModel, node: TreeNode, $event: any) => node.collapse(),\r\n  DRILL_DOWN: (tree: TreeModel, node: TreeNode, $event: any) => tree.focusDrillDown(),\r\n  DRILL_UP: (tree: TreeModel, node: TreeNode, $event: any) => tree.focusDrillUp(),\r\n  NEXT_NODE: (tree: TreeModel, node: TreeNode, $event: any) =>  tree.focusNextNode(),\r\n  PREVIOUS_NODE: (tree: TreeModel, node: TreeNode, $event: any) =>  tree.focusPreviousNode(),\r\n  MOVE_NODE: (tree: TreeModel, node: TreeNode, $event: any, {from , to}: {from: any, to: any}) => {\r\n    // default action assumes from = node, to = {parent, index}\r\n    if ($event.ctrlKey) {\r\n      tree.copyNode(from, to);\r\n    } else {\r\n      tree.moveNode(from, to);\r\n    }\r\n  }\r\n};\r\n\r\nconst defaultActionMapping: IActionMapping = {\r\n  mouse: {\r\n    click: TREE_ACTIONS.TOGGLE_ACTIVE,\r\n    dblClick: null,\r\n    contextMenu: null,\r\n    expanderClick: TREE_ACTIONS.TOGGLE_EXPANDED,\r\n    checkboxClick: TREE_ACTIONS.TOGGLE_SELECTED,\r\n    drop: TREE_ACTIONS.MOVE_NODE\r\n  },\r\n  keys: {\r\n    [KEYS.RIGHT]: TREE_ACTIONS.DRILL_DOWN,\r\n    [KEYS.LEFT]: TREE_ACTIONS.DRILL_UP,\r\n    [KEYS.DOWN]: TREE_ACTIONS.NEXT_NODE,\r\n    [KEYS.UP]: TREE_ACTIONS.PREVIOUS_NODE,\r\n    [KEYS.SPACE]: TREE_ACTIONS.TOGGLE_ACTIVE,\r\n    [KEYS.ENTER]: TREE_ACTIONS.TOGGLE_ACTIVE\r\n  }\r\n};\r\n\r\nexport interface IActionMapping {\r\n  mouse?: {\r\n    click?: IActionHandler,\r\n    dblClick?: IActionHandler,\r\n    contextMenu?: IActionHandler,\r\n    expanderClick?: IActionHandler,\r\n    checkboxClick?: IActionHandler,\r\n    dragStart?: IActionHandler,\r\n    drag?: IActionHandler,\r\n    dragEnd?: IActionHandler,\r\n    dragOver?: IActionHandler,\r\n    dragLeave?: IActionHandler,\r\n    dragEnter?: IActionHandler,\r\n    drop?: IActionHandler,\r\n    mouseOver?: IActionHandler,\r\n    mouseOut?: IActionHandler\r\n  };\r\n  keys?: {\r\n    [key: number]: IActionHandler\r\n  };\r\n}\r\n\r\nexport class TreeOptions {\r\n  get hasChildrenField(): string { return this.options.hasChildrenField || 'hasChildren'; }\r\n  get childrenField(): string { return this.options.childrenField || 'children'; }\r\n  get displayField(): string { return this.options.displayField || 'name'; }\r\n  get idField(): string { return this.options.idField || 'id'; }\r\n  get isExpandedField(): string { return this.options.isExpandedField || 'isExpanded'; }\r\n  get getChildren(): any { return this.options.getChildren; }\r\n  get levelPadding(): number { return this.options.levelPadding || 0; }\r\n  get useVirtualScroll(): boolean { return this.options.useVirtualScroll; }\r\n  get animateExpand(): boolean { return this.options.animateExpand; }\r\n  get animateSpeed(): number { return this.options.animateSpeed || 1; }\r\n  get animateAcceleration(): number { return this.options.animateAcceleration || 1.2; }\r\n  get scrollOnActivate(): boolean { return this.options.scrollOnActivate === undefined ? true : this.options.scrollOnActivate; }\r\n  get rtl(): boolean { return !!this.options.rtl; }\r\n  get rootId(): any {return this.options.rootId; }\r\n  get useCheckbox(): boolean { return this.options.useCheckbox; }\r\n  get useTriState(): boolean { return this.options.useTriState === undefined ? true : this.options.useTriState; }\r\n  get scrollContainer(): HTMLElement { return this.options.scrollContainer; }\r\n  get allowDragoverStyling(): boolean { return this.options.allowDragoverStyling === undefined ? true : this.options.allowDragoverStyling; }\r\n  actionMapping: IActionMapping;\r\n\r\n  constructor(private options: ITreeOptions = {}) {\r\n    this.actionMapping = {\r\n      mouse: {\r\n        click: this.options?.actionMapping?.mouse?.click ?? defaultActionMapping.mouse.click,\r\n        dblClick: this.options?.actionMapping?.mouse?.dblClick ?? defaultActionMapping.mouse.dblClick,\r\n        contextMenu: this.options?.actionMapping?.mouse?.contextMenu ?? defaultActionMapping.mouse.contextMenu,\r\n        expanderClick: this.options?.actionMapping?.mouse?.expanderClick ?? defaultActionMapping.mouse.expanderClick,\r\n        checkboxClick: this.options?.actionMapping?.mouse?.checkboxClick ?? defaultActionMapping.mouse.checkboxClick,\r\n        drop: this.options?.actionMapping?.mouse?.drop ?? defaultActionMapping.mouse.drop,\r\n        dragStart: this.options?.actionMapping?.mouse?.dragStart ?? undefined,\r\n        drag: this.options?.actionMapping?.mouse?.drag ?? undefined,\r\n        dragEnd: this.options?.actionMapping?.mouse?.dragEnd ?? undefined,\r\n        dragOver: this.options?.actionMapping?.mouse?.dragOver ?? undefined,\r\n        dragLeave: this.options?.actionMapping?.mouse?.dragLeave ?? undefined,\r\n        dragEnter: this.options?.actionMapping?.mouse?.dragEnter ?? undefined,\r\n        mouseOver: this.options?.actionMapping?.mouse?.mouseOver ?? undefined,\r\n        mouseOut: this.options?.actionMapping?.mouse?.mouseOut ?? undefined,\r\n      },\r\n      keys: {\r\n        [KEYS.RIGHT]: TREE_ACTIONS.DRILL_DOWN,\r\n        [KEYS.LEFT]: TREE_ACTIONS.DRILL_UP,\r\n        [KEYS.DOWN]: TREE_ACTIONS.NEXT_NODE,\r\n        [KEYS.UP]: TREE_ACTIONS.PREVIOUS_NODE,\r\n        [KEYS.SPACE]: TREE_ACTIONS.TOGGLE_ACTIVE,\r\n        [KEYS.ENTER]: TREE_ACTIONS.TOGGLE_ACTIVE\r\n      }\r\n    }\r\n\r\n    if (this.options?.actionMapping?.keys) {\r\n      this.actionMapping.keys = {\r\n        ...this.actionMapping.keys,\r\n        ...this.options.actionMapping.keys\r\n      }\r\n    }\r\n\r\n    if (options.rtl) {\r\n      this.actionMapping.keys[KEYS.RIGHT] = <IActionHandler>options.actionMapping?.keys[KEYS.RIGHT] || TREE_ACTIONS.DRILL_UP;\r\n      this.actionMapping.keys[KEYS.LEFT] = <IActionHandler>options.actionMapping?.keys[KEYS.LEFT] || TREE_ACTIONS.DRILL_DOWN;\r\n    }\r\n  }\r\n\r\n  getNodeClone(node: TreeNode): any {\r\n    if (this.options.getNodeClone) {\r\n      return this.options.getNodeClone(node);\r\n    }\r\n\r\n    // remove id from clone\r\n    // keeping ie11 compatibility\r\n    const nodeClone = Object.assign({}, node.data);\r\n    if (nodeClone.id) {\r\n      delete nodeClone.id;\r\n    }\r\n    return nodeClone;\r\n  }\r\n\r\n  allowDrop(element, to, $event?): boolean {\r\n    if (this.options.allowDrop instanceof Function) {\r\n      return this.options.allowDrop(element, to, $event);\r\n    }\r\n    else {\r\n      return this.options.allowDrop === undefined ? true : this.options.allowDrop;\r\n    }\r\n  }\r\n\r\n  allowDrag(node: TreeNode): boolean {\r\n    if (this.options.allowDrag instanceof Function) {\r\n      return this.options.allowDrag(node);\r\n    } else {\r\n      return this.options.allowDrag;\r\n    }\r\n  }\r\n\r\n  nodeClass(node: TreeNode): string {\r\n    return this.options.nodeClass ? this.options.nodeClass(node) : '';\r\n  }\r\n\r\n  nodeHeight(node: TreeNode): number {\r\n    if (node.data.virtual) {\r\n      return 0;\r\n    }\r\n\r\n    let nodeHeight = this.options.nodeHeight || 22;\r\n\r\n    if (typeof nodeHeight === 'function') {\r\n      nodeHeight = nodeHeight(node);\r\n    }\r\n\r\n    // account for drop slots:\r\n    return nodeHeight + (node.index === 0 ?  2 : 1) * this.dropSlotHeight;\r\n  }\r\n\r\n  get dropSlotHeight(): number {\r\n    return typeof this.options.dropSlotHeight === 'number' ? this.options.dropSlotHeight : 2;\r\n  }\r\n}\r\n","export const TREE_EVENTS = {\r\n  toggleExpanded: 'toggleExpanded',\r\n  activate: 'activate',\r\n  deactivate: 'deactivate',\r\n  nodeActivate: 'nodeActivate',\r\n  nodeDeactivate: 'nodeDeactivate',\r\n  select: 'select',\r\n  deselect: 'deselect',\r\n  focus: 'focus',\r\n  blur: 'blur',\r\n  initialized: 'initialized',\r\n  updateData: 'updateData',\r\n  moveNode: 'moveNode',\r\n  copyNode: 'copyNode',\r\n  event: 'event',\r\n  loadNodeChildren: 'loadNodeChildren',\r\n  changeFilter: 'changeFilter',\r\n  stateChange: 'stateChange'\r\n};\r\n","import {\r\n  observable,\r\n  computed,\r\n  reaction,\r\n  autorun,\r\n  action,\r\n  IReactionDisposer,\r\n  makeObservable,\r\n} from 'mobx';\r\nimport { TreeModel } from './tree.model';\r\nimport { TreeOptions } from './tree-options.model';\r\nimport { ITreeNode } from '../defs/api';\r\nimport { TREE_EVENTS } from '../constants/events';\r\n\r\nexport class TreeNode implements ITreeNode {\r\n  private handler: IReactionDisposer;\r\n  get isHidden() { return this.treeModel.isHidden(this); };\r\n  get isExpanded() { return this.treeModel.isExpanded(this); };\r\n  get isActive() { return this.treeModel.isActive(this); };\r\n  get isFocused() { return this.treeModel.isNodeFocused(this); };\r\n  get isSelected() {\r\n    if (this.isSelectable()) {\r\n        return this.treeModel.isSelected(this);\r\n    } else {\r\n      return this.children.some((node: TreeNode) => node.isSelected);\r\n    }\r\n  };\r\n  get isAllSelected() {\r\n    if (this.isSelectable()) {\r\n      return this.treeModel.isSelected(this);\r\n    } else {\r\n      return this.children.every((node: TreeNode) => node.isAllSelected);\r\n    }\r\n  };\r\n  get isPartiallySelected() {\r\n    return this.isSelected && !this.isAllSelected;\r\n  }\r\n\r\n  children: TreeNode[];\r\n  index: number;\r\n  position = 0;\r\n  height: number;\r\n  get level(): number {\r\n    return this.parent ? this.parent.level + 1 : 0;\r\n  }\r\n  get path(): string[] {\r\n    return this.parent ? [...this.parent.path, this.id] : [];\r\n  }\r\n\r\n  get elementRef(): any {\r\n    throw `Element Ref is no longer supported since introducing virtual scroll\\n\r\n      You may use a template to obtain a reference to the element`;\r\n  }\r\n\r\n  private _originalNode: any;\r\n  get originalNode() { return this._originalNode; };\r\n\r\n  constructor(public data: any, public parent: TreeNode, public treeModel: TreeModel, index: number) {\r\n    makeObservable(this,{\r\n      isHidden: computed,\r\n      isExpanded: computed,\r\n      isActive: computed,\r\n      isFocused: computed,\r\n      isSelected: computed,\r\n      isAllSelected: computed,\r\n      isPartiallySelected: computed,\r\n      children: observable,\r\n      index: observable,\r\n      position: observable,\r\n      height: observable,\r\n      level: computed,\r\n      path: computed,\r\n      visibleChildren:computed,\r\n      setIsSelected: action,\r\n      _initChildren: action,\r\n    });\r\n    if (this.id === undefined || this.id === null) {\r\n      this.id = uuid();\r\n    } // Make sure there's a unique id without overriding existing ids to work with immutable data structures\r\n    this.index = index;\r\n\r\n    if (this.getField('children')) {\r\n      this._initChildren();\r\n    }\r\n    this.autoLoadChildren();\r\n  }\r\n\r\n  // helper get functions:\r\n  get hasChildren(): boolean {\r\n    return !!(this.getField('hasChildren') || (this.children && this.children.length > 0));\r\n  }\r\n  get isCollapsed(): boolean { return !this.isExpanded; }\r\n  get isLeaf(): boolean { return !this.hasChildren; }\r\n  get isRoot(): boolean { return this.parent.data.virtual; }\r\n  get realParent(): TreeNode { return this.isRoot ? null : this.parent; }\r\n\r\n  // proxy functions:\r\n  get options(): TreeOptions { return this.treeModel.options; }\r\n  fireEvent(event) { this.treeModel.fireEvent(event); }\r\n\r\n  // field accessors:\r\n  get displayField() {\r\n    return this.getField('display');\r\n  }\r\n\r\n  get id() {\r\n    return this.getField('id');\r\n  }\r\n\r\n  set id(value) {\r\n    this.setField('id', value);\r\n  }\r\n\r\n  getField(key) {\r\n    return this.data[this.options[`${key}Field`]];\r\n  }\r\n\r\n  setField(key, value) {\r\n    this.data[this.options[`${key}Field`]] = value;\r\n  }\r\n\r\n  // traversing:\r\n  _findAdjacentSibling(steps, skipHidden = false) {\r\n    const siblings = this._getParentsChildren(skipHidden);\r\n    const index = siblings.indexOf(this);\r\n\r\n    return siblings.length > index + steps ? siblings[index + steps] : null;\r\n  }\r\n\r\n  findNextSibling(skipHidden = false) {\r\n    return this._findAdjacentSibling(+1, skipHidden);\r\n  }\r\n\r\n  findPreviousSibling(skipHidden = false) {\r\n    return this._findAdjacentSibling(-1, skipHidden);\r\n  }\r\n\r\n  getVisibleChildren() {\r\n    return this.visibleChildren;\r\n  }\r\n\r\n  get visibleChildren() {\r\n    return (this.children || []).filter((node) => !node.isHidden);\r\n  }\r\n\r\n  getFirstChild(skipHidden = false) {\r\n    let children = skipHidden ? this.visibleChildren : this.children;\r\n\r\n    return children != null && children.length ? children[0] : null;\r\n  }\r\n\r\n  getLastChild(skipHidden = false) {\r\n    let children = skipHidden ? this.visibleChildren : this.children;\r\n\r\n    return children != null && children.length ? children[children.length - 1] : null;\r\n  }\r\n\r\n  findNextNode(goInside = true, skipHidden = false) {\r\n    return goInside && this.isExpanded && this.getFirstChild(skipHidden) ||\r\n           this.findNextSibling(skipHidden) ||\r\n           this.parent && this.parent.findNextNode(false, skipHidden);\r\n  }\r\n\r\n  findPreviousNode(skipHidden = false) {\r\n    let previousSibling = this.findPreviousSibling(skipHidden);\r\n    if (!previousSibling) {\r\n      return this.realParent;\r\n    }\r\n    return previousSibling._getLastOpenDescendant(skipHidden);\r\n  }\r\n\r\n  _getLastOpenDescendant(skipHidden = false) {\r\n    const lastChild = this.getLastChild(skipHidden);\r\n    return (this.isCollapsed || !lastChild)\r\n      ? this\r\n      : lastChild._getLastOpenDescendant(skipHidden);\r\n  }\r\n\r\n  private _getParentsChildren(skipHidden = false): any[] {\r\n    const children = this.parent &&\r\n      (skipHidden ? this.parent.getVisibleChildren() : this.parent.children);\r\n\r\n    return children || [];\r\n  }\r\n\r\n  private getIndexInParent(skipHidden = false) {\r\n    return this._getParentsChildren(skipHidden).indexOf(this);\r\n  }\r\n\r\n  isDescendantOf(node: TreeNode) {\r\n    if (this === node) return true;\r\n    else return this.parent && this.parent.isDescendantOf(node);\r\n  }\r\n\r\n  getNodePadding(): string {\r\n    return this.options.levelPadding * (this.level - 1) + 'px';\r\n  }\r\n\r\n  getClass(): string {\r\n    return [this.options.nodeClass(this), `tree-node-level-${ this.level }`].join(' ');\r\n  }\r\n\r\n  onDrop($event) {\r\n    this.mouseAction('drop', $event.event, {\r\n      from: $event.element,\r\n      to: { parent: this, index: 0, dropOnNode: true }\r\n    });\r\n  }\r\n\r\n  allowDrop = (element, $event?) => {\r\n    return this.options.allowDrop(element, { parent: this, index: 0 }, $event);\r\n  }\r\n\r\n  allowDragoverStyling = () => {\r\n    return this.options.allowDragoverStyling;\r\n  }\r\n\r\n  allowDrag() {\r\n    return this.options.allowDrag(this);\r\n  }\r\n\r\n\r\n  // helper methods:\r\n  loadNodeChildren() {\r\n    if (!this.options.getChildren) {\r\n      return Promise.resolve(); // Not getChildren method - for using redux\r\n    }\r\n    return Promise.resolve(this.options.getChildren(this))\r\n      .then((children) => {\r\n        if (children) {\r\n          this.setField('children', children);\r\n          this._initChildren();\r\n          if (this.options.useTriState && this.treeModel.isSelected(this)) {\r\n            this.setIsSelected(true);\r\n          }\r\n          this.children.forEach((child) => {\r\n            if (child.getField('isExpanded') && child.hasChildren) {\r\n              child.expand();\r\n            }\r\n          });\r\n      }}).then(() => {\r\n        this.fireEvent({\r\n          eventName: TREE_EVENTS.loadNodeChildren,\r\n          node: this\r\n        });\r\n      });\r\n  }\r\n\r\n  expand() {\r\n    if (!this.isExpanded) {\r\n      this.toggleExpanded();\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  collapse() {\r\n    if (this.isExpanded) {\r\n      this.toggleExpanded();\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  doForAll(fn: (node: ITreeNode) => any) {\r\n    Promise.resolve(fn(this)).then(() => {\r\n      if (this.children) {\r\n        this.children.forEach((child) => child.doForAll(fn));\r\n      }\r\n    });\r\n  }\r\n\r\n  expandAll() {\r\n    this.doForAll((node) => node.expand());\r\n  }\r\n\r\n  collapseAll() {\r\n    this.doForAll((node) => node.collapse());\r\n  }\r\n\r\n  ensureVisible() {\r\n    if (this.realParent) {\r\n      this.realParent.expand();\r\n      this.realParent.ensureVisible();\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  toggleExpanded() {\r\n    this.setIsExpanded(!this.isExpanded);\r\n\r\n    return this;\r\n  }\r\n\r\n  setIsExpanded(value) {\r\n    if (this.hasChildren) {\r\n      this.treeModel.setExpandedNode(this, value);\r\n    }\r\n\r\n    return this;\r\n  };\r\n\r\n  autoLoadChildren() {\r\n    this.handler =\r\n      reaction(\r\n        () => this.isExpanded,\r\n        (isExpanded) => {\r\n          if (!this.children && this.hasChildren && isExpanded) {\r\n            this.loadNodeChildren();\r\n          }\r\n        },\r\n        { fireImmediately: true }\r\n      );\r\n  }\r\n\r\n  dispose() {\r\n    if (this.children) {\r\n      this.children.forEach((child) => child.dispose());\r\n    }\r\n    if (this.handler) {\r\n      this.handler();\r\n    }\r\n    this.parent = null;\r\n    this.children = null;\r\n  }\r\n\r\n  setIsActive(value, multi = false) {\r\n    this.treeModel.setActiveNode(this, value, multi);\r\n    if (value) {\r\n      this.focus(this.options.scrollOnActivate);\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  isSelectable() {\r\n    return this.isLeaf || !this.children || !this.options.useTriState;\r\n  }\r\n\r\n  setIsSelected(value) {\r\n    if (this.isSelectable()) {\r\n      this.treeModel.setSelectedNode(this, value);\r\n    } else {\r\n      this.visibleChildren.forEach((child) => child.setIsSelected(value));\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  toggleSelected() {\r\n    this.setIsSelected(!this.isSelected);\r\n\r\n    return this;\r\n  }\r\n\r\n  toggleActivated(multi = false) {\r\n    this.setIsActive(!this.isActive, multi);\r\n\r\n    return this;\r\n  }\r\n\r\n  setActiveAndVisible(multi = false) {\r\n    this.setIsActive(true, multi)\r\n      .ensureVisible();\r\n\r\n    setTimeout(this.scrollIntoView.bind(this));\r\n\r\n    return this;\r\n  }\r\n\r\n  scrollIntoView(force = false) {\r\n    this.treeModel.virtualScroll.scrollIntoView(this, force);\r\n  }\r\n\r\n  focus(scroll = true) {\r\n    let previousNode = this.treeModel.getFocusedNode();\r\n    this.treeModel.setFocusedNode(this);\r\n    if (scroll) {\r\n      this.scrollIntoView();\r\n    }\r\n    if (previousNode) {\r\n      this.fireEvent({ eventName: TREE_EVENTS.blur, node: previousNode });\r\n    }\r\n    this.fireEvent({ eventName: TREE_EVENTS.focus, node: this });\r\n\r\n    return this;\r\n  }\r\n\r\n  blur() {\r\n    let previousNode = this.treeModel.getFocusedNode();\r\n    this.treeModel.setFocusedNode(null);\r\n    if (previousNode) {\r\n      this.fireEvent({ eventName: TREE_EVENTS.blur, node: this });\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  setIsHidden(value) {\r\n    this.treeModel.setIsHidden(this, value);\r\n  }\r\n\r\n  hide() {\r\n    this.setIsHidden(true);\r\n  }\r\n\r\n  show() {\r\n    this.setIsHidden(false);\r\n  }\r\n\r\n  mouseAction(actionName: string, $event, data: any = null) {\r\n    this.treeModel.setFocus(true);\r\n\r\n    const actionMapping = this.options.actionMapping.mouse;\r\n    const mouseAction = actionMapping[actionName];\r\n\r\n    if (mouseAction) {\r\n      mouseAction(this.treeModel, this, $event, data);\r\n    }\r\n  }\r\n\r\n  getSelfHeight() {\r\n    return this.options.nodeHeight(this);\r\n  }\r\n\r\n  _initChildren() {\r\n    this.children = this.getField('children')\r\n      .map((c, index) => new TreeNode(c, this, this.treeModel, index));\r\n  }\r\n}\r\n\r\nfunction uuid() {\r\n  return Math.floor(Math.random() * 10000000000000);\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { observable, computed, action, autorun, makeObservable } from 'mobx';\r\nimport { Subscription } from 'rxjs';\r\nimport { TreeNode } from './tree-node.model';\r\nimport { TreeOptions } from './tree-options.model';\r\nimport { TreeVirtualScroll } from './tree-virtual-scroll.model';\r\nimport { ITreeModel, IDType, IDTypeDictionary } from '../defs/api';\r\nimport { TREE_EVENTS } from '../constants/events';\r\n\r\n@Injectable()\r\nexport class TreeModel implements ITreeModel, OnDestroy {\r\n  static focusedTree = null;\r\n\r\n  options: TreeOptions = new TreeOptions();\r\n  nodes: any[];\r\n  eventNames = Object.keys(TREE_EVENTS);\r\n  virtualScroll: TreeVirtualScroll;\r\n\r\n  roots: TreeNode[];\r\n  expandedNodeIds: IDTypeDictionary = {};\r\n  selectedLeafNodeIds: IDTypeDictionary = {};\r\n  activeNodeIds: IDTypeDictionary = {};\r\n  hiddenNodeIds: IDTypeDictionary = {};\r\n  focusedNodeId: IDType = null;\r\n  virtualRoot: TreeNode;\r\n\r\n  private firstUpdate = true;\r\n  private events: any;\r\n  private subscriptions: Subscription[] = [];\r\n\r\n  constructor() {\r\n    makeObservable(this, {\r\n      roots: observable,\r\n      expandedNodeIds: observable,\r\n      selectedLeafNodeIds: observable,\r\n      activeNodeIds: observable,\r\n      hiddenNodeIds: observable,\r\n      focusedNodeId: observable,\r\n      virtualRoot: observable,\r\n\r\n      focusedNode: computed,\r\n      expandedNodes: computed,\r\n      activeNodes: computed,\r\n      hiddenNodes: computed,\r\n      selectedLeafNodes: computed,\r\n      setData: action,\r\n      update: action,\r\n      setFocusedNode: action,\r\n      setFocus: action,\r\n      doForAll: action,\r\n      focusNextNode: action,\r\n      focusPreviousNode: action,\r\n      focusDrillDown: action,\r\n      focusDrillUp: action,\r\n      setActiveNode: action,\r\n      setSelectedNode: action,\r\n      setExpandedNode:action,\r\n      expandAll: action,\r\n      collapseAll:action,\r\n      setIsHidden:action,\r\n      setHiddenNodeIds:action,\r\n      filterNodes: action,\r\n      clearFilter: action,\r\n      moveNode: action,\r\n      copyNode: action,\r\n      setState: action,\r\n      \r\n    });\r\n  }\r\n\r\n  // events\r\n  fireEvent(event) {\r\n    event.treeModel = this;\r\n    this.events[event.eventName].emit(event);\r\n    this.events.event.emit(event);\r\n  }\r\n\r\n  subscribe(eventName, fn) {\r\n    const subscription = this.events[eventName].subscribe(fn);\r\n    this.subscriptions.push(subscription);\r\n  }\r\n\r\n\r\n  // getters\r\n  getFocusedNode(): TreeNode {\r\n    return this.focusedNode;\r\n  }\r\n\r\n\r\n  getActiveNode(): TreeNode {\r\n    return this.activeNodes[0];\r\n  }\r\n\r\n  getActiveNodes(): TreeNode[] {\r\n    return this.activeNodes;\r\n  }\r\n\r\n  getVisibleRoots() {\r\n    return this.virtualRoot.visibleChildren;\r\n  }\r\n\r\n  getFirstRoot(skipHidden = false) {\r\n    const root = skipHidden ? this.getVisibleRoots() : this.roots;\r\n    return root != null && root.length ? root[0] : null;\r\n  }\r\n\r\n  getLastRoot(skipHidden = false) {\r\n    const root = skipHidden ? this.getVisibleRoots() : this.roots;\r\n    return root != null && root.length ? root[root.length - 1] : null;\r\n  }\r\n\r\n  get isFocused() {\r\n    return TreeModel.focusedTree === this;\r\n  }\r\n\r\n  isNodeFocused(node) {\r\n    return this.focusedNode === node;\r\n  }\r\n\r\n  isEmptyTree(): boolean {\r\n    return this.roots && this.roots.length === 0;\r\n  }\r\n\r\n  get focusedNode() {\r\n    return this.focusedNodeId ? this.getNodeById(this.focusedNodeId) : null;\r\n  }\r\n\r\n  get expandedNodes() {\r\n    const nodes = Object.keys(this.expandedNodeIds)\r\n      .filter((id) => this.expandedNodeIds[id])\r\n      .map((id) => this.getNodeById(id));\r\n\r\n    return nodes.filter(Boolean);\r\n  }\r\n\r\n  get activeNodes() {\r\n    const nodes = Object.keys(this.activeNodeIds)\r\n      .filter((id) => this.activeNodeIds[id])\r\n      .map((id) => this.getNodeById(id));\r\n\r\n    return nodes.filter(Boolean);\r\n  }\r\n\r\n  get hiddenNodes() {\r\n    const nodes = Object.keys(this.hiddenNodeIds)\r\n        .filter((id) => this.hiddenNodeIds[id])\r\n        .map((id) => this.getNodeById(id));\r\n\r\n    return nodes.filter(Boolean);\r\n  }\r\n\r\n  get selectedLeafNodes() {\r\n    const nodes = Object.keys(this.selectedLeafNodeIds)\r\n        .filter((id) => this.selectedLeafNodeIds[id])\r\n        .map((id) => this.getNodeById(id));\r\n\r\n    return nodes.filter(Boolean);\r\n  }\r\n\r\n  // locating nodes\r\n  getNodeByPath(path: any[], startNode= null): TreeNode {\r\n    if (!path) return null;\r\n\r\n    startNode = startNode || this.virtualRoot;\r\n    if (path.length === 0) return startNode;\r\n\r\n    if (!startNode.children) return null;\r\n\r\n    const childId = path.shift();\r\n    const childNode = startNode.children.find(c => c.id === childId);\r\n\r\n    if (!childNode) return null;\r\n\r\n    return this.getNodeByPath(path, childNode);\r\n  }\r\n\r\n  getNodeById(id) {\r\n    const idStr = id.toString();\r\n\r\n    return this.getNodeBy((node) => node.id.toString() === idStr);\r\n  }\r\n\r\n  getNodeBy(predicate, startNode = null) {\r\n    startNode = startNode || this.virtualRoot;\r\n\r\n    if (!startNode.children) return null;\r\n\r\n    const found = startNode.children.find(predicate);\r\n\r\n    if (found) { // found in children\r\n      return found;\r\n    } else { // look in children's children\r\n      for (let child of startNode.children) {\r\n        const foundInChildren = this.getNodeBy(predicate, child);\r\n        if (foundInChildren) return foundInChildren;\r\n      }\r\n    }\r\n  }\r\n\r\n  isExpanded(node) {\r\n    return this.expandedNodeIds[node.id];\r\n  }\r\n\r\n  isHidden(node) {\r\n    return this.hiddenNodeIds[node.id];\r\n  }\r\n\r\n  isActive(node) {\r\n    return this.activeNodeIds[node.id];\r\n  }\r\n\r\n  isSelected(node) {\r\n    return this.selectedLeafNodeIds[node.id];\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.dispose();\r\n    this.unsubscribeAll();\r\n  }\r\n\r\n  dispose() {\r\n    // Dispose reactions of the replaced nodes\r\n    if (this.virtualRoot) {\r\n      this.virtualRoot.dispose();\r\n    }\r\n  }\r\n\r\n  unsubscribeAll() {\r\n    this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n    this.subscriptions = [];\r\n  }\r\n\r\n  // actions\r\n  setData({ nodes, options = null, events = null }: {nodes: any, options: any, events: any}) {\r\n    if (options) {\r\n      this.options = new TreeOptions(options);\r\n    }\r\n    if (events) {\r\n      this.events = events;\r\n    }\r\n    if (nodes) {\r\n      this.nodes = nodes;\r\n    }\r\n\r\n    this.update();\r\n  }\r\n\r\n  update() {\r\n    // Rebuild tree:\r\n    let virtualRootConfig = {\r\n      id: this.options.rootId,\r\n      virtual: true,\r\n      [this.options.childrenField]: this.nodes\r\n    };\r\n\r\n    this.dispose();\r\n\r\n    this.virtualRoot = new TreeNode(virtualRootConfig, null, this, 0);\r\n\r\n    this.roots = this.virtualRoot.children;\r\n\r\n    // Fire event:\r\n    if (this.firstUpdate) {\r\n      if (this.roots) {\r\n        this.firstUpdate = false;\r\n        this._calculateExpandedNodes();\r\n      }\r\n    } else {\r\n      this.fireEvent({ eventName: TREE_EVENTS.updateData });\r\n    }\r\n  }\r\n\r\n\r\n  setFocusedNode(node) {\r\n    this.focusedNodeId = node ? node.id : null;\r\n  }\r\n\r\n  setFocus(value) {\r\n    TreeModel.focusedTree = value ? this : null;\r\n  }\r\n\r\n  doForAll(fn) {\r\n    this.roots.forEach((root) => root.doForAll(fn));\r\n  }\r\n\r\n  focusNextNode() {\r\n    let previousNode = this.getFocusedNode();\r\n    let nextNode = previousNode ? previousNode.findNextNode(true, true) : this.getFirstRoot(true);\r\n    if (nextNode) nextNode.focus();\r\n  }\r\n\r\n  focusPreviousNode() {\r\n    let previousNode = this.getFocusedNode();\r\n    let nextNode = previousNode ? previousNode.findPreviousNode(true) : this.getLastRoot(true);\r\n    if (nextNode) nextNode.focus();\r\n  }\r\n\r\n  focusDrillDown() {\r\n    let previousNode = this.getFocusedNode();\r\n    if (previousNode && previousNode.isCollapsed && previousNode.hasChildren) {\r\n      previousNode.toggleExpanded();\r\n    }\r\n    else {\r\n      let nextNode = previousNode ? previousNode.getFirstChild(true) : this.getFirstRoot(true);\r\n      if (nextNode) nextNode.focus();\r\n    }\r\n  }\r\n\r\n  focusDrillUp() {\r\n    let previousNode = this.getFocusedNode();\r\n    if (!previousNode) return;\r\n    if (previousNode.isExpanded) {\r\n      previousNode.toggleExpanded();\r\n    }\r\n    else {\r\n      let nextNode = previousNode.realParent;\r\n      if (nextNode) nextNode.focus();\r\n    }\r\n  }\r\n\r\n  setActiveNode(node, value, multi = false) {\r\n    if (multi) {\r\n      this._setActiveNodeMulti(node, value);\r\n    }\r\n    else {\r\n      this._setActiveNodeSingle(node, value);\r\n    }\r\n\r\n    if (value) {\r\n      node.focus(this.options.scrollOnActivate);\r\n      this.fireEvent({ eventName: TREE_EVENTS.activate, node });\r\n      this.fireEvent({ eventName: TREE_EVENTS.nodeActivate, node }); // For IE11\r\n    } else {\r\n      this.fireEvent({ eventName: TREE_EVENTS.deactivate, node });\r\n      this.fireEvent({ eventName: TREE_EVENTS.nodeDeactivate, node }); // For IE11\r\n    }\r\n  }\r\n\r\n  setSelectedNode(node, value) {\r\n    this.selectedLeafNodeIds = Object.assign({}, this.selectedLeafNodeIds, {[node.id]: value});\r\n\r\n    if (value) {\r\n      node.focus();\r\n      this.fireEvent({ eventName: TREE_EVENTS.select, node });\r\n    } else {\r\n      this.fireEvent({ eventName: TREE_EVENTS.deselect, node });\r\n    }\r\n  }\r\n\r\n  setExpandedNode(node, value) {\r\n    this.expandedNodeIds = Object.assign({}, this.expandedNodeIds, {[node.id]: value});\r\n    this.fireEvent({ eventName: TREE_EVENTS.toggleExpanded, node, isExpanded: value });\r\n  }\r\n\r\n  expandAll() {\r\n    this.roots.forEach((root) => root.expandAll());\r\n  }\r\n\r\n  collapseAll() {\r\n    this.roots.forEach((root) => root.collapseAll());\r\n  }\r\n\r\n  setIsHidden(node, value) {\r\n    this.hiddenNodeIds = Object.assign({}, this.hiddenNodeIds, {[node.id]: value});\r\n  }\r\n\r\n  setHiddenNodeIds(nodeIds) {\r\n    this.hiddenNodeIds = nodeIds.reduce((hiddenNodeIds, id) => Object.assign(hiddenNodeIds, {\r\n      [id]: true\r\n    }), {});\r\n  }\r\n\r\n  performKeyAction(node, $event) {\r\n    const keyAction = this.options.actionMapping.keys[$event.keyCode];\r\n    if (keyAction) {\r\n      $event.preventDefault();\r\n      keyAction(this, node, $event);\r\n      return true;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  filterNodes(filter, autoShow = true) {\r\n    let filterFn;\r\n\r\n    if (!filter) {\r\n      return this.clearFilter();\r\n    }\r\n\r\n    // support function and string filter\r\n    if (filter && typeof filter.valueOf() === 'string') {\r\n      filterFn = (node) => node.displayField.toLowerCase().indexOf(filter.toLowerCase()) !== -1;\r\n    }\r\n    else if (filter && typeof filter === 'function') {\r\n       filterFn = filter;\r\n    }\r\n    else {\r\n      console.error('Don\\'t know what to do with filter', filter);\r\n      console.error('Should be either a string or function');\r\n      return;\r\n    }\r\n\r\n    const ids = {};\r\n    this.roots.forEach((node) => this._filterNode(ids, node, filterFn, autoShow));\r\n    this.hiddenNodeIds = ids;\r\n    this.fireEvent({ eventName: TREE_EVENTS.changeFilter });\r\n  }\r\n\r\n  clearFilter() {\r\n    this.hiddenNodeIds = {};\r\n    this.fireEvent({ eventName: TREE_EVENTS.changeFilter });\r\n  }\r\n\r\n  moveNode(node, to) {\r\n    const fromIndex = node.getIndexInParent();\r\n    const fromParent = node.parent;\r\n\r\n    if (!this.canMoveNode(node, to, fromIndex)) return;\r\n\r\n    const fromChildren = fromParent.getField('children');\r\n\r\n    // If node doesn't have children - create children array\r\n    if (!to.parent.getField('children')) {\r\n      to.parent.setField('children', []);\r\n    }\r\n    const toChildren = to.parent.getField('children');\r\n\r\n    const originalNode = fromChildren.splice(fromIndex, 1)[0];\r\n\r\n    // Compensate for index if already removed from parent:\r\n    let toIndex = (fromParent === to.parent && to.index > fromIndex) ? to.index - 1 : to.index;\r\n\r\n    toChildren.splice(toIndex, 0, originalNode);\r\n\r\n    fromParent.treeModel.update();\r\n    if (to.parent.treeModel !== fromParent.treeModel) {\r\n      to.parent.treeModel.update();\r\n    }\r\n\r\n    this.fireEvent({\r\n      eventName: TREE_EVENTS.moveNode,\r\n      node: originalNode,\r\n      to: { parent: to.parent.data, index: toIndex },\r\n      from: { parent: fromParent.data, index: fromIndex}\r\n    });\r\n  }\r\n\r\n  copyNode(node, to) {\r\n    const fromIndex = node.getIndexInParent();\r\n\r\n    if (!this.canMoveNode(node, to, fromIndex)) return;\r\n\r\n    // If node doesn't have children - create children array\r\n    if (!to.parent.getField('children')) {\r\n      to.parent.setField('children', []);\r\n    }\r\n    const toChildren = to.parent.getField('children');\r\n\r\n    const nodeCopy = this.options.getNodeClone(node);\r\n\r\n    toChildren.splice(to.index, 0, nodeCopy);\r\n\r\n    node.treeModel.update();\r\n    if (to.parent.treeModel !== node.treeModel) {\r\n      to.parent.treeModel.update();\r\n    }\r\n\r\n    this.fireEvent({ eventName: TREE_EVENTS.copyNode, node: nodeCopy, to: { parent: to.parent.data, index: to.index } });\r\n  }\r\n\r\n  getState() {\r\n    return {\r\n      expandedNodeIds: this.expandedNodeIds,\r\n      selectedLeafNodeIds: this.selectedLeafNodeIds,\r\n      activeNodeIds: this.activeNodeIds,\r\n      hiddenNodeIds: this.hiddenNodeIds,\r\n      focusedNodeId: this.focusedNodeId\r\n    };\r\n  }\r\n\r\n  setState(state) {\r\n    if (!state) return;\r\n\r\n    Object.assign(this, {\r\n      expandedNodeIds: state.expandedNodeIds || {},\r\n      selectedLeafNodeIds: state.selectedLeafNodeIds || {},\r\n      activeNodeIds: state.activeNodeIds || {},\r\n      hiddenNodeIds: state.hiddenNodeIds || {},\r\n      focusedNodeId: state.focusedNodeId\r\n    });\r\n  }\r\n\r\n  subscribeToState(fn) {\r\n    autorun(() => fn(this.getState()));\r\n  }\r\n\r\n  canMoveNode(node, to, fromIndex = undefined) {\r\n    const fromNodeIndex = fromIndex || node.getIndexInParent();\r\n\r\n    // same node:\r\n    if (node.parent === to.parent && fromIndex === to.index) {\r\n      return false;\r\n    }\r\n\r\n    return !to.parent.isDescendantOf(node);\r\n  }\r\n\r\n  calculateExpandedNodes() {\r\n      this._calculateExpandedNodes();\r\n  }\r\n\r\n  // private methods\r\n  private _filterNode(ids, node, filterFn, autoShow) {\r\n    // if node passes function then it's visible\r\n    let isVisible = filterFn(node);\r\n\r\n    if (node.children) {\r\n      // if one of node's children passes filter then this node is also visible\r\n      node.children.forEach((child) => {\r\n        if (this._filterNode(ids, child, filterFn, autoShow)) {\r\n          isVisible = true;\r\n        }\r\n      });\r\n    }\r\n\r\n    // mark node as hidden\r\n    if (!isVisible) {\r\n      ids[node.id] = true;\r\n    }\r\n    // auto expand parents to make sure the filtered nodes are visible\r\n    if (autoShow && isVisible) {\r\n      node.ensureVisible();\r\n    }\r\n    return isVisible;\r\n  }\r\n\r\n  private _calculateExpandedNodes(startNode = null) {\r\n    startNode = startNode || this.virtualRoot;\r\n\r\n    if (startNode.data[this.options.isExpandedField]) {\r\n      this.expandedNodeIds = Object.assign({}, this.expandedNodeIds, {[startNode.id]: true});\r\n    }\r\n    if (startNode.children) {\r\n      startNode.children.forEach((child) => this._calculateExpandedNodes(child));\r\n    }\r\n  }\r\n\r\n  private _setActiveNodeSingle(node, value) {\r\n    // Deactivate all other nodes:\r\n    this.activeNodes\r\n      .filter((activeNode) => activeNode !== node)\r\n      .forEach((activeNode) => {\r\n        this.fireEvent({ eventName: TREE_EVENTS.deactivate, node: activeNode });\r\n        this.fireEvent({ eventName: TREE_EVENTS.nodeDeactivate, node: activeNode }); // For IE11\r\n      });\r\n\r\n    if (value) {\r\n      this.activeNodeIds = {[node.id]: true};\r\n    }\r\n    else {\r\n      this.activeNodeIds = {};\r\n    }\r\n  }\r\n\r\n  private _setActiveNodeMulti(node, value) {\r\n    this.activeNodeIds = Object.assign({}, this.activeNodeIds, {[node.id]: value});\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class TreeDraggedElement {\r\n  _draggedElement: any = null;\r\n\r\n  set(draggedElement: any) {\r\n    this._draggedElement = draggedElement;\r\n  }\r\n\r\n  get(): any {\r\n    return this._draggedElement;\r\n  }\r\n\r\n  isDragging() {\r\n    return !!this.get();\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { observable, computed, action, autorun, reaction, makeObservable } from 'mobx';\r\nimport { TreeModel } from './tree.model';\r\nimport { TREE_EVENTS } from '../constants/events';\r\n\r\nconst Y_OFFSET = 500; // Extra pixels outside the viewport, in each direction, to render nodes in\r\nconst Y_EPSILON = 150; // Minimum pixel change required to recalculate the rendered nodes\r\n\r\n@Injectable()\r\nexport class TreeVirtualScroll {\r\n  private _dispose: any;\r\n\r\n  yBlocks = 0;\r\n  x = 0;\r\n  viewportHeight = null;\r\n  viewport = null;\r\n\r\n  get y() {\r\n    return this.yBlocks * Y_EPSILON;\r\n  }\r\n\r\n  get totalHeight() {\r\n    return this.treeModel.virtualRoot ? this.treeModel.virtualRoot.height : 0;\r\n  }\r\n\r\n  constructor(private treeModel: TreeModel) {\r\n    makeObservable(this,{\r\n      yBlocks: observable,\r\n      x: observable,\r\n      viewportHeight: observable,\r\n      y: computed,\r\n      totalHeight: computed,\r\n      _setYBlocks: action,\r\n      recalcPositions: action,\r\n      setViewport: action,\r\n      scrollIntoView: action,\r\n    });\r\n    treeModel.virtualScroll = this;\r\n    this._dispose = [autorun(() => this.fixScroll())];\r\n  }\r\n\r\n  fireEvent(event) {\r\n    this.treeModel.fireEvent(event);\r\n  }\r\n\r\n  init() {\r\n    const fn = this.recalcPositions.bind(this);\r\n\r\n    fn();\r\n    this._dispose = [\r\n      ...this._dispose,\r\n      reaction(() => this.treeModel.roots, fn),\r\n      reaction(() => this.treeModel.expandedNodeIds, fn),\r\n      reaction(() => this.treeModel.hiddenNodeIds, fn)\r\n    ];\r\n    this.treeModel.subscribe(TREE_EVENTS.loadNodeChildren, fn);\r\n  }\r\n\r\n  isEnabled() {\r\n    return this.treeModel.options.useVirtualScroll;\r\n  }\r\n\r\n  //was private, public for now so makeObservable to work and deal as a todo\r\n  _setYBlocks(value) {\r\n    this.yBlocks = value;\r\n  }\r\n\r\n  recalcPositions() {\r\n    this.treeModel.virtualRoot.height = this._getPositionAfter(this.treeModel.getVisibleRoots(), 0);\r\n  }\r\n\r\n  private _getPositionAfter(nodes, startPos) {\r\n    let position = startPos;\r\n\r\n    nodes.forEach((node) => {\r\n      node.position = position;\r\n      position = this._getPositionAfterNode(node, position);\r\n    });\r\n    return position;\r\n  }\r\n\r\n  private _getPositionAfterNode(node, startPos) {\r\n    let position = node.getSelfHeight() + startPos;\r\n\r\n    if (node.children && node.isExpanded) { // TBD: consider loading component as well\r\n      position = this._getPositionAfter(node.visibleChildren, position);\r\n    }\r\n    node.height = position - startPos;\r\n    return position;\r\n  }\r\n\r\n\r\n  clear() {\r\n    this._dispose.forEach((d) => d());\r\n  }\r\n\r\n  setViewport(viewport) {\r\n    Object.assign(this, {\r\n      viewport,\r\n      x: viewport.scrollLeft,\r\n      yBlocks: Math.round(viewport.scrollTop / Y_EPSILON),\r\n      viewportHeight: viewport.getBoundingClientRect ? viewport.getBoundingClientRect().height : 0\r\n    });\r\n  }\r\n\r\n  scrollIntoView(node, force, scrollToMiddle = true) {\r\n    if (node.options.scrollContainer) {\r\n      const scrollContainer = node.options.scrollContainer;\r\n      const scrollContainerHeight = scrollContainer.getBoundingClientRect().height;\r\n      const scrollContainerTop = scrollContainer.getBoundingClientRect().top;\r\n      const nodeTop = this.viewport.getBoundingClientRect().top + node.position - scrollContainerTop;\r\n\r\n      if (force || // force scroll to node\r\n        nodeTop < scrollContainer.scrollTop || // node is above scroll container\r\n        nodeTop + node.getSelfHeight() > scrollContainer.scrollTop + scrollContainerHeight) { // node is below container\r\n        scrollContainer.scrollTop = scrollToMiddle ?\r\n          nodeTop - scrollContainerHeight / 2 : // scroll to middle\r\n          nodeTop; // scroll to start\r\n      }\r\n    } else {\r\n      if (force || // force scroll to node\r\n        node.position < this.y || // node is above viewport\r\n        node.position + node.getSelfHeight() > this.y + this.viewportHeight) { // node is below viewport\r\n        if (this.viewport) {\r\n          this.viewport.scrollTop = scrollToMiddle ?\r\n          node.position - this.viewportHeight / 2 : // scroll to middle\r\n          node.position; // scroll to start\r\n\r\n          this._setYBlocks(Math.floor(this.viewport.scrollTop / Y_EPSILON));\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  getViewportNodes(nodes) {\r\n    if (!nodes) return [];\r\n\r\n    const visibleNodes = nodes.filter((node) => !node.isHidden);\r\n\r\n    if (!this.isEnabled()) return visibleNodes;\r\n\r\n    if (!this.viewportHeight || !visibleNodes.length) return [];\r\n\r\n    // When loading children async this method is called before their height and position is calculated.\r\n    // In that case firstIndex === 0 and lastIndex === visibleNodes.length - 1 (e.g. 1000),\r\n    // which means that it loops through every visibleNodes item and push them into viewportNodes array.\r\n    // We can prevent nodes from being pushed to the array and wait for the appropriate calculations to take place\r\n    const lastVisibleNode = visibleNodes.slice(-1)[0]\r\n    if (!lastVisibleNode.height && lastVisibleNode.position === 0) return [];\r\n\r\n    // Search for first node in the viewport using binary search\r\n    // Look for first node that starts after the beginning of the viewport (with buffer)\r\n    // Or that ends after the beginning of the viewport\r\n    const firstIndex = binarySearch(visibleNodes, (node) => {\r\n      return (node.position + Y_OFFSET > this.y) ||\r\n             (node.position + node.height > this.y);\r\n    });\r\n\r\n    // Search for last node in the viewport using binary search\r\n    // Look for first node that starts after the end of the viewport (with buffer)\r\n    const lastIndex = binarySearch(visibleNodes, (node) => {\r\n      return node.position - Y_OFFSET > this.y + this.viewportHeight;\r\n    }, firstIndex);\r\n\r\n    const viewportNodes = [];\r\n\r\n    for (let i = firstIndex; i <= lastIndex; i++) {\r\n      viewportNodes.push(visibleNodes[i]);\r\n    }\r\n\r\n    return viewportNodes;\r\n  }\r\n\r\n  fixScroll() {\r\n    const maxY = Math.max(0, this.totalHeight - this.viewportHeight);\r\n\r\n    if (this.y < 0) this._setYBlocks(0);\r\n    if (this.y > maxY) this._setYBlocks(maxY / Y_EPSILON);\r\n  }\r\n}\r\n\r\nfunction binarySearch(nodes, condition, firstIndex = 0) {\r\n  let index = firstIndex;\r\n  let toIndex = nodes.length - 1;\r\n\r\n  while (index !== toIndex) {\r\n    let midIndex = Math.floor((index + toIndex) / 2);\r\n\r\n    if (condition(nodes[midIndex])) {\r\n      toIndex = midIndex;\r\n    }\r\n    else {\r\n      if (index === midIndex) index = toIndex;\r\n      else index = midIndex;\r\n    }\r\n  }\r\n  return index;\r\n}\r\n","import { Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\r\nimport { TreeNode } from '../models/tree-node.model';\r\n\r\n@Component({\r\n  encapsulation: ViewEncapsulation.None,\r\n  selector: 'tree-loading-component',\r\n  template: `\r\n    <span *ngIf=\"!template\">loading...</span>\r\n    <ng-container\r\n      [ngTemplateOutlet]=\"template\"\r\n      [ngTemplateOutletContext]=\"{ $implicit: node }\">\r\n    </ng-container>\r\n  `,\r\n})\r\nexport class LoadingComponent {\r\n  @Input() template: TemplateRef<any>;\r\n  @Input() node: TreeNode;\r\n}\r\n","import { action as mobxAction } from 'mobx';\r\nimport { computed as mobxComputed } from 'mobx';\r\nimport { observable as mobxObservable } from 'mobx';\r\n\r\n// Re-export mobx operators to be able to use inside components with AOT:\r\nexport function actionInternal(...args) {\r\n  return (mobxAction as any)(...args);\r\n}\r\nexport const action: typeof mobxAction = Object.assign(\r\n  actionInternal,\r\n  mobxAction\r\n) as any;\r\n\r\nfunction computedInternal(...args) {\r\n  return (mobxComputed as any)(...args);\r\n}\r\nexport const computed: typeof mobxComputed = Object.assign(\r\n  computedInternal,\r\n  mobxComputed\r\n) as any;\r\n\r\nfunction observableInternal(...args) {\r\n  return (mobxObservable as any)(...args);\r\n}\r\n\r\nexport const observable: typeof mobxObservable = Object.assign(\r\n  observableInternal,\r\n  mobxObservable\r\n) as any;\r\n","import {\r\n  AfterViewInit,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  Output,\r\n  Renderer2\r\n} from '@angular/core';\r\nimport { TreeDraggedElement } from '../models/tree-dragged-element.model';\r\n\r\nconst DRAG_OVER_CLASS = 'is-dragging-over';\r\nconst DRAG_DISABLED_CLASS = 'is-dragging-over-disabled';\r\n\r\n@Directive({\r\n  selector: '[treeDrop]'\r\n})\r\nexport class TreeDropDirective implements AfterViewInit, OnDestroy {\r\n  @Input() allowDragoverStyling = true;\r\n  @Output('treeDrop') onDropCallback = new EventEmitter();\r\n  @Output('treeDropDragOver') onDragOverCallback = new EventEmitter();\r\n  @Output('treeDropDragLeave') onDragLeaveCallback = new EventEmitter();\r\n  @Output('treeDropDragEnter') onDragEnterCallback = new EventEmitter();\r\n  private readonly dragOverEventHandler: (ev: DragEvent) => void;\r\n  private readonly dragEnterEventHandler: (ev: DragEvent) => void;\r\n  private readonly dragLeaveEventHandler: (ev: DragEvent) => void;\r\n\r\n  private _allowDrop = (element, $event) => true;\r\n\r\n  @Input() set treeAllowDrop(allowDrop) {\r\n    if (allowDrop instanceof Function) {\r\n      this._allowDrop = allowDrop;\r\n    }\r\n    else this._allowDrop = (element, $event) => allowDrop;\r\n  }\r\n\r\n  allowDrop($event) {\r\n    return this._allowDrop(this.treeDraggedElement.get(), $event);\r\n  }\r\n\r\n  constructor(private el: ElementRef, private renderer: Renderer2, private treeDraggedElement: TreeDraggedElement, private ngZone: NgZone) {\r\n    this.dragOverEventHandler = this.onDragOver.bind(this);\r\n    this.dragEnterEventHandler = this.onDragEnter.bind(this);\r\n    this.dragLeaveEventHandler = this.onDragLeave.bind(this);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    let el: HTMLElement = this.el.nativeElement;\r\n    this.ngZone.runOutsideAngular(() => {\r\n      el.addEventListener('dragover', this.dragOverEventHandler);\r\n      el.addEventListener('dragenter', this.dragEnterEventHandler);\r\n      el.addEventListener('dragleave', this.dragLeaveEventHandler);\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    let el: HTMLElement = this.el.nativeElement;\r\n    el.removeEventListener('dragover', this.dragOverEventHandler);\r\n    el.removeEventListener('dragenter', this.dragEnterEventHandler);\r\n    el.removeEventListener('dragleave', this.dragLeaveEventHandler);\r\n  }\r\n\r\n  onDragOver($event) {\r\n    if (!this.allowDrop($event)) {\r\n      if (this.allowDragoverStyling) {\r\n        return this.addDisabledClass();\r\n      }\r\n      return;\r\n    }\r\n\r\n    this.onDragOverCallback.emit({event: $event, element: this.treeDraggedElement.get()});\r\n\r\n    $event.preventDefault();\r\n    if (this.allowDragoverStyling) {\r\n      this.addClass();\r\n    }\r\n  }\r\n\r\n  onDragEnter($event) {\r\n    if (!this.allowDrop($event)) return;\r\n\r\n    $event.preventDefault();\r\n    this.onDragEnterCallback.emit({event: $event, element: this.treeDraggedElement.get()});\r\n  }\r\n\r\n  onDragLeave($event) {\r\n    if (!this.allowDrop($event)) {\r\n      if (this.allowDragoverStyling) {\r\n        return this.removeDisabledClass();\r\n      }\r\n      return;\r\n    }\r\n    this.onDragLeaveCallback.emit({event: $event, element: this.treeDraggedElement.get()});\r\n\r\n    if (this.allowDragoverStyling) {\r\n      this.removeClass();\r\n    }\r\n  }\r\n\r\n  @HostListener('drop', ['$event']) onDrop($event) {\r\n    if (!this.allowDrop($event)) return;\r\n\r\n    $event.preventDefault();\r\n    this.onDropCallback.emit({event: $event, element: this.treeDraggedElement.get()});\r\n\r\n    if (this.allowDragoverStyling) {\r\n      this.removeClass();\r\n    }\r\n    this.treeDraggedElement.set(null);\r\n  }\r\n\r\n  private addClass() {\r\n    this.renderer.addClass(this.el.nativeElement, DRAG_OVER_CLASS);\r\n  }\r\n\r\n  private removeClass() {\r\n    this.renderer.removeClass(this.el.nativeElement, DRAG_OVER_CLASS);\r\n  }\r\n\r\n  private addDisabledClass() {\r\n    this.renderer.addClass(this.el.nativeElement, DRAG_DISABLED_CLASS);\r\n  }\r\n\r\n  private removeDisabledClass() {\r\n    this.renderer.removeClass(this.el.nativeElement, DRAG_DISABLED_CLASS);\r\n  }\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { TreeNode } from '../models/tree-node.model';\r\n\r\n@Component({\r\n  selector: 'TreeNodeDropSlot, tree-node-drop-slot',\r\n  encapsulation: ViewEncapsulation.None,\r\n  styles: [],\r\n  template: `\r\n    <div\r\n      class=\"node-drop-slot\"\r\n      (treeDrop)=\"onDrop($event)\"\r\n      [treeAllowDrop]=\"allowDrop.bind(this)\"\r\n      [allowDragoverStyling]=\"true\">\r\n    </div>\r\n  `\r\n})\r\nexport class TreeNodeDropSlot {\r\n  @Input() node: TreeNode;\r\n  @Input() dropIndex: number;\r\n\r\n  onDrop($event) {\r\n    this.node.mouseAction('drop', $event.event, {\r\n      from: $event.element,\r\n      to: { parent: this.node, index: this.dropIndex }\r\n    });\r\n  }\r\n\r\n  allowDrop(element, $event) {\r\n    return this.node.options.allowDrop(element, { parent: this.node, index: this.dropIndex }, $event);\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  AfterViewInit,\r\n  OnInit,\r\n  OnDestroy,\r\n} from '@angular/core';\r\nimport { TreeVirtualScroll } from '../models/tree-virtual-scroll.model';\r\nimport { TREE_EVENTS } from '../constants/events';\r\n\r\n@Component({\r\n  selector: 'tree-viewport',\r\n  styles: [],\r\n  providers: [TreeVirtualScroll],\r\n  template: `\r\n    <ng-container *treeMobxAutorun=\"{ dontDetach: true }\">\r\n      <div [style.height]=\"getTotalHeight()\">\r\n        <ng-content></ng-content>\r\n      </div>\r\n    </ng-container>\r\n  `\r\n})\r\nexport class TreeViewportComponent implements AfterViewInit, OnInit, OnDestroy {\r\n  setViewport = this.throttle(() => {\r\n    this.virtualScroll.setViewport(this.elementRef.nativeElement);\r\n  }, 17);\r\n\r\n  private readonly scrollEventHandler: ($event: Event) => void;\r\n\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    public virtualScroll: TreeVirtualScroll\r\n  ) {\r\n    this.scrollEventHandler = this.setViewport.bind(this);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.virtualScroll.init();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    setTimeout(() => {\r\n      this.setViewport();\r\n      this.virtualScroll.fireEvent({ eventName: TREE_EVENTS.initialized });\r\n    });\r\n    let el: HTMLElement = this.elementRef.nativeElement;\r\n    el.addEventListener('scroll', this.scrollEventHandler);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.virtualScroll.clear();\r\n    let el: HTMLElement = this.elementRef.nativeElement;\r\n    el.removeEventListener('scroll', this.scrollEventHandler);\r\n  }\r\n\r\n  getTotalHeight() {\r\n    return (\r\n      (this.virtualScroll.isEnabled() &&\r\n        this.virtualScroll.totalHeight + 'px') ||\r\n      'auto'\r\n    );\r\n  }\r\n\r\n  private throttle(func, timeFrame) {\r\n    let lastTime = 0;\r\n    return function () {\r\n      let now = Date.now();\r\n      if (now - lastTime >= timeFrame) {\r\n        func();\r\n        lastTime = now;\r\n      }\r\n    };\r\n  }\r\n}\r\n","import { Directive, Input, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\nconst EASE_ACCELERATION = 1.005;\r\n\r\n@Directive({\r\n  selector: '[treeAnimateOpen]'\r\n})\r\nexport class TreeAnimateOpenDirective {\r\n  private _isOpen: boolean;\r\n\r\n  @Input('treeAnimateOpenSpeed') animateSpeed: number;\r\n  @Input('treeAnimateOpenAcceleration') animateAcceleration: number;\r\n  @Input('treeAnimateOpenEnabled') isEnabled: boolean;\r\n\r\n  @Input('treeAnimateOpen')\r\n  set isOpen(value: boolean) {\r\n    if (value) {\r\n      this._show();\r\n      if (this.isEnabled && this._isOpen === false) {\r\n        this._animateOpen();\r\n      }\r\n    } else {\r\n      this.isEnabled ? this._animateClose() : this._hide();\r\n    }\r\n    this._isOpen = !!value;\r\n  };\r\n\r\n  private innerElement: any;\r\n\r\n  constructor(\r\n    private renderer: Renderer2,\r\n    private templateRef: TemplateRef<any>,\r\n    private viewContainerRef: ViewContainerRef) {\r\n  }\r\n\r\n  private _show() {\r\n    if (this.innerElement) return;\r\n\r\n    // create child view\r\n    this.innerElement = this.viewContainerRef.createEmbeddedView(this.templateRef).rootNodes[0];\r\n  }\r\n\r\n  private _hide() {\r\n    this.viewContainerRef.clear();\r\n    this.innerElement = null;\r\n  }\r\n\r\n  private _animateOpen() {\r\n    let delta = this.animateSpeed;\r\n    let ease = this.animateAcceleration;\r\n    let maxHeight = 0;\r\n\r\n    // set height to 0\r\n    this.renderer.setStyle(this.innerElement, 'max-height', `0`);\r\n\r\n    // increase maxHeight until height doesn't change\r\n    setTimeout(() => { // Allow inner element to create its content\r\n      const i = setInterval(() => {\r\n        if (!this._isOpen || !this.innerElement) return clearInterval(i);\r\n\r\n        maxHeight += delta;\r\n        const roundedMaxHeight = Math.round(maxHeight);\r\n\r\n        this.renderer.setStyle(this.innerElement, 'max-height', `${roundedMaxHeight}px`);\r\n        const height = this.innerElement.getBoundingClientRect ? this.innerElement.getBoundingClientRect().height : 0; // TBD use renderer\r\n\r\n        delta *= ease;\r\n        ease *= EASE_ACCELERATION;\r\n        if (height < roundedMaxHeight) {\r\n          // Make maxHeight auto because animation finished and container might change height later on\r\n          this.renderer.setStyle(this.innerElement, 'max-height', null);\r\n          clearInterval(i);\r\n        }\r\n      }, 17);\r\n    });\r\n  }\r\n\r\n  private _animateClose() {\r\n    if (!this.innerElement) return;\r\n\r\n    let delta = this.animateSpeed;\r\n    let ease = this.animateAcceleration;\r\n    let height = this.innerElement.getBoundingClientRect().height; // TBD use renderer\r\n\r\n    // slowly decrease maxHeight to 0, starting from current height\r\n    const i = setInterval(() => {\r\n      if (this._isOpen || !this.innerElement) return clearInterval(i);\r\n\r\n      height -= delta;\r\n      this.renderer.setStyle(this.innerElement, 'max-height', `${height}px`);\r\n      delta *= ease;\r\n      ease *= EASE_ACCELERATION;\r\n\r\n      if (height <= 0) {\r\n        // after animation complete - remove child element\r\n        this.viewContainerRef.clear();\r\n        this.innerElement = null;\r\n        clearInterval(i);\r\n      }\r\n    }, 17);\r\n  }\r\n}\r\n","import { AfterViewInit, Directive, DoCheck, ElementRef, HostListener, Input, NgZone, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { TreeDraggedElement } from '../models/tree-dragged-element.model';\r\n\r\nconst DRAG_OVER_CLASS = 'is-dragging-over';\r\n\r\n@Directive({\r\n  selector: '[treeDrag]'\r\n})\r\nexport class TreeDragDirective implements AfterViewInit, DoCheck, OnDestroy {\r\n  @Input('treeDrag') draggedElement;\r\n  @Input() treeDragEnabled;\r\n  private readonly dragEventHandler: (ev: DragEvent) => void;\r\n\r\n  constructor(private el: ElementRef, private renderer: Renderer2, private treeDraggedElement: TreeDraggedElement, private ngZone: NgZone) {\r\n    this.dragEventHandler = this.onDrag.bind(this);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    let el: HTMLElement = this.el.nativeElement;\r\n    this.ngZone.runOutsideAngular(() => {\r\n      el.addEventListener('drag', this.dragEventHandler);\r\n    });\r\n  }\r\n\r\n  ngDoCheck() {\r\n    this.renderer.setAttribute(this.el.nativeElement, 'draggable', this.treeDragEnabled ? 'true' : 'false');\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    let el: HTMLElement = this.el.nativeElement;\r\n    el.removeEventListener('drag', this.dragEventHandler);\r\n  }\r\n\r\n  @HostListener('dragstart', ['$event']) onDragStart(ev) {\r\n    // setting the data is required by firefox\r\n    ev.dataTransfer.setData('text', ev.target.id);\r\n    this.treeDraggedElement.set(this.draggedElement);\r\n    if (this.draggedElement.mouseAction) {\r\n      this.draggedElement.mouseAction('dragStart', ev);\r\n    }\r\n  }\r\n\r\n  onDrag(ev) {\r\n    if (this.draggedElement.mouseAction) {\r\n      this.draggedElement.mouseAction('drag', ev);\r\n    }\r\n  }\r\n\r\n  @HostListener('dragend') onDragEnd() {\r\n    if (this.draggedElement.mouseAction) {\r\n      this.draggedElement.mouseAction('dragEnd');\r\n    }\r\n    this.treeDraggedElement.set(null);\r\n  }\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { TreeNode } from '../models/tree-node.model';\r\n\r\n@Component({\r\n  selector: 'tree-node-expander',\r\n  encapsulation: ViewEncapsulation.None,\r\n  styles: [],\r\n  template: `\r\n    <ng-container *treeMobxAutorun=\"{ dontDetach: true }\">\r\n      <span\r\n        *ngIf=\"node.hasChildren\"\r\n        [class.toggle-children-wrapper-expanded]=\"node.isExpanded\"\r\n        [class.toggle-children-wrapper-collapsed]=\"node.isCollapsed\"\r\n        class=\"toggle-children-wrapper\"\r\n        (click)=\"node.mouseAction('expanderClick', $event)\"\r\n      >\r\n        <span class=\"toggle-children\"></span>\r\n      </span>\r\n      <span *ngIf=\"!node.hasChildren\" class=\"toggle-children-placeholder\">\r\n      </span>\r\n    </ng-container>\r\n  `\r\n})\r\nexport class TreeNodeExpanderComponent {\r\n  @Input() node: TreeNode;\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { TreeNode } from '../models/tree-node.model';\r\n\r\n@Component({\r\n  selector: 'tree-node-checkbox',\r\n  encapsulation: ViewEncapsulation.None,\r\n  styles: [],\r\n  template: `\r\n    <ng-container *treeMobxAutorun=\"{ dontDetach: true }\">\r\n      <input\r\n        class=\"tree-node-checkbox\"\r\n        type=\"checkbox\"\r\n        (click)=\"node.mouseAction('checkboxClick', $event)\"\r\n        [checked]=\"node.isSelected\"\r\n        [indeterminate]=\"node.isPartiallySelected\"\r\n      />\r\n    </ng-container>\r\n  `\r\n})\r\nexport class TreeNodeCheckboxComponent {\r\n  @Input() node: TreeNode;\r\n}\r\n","import { Component, ContentChild, EventEmitter, HostListener, Input, OnChanges, Output, TemplateRef, ViewChild, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\r\nimport { TreeModel } from '../models/tree.model';\r\nimport { TreeDraggedElement } from '../models/tree-dragged-element.model';\r\nimport { TreeOptions } from '../models/tree-options.model';\r\nimport { ITreeOptions } from '../defs/api';\r\nimport { TreeViewportComponent } from './tree-viewport.component';\r\n\r\nimport { TreeNode } from '../models/tree-node.model';\r\n\r\nimport { makeObservable, reaction } from 'mobx';\r\nimport { observable, computed, action } from '../mobx-angular/mobx-proxy';\r\nimport { TreeVirtualScroll } from '../models/tree-virtual-scroll.model';\r\n\r\n@Component({\r\n  selector: 'Tree, tree-root',\r\n  providers: [TreeModel],\r\n  styles: [],\r\n  template: `\r\n      <tree-viewport #viewport>\r\n          <div\r\n                  class=\"angular-tree-component\"\r\n                  [class.node-dragging]=\"treeDraggedElement.isDragging()\"\r\n                  [class.angular-tree-component-rtl]=\"treeModel.options.rtl\">\r\n              <tree-node-collection\r\n                      *ngIf=\"treeModel.roots\"\r\n                      [nodes]=\"treeModel.roots\"\r\n                      [treeModel]=\"treeModel\"\r\n                      [templates]=\"{\r\n            loadingTemplate: loadingTemplate,\r\n            treeNodeTemplate: treeNodeTemplate,\r\n            treeNodeWrapperTemplate: treeNodeWrapperTemplate,\r\n            treeNodeFullTemplate: treeNodeFullTemplate\r\n          }\">\r\n              </tree-node-collection>\r\n              <tree-node-drop-slot\r\n                      class=\"empty-tree-drop-slot\"\r\n                      *ngIf=\"treeModel.isEmptyTree()\"\r\n                      [dropIndex]=\"0\"\r\n                      [node]=\"treeModel.virtualRoot\">\r\n              </tree-node-drop-slot>\r\n          </div>\r\n      </tree-viewport>\r\n  `\r\n})\r\nexport class TreeComponent implements OnChanges {\r\n  _nodes: any[];\r\n  _options: TreeOptions;\r\n\r\n  @ContentChild('loadingTemplate', { static: false }) loadingTemplate: TemplateRef<any>;\r\n  @ContentChild('treeNodeTemplate', { static: false }) treeNodeTemplate: TemplateRef<any>;\r\n  @ContentChild('treeNodeWrapperTemplate', { static: false }) treeNodeWrapperTemplate: TemplateRef<any>;\r\n  @ContentChild('treeNodeFullTemplate', { static: false }) treeNodeFullTemplate: TemplateRef<any>;\r\n  @ViewChild('viewport', { static: false }) viewportComponent: TreeViewportComponent;\r\n\r\n  // Will be handled in ngOnChanges\r\n  @Input() set nodes(nodes: any[]) {\r\n  };\r\n\r\n  @Input() set options(options: ITreeOptions) {\r\n  };\r\n\r\n  @Input() set focused(value: boolean) {\r\n    this.treeModel.setFocus(value);\r\n  }\r\n\r\n  @Input() set state(state) {\r\n    this.treeModel.setState(state);\r\n  }\r\n\r\n  @Output() toggleExpanded;\r\n  @Output() activate;\r\n  @Output() deactivate;\r\n  @Output() nodeActivate;\r\n  @Output() nodeDeactivate;\r\n  @Output() select;\r\n  @Output() deselect;\r\n  @Output() focus;\r\n  @Output() blur;\r\n  @Output() updateData;\r\n  @Output() initialized;\r\n  @Output() moveNode;\r\n  @Output() copyNode;\r\n  @Output() loadNodeChildren;\r\n  @Output() changeFilter;\r\n  @Output() event;\r\n  @Output() stateChange;\r\n\r\n  constructor(\r\n    public treeModel: TreeModel,\r\n    public treeDraggedElement: TreeDraggedElement) {\r\n\r\n    treeModel.eventNames.forEach((name) => this[name] = new EventEmitter());\r\n    treeModel.subscribeToState((state) => this.stateChange.emit(state));\r\n  }\r\n\r\n  @HostListener('body: keydown', ['$event'])\r\n  onKeydown($event) {\r\n    if (!this.treeModel.isFocused) return;\r\n    if (['input', 'textarea'].includes(document.activeElement.tagName.toLowerCase())) return;\r\n\r\n    const focusedNode = this.treeModel.getFocusedNode();\r\n\r\n    this.treeModel.performKeyAction(focusedNode, $event);\r\n  }\r\n\r\n  @HostListener('body: mousedown', ['$event'])\r\n  onMousedown($event) {\r\n    function isOutsideClick(startElement: Element, nodeName: string) {\r\n      return !startElement ? true : startElement.localName === nodeName ? false : isOutsideClick(startElement.parentElement, nodeName);\r\n    }\r\n\r\n    if (isOutsideClick($event.target, 'tree-root')) {\r\n      this.treeModel.setFocus(false);\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes) {\r\n    if (changes.options || changes.nodes) {\r\n      this.treeModel.setData({\r\n        options: changes.options && changes.options.currentValue,\r\n        nodes: changes.nodes && changes.nodes.currentValue,\r\n        events: this.pick(this, this.treeModel.eventNames)\r\n      });\r\n    }\r\n  }\r\n\r\n  sizeChanged() {\r\n    this.viewportComponent.setViewport();\r\n  }\r\n\r\n  private pick(object, keys) {\r\n    return keys.reduce((obj, key) => {\r\n      if (object && object.hasOwnProperty(key)) {\r\n        obj[key] = object[key];\r\n      }\r\n      return obj;\r\n    }, {});\r\n  }\r\n}\r\n\r\n//imported from tree-node.children to avoid NG3003 cycle error\r\n\r\n@Component({\r\n  selector: 'tree-node-children',\r\n  encapsulation: ViewEncapsulation.None,\r\n  styles: [],\r\n  template: `\r\n    <ng-container *treeMobxAutorun=\"{ dontDetach: true }\">\r\n      <div\r\n        [class.tree-children]=\"true\"\r\n        [class.tree-children-no-padding]=\"node.options.levelPadding\"\r\n        *treeAnimateOpen=\"\r\n          node.isExpanded;\r\n          speed: node.options.animateSpeed;\r\n          acceleration: node.options.animateAcceleration;\r\n          enabled: node.options.animateExpand\r\n        \"\r\n      >\r\n        <tree-node-collection\r\n          *ngIf=\"node.children\"\r\n          [nodes]=\"node.children\"\r\n          [templates]=\"templates\"\r\n          [treeModel]=\"node.treeModel\"\r\n        >\r\n        </tree-node-collection>\r\n        <tree-loading-component\r\n          [style.padding-left]=\"node.getNodePadding()\"\r\n          class=\"tree-node-loading\"\r\n          *ngIf=\"!node.children\"\r\n          [template]=\"templates.loadingTemplate\"\r\n          [node]=\"node\"\r\n        ></tree-loading-component>\r\n      </div>\r\n    </ng-container>\r\n  `\r\n})\r\nexport class TreeNodeChildrenComponent {\r\n  @Input() node: TreeNode;\r\n  @Input() templates: any;\r\n}\r\n\r\n\r\n//imported from tree-node-collection.component.ts to avoid NG3003 cycle error\r\n\r\n@Component({\r\n  selector: 'tree-node-collection',\r\n  encapsulation: ViewEncapsulation.None,\r\n  template: `\r\n    <ng-container *treeMobxAutorun=\"{ dontDetach: true }\">\r\n      <div [style.margin-top]=\"marginTop\">\r\n        <tree-node\r\n          *ngFor=\"let node of viewportNodes; let i = index; trackBy: trackNode\"\r\n          [node]=\"node\"\r\n          [index]=\"i\"\r\n          [templates]=\"templates\"\r\n        >\r\n        </tree-node>\r\n      </div>\r\n    </ng-container>\r\n  `\r\n})\r\nexport class TreeNodeCollectionComponent implements OnInit, OnDestroy {\r\n  @Input()\r\n  get nodes() {\r\n    return this._nodes;\r\n  }\r\n  set nodes(nodes) {\r\n    this.setNodes(nodes);\r\n  }\r\n\r\n  @Input() treeModel: TreeModel;\r\n\r\n  constructor() {\r\n    makeObservable(this, {\r\n      _nodes: observable,\r\n      viewportNodes: observable,\r\n      marginTop: computed,\r\n      setNodes: action     \r\n    })\r\n  }\r\n\r\n\r\n  _nodes;\r\n  private virtualScroll: TreeVirtualScroll; // Cannot inject this, because we might be inside treeNodeTemplateFull\r\n  @Input() templates;\r\n\r\n  viewportNodes: TreeNode[];\r\n\r\n  get marginTop(): string {\r\n    const firstNode =\r\n      this.viewportNodes && this.viewportNodes.length && this.viewportNodes[0];\r\n    const relativePosition =\r\n      firstNode && firstNode.parent\r\n        ? firstNode.position -\r\n          firstNode.parent.position -\r\n          firstNode.parent.getSelfHeight()\r\n        : 0;\r\n\r\n    return `${relativePosition}px`;\r\n  }\r\n\r\n  _dispose = [];\r\n\r\n  setNodes(nodes) {\r\n    this._nodes = nodes;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.virtualScroll = this.treeModel.virtualScroll;\r\n    this._dispose = [\r\n      // return node indexes so we can compare structurally,\r\n      reaction(\r\n        () => {\r\n          return this.virtualScroll\r\n            .getViewportNodes(this.nodes)\r\n            .map(n => n.index);\r\n        },\r\n        nodeIndexes => {\r\n          this.viewportNodes = nodeIndexes.map(i => this.nodes[i]);\r\n        },\r\n        { compareStructural: true, fireImmediately: true } as any\r\n      ),\r\n      reaction(\r\n        () => this.nodes,\r\n        nodes => {\r\n          this.viewportNodes = this.virtualScroll.getViewportNodes(nodes);\r\n        }\r\n      )\r\n    ];\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._dispose.forEach(d => d());\r\n  }\r\n\r\n  trackNode(index, node) {\r\n    return node.id;\r\n  }\r\n}\r\n\r\n\r\n//from tree.node.component.ts to avoid NG3003 cycle error\r\n\r\n@Component({\r\n  selector: 'TreeNode, tree-node',\r\n  encapsulation: ViewEncapsulation.None,\r\n  styles: [],\r\n  template: `\r\n    <ng-container *treeMobxAutorun=\"{ dontDetach: true }\">\r\n      <div\r\n        *ngIf=\"!templates.treeNodeFullTemplate\"\r\n        [class]=\"node.getClass()\"\r\n        [class.tree-node]=\"true\"\r\n        [class.tree-node-expanded]=\"node.isExpanded && node.hasChildren\"\r\n        [class.tree-node-collapsed]=\"node.isCollapsed && node.hasChildren\"\r\n        [class.tree-node-leaf]=\"node.isLeaf\"\r\n        [class.tree-node-active]=\"node.isActive\"\r\n        [class.tree-node-focused]=\"node.isFocused\"\r\n      >\r\n        <tree-node-drop-slot\r\n          *ngIf=\"index === 0\"\r\n          [dropIndex]=\"node.index\"\r\n          [node]=\"node.parent\"\r\n        ></tree-node-drop-slot>\r\n\r\n        <tree-node-wrapper\r\n          [node]=\"node\"\r\n          [index]=\"index\"\r\n          [templates]=\"templates\"\r\n        ></tree-node-wrapper>\r\n\r\n        <tree-node-children\r\n          [node]=\"node\"\r\n          [templates]=\"templates\"\r\n        ></tree-node-children>\r\n        <tree-node-drop-slot\r\n          [dropIndex]=\"node.index + 1\"\r\n          [node]=\"node.parent\"\r\n        ></tree-node-drop-slot>\r\n      </div>\r\n      <ng-container\r\n        [ngTemplateOutlet]=\"templates.treeNodeFullTemplate\"\r\n        [ngTemplateOutletContext]=\"{\r\n          $implicit: node,\r\n          node: node,\r\n          index: index,\r\n          templates: templates\r\n        }\"\r\n      >\r\n      </ng-container>\r\n    </ng-container>\r\n  `\r\n})\r\nexport class TreeNodeComponent {\r\n  @Input() node: TreeNode;\r\n  @Input() index: number;\r\n  @Input() templates: any;\r\n}\r\n\r\n//from tree-node-content.component.ts to avoid NG3003 cycle error.\r\n\r\n@Component({\r\n  selector: 'tree-node-content',\r\n  encapsulation: ViewEncapsulation.None,\r\n  template: `\r\n  <span *ngIf=\"!template\">{{ node.displayField }}</span>\r\n  <ng-container\r\n    [ngTemplateOutlet]=\"template\"\r\n    [ngTemplateOutletContext]=\"{ $implicit: node, node: node, index: index }\">\r\n  </ng-container>`,\r\n})\r\nexport class TreeNodeContent {\r\n  @Input() node: TreeNode;\r\n  @Input() index: number;\r\n  @Input() template: TemplateRef<any>;\r\n}\r\n\r\n\r\n//from tree-node-wrapper.component.ts file to avoid NG3003 cycle error.\r\n\r\n@Component({\r\n  selector: 'tree-node-wrapper' ,\r\n  encapsulation: ViewEncapsulation.None ,\r\n  styles: [] ,\r\n  template: `\r\n      <div *ngIf=\"!templates.treeNodeWrapperTemplate\" class=\"node-wrapper\" [style.padding-left]=\"node.getNodePadding()\">\r\n          <tree-node-checkbox *ngIf=\"node.options.useCheckbox\" [node]=\"node\"></tree-node-checkbox>\r\n          <tree-node-expander [node]=\"node\"></tree-node-expander>\r\n          <div class=\"node-content-wrapper\"\r\n               [class.node-content-wrapper-active]=\"node.isActive\"\r\n               [class.node-content-wrapper-focused]=\"node.isFocused\"\r\n               (click)=\"node.mouseAction('click', $event)\"\r\n               (dblclick)=\"node.mouseAction('dblClick', $event)\"\r\n               (mouseover)=\"node.mouseAction('mouseOver', $event)\"\r\n               (mouseout)=\"node.mouseAction('mouseOut', $event)\"\r\n               (contextmenu)=\"node.mouseAction('contextMenu', $event)\"\r\n               (treeDrop)=\"node.onDrop($event)\"\r\n               (treeDropDragOver)=\"node.mouseAction('dragOver', $event)\"\r\n               (treeDropDragLeave)=\"node.mouseAction('dragLeave', $event)\"\r\n               (treeDropDragEnter)=\"node.mouseAction('dragEnter', $event)\"\r\n               [treeAllowDrop]=\"node.allowDrop\"\r\n               [allowDragoverStyling]=\"node.allowDragoverStyling()\"\r\n               [treeDrag]=\"node\"\r\n               [treeDragEnabled]=\"node.allowDrag()\">\r\n\r\n              <tree-node-content [node]=\"node\" [index]=\"index\" [template]=\"templates.treeNodeTemplate\">\r\n              </tree-node-content>\r\n          </div>\r\n      </div>\r\n      <ng-container\r\n              [ngTemplateOutlet]=\"templates.treeNodeWrapperTemplate\"\r\n              [ngTemplateOutletContext]=\"{ $implicit: node, node: node, index: index, templates: templates }\">\r\n      </ng-container>\r\n  `\r\n})\r\n\r\nexport class TreeNodeWrapperComponent {\r\n\r\n  @Input() node: TreeNode;\r\n  @Input() index: number;\r\n  @Input() templates: any;\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TreeMobxAutorunDirective } from './mobx-angular/tree-mobx-autorun.directive';\r\n\r\nimport {\r\n  IActionHandler,\r\n  IActionMapping,\r\n  TREE_ACTIONS\r\n} from './models/tree-options.model';\r\nimport {\r\n  IAllowDragFn,\r\n  IAllowDropFn,\r\n  ITreeOptions,\r\n  ITreeState\r\n} from './defs/api';\r\nimport { KEYS } from './constants/keys';\r\nimport { TreeModel } from './models/tree.model';\r\nimport { TreeNode } from './models/tree-node.model';\r\nimport { TreeDraggedElement } from './models/tree-dragged-element.model';\r\nimport { TreeVirtualScroll } from './models/tree-virtual-scroll.model';\r\nimport { LoadingComponent } from './components/loading.component';\r\nimport { TreeComponent } from './components/tree.component';\r\n//import { TreeNodeComponent } from './components/tree-node.component';\r\n//import { TreeNodeContent } from './components/tree-node-content.component';\r\nimport { TreeNodeComponent } from './components/tree.component';\r\nimport { TreeNodeContent } from './components/tree.component';\r\nimport { TreeNodeDropSlot } from './components/tree-node-drop-slot.component';\r\nimport { TreeNodeExpanderComponent } from './components/tree-node-expander.component';\r\n//import { TreeNodeChildrenComponent } from './components/tree-node-children.component';\r\n//import { TreeNodeCollectionComponent } from './components/tree-node-collection.component';\r\nimport { TreeNodeChildrenComponent } from './components/tree.component';\r\nimport { TreeNodeCollectionComponent } from './components/tree.component';\r\n//import { TreeNodeWrapperComponent } from './components/tree-node-wrapper.component';\r\nimport { TreeNodeWrapperComponent } from './components/tree.component';\r\nimport { TreeViewportComponent } from './components/tree-viewport.component';\r\nimport { TreeNodeCheckboxComponent } from './components/tree-node-checkbox.component';\r\nimport { TreeDropDirective } from './directives/tree-drop.directive';\r\nimport { TreeDragDirective } from './directives/tree-drag.directive';\r\nimport { TreeAnimateOpenDirective } from './directives/tree-animate-open.directive';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    TreeComponent,\r\n    TreeNodeComponent,\r\n    TreeNodeContent,\r\n    LoadingComponent,\r\n    TreeDropDirective,\r\n    TreeDragDirective,\r\n    TreeNodeExpanderComponent,\r\n    TreeNodeChildrenComponent,\r\n    TreeNodeDropSlot,\r\n    TreeNodeCollectionComponent,\r\n    TreeViewportComponent,\r\n    TreeNodeWrapperComponent,\r\n    TreeNodeCheckboxComponent,\r\n    TreeAnimateOpenDirective,\r\n    TreeMobxAutorunDirective\r\n  ],\r\n  exports: [\r\n    TreeComponent,\r\n    TreeNodeComponent,\r\n    TreeNodeContent,\r\n    LoadingComponent,\r\n    TreeDropDirective,\r\n    TreeDragDirective,\r\n    TreeNodeExpanderComponent,\r\n    TreeNodeChildrenComponent,\r\n    TreeNodeDropSlot,\r\n    TreeNodeCollectionComponent,\r\n    TreeViewportComponent,\r\n    TreeNodeWrapperComponent,\r\n    TreeNodeCheckboxComponent,\r\n    TreeAnimateOpenDirective,\r\n    TreeMobxAutorunDirective\r\n  ],\r\n  imports: [CommonModule],\r\n  providers: []\r\n})\r\nexport class TreeModule {}\r\n\r\nexport {\r\n  TreeModel,\r\n  TreeNode,\r\n  TreeDraggedElement,\r\n  TreeVirtualScroll,\r\n  ITreeOptions,\r\n  TREE_ACTIONS,\r\n  KEYS,\r\n  IActionMapping,\r\n  IActionHandler,\r\n  IAllowDropFn,\r\n  IAllowDragFn,\r\n  LoadingComponent,\r\n  TreeAnimateOpenDirective,\r\n  TreeComponent,\r\n  TreeNodeComponent,\r\n  TreeNodeWrapperComponent,\r\n  TreeNodeContent,\r\n  TreeDropDirective,\r\n  TreeDragDirective,\r\n  TreeNodeExpanderComponent,\r\n  TreeNodeChildrenComponent,\r\n  TreeNodeDropSlot,\r\n  TreeNodeCollectionComponent,\r\n  TreeViewportComponent,\r\n  TreeNodeCheckboxComponent,\r\n  ITreeState,\r\n  TreeMobxAutorunDirective\r\n};\r\n","/*\r\n * Public API Surface of angular-tree-component\r\n */\r\n\r\nexport * from './lib/angular-tree-component.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["computed","observable","action","i1.TreeModel","i1","mobxAction","mobxComputed","mobxObservable","DRAG_OVER_CLASS","i1.TreeDraggedElement","i1.TreeDropDirective","i1.TreeVirtualScroll","i2.TreeMobxAutorunDirective","i1.TreeMobxAutorunDirective","i2.TreeDraggedElement","i4.TreeNodeDropSlot","i5.TreeViewportComponent","i6.LoadingComponent","i7.TreeAnimateOpenDirective","i8.TreeMobxAutorunDirective","i9.TreeDropDirective","i10.TreeDragDirective","i11.TreeNodeExpanderComponent","i12.TreeNodeCheckboxComponent"],"mappings":"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"}