UNPKG

70.4 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