UNPKG

42.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"eyzy-tree.umd.js","sources":["../src/utils/cn.ts","../src/utils/shallowEqual.ts","../src/components/TreeNode.tsx","../src/utils/traveler.ts","../src/utils/index.ts","../src/utils/state.ts","../src/utils/uuid.ts","../src/utils/parser.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'\r\n]\r\n\r\nexport default class TreeNode extends React.Component<Node> {\r\n shouldComponentUpdate(nextProps: Node): boolean {\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 parent,\r\n isBatch\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 } \r\n\r\n if (void 0 !== expanded) {\r\n node.expanded = expanded\r\n }\r\n\r\n if (void 0 !== disabled) {\r\n node.disabled = disabled\r\n }\r\n\r\n if (void 0 !== isBatch) {\r\n node.isBatch = isBatch\r\n }\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 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\r\n })\r\n\r\n // console.log('RENDERING:', text)\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 function recurseDown(obj: any, fn: (obj: Node) => any, excludeSelf?: boolean): any {\r\n let res\r\n\r\n if (Array.isArray(obj)) {\r\n return obj.map(node => recurseDown(node, fn))\r\n }\r\n\r\n if (obj[0]) {\r\n return Object.keys(obj).map(key => recurseDown(obj[key], fn))\r\n }\r\n\r\n if (!excludeSelf) {\r\n res = fn(obj)\r\n }\r\n\r\n if (res !== false && obj.child && obj.child.length) {\r\n res = recurseDown(obj.child, fn)\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}","import { Node } from '../types/Node'\r\n\r\nexport const hasOwnProp = {}.hasOwnProperty\r\n\r\nexport function isArray(obj: any): boolean {\r\n return Array.isArray(obj)\r\n}\r\n\r\nexport function isFunction(value: any): boolean {\r\n return 'function' === typeof value \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 (let 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\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 { recurseDown, traverseUp, rootElement } from './traveler'\r\nimport {\r\n isRoot,\r\n copyObject,\r\n copyArray\r\n} from './index'\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 default class State<T> {\r\n private state: T\r\n private stateLength: number\r\n\r\n constructor(state: T, stateLength: number) {\r\n this.state = state\r\n this.stateLength = stateLength\r\n }\r\n\r\n updateRootNode(node: Node, key?: string, value?: any) {\r\n const i = getItemById(node.id, this.state)\r\n const newObj = copyObject(node)\r\n\r\n if (key) {\r\n node[key] = value\r\n newObj[key] = value\r\n }\r\n\r\n if (null !== i) {\r\n this.state[i] = updateChildNodes(newObj as Node)\r\n }\r\n }\r\n\r\n updateLeafNode(node: Node, key: string, value: any) {\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.stateLength)\r\n\r\n if (null === index) {\r\n return\r\n }\r\n\r\n node[key] = value\r\n parentNode.child[index][key] = value\r\n\r\n this.updateRootNode(replaceChild(root))\r\n }\r\n\r\n set(id: string, key: string, value: any): T {\r\n const node = this.getNodeById(id)\r\n\r\n if (!node) {\r\n return this.state\r\n }\r\n\r\n if (isRoot(node)) {\r\n this.updateRootNode(node, key, value)\r\n } else {\r\n this.updateLeafNode(node, key, value)\r\n }\r\n\r\n return this.state\r\n }\r\n\r\n getNodeById(id: string): Node | null {\r\n let node: Node | null = null\r\n\r\n recurseDown(this.state, (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.state\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 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\n\r\nimport State from '../utils/state'\r\nimport { parseNode } from '../utils/parser'\r\nimport { recurseDown, traverseUp } from '../utils/traveler'\r\nimport { copyArray, isNodeIndeterminate, isFunction, isLeaf } from '../utils'\r\n\r\nexport default class EyzyTree extends React.Component<Tree> {\r\n static TreeNode = TreeNode\r\n\r\n stateLength: number\r\n stateCache: State<any> | null = null\r\n\r\n selectedNodes: string[] = []\r\n checkedNodes: string[] = []\r\n indeterminateNodes: string[] = []\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) => {\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 const state = new State(stateObject, data.length)\r\n\r\n this.checkedNodes.forEach((id: string) => {\r\n const node = state.getNodeById(id)\r\n\r\n if (node && isLeaf(node) && this.props.autoCheckChildren !== false) {\r\n this.useState(state, () => {\r\n this.refreshIndeterminateState(id, true, false)\r\n })\r\n }\r\n })\r\n\r\n this.stateLength = data.length\r\n this.state = state.get()\r\n this.stateCache = null\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\r\n if (!node) {\r\n return\r\n }\r\n\r\n recurseDown(node, (child: Node) => {\r\n if (!child.disabled && !child.disabledCheckbox && id !== child.id) {\r\n childIds.push(child.id)\r\n }\r\n })\r\n\r\n if (willBeChecked) {\r\n checkedNodes.push(...childIds)\r\n } else {\r\n checkedNodes = checkedNodes.filter(nodeId => !~childIds.indexOf(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 !~indeterminateNodes.indexOf(id) && indeterminateNodes.push(id)\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) {\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 => !~checkedNodes.indexOf(nodeId))\r\n\r\n this.checkedNodes.forEach((id: string) => {\r\n if (-1 !== this.checkedNodes.indexOf(id)) {\r\n state.set(id, 'checked', false)\r\n }\r\n })\r\n\r\n this.indeterminateNodes.forEach((id: string) => {\r\n if (-1 !== this.indeterminateNodes.indexOf(id)) {\r\n state.set(id, 'indeterminate', false)\r\n }\r\n })\r\n\r\n checkedNodes.forEach((id: string) => state.set(id, 'checked', true))\r\n indeterminateNodes.forEach((id: string) => state.set(id, 'indeterminate', true))\r\n\r\n this.checkedNodes = checkedNodes\r\n this.indeterminateNodes = indeterminateNodes\r\n\r\n if (false !== shouldRender) {\r\n this.updateState(state, true)\r\n }\r\n }\r\n\r\n getState = () => {\r\n return this.stateCache || new State(this.state, this.stateLength)\r\n }\r\n\r\n updateState = (state: any, clearCache?: boolean) => {\r\n if (clearCache) {\r\n this.setState(state)\r\n this.stateCache = null\r\n return\r\n }\r\n\r\n if (this.stateCache) {\r\n return\r\n }\r\n\r\n this.setState(state)\r\n }\r\n\r\n useState = (state: any, cb: () => void): any => {\r\n this.stateCache = state\r\n cb()\r\n }\r\n\r\n select = (node: Node, ignoreEvent?: boolean) => {\r\n const state = this.getState()\r\n\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\r\n if (true !== ignoreEvent && this.props.onUnSelect) {\r\n this.props.onUnSelect(node)\r\n }\r\n }\r\n\r\n return false\r\n })\r\n\r\n state.set(node.id, 'selected', true)\r\n\r\n this.selectedNodes.push(node.id)\r\n this.updateState(state.get())\r\n\r\n if (true !== ignoreEvent && this.props.onSelect) {\r\n this.props.onSelect(node)\r\n }\r\n }\r\n\r\n check = (node: Node) => {\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.useState(state, () => {\r\n this.select(node)\r\n })\r\n }\r\n\r\n if (this.props.autoCheckChildren !== false) {\r\n this.useState(state, () => {\r\n this.refreshIndeterminateState(node.id, willBeChecked)\r\n })\r\n } else {\r\n this.updateState(state.get(), true)\r\n }\r\n\r\n if (this.props.onCheck) {\r\n this.props.onCheck(node)\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\r\n state.set(node.id, 'expanded', !node.expanded)\r\n\r\n if (this.props.selectOnExpand && !node.selected) {\r\n this.useState(state, () => {\r\n this.select(node)\r\n })\r\n }\r\n\r\n this.updateState(state.get(), true)\r\n\r\n if (this.props.onExpand) {\r\n this.props.onExpand(node, !!node.expanded)\r\n }\r\n }\r\n\r\n handleDoubleClick = (node: Node) => {\r\n if (node.disabled || !node.child.length || this.props.expandOnSelect) {\r\n return\r\n }\r\n\r\n this.expand(node)\r\n\r\n if (this.props.onDoubleClick) {\r\n this.props.onDoubleClick(node)\r\n }\r\n }\r\n\r\n handleSelect = (node: Node, event: React.MouseEvent) => {\r\n this.select(node)\r\n\r\n const { checkOnSelect, expandOnSelect, checkable } = this.props\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 loadChild = (node: Node) => {\r\n const { fetchData } = 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 autoCheckChildren = this.props.autoCheckChildren\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 const child = parseNode(nodes).map((obj: Node) => {\r\n obj.parent = node\r\n return obj\r\n })\r\n\r\n state.set(id, 'loading', false)\r\n state.set(id, 'expanded', true)\r\n state.set(id, 'isBatch', false)\r\n state.set(id, 'child', child)\r\n\r\n recurseDown(state.getNodeById(id), (obj: Node) => {\r\n if (id == obj.id || !obj.checked) {\r\n return\r\n }\r\n\r\n this.checkedNodes.push(obj.id)\r\n\r\n if (!isLeaf(obj) || autoCheckChildren === false) {\r\n return\r\n }\r\n\r\n this.useState(state, () => {\r\n this.refreshIndeterminateState(obj.id, !!obj.checked, false)\r\n })\r\n })\r\n\r\n this.updateState(state.get(), true)\r\n })\r\n\r\n this.updateState(state.get())\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 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 for (let i = 0; i < this.stateLength; i++) {\r\n nodes.push(this.renderNode(this.state[i]))\r\n }\r\n\r\n return (\r\n <ul className={treeClass}>\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