{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.array.flat-map.js","webpack:///./node_modules/core-js/modules/es.set.js","webpack:///./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///../../../src/components/VTreeview/VTreeviewNode.ts","webpack:///../../../../src/components/VTreeview/util/filterTreeItems.ts","webpack:///../../../src/components/VTreeview/VTreeview.ts"],"names":["$","flattenIntoArray","aCallable","toObject","lengthOfArrayLike","arraySpeciesCreate","target","proto","flatMap","callbackfn","A","O","this","sourceLen","length","arguments","undefined","collection","init","addToUnscopables","baseMixins","mixins","VTreeviewNodeProps","activatable","activeClass","type","default","color","disablePerNode","expandIcon","indeterminateIcon","itemChildren","itemDisabled","itemKey","itemText","loadChildren","loadingIcon","offIcon","onIcon","openOnClick","rounded","selectable","selectedColor","shaped","transition","selectionType","validator","v","includes","VTreeviewNode","name","inject","treeview","props","level","item","parentIsDisabled","data","hasLoaded","isActive","isIndeterminate","isLoading","isOpen","isSelected","computed","disabled","key","children","child","text","scopedProps","leaf","selected","indeterminate","active","open","computedIcon","hasChildren","created","beforeDestroy","methods","checkChildren","Promise","resolve","genLabel","$scopedSlots","label","$createElement","slot","staticClass","genPrependSlot","prepend","genAppendSlot","append","genContent","genToggle","VIcon","class","on","click","e","genCheckbox","genLevel","genNode","setTextColor","genChild","scopedSlots","genChildrenWrapper","map","c","genTransition","render","h","attrs","String","search","filter","match","i","filterTreeItems","excluded","provide","dense","hoverable","items","multipleActive","openAll","returnObject","value","activeCache","nodes","openCache","selectedCache","Set","excludedItems","watch","handler","oldKeys","Object","k","newKeys","getKeys","diff","oldSelectedCache","emitSelected","deep","getValue","mounted","$slots","console","updateAll","keys","buildTree","parent","oldNode","hasOwnProperty","vnode","node","calculateState","add","state","counts","Boolean","emitOpen","emitActive","emitNodeCache","handleNodeCacheWatcher","old","updateFn","emitFn","getDescendants","descendants","getParents","parents","register","unregister","isParent","updateActive","delete","updateSelected","isForced","changed","descendant","calculated","updateOpen","updateVnodeState","isExcluded","has","themeClasses"],"mappings":"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","file":"js/vendors~category.d1bb1d13.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A;\n aCallable(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","// Components\nimport { VExpandTransition } from '../transitions'\nimport { VIcon } from '../VIcon'\nimport VTreeview from './VTreeview'\n\n// Mixins\nimport { inject as RegistrableInject } from '../../mixins/registrable'\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getObjectValueByPath, createRange } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren, PropType } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\ntype VTreeViewInstance = InstanceType\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject('treeview')\n)\n\ninterface options extends ExtractVue {\n treeview: VTreeViewInstance\n}\n\nexport const VTreeviewNodeProps = {\n activatable: Boolean,\n activeClass: {\n type: String,\n default: 'v-treeview-node--active',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disablePerNode: Boolean,\n expandIcon: {\n type: String,\n default: '$subgroup',\n },\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n itemChildren: {\n type: String,\n default: 'children',\n },\n itemDisabled: {\n type: String,\n default: 'disabled',\n },\n itemKey: {\n type: String,\n default: 'id',\n },\n itemText: {\n type: String,\n default: 'name',\n },\n loadChildren: Function as PropType<(item: any) => Promise>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n openOnClick: Boolean,\n rounded: Boolean,\n selectable: Boolean,\n selectedColor: {\n type: String,\n default: 'accent',\n },\n shaped: Boolean,\n transition: Boolean,\n selectionType: {\n type: String as PropType<'leaf' | 'independent'>,\n default: 'leaf',\n validator: (v: string) => ['leaf', 'independent'].includes(v),\n },\n}\n\n/* @vue/component */\nconst VTreeviewNode = baseMixins.extend().extend({\n name: 'v-treeview-node',\n\n inject: {\n treeview: {\n default: null,\n },\n },\n\n props: {\n level: Number,\n item: {\n type: Object,\n default: () => null,\n } as PropValidator | null>,\n parentIsDisabled: Boolean,\n ...VTreeviewNodeProps,\n },\n\n data: () => ({\n hasLoaded: false,\n isActive: false, // Node is selected (row)\n isIndeterminate: false, // Node has at least one selected child\n isLoading: false,\n isOpen: false, // Node is open/expanded\n isSelected: false, // Node is selected (checkbox)\n }),\n\n computed: {\n disabled (): boolean {\n return (\n getObjectValueByPath(this.item, this.itemDisabled) ||\n (!this.disablePerNode && (this.parentIsDisabled && this.selectionType === 'leaf'))\n )\n },\n key (): string {\n return getObjectValueByPath(this.item, this.itemKey)\n },\n children (): any[] | null {\n const children = getObjectValueByPath(this.item, this.itemChildren)\n return children && children.filter((child: any) => !this.treeview.isExcluded(getObjectValueByPath(child, this.itemKey)))\n },\n text (): string {\n return getObjectValueByPath(this.item, this.itemText)\n },\n scopedProps (): object {\n return {\n item: this.item,\n leaf: !this.children,\n selected: this.isSelected,\n indeterminate: this.isIndeterminate,\n active: this.isActive,\n open: this.isOpen,\n }\n },\n computedIcon (): string {\n if (this.isIndeterminate) return this.indeterminateIcon\n else if (this.isSelected) return this.onIcon\n else return this.offIcon\n },\n hasChildren (): boolean {\n return !!this.children && (!!this.children.length || !!this.loadChildren)\n },\n },\n\n created () {\n this.treeview.register(this)\n },\n\n beforeDestroy () {\n this.treeview.unregister(this)\n },\n\n methods: {\n checkChildren (): Promise {\n return new Promise(resolve => {\n // TODO: Potential issue with always trying\n // to load children if response is empty?\n if (!this.children || this.children.length || !this.loadChildren || this.hasLoaded) return resolve()\n\n this.isLoading = true\n resolve(this.loadChildren(this.item))\n }).then(() => {\n this.isLoading = false\n this.hasLoaded = true\n })\n },\n open () {\n this.isOpen = !this.isOpen\n this.treeview.updateOpen(this.key, this.isOpen)\n this.treeview.emitOpen()\n },\n genLabel () {\n const children = []\n\n if (this.$scopedSlots.label) children.push(this.$scopedSlots.label(this.scopedProps))\n else children.push(this.text)\n\n return this.$createElement('div', {\n slot: 'label',\n staticClass: 'v-treeview-node__label',\n }, children)\n },\n genPrependSlot () {\n if (!this.$scopedSlots.prepend) return null\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__prepend',\n }, this.$scopedSlots.prepend(this.scopedProps))\n },\n genAppendSlot () {\n if (!this.$scopedSlots.append) return null\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__append',\n }, this.$scopedSlots.append(this.scopedProps))\n },\n genContent () {\n const children = [\n this.genPrependSlot(),\n this.genLabel(),\n this.genAppendSlot(),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__content',\n }, children)\n },\n genToggle () {\n return this.$createElement(VIcon, {\n staticClass: 'v-treeview-node__toggle',\n class: {\n 'v-treeview-node__toggle--open': this.isOpen,\n 'v-treeview-node__toggle--loading': this.isLoading,\n },\n slot: 'prepend',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (this.isLoading) return\n\n this.checkChildren().then(() => this.open())\n },\n },\n }, [this.isLoading ? this.loadingIcon : this.expandIcon])\n },\n genCheckbox () {\n return this.$createElement(VIcon, {\n staticClass: 'v-treeview-node__checkbox',\n props: {\n color: this.isSelected || this.isIndeterminate ? this.selectedColor : undefined,\n disabled: this.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (this.isLoading) return\n\n this.checkChildren().then(() => {\n // We nextTick here so that items watch in VTreeview has a chance to run first\n this.$nextTick(() => {\n this.isSelected = !this.isSelected\n this.isIndeterminate = false\n\n this.treeview.updateSelected(this.key, this.isSelected)\n this.treeview.emitSelected()\n })\n })\n },\n },\n }, [this.computedIcon])\n },\n genLevel (level: number) {\n return createRange(level).map(() => this.$createElement('div', {\n staticClass: 'v-treeview-node__level',\n }))\n },\n genNode () {\n const children = [this.genContent()]\n\n if (this.selectable) children.unshift(this.genCheckbox())\n\n if (this.hasChildren) {\n children.unshift(this.genToggle())\n } else {\n children.unshift(...this.genLevel(1))\n }\n\n children.unshift(...this.genLevel(this.level))\n\n return this.$createElement('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-treeview-node__root',\n class: {\n [this.activeClass]: this.isActive,\n },\n on: {\n click: () => {\n if (this.openOnClick && this.hasChildren) {\n this.checkChildren().then(this.open)\n } else if (this.activatable && !this.disabled) {\n this.isActive = !this.isActive\n this.treeview.updateActive(this.key, this.isActive)\n this.treeview.emitActive()\n }\n },\n },\n }), children)\n },\n genChild (item: any, parentIsDisabled: boolean) {\n return this.$createElement(VTreeviewNode, {\n key: getObjectValueByPath(item, this.itemKey),\n props: {\n activatable: this.activatable,\n activeClass: this.activeClass,\n item,\n selectable: this.selectable,\n selectedColor: this.selectedColor,\n color: this.color,\n disablePerNode: this.disablePerNode,\n expandIcon: this.expandIcon,\n indeterminateIcon: this.indeterminateIcon,\n offIcon: this.offIcon,\n onIcon: this.onIcon,\n loadingIcon: this.loadingIcon,\n itemKey: this.itemKey,\n itemText: this.itemText,\n itemDisabled: this.itemDisabled,\n itemChildren: this.itemChildren,\n loadChildren: this.loadChildren,\n transition: this.transition,\n openOnClick: this.openOnClick,\n rounded: this.rounded,\n shaped: this.shaped,\n level: this.level + 1,\n selectionType: this.selectionType,\n parentIsDisabled,\n },\n scopedSlots: this.$scopedSlots,\n })\n },\n genChildrenWrapper () {\n if (!this.isOpen || !this.children) return null\n\n const children = [this.children.map(c => this.genChild(c, this.disabled))]\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__children',\n }, children)\n },\n genTransition () {\n return this.$createElement(VExpandTransition, [this.genChildrenWrapper()])\n },\n },\n\n render (h): VNode {\n const children: VNodeChildren = [this.genNode()]\n\n if (this.transition) children.push(this.genTransition())\n else children.push(this.genChildrenWrapper())\n\n return h('div', {\n staticClass: 'v-treeview-node',\n class: {\n 'v-treeview-node--leaf': !this.hasChildren,\n 'v-treeview-node--click': this.openOnClick,\n 'v-treeview-node--disabled': this.disabled,\n 'v-treeview-node--rounded': this.rounded,\n 'v-treeview-node--shaped': this.shaped,\n 'v-treeview-node--selected': this.isSelected,\n },\n attrs: {\n 'aria-expanded': String(this.isOpen),\n },\n }, children)\n },\n})\n\nexport default VTreeviewNode\n","import { getObjectValueByPath } from '../../../util/helpers'\nimport { TreeviewItemFunction } from 'vuetify/types'\n\nexport function filterTreeItem (item: object, search: string, textKey: string): boolean {\n const text = getObjectValueByPath(item, textKey)\n\n return text.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1\n}\n\nexport function filterTreeItems (\n filter: TreeviewItemFunction,\n item: any,\n search: string,\n idKey: string,\n textKey: string,\n childrenKey: string,\n excluded: Set\n): boolean {\n if (filter(item, search, textKey)) {\n return true\n }\n\n const children = getObjectValueByPath(item, childrenKey)\n\n if (children) {\n let match = false\n for (let i = 0; i < children.length; i++) {\n if (filterTreeItems(filter, children[i], search, idKey, textKey, childrenKey, excluded)) {\n match = true\n }\n }\n\n if (match) return true\n }\n\n excluded.add(getObjectValueByPath(item, idKey))\n\n return false\n}\n","// Styles\nimport './VTreeview.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { TreeviewItemFunction } from 'vuetify/types'\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 filterTreeItem,\n} from './util/filterTreeItems'\n\ntype VTreeviewNodeInstance = InstanceType\n\ntype NodeCache = Set\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,\n dense: Boolean,\n disabled: Boolean,\n filter: Function as PropType,\n hoverable: Boolean,\n items: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n multipleActive: Boolean,\n open: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n openAll: Boolean,\n returnObject: {\n type: Boolean,\n default: false, // TODO: Should be true in next major\n },\n search: String,\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ...VTreeviewNodeProps,\n },\n\n data: () => ({\n level: -1,\n activeCache: new Set() as NodeCache,\n nodes: {} as Record,\n openCache: new Set() as NodeCache,\n selectedCache: new Set() as NodeCache,\n }),\n\n computed: {\n excludedItems (): Set {\n const excluded = new Set()\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 const getValue = (key: string | number) => this.returnObject ? getObjectValueByPath(key, this.itemKey) : key\n\n this.buildTree(this.items)\n\n for (const value of this.value.map(getValue)) {\n this.updateSelected(value, true, true)\n }\n\n for (const active of this.active.map(getValue)) {\n this.updateActive(active, true)\n }\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(this.returnObject ? getObjectValueByPath(key, this.itemKey) : 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 } 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] = node\n\n if (children.length && this.selectionType !== 'independent') {\n const { isSelected, isIndeterminate } = this.calculateState(key, this.nodes)\n\n node.isSelected = isSelected\n node.isIndeterminate = isIndeterminate\n }\n\n // Don't forget to rebuild cache\n if (this.nodes[key].isSelected && (this.selectionType === 'independent' || node.children.length === 0)) 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: string | number, state: Record) {\n const children = state[node].children\n const counts = children.reduce((counts: number[], child: string | number) => {\n counts[0] += +Boolean(state[child].isSelected)\n counts[1] += +Boolean(state[child].isIndeterminate)\n\n return counts\n }, [0, 0])\n\n const isSelected = !!children.length && counts[0] === children.length\n const isIndeterminate = !isSelected && (counts[0] > 0 || counts[1] > 0)\n\n return {\n isSelected,\n isIndeterminate,\n }\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 isParent (key: string | number) {\n return this.nodes[key].children && this.nodes[key].children.length\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, isForced = false) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n const changed = new Map()\n\n if (this.selectionType !== 'independent') {\n for (const descendant of this.getDescendants(key)) {\n if (!getObjectValueByPath(this.nodes[descendant].item, this.itemDisabled) || isForced) {\n this.nodes[descendant].isSelected = isSelected\n this.nodes[descendant].isIndeterminate = false\n changed.set(descendant, isSelected)\n }\n }\n\n const calculated = this.calculateState(key, this.nodes)\n this.nodes[key].isSelected = isSelected\n this.nodes[key].isIndeterminate = calculated.isIndeterminate\n changed.set(key, isSelected)\n\n for (const parent of this.getParents(key)) {\n const calculated = this.calculateState(parent, this.nodes)\n this.nodes[parent].isSelected = calculated.isSelected\n this.nodes[parent].isIndeterminate = calculated.isIndeterminate\n changed.set(parent, calculated.isSelected)\n }\n } else {\n this.nodes[key].isSelected = isSelected\n this.nodes[key].isIndeterminate = false\n changed.set(key, isSelected)\n }\n\n for (const [key, value] of changed.entries()) {\n this.updateVnodeState(key)\n\n if (this.selectionType === 'leaf' && this.isParent(key)) continue\n\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.filter(item => {\n return !this.isExcluded(getObjectValueByPath(item, this.itemKey))\n }).map(item => {\n const genChild = VTreeviewNode.options.methods.genChild.bind(this)\n\n return genChild(item, this.disabled || getObjectValueByPath(item, this.itemDisabled))\n })\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 'v-treeview--dense': this.dense,\n ...this.themeClasses,\n },\n }, children)\n },\n})\n"],"sourceRoot":""}