|
1 |
- {"version":3,"sources":["../../../src/components/VTreeview/VTreeview.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport '../../stylus/components/_treeview.styl'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VTreeviewNode, { VTreeviewNodeProps } from './VTreeviewNode'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Utils\nimport {\n arrayDiff,\n deepEqual,\n getObjectValueByPath\n} from '../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\nimport {\n filterTreeItems,\n FilterTreeItemFunction,\n filterTreeItem\n} from './util/filterTreeItems'\n\ntype VTreeviewNodeInstance = InstanceType<typeof VTreeviewNode>\n\ntype NodeCache = Set<string | number>\ntype NodeArray = (string | number)[]\n\ntype NodeState = {\n parent: number | string | null\n children: (number | string)[]\n vnode: VTreeviewNodeInstance | null\n isActive: boolean\n isSelected: boolean\n isIndeterminate: boolean\n isOpen: boolean\n item: any\n}\n\nexport default mixins(\n RegistrableProvide('treeview'),\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-treeview',\n\n provide (): object {\n return { treeview: this }\n },\n\n props: {\n active: {\n type: Array,\n default: () => ([])\n } as PropValidator<NodeArray>,\n items: {\n type: Array,\n default: () => ([])\n } as PropValidator<any[]>,\n hoverable: Boolean,\n multipleActive: Boolean,\n open: {\n type: Array,\n default: () => ([])\n } as PropValidator<NodeArray>,\n openAll: Boolean,\n returnObject: {\n type: Boolean,\n default: false // TODO: Should be true in next major\n },\n value: {\n type: Array,\n default: () => ([])\n } as PropValidator<NodeArray>,\n search: String,\n filter: Function as PropValidator<FilterTreeItemFunction>,\n ...VTreeviewNodeProps\n },\n\n data: () => ({\n nodes: {} as Record<string | number, NodeState>,\n selectedCache: new Set() as NodeCache,\n activeCache: new Set() as NodeCache,\n openCache: new Set() as NodeCache\n }),\n\n computed: {\n excludedItems (): Set<string | number> {\n const excluded = new Set<string|number>()\n\n if (!this.search) return excluded\n\n for (let i = 0; i < this.items.length; i++) {\n filterTreeItems(\n this.filter || filterTreeItem,\n this.items[i],\n this.search,\n this.itemKey,\n this.itemText,\n this.itemChildren,\n excluded\n )\n }\n\n return excluded\n }\n },\n\n watch: {\n items: {\n handler () {\n const oldKeys = Object.keys(this.nodes).map(k => getObjectValueByPath(this.nodes[k].item, this.itemKey))\n const newKeys = this.getKeys(this.items)\n const diff = arrayDiff(newKeys, oldKeys)\n\n // We only want to do stuff if items have changed\n if (!diff.length && newKeys.length < oldKeys.length) return\n\n // If nodes are removed we need to clear them from this.nodes\n diff.forEach(k => delete this.nodes[k])\n\n const oldSelectedCache = [...this.selectedCache]\n this.selectedCache = new Set()\n this.activeCache = new Set()\n this.openCache = new Set()\n this.buildTree(this.items)\n\n // Only emit selected if selection has changed\n // as a result of items changing. This fixes a\n // potential double emit when selecting a node\n // with dynamic children\n if (!deepEqual(oldSelectedCache, [...this.selectedCache])) this.emitSelected()\n },\n deep: true\n },\n active (value: (string | number | any)[]) {\n this.handleNodeCacheWatcher(value, this.activeCache, this.updateActive, this.emitActive)\n },\n value (value: (string | number | any)[]) {\n this.handleNodeCacheWatcher(value, this.selectedCache, this.updateSelected, this.emitSelected)\n },\n open (value: (string | number | any)[]) {\n this.handleNodeCacheWatcher(value, this.openCache, this.updateOpen, this.emitOpen)\n }\n },\n\n created () {\n this.buildTree(this.items)\n this.value.forEach(key => this.updateSelected(key, true))\n this.emitSelected()\n this.active.forEach(key => this.updateActive(key, true))\n this.emitActive()\n },\n\n mounted () {\n // Save the developer from themselves\n if (this.$slots.prepend || this.$slots.append) {\n consoleWarn('The prepend and append slots require a slot-scope attribute', this)\n }\n\n if (this.openAll) {\n this.updateAll(true)\n } else {\n this.open.forEach(key => this.updateOpen(key, true))\n this.emitOpen()\n }\n },\n\n methods: {\n /** @public */\n updateAll (value: boolean) {\n Object.keys(this.nodes).forEach(key => this.updateOpen(getObjectValueByPath(this.nodes[key].item, this.itemKey), value))\n this.emitOpen()\n },\n getKeys (items: any[], keys: any[] = []) {\n for (let i = 0; i < items.length; i++) {\n const key = getObjectValueByPath(items[i], this.itemKey)\n keys.push(key)\n const children = getObjectValueByPath(items[i], this.itemChildren)\n if (children) {\n keys.push(...this.getKeys(children))\n }\n }\n\n return keys\n },\n buildTree (items: any[], parent: (string | number | null) = null) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = getObjectValueByPath(item, this.itemKey)\n const children = getObjectValueByPath(item, this.itemChildren, [])\n const oldNode = this.nodes.hasOwnProperty(key) ? this.nodes[key] : {\n isSelected: false, isIndeterminate: false, isActive: false, isOpen: false, vnode: null\n } as NodeState\n\n const node: any = {\n vnode: oldNode.vnode,\n parent,\n children: children.map((c: any) => getObjectValueByPath(c, this.itemKey)),\n item\n }\n\n this.buildTree(children, key)\n\n // This fixed bug with dynamic children resetting selected parent state\n if (!this.nodes.hasOwnProperty(key) && parent !== null && this.nodes.hasOwnProperty(parent)) {\n node.isSelected = this.nodes[parent].isSelected\n node.isIndeterminate = this.nodes[parent].isIndeterminate\n } else {\n node.isSelected = oldNode.isSelected\n node.isIndeterminate = oldNode.isIndeterminate\n }\n\n node.isActive = oldNode.isActive\n node.isOpen = oldNode.isOpen\n\n this.nodes[key] = !children.length ? node : this.calculateState(node, this.nodes)\n\n // Don't forget to rebuild cache\n if (this.nodes[key].isSelected) this.selectedCache.add(key)\n if (this.nodes[key].isActive) this.activeCache.add(key)\n if (this.nodes[key].isOpen) this.openCache.add(key)\n\n this.updateVnodeState(key)\n }\n },\n calculateState (node: NodeState, state: Record<string | number, NodeState>) {\n const counts = node.children.reduce((counts: number[], child: string | number) => {\n counts[0] += +Boolean(state[child].isSelected)\n counts[1] += +Boolean(state[child].isIndeterminate)\n return counts\n }, [0, 0])\n\n node.isSelected = !!node.children.length && counts[0] === node.children.length\n node.isIndeterminate = !node.isSelected && (counts[0] > 0 || counts[1] > 0)\n\n return node\n },\n emitOpen () {\n this.emitNodeCache('update:open', this.openCache)\n },\n emitSelected () {\n this.emitNodeCache('input', this.selectedCache)\n },\n emitActive () {\n this.emitNodeCache('update:active', this.activeCache)\n },\n emitNodeCache (event: string, cache: NodeCache) {\n this.$emit(event, this.returnObject ? [...cache].map(key => this.nodes[key].item) : [...cache])\n },\n handleNodeCacheWatcher (value: any[], cache: NodeCache, updateFn: Function, emitFn: Function) {\n value = this.returnObject ? value.map(v => getObjectValueByPath(v, this.itemKey)) : value\n const old = [...cache]\n if (deepEqual(old, value)) return\n\n old.forEach(key => updateFn(key, false))\n value.forEach(key => updateFn(key, true))\n\n emitFn()\n },\n getDescendants (key: string | number, descendants: NodeArray = []) {\n const children = this.nodes[key].children\n\n descendants.push(...children)\n\n for (let i = 0; i < children.length; i++) {\n descendants = this.getDescendants(children[i], descendants)\n }\n\n return descendants\n },\n getParents (key: string | number) {\n let parent = this.nodes[key].parent\n\n const parents = []\n while (parent !== null) {\n parents.push(parent)\n parent = this.nodes[parent].parent\n }\n\n return parents\n },\n register (node: VTreeviewNodeInstance) {\n const key = getObjectValueByPath(node.item, this.itemKey)\n this.nodes[key].vnode = node\n\n this.updateVnodeState(key)\n },\n unregister (node: VTreeviewNodeInstance) {\n const key = getObjectValueByPath(node.item, this.itemKey)\n if (this.nodes[key]) this.nodes[key].vnode = null\n },\n updateActive (key: string | number, isActive: boolean) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n if (!this.multipleActive) {\n this.activeCache.forEach(active => {\n this.nodes[active].isActive = false\n this.updateVnodeState(active)\n this.activeCache.delete(active)\n })\n }\n\n const node = this.nodes[key]\n if (!node) return\n\n if (isActive) this.activeCache.add(key)\n else this.activeCache.delete(key)\n\n node.isActive = isActive\n\n this.updateVnodeState(key)\n },\n updateSelected (key: string | number, isSelected: boolean) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n const changed = new Map()\n\n const descendants = [key, ...this.getDescendants(key)]\n descendants.forEach(descendant => {\n this.nodes[descendant].isSelected = isSelected\n this.nodes[descendant].isIndeterminate = false\n changed.set(descendant, isSelected)\n })\n\n const parents = this.getParents(key)\n parents.forEach(parent => {\n this.nodes[parent] = this.calculateState(this.nodes[parent], this.nodes)\n changed.set(parent, this.nodes[parent].isSelected)\n })\n\n const all = [key, ...descendants, ...parents]\n all.forEach(this.updateVnodeState)\n\n for (const [key, value] of changed.entries()) {\n value === true ? this.selectedCache.add(key) : this.selectedCache.delete(key)\n }\n },\n updateOpen (key: string | number, isOpen: boolean) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n const node = this.nodes[key]\n const children = getObjectValueByPath(node.item, this.itemChildren)\n\n if (children && !children.length && node.vnode && !node.vnode.hasLoaded) {\n node.vnode.checkChildren().then(() => this.updateOpen(key, isOpen))\n } else if (children && children.length) {\n node.isOpen = isOpen\n\n node.isOpen ? this.openCache.add(key) : this.openCache.delete(key)\n\n this.updateVnodeState(key)\n }\n },\n updateVnodeState (key: string | number) {\n const node = this.nodes[key]\n\n if (node && node.vnode) {\n node.vnode.isSelected = node.isSelected\n node.vnode.isIndeterminate = node.isIndeterminate\n node.vnode.isActive = node.isActive\n node.vnode.isOpen = node.isOpen\n }\n },\n isExcluded (key: string | number) {\n return !!this.search && this.excludedItems.has(key)\n }\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = this.items.length\n ? this.items.map(VTreeviewNode.options.methods.genChild.bind(this))\n /* istanbul ignore next */\n : this.$slots.default! // TODO: remove type annotation with TS 3.2\n\n return h('div', {\n staticClass: 'v-treeview',\n class: {\n 'v-treeview--hoverable': this.hoverable,\n ...this.themeClasses\n }\n }, children)\n }\n})\n"],"sourceRoot":""}
|