50 lines
1.2 KiB
Plaintext
50 lines
1.2 KiB
Plaintext
import {
|
|
DOMEventNames,
|
|
DOMPropNames
|
|
} from "./chunk-RFWDHYLZ.mjs";
|
|
|
|
// src/filter-dom-props.ts
|
|
var propRe = /^(data-.*)$/;
|
|
var ariaRe = /^(aria-.*)$/;
|
|
var funcRe = /^(on[A-Z].*)$/;
|
|
function filterDOMProps(props, opts = {}) {
|
|
let {
|
|
labelable = true,
|
|
enabled = true,
|
|
propNames,
|
|
omitPropNames,
|
|
omitEventNames,
|
|
omitDataProps,
|
|
omitEventProps
|
|
} = opts;
|
|
let filteredProps = {};
|
|
if (!enabled) {
|
|
return props;
|
|
}
|
|
for (const prop in props) {
|
|
if (omitPropNames == null ? void 0 : omitPropNames.has(prop)) {
|
|
continue;
|
|
}
|
|
if ((omitEventNames == null ? void 0 : omitEventNames.has(prop)) && funcRe.test(prop)) {
|
|
continue;
|
|
}
|
|
if (funcRe.test(prop) && !DOMEventNames.has(prop)) {
|
|
continue;
|
|
}
|
|
if (omitDataProps && propRe.test(prop)) {
|
|
continue;
|
|
}
|
|
if (omitEventProps && funcRe.test(prop)) {
|
|
continue;
|
|
}
|
|
if (Object.prototype.hasOwnProperty.call(props, prop) && (DOMPropNames.has(prop) || labelable && ariaRe.test(prop) || (propNames == null ? void 0 : propNames.has(prop)) || propRe.test(prop)) || funcRe.test(prop)) {
|
|
filteredProps[prop] = props[prop];
|
|
}
|
|
}
|
|
return filteredProps;
|
|
}
|
|
|
|
export {
|
|
filterDOMProps
|
|
};
|