UNPKG

42.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"eyzy-tree.esm.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