You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
16 KiB
1 line
16 KiB
{"ast":null,"code":"import \"core-js/modules/es.array.push.js\";\nimport '../../../utils/index.mjs';\nimport { isEmpty, isUndefined } from '../../../utils/types.mjs';\nimport { isFunction } from '@vue/shared';\nimport { capitalize } from '../../../utils/strings.mjs';\nlet uid = 0;\nconst calculatePathNodes = node => {\n const nodes = [node];\n let {\n parent\n } = node;\n while (parent) {\n nodes.unshift(parent);\n parent = parent.parent;\n }\n return nodes;\n};\nclass Node {\n constructor(data, config, parent, root = false) {\n this.data = data;\n this.config = config;\n this.parent = parent;\n this.root = root;\n this.uid = uid++;\n this.checked = false;\n this.indeterminate = false;\n this.loading = false;\n const {\n value: valueKey,\n label: labelKey,\n children: childrenKey\n } = config;\n const childrenData = data[childrenKey];\n const pathNodes = calculatePathNodes(this);\n this.level = root ? 0 : parent ? parent.level + 1 : 1;\n this.value = data[valueKey];\n this.label = data[labelKey];\n this.pathNodes = pathNodes;\n this.pathValues = pathNodes.map(node => node.value);\n this.pathLabels = pathNodes.map(node => node.label);\n this.childrenData = childrenData;\n this.children = (childrenData || []).map(child => new Node(child, config, this));\n this.loaded = !config.lazy || this.isLeaf || !isEmpty(childrenData);\n }\n get isDisabled() {\n const {\n data,\n parent,\n config\n } = this;\n const {\n disabled,\n checkStrictly\n } = config;\n const isDisabled = isFunction(disabled) ? disabled(data, this) : !!data[disabled];\n return isDisabled || !checkStrictly && (parent == null ? void 0 : parent.isDisabled);\n }\n get isLeaf() {\n const {\n data,\n config,\n childrenData,\n loaded\n } = this;\n const {\n lazy,\n leaf\n } = config;\n const isLeaf = isFunction(leaf) ? leaf(data, this) : data[leaf];\n return isUndefined(isLeaf) ? lazy && !loaded ? false : !(Array.isArray(childrenData) && childrenData.length) : !!isLeaf;\n }\n get valueByOption() {\n return this.config.emitPath ? this.pathValues : this.value;\n }\n appendChild(childData) {\n const {\n childrenData,\n children\n } = this;\n const node = new Node(childData, this.config, this);\n if (Array.isArray(childrenData)) {\n childrenData.push(childData);\n } else {\n this.childrenData = [childData];\n }\n children.push(node);\n return node;\n }\n calcText(allLevels, separator) {\n const text = allLevels ? this.pathLabels.join(separator) : this.label;\n this.text = text;\n return text;\n }\n broadcast(event, ...args) {\n const handlerName = `onParent${capitalize(event)}`;\n this.children.forEach(child => {\n if (child) {\n child.broadcast(event, ...args);\n child[handlerName] && child[handlerName](...args);\n }\n });\n }\n emit(event, ...args) {\n const {\n parent\n } = this;\n const handlerName = `onChild${capitalize(event)}`;\n if (parent) {\n parent[handlerName] && parent[handlerName](...args);\n parent.emit(event, ...args);\n }\n }\n onParentCheck(checked) {\n if (!this.isDisabled) {\n this.setCheckState(checked);\n }\n }\n onChildCheck() {\n const {\n children\n } = this;\n const validChildren = children.filter(child => !child.isDisabled);\n const checked = validChildren.length ? validChildren.every(child => child.checked) : false;\n this.setCheckState(checked);\n }\n setCheckState(checked) {\n const totalNum = this.children.length;\n const checkedNum = this.children.reduce((c, p) => {\n const num = p.checked ? 1 : p.indeterminate ? 0.5 : 0;\n return c + num;\n }, 0);\n this.checked = this.loaded && this.children.filter(child => !child.isDisabled).every(child => child.loaded && child.checked) && checked;\n this.indeterminate = this.loaded && checkedNum !== totalNum && checkedNum > 0;\n }\n doCheck(checked) {\n if (this.checked === checked) return;\n const {\n checkStrictly,\n multiple\n } = this.config;\n if (checkStrictly || !multiple) {\n this.checked = checked;\n } else {\n this.broadcast(\"check\", checked);\n this.setCheckState(checked);\n this.emit(\"check\");\n }\n }\n}\nexport { Node as default };","map":{"version":3,"names":["uid","calculatePathNodes","node","nodes","parent","unshift","Node","constructor","data","config","root","checked","indeterminate","loading","value","valueKey","label","labelKey","children","childrenKey","childrenData","pathNodes","level","pathValues","map","pathLabels","child","loaded","lazy","isLeaf","isEmpty","isDisabled","disabled","checkStrictly","isFunction","leaf","isUndefined","Array","isArray","length","valueByOption","emitPath","appendChild","childData","push","calcText","allLevels","separator","text","join","broadcast","event","args","handlerName","capitalize","forEach","emit","onParentCheck","setCheckState","onChildCheck","validChildren","filter","every","totalNum","checkedNum","reduce","c","p","num","doCheck","multiple"],"sources":["../../../../../../packages/components/cascader-panel/src/node.ts"],"sourcesContent":["// @ts-nocheck\nimport {\n capitalize,\n isEmpty,\n isFunction,\n isUndefined,\n} from '@element-plus/utils'\nimport type { VNode } from 'vue'\n\nexport type CascaderNodeValue = string | number\nexport type CascaderNodePathValue = CascaderNodeValue[]\nexport type CascaderValue =\n | CascaderNodeValue\n | CascaderNodePathValue\n | (CascaderNodeValue | CascaderNodePathValue)[]\nexport type CascaderConfig = Required<CascaderProps>\nexport type ExpandTrigger = 'click' | 'hover'\nexport type isDisabled = (data: CascaderOption, node: Node) => boolean\nexport type isLeaf = (data: CascaderOption, node: Node) => boolean\nexport type Resolve = (dataList?: CascaderOption[]) => void\nexport type LazyLoad = (node: Node, resolve: Resolve) => void\nexport type RenderLabel = ({\n node: Node,\n data: CascaderOption,\n}) => VNode | VNode[]\nexport interface CascaderOption extends Record<string, unknown> {\n label?: string\n value?: CascaderNodeValue\n children?: CascaderOption[]\n disabled?: boolean\n leaf?: boolean\n}\n\nexport interface CascaderProps {\n expandTrigger?: ExpandTrigger\n multiple?: boolean\n checkStrictly?: boolean\n emitPath?: boolean\n lazy?: boolean\n lazyLoad?: LazyLoad\n value?: string\n label?: string\n children?: string\n disabled?: string | isDisabled\n leaf?: string | isLeaf\n hoverThreshold?: number\n}\n\nexport type Nullable<T> = null | T\n\ntype ChildrenData = CascaderOption[] | undefined\n\nlet uid = 0\n\nconst calculatePathNodes = (node: Node) => {\n const nodes = [node]\n let { parent } = node\n\n while (parent) {\n nodes.unshift(parent)\n parent = parent.parent\n }\n\n return nodes\n}\n\nclass Node {\n readonly uid: number = uid++\n readonly level: number\n readonly value: CascaderNodeValue\n readonly label: string\n readonly pathNodes: Node[]\n readonly pathValues: CascaderNodePathValue\n readonly pathLabels: string[]\n\n childrenData: ChildrenData\n children: Node[]\n text: string\n loaded: boolean\n /**\n * Is it checked\n *\n * @default false\n */\n checked = false\n /**\n * Used to indicate the intermediate state of unchecked and fully checked child nodes\n *\n * @default false\n */\n indeterminate = false\n /**\n * Loading Status\n *\n * @default false\n */\n loading = false\n\n constructor(\n readonly data: Nullable<CascaderOption>,\n readonly config: CascaderConfig,\n readonly parent?: Node,\n readonly root = false\n ) {\n const { value: valueKey, label: labelKey, children: childrenKey } = config\n\n const childrenData = data[childrenKey] as ChildrenData\n const pathNodes = calculatePathNodes(this)\n\n this.level = root ? 0 : parent ? parent.level + 1 : 1\n this.value = data[valueKey] as CascaderNodeValue\n this.label = data[labelKey] as string\n this.pathNodes = pathNodes\n this.pathValues = pathNodes.map((node) => node.value)\n this.pathLabels = pathNodes.map((node) => node.label)\n this.childrenData = childrenData\n this.children = (childrenData || []).map(\n (child) => new Node(child, config, this)\n )\n this.loaded = !config.lazy || this.isLeaf || !isEmpty(childrenData)\n }\n\n get isDisabled(): boolean {\n const { data, parent, config } = this\n const { disabled, checkStrictly } = config\n const isDisabled = isFunction(disabled)\n ? disabled(data, this)\n : !!data[disabled]\n return isDisabled || (!checkStrictly && parent?.isDisabled)\n }\n\n get isLeaf(): boolean {\n const { data, config, childrenData, loaded } = this\n const { lazy, leaf } = config\n const isLeaf = isFunction(leaf) ? leaf(data, this) : data[leaf]\n\n return isUndefined(isLeaf)\n ? lazy && !loaded\n ? false\n : !(Array.isArray(childrenData) && childrenData.length)\n : !!isLeaf\n }\n\n get valueByOption() {\n return this.config.emitPath ? this.pathValues : this.value\n }\n\n appendChild(childData: CascaderOption) {\n const { childrenData, children } = this\n const node = new Node(childData, this.config, this)\n\n if (Array.isArray(childrenData)) {\n childrenData.push(childData)\n } else {\n this.childrenData = [childData]\n }\n\n children.push(node)\n\n return node\n }\n\n calcText(allLevels: boolean, separator: string) {\n const text = allLevels ? this.pathLabels.join(separator) : this.label\n this.text = text\n return text\n }\n\n broadcast(event: string, ...args: unknown[]) {\n const handlerName = `onParent${capitalize(event)}`\n this.children.forEach((child) => {\n if (child) {\n // bottom up\n child.broadcast(event, ...args)\n child[handlerName] && child[handlerName](...args)\n }\n })\n }\n\n emit(event: string, ...args: unknown[]) {\n const { parent } = this\n const handlerName = `onChild${capitalize(event)}`\n if (parent) {\n parent[handlerName] && parent[handlerName](...args)\n parent.emit(event, ...args)\n }\n }\n\n onParentCheck(checked: boolean) {\n if (!this.isDisabled) {\n this.setCheckState(checked)\n }\n }\n\n onChildCheck() {\n const { children } = this\n const validChildren = children.filter((child) => !child.isDisabled)\n const checked = validChildren.length\n ? validChildren.every((child) => child.checked)\n : false\n\n this.setCheckState(checked)\n }\n\n setCheckState(checked: boolean) {\n const totalNum = this.children.length\n const checkedNum = this.children.reduce((c, p) => {\n const num = p.checked ? 1 : p.indeterminate ? 0.5 : 0\n return c + num\n }, 0)\n\n this.checked =\n this.loaded &&\n this.children\n .filter((child) => !child.isDisabled)\n .every((child) => child.loaded && child.checked) &&\n checked\n this.indeterminate =\n this.loaded && checkedNum !== totalNum && checkedNum > 0\n }\n\n doCheck(checked: boolean) {\n if (this.checked === checked) return\n\n const { checkStrictly, multiple } = this.config\n\n if (checkStrictly || !multiple) {\n this.checked = checked\n } else {\n // bottom up to unify the calculation of the indeterminate state\n this.broadcast('check', checked)\n this.setCheckState(checked)\n this.emit('check')\n }\n }\n}\n\nexport default Node\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |