{"version":3,"sources":["webpack:///../../../src/components/VTreeview/VTreeviewNode.ts","webpack:///../../../../src/components/VTreeview/util/filterTreeItems.ts","webpack:///../../../src/components/VTreeview/VTreeview.ts"],"names":["baseMixins","mixins","Colorable","RegistrableInject","VTreeviewNodeProps","activatable","Boolean","activeClass","type","String","default","color","expandIcon","indeterminateIcon","itemChildren","itemDisabled","itemKey","itemText","loadChildren","Function","loadingIcon","offIcon","onIcon","openOnClick","rounded","selectable","selectedColor","shaped","transition","selectionType","validator","v","includes","VTreeviewNode","extend","name","inject","treeview","props","_objectSpread","level","Number","item","Object","parentIsDisabled","data","hasLoaded","isActive","isIndeterminate","isLoading","isOpen","isSelected","computed","disabled","getObjectValueByPath","this","key","children","filter","child","isExcluded","text","scopedProps","leaf","selected","indeterminate","active","open","computedIcon","hasChildren","length","created","register","beforeDestroy","unregister","methods","checkChildren","Promise","resolve","then","updateOpen","emitOpen","genLabel","$scopedSlots","label","push","$createElement","slot","staticClass","genPrependSlot","prepend","genAppendSlot","append","genContent","genToggle","VIcon","class","on","click","e","stopPropagation","genCheckbox","undefined","$nextTick","updateSelected","emitSelected","genLevel","createRange","map","genNode","unshift","setTextColor","updateActive","emitActive","genChild","scopedSlots","genChildrenWrapper","c","genTransition","VExpandTransition","render","h","attrs","filterTreeItem","search","textKey","toLocaleLowerCase","indexOf","filterTreeItems","idKey","childrenKey","excluded","match","i","add","RegistrableProvide","Themeable","provide","Array","dense","hoverable","items","multipleActive","openAll","returnObject","value","activeCache","Set","nodes","openCache","selectedCache","excludedItems","watch","handler","oldKeys","keys","k","newKeys","getKeys","diff","arrayDiff","forEach","oldSelectedCache","buildTree","deepEqual","deep","handleNodeCacheWatcher","getValue","mounted","$slots","consoleWarn","updateAll","arguments","parent","_getObjectValueByPath","oldNode","hasOwnProperty","vnode","node","_this$calculateState","calculateState","updateVnodeState","state","counts","reduce","emitNodeCache","event","cache","$emit","updateFn","emitFn","old","getDescendants","descendants","getParents","parents","isParent","delete","isForced","changed","Map","descendant","set","calculated","_ref","entries","_ref2","_slicedToArray","has","options","bind","themeClasses"],"mappings":"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","file":"js/chunk-4542a23b.4478310d.js","sourcesContent":["// 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 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.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 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 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) {\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, 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":""}