UNPKG

69.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"eyzy-tree.js","sources":["../src/utils/cn.ts","../src/utils/shallowEqual.ts","../src/components/TreeNode.tsx","../src/utils/index.ts","../src/TreeAPI.ts","../src/utils/traveler.ts","../src/utils/state.ts","../src/utils/uuid.ts","../src/utils/parser.ts","../src/utils/linkedNode.ts","../src/components/Tree.tsx"],"sourcesContent":["\r\nconst hasOwn = {}.hasOwnProperty\r\n\r\nexport default function cn(args: any): string {\r\n const result = []\r\n\r\n for (const key in args) {\r\n if (hasOwn.call(args, key) && args[key]) {\r\n result.push(key)\r\n }\r\n }\r\n\r\n return result.join(' ')\r\n}","\r\nexport function shallowEqual(objA: any, objB: any, keys: string[]): boolean {\r\n if (objA === objB) {\r\n return true\r\n }\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i]\r\n const valueA = objA[key]\r\n const valueB = objB[key]\r\n\r\n if (valueA !== valueB) {\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n}","import React from 'react'\r\nimport { Node } from '../types/Node'\r\n\r\nimport cn from '../utils/cn'\r\nimport { shallowEqual } from '../utils/shallowEqual'\r\n\r\nconst hasChild = (node: Node): boolean => {\r\n return node.isBatch || Array.isArray(node.child) && node.child.length > 0\r\n}\r\n\r\nconst comparingKeys = [\r\n 'id', 'checked', 'selected', 'child', 'checked', 'expanded', 'hash'\r\n]\r\n\r\nexport default class TreeNode extends React.Component<Node> {\r\n shouldComponentUpdate(nextProps: Node): boolean {\r\n if (0 === nextProps.depth && this.props.hash !== nextProps.hash) {\r\n return true\r\n }\r\n\r\n return !shallowEqual(this.props, nextProps, comparingKeys)\r\n }\r\n\r\n getNode(): Node {\r\n const {\r\n id,\r\n checked,\r\n selected,\r\n text,\r\n child,\r\n expanded,\r\n disabled,\r\n disabledCheckbox,\r\n parent,\r\n isBatch,\r\n depth\r\n } = this.props\r\n\r\n const node: Node = {\r\n id,\r\n checked,\r\n selected,\r\n text,\r\n child,\r\n parent,\r\n depth\r\n } \r\n\r\n node.expanded = !!expanded\r\n node.disabled = !!disabled\r\n node.isBatch = !!isBatch\r\n node.disabledCheckbox = !!disabledCheckbox\r\n\r\n return node\r\n }\r\n\r\n handleSelect = (event: React.MouseEvent) => {\r\n if (this.props.disabled) {\r\n return\r\n }\r\n\r\n if (this.props.onSelect) {\r\n this.props.onSelect(this.getNode(), event)\r\n }\r\n }\r\n\r\n handleCheck = () => {\r\n if (this.props.disabled || this.props.disabledCheckbox) {\r\n return\r\n }\r\n\r\n if (this.props.onCheck) {\r\n this.props.onCheck(this.getNode())\r\n }\r\n }\r\n\r\n handleExpand = () => {\r\n if (this.props.onExpand) {\r\n this.props.onExpand(this.getNode())\r\n }\r\n }\r\n\r\n handleDoubleClick = (e: any) => {\r\n if (this.props.onDoubleClick) {\r\n this.props.onDoubleClick(this.getNode())\r\n }\r\n }\r\n\r\n renderCheckbox = () => {\r\n if (!this.props.checkable || this.props.hidenCheckbox) {\r\n return null\r\n }\r\n\r\n const Checkbox = this.props.checkboxRenderer\r\n\r\n if (!Checkbox) {\r\n return <span className=\"node-checkbox\" onMouseUp={this.handleCheck} /> \r\n }\r\n\r\n return (\r\n <span className=\"node-checkbox-overrided\" onMouseUp={this.handleCheck}>\r\n <Checkbox node={this.getNode()} />\r\n </span>\r\n )\r\n }\r\n\r\n renderArrow = () => {\r\n const ArrowRenderer = this.props.arrowRenderer\r\n\r\n if (!hasChild(this.props)) {\r\n return <span className=\"node-noop\" />\r\n }\r\n\r\n if (!ArrowRenderer) {\r\n return <span className=\"node-arrow\" onMouseUp={this.handleExpand} />\r\n }\r\n\r\n return (\r\n <span className=\"node-arrow-extended\" onMouseUp={this.handleExpand}>\r\n <ArrowRenderer node={this.getNode()} />\r\n </span>\r\n )\r\n }\r\n\r\n render() {\r\n const {\r\n loading,\r\n checked,\r\n selected,\r\n children,\r\n expanded,\r\n disabled,\r\n disabledCheckbox,\r\n indeterminate,\r\n useIndeterminateState,\r\n textRenderer: TextRenderer\r\n } = this.props\r\n\r\n const text = this.props.text\r\n const nodeContentClass = cn({\r\n 'node-content': true,\r\n 'has-child': hasChild(this.props),\r\n 'selected': selected,\r\n 'checked': checked,\r\n 'expanded': expanded,\r\n 'disabled': disabled,\r\n 'loading': loading,\r\n 'disabled-checkbox': disabledCheckbox,\r\n 'indeterminate': !checked && indeterminate && false !== useIndeterminateState\r\n })\r\n\r\n return (\r\n <li className=\"tree-node\">\r\n <div className={nodeContentClass}>\r\n\r\n { this.renderArrow() }\r\n { this.renderCheckbox() }\r\n\r\n <span className=\"node-text\" onMouseUp={this.handleSelect} onDoubleClick={this.handleDoubleClick}>\r\n { TextRenderer ? <TextRenderer node={this.getNode()} /> : text }\r\n </span>\r\n </div>\r\n\r\n { hasChild(this.props) && expanded &&\r\n <ul className=\"node-child\">{ children }</ul>\r\n }\r\n </li>\r\n )\r\n }\r\n}\r\n","import { Node } from '../types/Node'\r\n\r\nexport const hasOwnProp = {}.hasOwnProperty\r\n\r\nexport function grapObjProps(obj: any, props: string[]) {\r\n return props.reduce((result: any, name: string) => {\r\n if (name in obj) {\r\n result[name] = obj[name]\r\n }\r\n\r\n return result\r\n }, {});\r\n}\r\n\r\nexport function isArray(obj: any): boolean {\r\n return Array.isArray(obj)\r\n}\r\n\r\nexport function isExpandable(node: Node): boolean {\r\n return !!(node.child && node.child.length) || !!node.isBatch\r\n}\r\n\r\nexport function isNodeCheckable(node: Node): boolean {\r\n return !(!!node.disabled || !!node.disabledCheckbox)\r\n}\r\n\r\nexport function isFunction(value: any): boolean {\r\n return 'function' === typeof value \r\n}\r\n\r\nexport function has(targetArray: any[], targetValue: any): boolean {\r\n return !!~targetArray.indexOf(targetValue)\r\n}\r\n\r\nexport function copyArray<T>(arr: T[]): T[] {\r\n return arr.concat([])\r\n}\r\n\r\nexport function copyObject(obj: any) {\r\n const newObj = {}\r\n\r\n for (const i in obj) {\r\n if (hasOwnProp.call(obj, i)) {\r\n newObj[i] = isArray(obj[i]) ? copyArray(obj[i]) : obj[i]\r\n }\r\n }\r\n\r\n return newObj\r\n}\r\n\r\nexport function isRoot(node: Node): boolean {\r\n return node && !node.parent\r\n}\r\n\r\nexport function isLeaf(node: Node): boolean {\r\n return !node.child || (0 === node.child.length && !node.isBatch)\r\n}\r\n\r\nexport function isNodeIndeterminate(node: Node, treeCheckedNodes: string[], indeterminateNodes: string[]): boolean {\r\n if (!node.child.length) {\r\n return false\r\n }\r\n\r\n const hasIndeterminate: boolean = node.child.some((child: Node) => {\r\n return !child.disabled && !child.disabledCheckbox && -1 !== indeterminateNodes.indexOf(child.id)\r\n })\r\n\r\n if (hasIndeterminate) {\r\n return true\r\n }\r\n\r\n const uncheckedNodes = node.child.reduce((count: number, item: Node) => {\r\n if (true !== item.disabled && true !== item.disabledCheckbox && -1 === treeCheckedNodes.indexOf(item.id)) {\r\n count++\r\n }\r\n\r\n return count\r\n }, 0)\r\n\r\n return uncheckedNodes > 0 && uncheckedNodes < node.child.length\r\n}\r\n","import { Node } from './types/Node'\r\n\r\nimport State, { StateObject } from './utils/state'\r\nimport { isNodeCheckable, isLeaf } from './utils/index'\r\nimport { TreeComponent } from './types/TreeComponent'\r\n\r\ntype CheckboxValueConsistency = 'ALL' | 'BRANCH' | 'LEAF' | 'WITH_INDETERMINATE'\r\n\r\nexport class TreeAPI {\r\n private state: State<StateObject>\r\n private tree: TreeComponent\r\n\r\n constructor(tree: TreeComponent, state: State<StateObject>) {\r\n this.tree = tree\r\n this.state = state\r\n }\r\n\r\n selected(): Node[] {\r\n const state = this.state\r\n const selectedNodes: Array<Node | null> = this.tree.selectedNodes\r\n .map((id: string): Node | null => state.getNodeById(id))\r\n\r\n return selectedNodes.filter((item: Node | null) => null !== item) as Node[]\r\n }\r\n\r\n checked(valueConsistsOf: CheckboxValueConsistency, ignoreDisabled?: boolean): Node[] {\r\n const state = this.state\r\n let checkedNodes: Node[] = []\r\n\r\n this.tree.checkedNodes.forEach((id: string) => {\r\n const node = state.getNodeById(id)\r\n\r\n if (node) {\r\n checkedNodes.push(node)\r\n }\r\n })\r\n\r\n if ('WITH_INDETERMINATE' === valueConsistsOf) {\r\n this.tree.indeterminateNodes.forEach((id: string) => {\r\n const node = state.getNodeById(id)\r\n \r\n if (node) {\r\n checkedNodes.push(node)\r\n }\r\n })\r\n }\r\n\r\n if (ignoreDisabled) {\r\n checkedNodes = checkedNodes.filter(isNodeCheckable)\r\n }\r\n\r\n switch(valueConsistsOf) {\r\n case 'LEAF': return checkedNodes.filter((node: Node) => isLeaf(node))\r\n case 'BRANCH': \r\n return checkedNodes.filter((node: Node) => {\r\n if (node.parent && node.parent.checked) {\r\n return false\r\n }\r\n\r\n return true\r\n })\r\n }\r\n\r\n return checkedNodes\r\n }\r\n}","import { Node } from '../types/Node'\r\nimport { StateObject } from './state'\r\n\r\nexport function recurseDown(obj: any, fn: (obj: Node, depth: number) => any, excludeSelf?: boolean, depth: number = 0): any {\r\n let res\r\n\r\n if (Array.isArray(obj)) {\r\n return obj.map(node => recurseDown(node, fn, false, depth))\r\n }\r\n\r\n // TODO: get rid of it: create a State interface\r\n if (obj[0]) {\r\n return Object.keys(obj)\r\n .filter(key => isFinite(+key))\r\n .map(key => recurseDown(obj[key], fn, false, depth))\r\n }\r\n\r\n if (!excludeSelf) {\r\n res = fn(obj, depth)\r\n }\r\n\r\n if (res !== false && obj.child && obj.child.length) {\r\n res = recurseDown(obj.child, fn, false, depth + 1)\r\n }\r\n\r\n return res\r\n}\r\n\r\nexport function rootElement(obj: Node): Node | null {\r\n let node = obj.parent\r\n\r\n while (node) {\r\n if (!node.parent) {\r\n return node\r\n }\r\n\r\n node = node.parent\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport function traverseUp(obj: Node, fn: (obj: Node) => any): any {\r\n let node = obj.parent\r\n\r\n while (node) {\r\n if (false === fn(node) || !node.parent) {\r\n return\r\n }\r\n\r\n node = node.parent\r\n }\r\n}\r\n\r\nexport function getFirstChild(node: Node, onlyEnabled?: boolean): Node | null {\r\n if (onlyEnabled) {\r\n const enabledNode: Node[] = node.child.filter((n: Node) => !n.disabled)\r\n\r\n return enabledNode.length ? enabledNode[0] : null\r\n }\r\n\r\n return node.child[0] || null\r\n}\r\n\r\nexport function getLastChild(node: Node, onlyEnabled?: boolean): Node | null {\r\n const len: number = node.child ? node.child.length : 0\r\n\r\n if (!len) {\r\n return null\r\n }\r\n\r\n if (onlyEnabled) {\r\n const enabledNode: Node[] = node.child.filter((n: Node) => !n.disabled)\r\n const enabledNodeLen: number = enabledNode.length\r\n\r\n return enabledNodeLen ? enabledNode[enabledNodeLen - 1] : null\r\n }\r\n\r\n return node.child[len - 1]\r\n}\r\n\r\nexport interface FlatMap {\r\n nodes: Node[]\r\n ids: string[]\r\n}\r\n\r\nexport function flatMap(collection: StateObject, ignoreCollapsed?: boolean): FlatMap {\r\n const result = {\r\n nodes: [],\r\n ids: []\r\n } as FlatMap\r\n\r\n recurseDown(collection, (node: Node) => {\r\n if (node.disabled) {\r\n return\r\n }\r\n\r\n if (ignoreCollapsed && node.parent && !node.parent.expanded) {\r\n return\r\n }\r\n\r\n result.nodes.push(node)\r\n result.ids.push(node.id)\r\n })\r\n\r\n return result\r\n}","import { Node } from '../types/Node'\r\n\r\nimport { recurseDown, rootElement } from './traveler'\r\nimport {\r\n isRoot,\r\n copyObject,\r\n copyArray,\r\n hasOwnProp\r\n} from './index'\r\n\r\ntype IterableValue = [string, any]\r\n\r\nfunction iterable(key: any, value: any): IterableValue[] {\r\n if ('string' === typeof key) {\r\n return [[key, value]]\r\n }\r\n\r\n if (!value) {\r\n const res: IterableValue[] = []\r\n\r\n for (const i in key) {\r\n if (hasOwnProp.call(key, i)) {\r\n res.push([i, key[i]])\r\n }\r\n }\r\n\r\n return res\r\n }\r\n\r\n return []\r\n}\r\n\r\nfunction replaceChild(node: Node): Node {\r\n if (!node || !node.child) {\r\n return node\r\n }\r\n\r\n node.child = copyArray(node.child)\r\n node.child.forEach((child: Node) => {\r\n const replaced = replaceChild(child)\r\n replaced.parent = node\r\n\r\n return replaced\r\n })\r\n\r\n return node\r\n}\r\n\r\nfunction getItemById(id: string, targetState: any): any {\r\n return Object.keys(targetState)\r\n .find((k: string) => targetState[k].id === id) || null\r\n}\r\n\r\nfunction getNodeIndex(nodeId: string, parent: any, nodesLength: number): number | null {\r\n if (parent.child) {\r\n let childIndex: number | null = null\r\n\r\n parent.child.some((node: Node, i: number): boolean => {\r\n if (nodeId === node.id) {\r\n childIndex = i\r\n return true\r\n }\r\n\r\n return false\r\n })\r\n\r\n return childIndex\r\n }\r\n\r\n for (let i = 0; i < nodesLength; i++ ) {\r\n if (parent[i].id === nodeId) {\r\n return i\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nfunction updateChildNodes(parentNode: Node) {\r\n parentNode.child.forEach((child: Node) => {\r\n child.parent = parentNode\r\n })\r\n\r\n return parentNode\r\n}\r\n\r\nexport interface StateObject { stirng: Node }\r\n\r\nexport default class State<T> {\r\n public length: number\r\n private nodes: T\r\n\r\n constructor(state: T, stateLength: number) {\r\n this.length = stateLength\r\n this.nodes = state\r\n }\r\n\r\n updateRootNode(node: Node, iterableValue?: IterableValue[]) {\r\n const i = getItemById(node.id, this.nodes)\r\n const newObj = copyObject(node)\r\n\r\n if (iterableValue) {\r\n iterableValue.forEach(([key, value]: IterableValue) => {\r\n node[key] = value\r\n newObj[key] = value\r\n })\r\n }\r\n\r\n if (null !== i) {\r\n this.nodes[i] = updateChildNodes(newObj as Node)\r\n }\r\n }\r\n\r\n updateLeafNode(node: Node, iterableValue: IterableValue[]) {\r\n const root: Node | null = rootElement(node)\r\n const parentNode: Node | null | undefined = node.parent\r\n\r\n if (!parentNode || !root || !parentNode.child) {\r\n return\r\n }\r\n\r\n const index = getNodeIndex(node.id, parentNode, this.length)\r\n\r\n if (null === index) {\r\n return\r\n }\r\n\r\n if (iterableValue) {\r\n iterableValue.forEach(([key, value]: IterableValue) => {\r\n node[key] = value\r\n parentNode.child[index][key] = value\r\n })\r\n }\r\n\r\n this.updateRootNode(replaceChild(root))\r\n }\r\n\r\n set(id: string, key: any, value?: any): T {\r\n const node = this.getNodeById(id)\r\n\r\n if (!node) {\r\n return this.nodes\r\n }\r\n\r\n if (isRoot(node)) {\r\n this.updateRootNode(node, iterable(key, value))\r\n } else {\r\n this.updateLeafNode(node, iterable(key, value))\r\n }\r\n\r\n return this.nodes\r\n }\r\n\r\n getNodeById(id: string): Node | null {\r\n let node: Node | null = null\r\n\r\n recurseDown(this.nodes, (obj: Node): any => {\r\n if (obj.id === id) {\r\n node = obj\r\n return false\r\n }\r\n })\r\n\r\n return node\r\n }\r\n\r\n get(): T {\r\n return this.nodes\r\n }\r\n\r\n toArray() {\r\n const result = []\r\n const state = this.nodes\r\n\r\n for (const i in state) {\r\n if (hasOwnProp.call(state, i)) {\r\n result.push(state[i])\r\n }\r\n }\r\n\r\n return result\r\n }\r\n}","\r\nfunction s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1)\r\n}\r\n\r\nexport default function uuid() {\r\n return s4() + '-' + s4()\r\n}\r\n","import { Node } from '../types/Node'\r\nimport uuid from './uuid'\r\n\r\nexport function parseNode(data: Node[] | string, parentNode?: Node | null): Node[] {\r\n if (!data || !Array.isArray(data)) {\r\n return []\r\n }\r\n\r\n const parent = parentNode || null\r\n\r\n if ('string' === typeof data) {\r\n return [\r\n { text: data, id: uuid(), parent, child: [] }\r\n ]\r\n }\r\n\r\n return data.map((node: Node) => {\r\n if ('string' === typeof node) {\r\n return {\r\n id: uuid(),\r\n text: node,\r\n parent,\r\n child: []\r\n }\r\n }\r\n\r\n node.id = node.id || uuid()\r\n node.child = Array.isArray(node.child) \r\n ? parseNode(node.child, node)\r\n : []\r\n\r\n node.parent = parent\r\n\r\n return node\r\n })\r\n}","import { getFirstChild, getLastChild } from './traveler'\r\nimport { Node } from '../types/Node'\r\n\r\ninterface LinkedNode {\r\n current: Node\r\n parent?: Node,\r\n next?: Node,\r\n prev?: Node\r\n}\r\n\r\nexport function linkedNode(node: Node, state: any, ignoreExpanded?: boolean): LinkedNode {\r\n const result: LinkedNode = {\r\n current: node\r\n }\r\n\r\n const currentNodeId: string = node.id\r\n const parent = node.parent\r\n const neighborIds: string[] = (parent ? parent.child : state.toArray())\r\n .map((n: Node) => n.id)\r\n\r\n const currentPos: number = neighborIds.indexOf(currentNodeId)\r\n\r\n let i: number = 0\r\n\r\n if (node.expanded && node.child.length && true !== ignoreExpanded) {\r\n const firstChild: Node | null = getFirstChild(node, true)\r\n\r\n if (firstChild) {\r\n result.next = state.getNodeById(firstChild.id)\r\n }\r\n }\r\n\r\n while (i++ < neighborIds.length) {\r\n if (!result.next) {\r\n const node: Node | null = state.getNodeById(neighborIds[currentPos + i])\r\n\r\n if (node && !node.disabled) {\r\n result.next = node\r\n }\r\n }\r\n\r\n if (!result.prev) {\r\n const node: Node | null = state.getNodeById(neighborIds[currentPos - i])\r\n\r\n if (node && !node.disabled) {\r\n if (node.expanded) {\r\n const lastChild: Node | null = getLastChild(node, true)\r\n\r\n if (lastChild) {\r\n result.prev = state.getNodeById(lastChild.id)\r\n }\r\n } else {\r\n result.prev = node\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (parent) {\r\n if (!result.prev) {\r\n result.prev = state.getNodeById(parent.id)\r\n }\r\n\r\n if (!result.next) {\r\n result.next = linkedNode(parent, state, true).next\r\n }\r\n }\r\n\r\n\r\n return result\r\n}","import React, { ReactElement } from 'react'\r\nimport '../assets/tree.scss'\r\nimport '../assets/node.scss'\r\nimport '../assets/theme.scss'\r\nimport '../assets/animations.scss'\r\n\r\nimport TreeNode from './TreeNode'\r\n\r\nimport { Node } from '../types/Node'\r\nimport { Tree } from '../types/Tree'\r\nimport { TreeComponent } from '../types/TreeComponent'\r\n\r\nimport { TreeAPI } from '../TreeAPI'\r\n\r\nimport State, { StateObject } from '../utils/state'\r\nimport uuid from '../utils/uuid'\r\nimport { grapObjProps } from '../utils/index'\r\nimport { parseNode } from '../utils/parser'\r\nimport { shallowEqual } from '../utils/shallowEqual'\r\nimport { recurseDown, traverseUp, getFirstChild, flatMap } from '../utils/traveler'\r\nimport { linkedNode } from '../utils/linkedNode'\r\nimport { has, copyArray, isNodeIndeterminate, isFunction, isLeaf, isExpandable } from '../utils'\r\nimport { string } from 'prop-types';\r\n\r\nconst mutatingFields = [\r\n 'checkable', \r\n 'useIndeterminateState', \r\n 'checkboxRenderer',\r\n 'arrowRenderer',\r\n 'textRenderer'\r\n]\r\n\r\ninterface StateObj {\r\n nodes: StateObject\r\n hash: string\r\n mutatingFields: {string: any}\r\n}\r\n\r\nexport default class EyzyTree extends React.Component<Tree, StateObj> implements TreeComponent {\r\n static TreeNode = TreeNode\r\n\r\n selectedNodes: string[] = []\r\n checkedNodes: string[] = []\r\n indeterminateNodes: string[] = []\r\n\r\n focusedNode: string\r\n\r\n _state: State<StateObject>\r\n\r\n constructor(props: Tree) {\r\n super(props)\r\n\r\n const data = parseNode(props.data || [])\r\n const stateObject = {}\r\n\r\n data.forEach((item: Node, i: number) => {\r\n stateObject[i] = item\r\n })\r\n\r\n recurseDown(stateObject, (obj: Node, depth: number) => {\r\n obj.depth = depth\r\n\r\n if (obj.selected) {\r\n this.selectedNodes.push(obj.id)\r\n }\r\n\r\n if (obj.checked) {\r\n this.checkedNodes.push(obj.id)\r\n }\r\n })\r\n\r\n this._state = new State(stateObject as StateObject, data.length)\r\n\r\n this.checkedNodes.forEach((id: string) => {\r\n const node = this._state.getNodeById(id)\r\n\r\n if (node && isLeaf(node) && this.props.noCascade !== true) {\r\n this.refreshIndeterminateState(id, true, false)\r\n }\r\n })\r\n\r\n this.state = {\r\n nodes: this._state.get(),\r\n hash: uuid(),\r\n mutatingFields: grapObjProps(props, mutatingFields)\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps: Tree, state: StateObj) {\r\n if (!shallowEqual(nextProps, state.mutatingFields, mutatingFields)) {\r\n return {\r\n hash: uuid(),\r\n mutatingFields: grapObjProps(nextProps, mutatingFields)\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.onReady) {\r\n this.props.onReady(\r\n new TreeAPI(this as TreeComponent, this._state)\r\n )\r\n }\r\n }\r\n\r\n fireEvent = (name: string, id: string, ...args: any) => {\r\n const eventCb = this.props[name]\r\n\r\n if (!eventCb) {\r\n return\r\n }\r\n\r\n const node = this.getState().getNodeById(id)\r\n\r\n if (node) {\r\n eventCb.call(null, node, ...args)\r\n }\r\n }\r\n\r\n refreshIndeterminateState = (id: string, willBeChecked: boolean, shouldRender?: boolean) => {\r\n let checkedNodes: string[] = copyArray(this.checkedNodes)\r\n let indeterminateNodes = copyArray(this.indeterminateNodes)\r\n\r\n const state = this.getState()\r\n const childIds: string[] = []\r\n const node = state.getNodeById(id)\r\n const nodesForEvent: string[] = []\r\n\r\n if (!node) {\r\n return\r\n }\r\n\r\n recurseDown(node, (child: Node) => {\r\n if (!child.disabled && !child.disabledCheckbox) {\r\n childIds.push(child.id)\r\n\r\n if (child.checked !== willBeChecked) {\r\n nodesForEvent.push(child.id)\r\n }\r\n }\r\n }, true)\r\n\r\n if (willBeChecked) {\r\n checkedNodes.push(...childIds.filter((id: string) => !has(checkedNodes, id)))\r\n } else {\r\n checkedNodes = checkedNodes.filter(nodeId => !has(childIds, nodeId))\r\n }\r\n\r\n traverseUp(node, (parentNode: Node): any => {\r\n if (parentNode.disabledCheckbox || parentNode.disabled) {\r\n return false\r\n }\r\n\r\n const isIndeterminate = isNodeIndeterminate(parentNode, checkedNodes, indeterminateNodes)\r\n const id = parentNode.id\r\n\r\n if (isIndeterminate) {\r\n if (!has(indeterminateNodes, id)) {\r\n indeterminateNodes.push(id)\r\n }\r\n\r\n checkedNodes = checkedNodes.filter(nodeId => nodeId !== id)\r\n } else {\r\n indeterminateNodes = indeterminateNodes.filter(nodeId => nodeId !== id)\r\n\r\n if (willBeChecked && !has(checkedNodes, id)) {\r\n checkedNodes.push(id)\r\n } else {\r\n checkedNodes = checkedNodes.filter(nodeId => nodeId !== id)\r\n }\r\n }\r\n })\r\n\r\n indeterminateNodes = indeterminateNodes.filter(nodeId => !has(checkedNodes, nodeId))\r\n\r\n if (willBeChecked) {\r\n checkedNodes.forEach((id: string) => {\r\n if (!has(this.checkedNodes, id)) {\r\n state.set(id, 'checked', true)\r\n }\r\n })\r\n } else {\r\n this.checkedNodes.forEach((id: string) => {\r\n if (!has(checkedNodes, id)) {\r\n state.set(id, 'checked', false)\r\n }\r\n })\r\n\r\n childIds.forEach((id: string) => {\r\n state.set(id, 'checked', false)\r\n })\r\n }\r\n\r\n this.indeterminateNodes.forEach((id: string) => {\r\n state.set(id, 'indeterminate', false)\r\n })\r\n\r\n const useIndeterminateState: boolean = false !== this.props.useIndeterminateState\r\n\r\n if (useIndeterminateState) {\r\n indeterminateNodes.forEach((id: string) => state.set(id, 'indeterminate', true))\r\n }\r\n\r\n this.checkedNodes = checkedNodes\r\n this.indeterminateNodes = indeterminateNodes\r\n\r\n if (false !== shouldRender) {\r\n this.updateState(state)\r\n }\r\n\r\n nodesForEvent.forEach((id: string) => {\r\n this.fireEvent('onCheck', id, willBeChecked)\r\n })\r\n }\r\n\r\n getState = (): State<StateObject> => {\r\n return this._state\r\n }\r\n\r\n getSelectedNode = (): Node | null => {\r\n const lastSelectedNode = this.selectedNodes[this.selectedNodes.length - 1]\r\n\r\n if (!lastSelectedNode) {\r\n return null\r\n }\r\n\r\n return this.getState().getNodeById(lastSelectedNode)\r\n }\r\n\r\n updateState = (state: State<StateObject>) => {\r\n this.setState({ nodes: state.get() })\r\n }\r\n\r\n unselectAll = () => {\r\n const state = this.getState()\r\n\r\n this.selectedNodes = this.selectedNodes.filter((id: string) => {\r\n state.set(id, 'selected', false)\r\n return false\r\n })\r\n\r\n this.updateState(state)\r\n }\r\n\r\n unselect = (node: Node) => {\r\n if (!node.selected) {\r\n return\r\n }\r\n\r\n const state = this.getState()\r\n state.set(node.id, 'selected', false)\r\n\r\n this.selectedNodes = this.selectedNodes.filter((id: string) => {\r\n if (id !== node.id) {\r\n return true\r\n }\r\n\r\n if (state.getNodeById(id)) {\r\n state.set(id, 'selected', false)\r\n this.fireEvent('onUnSelect', id)\r\n }\r\n\r\n return false\r\n })\r\n\r\n this.updateState(state)\r\n }\r\n\r\n select = (node: Node, ignoreEvent?: boolean, extendSelection?: boolean) => {\r\n const state = this.getState()\r\n const id: string = node.id\r\n const events: string[][] = []\r\n const { multiple } = this.props\r\n\r\n if (extendSelection && node.selected) {\r\n return this.unselect(node)\r\n }\r\n\r\n if (!multiple && node.selected) {\r\n return\r\n }\r\n\r\n if (!multiple || (multiple && !extendSelection)) {\r\n this.selectedNodes = this.selectedNodes.filter((nodeId: string) => {\r\n const node = state.getNodeById(nodeId)\r\n\r\n if (node) {\r\n state.set(node.id, 'selected', false)\r\n events.push(['onUnSelect', node.id])\r\n }\r\n \r\n return false\r\n })\r\n }\r\n\r\n state.set(id, 'selected', true)\r\n\r\n if (!extendSelection) {\r\n this.focusedNode = id\r\n }\r\n\r\n this.selectedNodes.push(id)\r\n this.updateState(state)\r\n\r\n if (true !== ignoreEvent) {\r\n events.push(['onSelect', id])\r\n events.forEach((event: string[]) => this.fireEvent(event[0], event[1]))\r\n }\r\n }\r\n\r\n selectRange = (focusedNode: string, targetNode: string) => {\r\n const { ids, nodes } = flatMap(this.state.nodes, true)\r\n\r\n const focusedIndex = ids.indexOf(focusedNode)\r\n const targetIndex = ids.indexOf(targetNode)\r\n\r\n if (!~focusedIndex || !~targetIndex) {\r\n return\r\n }\r\n\r\n const start = Math.min(focusedIndex, targetIndex)\r\n const end = Math.max(focusedIndex, targetIndex) + 1\r\n const state = this.getState()\r\n const willBeSelected: string[] = nodes.slice(start, end).map((node: Node) => node.id) \r\n const fireEvents: string[][] = []\r\n\r\n this.selectedNodes.forEach((id: string) => {\r\n if (!has(willBeSelected, id)) {\r\n state.set(id, 'selected', false)\r\n fireEvents.push(['onUnSelect', id])\r\n }\r\n })\r\n\r\n this.selectedNodes = willBeSelected.map((id: string) => {\r\n if (!has(this.selectedNodes, id)) {\r\n state.set(id, 'selected', true)\r\n fireEvents.push(['onSelect', id])\r\n }\r\n\r\n return id\r\n })\r\n\r\n this.updateState(state)\r\n \r\n fireEvents.forEach(([name, id]) => {\r\n this.fireEvent(name, id)\r\n })\r\n }\r\n\r\n check = (node: Node) => {\r\n if (!this.props.checkable) {\r\n return\r\n }\r\n\r\n const state = this.getState()\r\n const willBeChecked: boolean = !node.checked\r\n const id: string = node.id\r\n\r\n state.set(id, 'checked', willBeChecked)\r\n\r\n if (willBeChecked) {\r\n this.checkedNodes = [...this.checkedNodes, id]\r\n } else {\r\n this.checkedNodes = this.checkedNodes.filter((checkedId: string) => id !== checkedId)\r\n }\r\n\r\n if (this.props.selectOnCheck) {\r\n this.select(node)\r\n }\r\n\r\n if (this.props.noCascade !== true) {\r\n this.refreshIndeterminateState(node.id, willBeChecked)\r\n this.fireEvent('onCheck', id, willBeChecked)\r\n } else {\r\n this.updateState(state)\r\n this.fireEvent('onCheck', id, willBeChecked)\r\n }\r\n }\r\n\r\n expand = (node: Node) => {\r\n if (node.isBatch) {\r\n return this.loadChild(node)\r\n }\r\n\r\n if (!node.child.length) {\r\n return\r\n }\r\n\r\n const state = this.getState()\r\n const { selectOnExpand } = this.props\r\n\r\n state.set(node.id, 'expanded', !node.expanded)\r\n\r\n if (selectOnExpand && !node.selected) {\r\n this.select(node)\r\n }\r\n\r\n this.updateState(state)\r\n this.fireEvent('onExpand', node.id, !node.expanded)\r\n }\r\n\r\n handleDoubleClick = (node: Node) => {\r\n this.fireEvent('onDoubleClick', node.id)\r\n\r\n if (node.disabled || isLeaf(node) || this.props.expandOnSelect) {\r\n return\r\n }\r\n\r\n this.expand(node)\r\n }\r\n\r\n handleSelect = (node: Node, event: React.MouseEvent) => {\r\n if (node.disabled) {\r\n return\r\n }\r\n\r\n if (this.props.preventSelectParent && isExpandable(node)) {\r\n return this.expand(node)\r\n }\r\n\r\n const { multiple, checkOnSelect, expandOnSelect, checkable } = this.props\r\n\r\n if (event.shiftKey && multiple && this.focusedNode) {\r\n return this.selectRange(this.focusedNode, node.id)\r\n }\r\n\r\n this.select(node, false, event.ctrlKey)\r\n\r\n if (event.ctrlKey) {\r\n return\r\n }\r\n\r\n if (checkable && checkOnSelect && !node.disabledCheckbox) {\r\n this.check(node)\r\n } else if (expandOnSelect) {\r\n this.expand(node)\r\n }\r\n }\r\n\r\n handleKeyUp = (event: React.KeyboardEvent) => {\r\n if (false === this.props.keyboardNavigation) {\r\n return\r\n }\r\n\r\n const keyCode = event.keyCode\r\n const selectedNode = this.getSelectedNode()\r\n\r\n if (selectedNode) {\r\n switch(keyCode) {\r\n case 32: // space\r\n case 13: // enter\r\n if (this.props.checkable && !selectedNode.disabled && !selectedNode.disabledCheckbox) {\r\n this.check(selectedNode)\r\n } else if (!isLeaf(selectedNode)) {\r\n this.expand(selectedNode)\r\n }\r\n break;\r\n \r\n case 27: // esc\r\n if (this.props.multiple) {\r\n this.unselectAll()\r\n } else {\r\n this.unselect(selectedNode)\r\n }\r\n break;\r\n\r\n case 39: // right arrow\r\n if (!isLeaf(selectedNode)) {\r\n if (!selectedNode.expanded) {\r\n this.expand(selectedNode)\r\n } else {\r\n const firstChild = getFirstChild(selectedNode, true)\r\n\r\n if (firstChild) {\r\n this.select(firstChild)\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case 37: // left arrow \r\n if (isLeaf(selectedNode) || !selectedNode.expanded) {\r\n const parentNode = selectedNode.parent\r\n\r\n if (parentNode) {\r\n this.select(parentNode)\r\n }\r\n } else if (selectedNode.expanded) {\r\n this.expand(selectedNode)\r\n }\r\n break;\r\n\r\n case 40: // bottom arrow\r\n const {next} = linkedNode(selectedNode, this.getState())\r\n \r\n if (next) {\r\n this.select(next)\r\n }\r\n break;\r\n\r\n case 38: // up arrow\r\n const {prev} = linkedNode(selectedNode, this.getState())\r\n\r\n if (prev) {\r\n this.select(prev)\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n appendChild = (id: string, nodes: any[]): Node | null => {\r\n const state = this.getState()\r\n const node = state.getNodeById(id)\r\n\r\n if (!node) {\r\n return null\r\n }\r\n\r\n const parentDepth: number = node.depth || 0\r\n const child = parseNode(nodes).map((obj: Node) => {\r\n obj.parent = node\r\n return obj\r\n })\r\n\r\n const cascadeCheck: boolean = true !== this.props.noCascade\r\n const checkedNodes: string[] = []\r\n\r\n recurseDown(child, (obj: Node, depth: number) => {\r\n obj.depth = parentDepth + depth + 1\r\n\r\n if (cascadeCheck && obj.parent && obj.parent.checked) {\r\n obj.checked = true\r\n }\r\n\r\n if (obj.checked && !~this.checkedNodes.indexOf(obj.id)) {\r\n checkedNodes.push(obj.id)\r\n }\r\n })\r\n\r\n this.checkedNodes.push(...checkedNodes)\r\n\r\n state.set(node.id, 'child', child)\r\n\r\n if (cascadeCheck) {\r\n checkedNodes.forEach((id: string) => {\r\n const node: Node | null = state.getNodeById(id)\r\n \r\n if (node && isLeaf(node)) {\r\n this.refreshIndeterminateState(id, true, false)\r\n }\r\n })\r\n }\r\n\r\n return node\r\n }\r\n\r\n loadChild = (node: Node) => {\r\n const { fetchData, selectOnExpand } = this.props\r\n\r\n if (!fetchData || !isFunction(fetchData)) {\r\n return\r\n }\r\n\r\n const result = fetchData(node) \r\n\r\n if (!result || !result.then) {\r\n throw new Error('`fetchData` property must return a Promise')\r\n }\r\n\r\n const state = this.getState()\r\n const id = node.id\r\n\r\n state.set(id, 'loading', true)\r\n\r\n result.then((nodes: any[]) => {\r\n this.appendChild(id, nodes)\r\n\r\n const selected: boolean = selectOnExpand ? true : !!node.selected\r\n\r\n state.set(id, {\r\n loading: false,\r\n expanded: true,\r\n isBatch: false,\r\n selected\r\n })\r\n\r\n this.fireEvent('onExpand', id, true)\r\n\r\n if (selectOnExpand) {\r\n this.fireEvent('onSelect', id)\r\n }\r\n\r\n this.updateState(state)\r\n })\r\n\r\n this.updateState(state)\r\n }\r\n\r\n renderNode = (node: Node): ReactElement<Node> => {\r\n const treePropsKeys: string[] = [\r\n 'checkable', 'arrowRenderer', 'textRenderer', 'checkboxRenderer'\r\n ]\r\n\r\n const treeProps = treePropsKeys.reduce((props: any, key: string) => {\r\n if (this.props[key]) {\r\n props[key] = this.props[key]\r\n }\r\n\r\n return props\r\n }, {})\r\n\r\n treeProps.hash = this.state.hash\r\n treeProps.useIndeterminateState = this.props.useIndeterminateState\r\n\r\n return (\r\n <TreeNode\r\n key={node.id}\r\n node={node}\r\n onSelect={this.handleSelect}\r\n onDoubleClick={this.handleDoubleClick}\r\n onCheck={this.check}\r\n onExpand={this.expand}\r\n {...treeProps}\r\n {...node}\r\n >\r\n { node.expanded ? node.child.map(this.renderNode) : null }\r\n </TreeNode>\r\n )\r\n }\r\n\r\n render() {\r\n const nodes = []\r\n const props = this.props\r\n const treeClass = 'theme' in props \r\n ? 'eyzy-tree ' + props.theme\r\n : 'eyzy-tree eyzy-theme'\r\n\r\n const stateNodes = this.state.nodes\r\n\r\n for (let i = 0; i < this._state.length; i++) {\r\n nodes.push(this.renderNode(stateNodes[i]))\r\n }\r\n\r\n return (\r\n <ul \r\n className={treeClass} \r\n tabIndex={-1} \r\n onKeyDown={this.handleKeyUp}>\r\n { nodes }\r\n </ul>\r\n )\r\n }\r\n}\r\n"],"names":["tslib_1.__extends"],"mappings":"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"}
\No newline at end of file