UNPKG

element-plus

Version:

A Component Library for Vue 3

57 lines (52 loc) 1.89 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); require('../../../utils/index.js'); var shared = require('@vue/shared'); var ElOptions = vue.defineComponent({ name: "ElOptions", emits: ["update-options"], setup(_, { slots, emit }) { let cachedOptions = []; function isSameOptions(a, b) { if (a.length !== b.length) return false; for (const [index] of a.entries()) { if (a[index] != b[index]) { return false; } } return true; } return () => { var _a, _b; const children = (_a = slots.default) == null ? void 0 : _a.call(slots); const filteredOptions = []; function filterOptions(children2) { if (!Array.isArray(children2)) return; children2.forEach((item) => { var _a2, _b2, _c, _d; const name = (_a2 = (item == null ? void 0 : item.type) || {}) == null ? void 0 : _a2.name; if (name === "ElOptionGroup") { filterOptions(!shared.isString(item.children) && !Array.isArray(item.children) && shared.isFunction((_b2 = item.children) == null ? void 0 : _b2.default) ? (_c = item.children) == null ? void 0 : _c.default() : item.children); } else if (name === "ElOption") { filteredOptions.push((_d = item.props) == null ? void 0 : _d.label); } else if (Array.isArray(item.children)) { filterOptions(item.children); } }); } if (children.length) { filterOptions((_b = children[0]) == null ? void 0 : _b.children); } if (!isSameOptions(filteredOptions, cachedOptions)) { cachedOptions = filteredOptions; emit("update-options", filteredOptions); } return children; }; } }); exports["default"] = ElOptions; //# sourceMappingURL=options.js.map