UNPKG

element-plus

Version:
27 lines (26 loc) 1.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vue_1 = require("vue"); const util_1 = require("../../utils/util"); const DEFAULT_EXCLUDE_KEYS = ['class', 'style']; const LISTENER_PREFIX = /^on[A-Z]/; exports.default = (params = {}) => { const { excludeListeners = false, excludeKeys = [] } = params; const instance = vue_1.getCurrentInstance(); const attrs = vue_1.shallowRef({}); const allExcludeKeys = excludeKeys.concat(DEFAULT_EXCLUDE_KEYS); // Since attrs are not reactive, make it reactive instead of doing in `onUpdated` hook for better performance instance.attrs = vue_1.reactive(instance.attrs); vue_1.watchEffect(() => { const res = util_1.entries(instance.attrs) .reduce((acm, [key, val]) => { if (!allExcludeKeys.includes(key) && !(excludeListeners && LISTENER_PREFIX.test(key))) { acm[key] = val; } return acm; }, {}); attrs.value = res; }); return attrs; };