UNPKG

836 BJavaScriptView Raw
1const HYPHENIZE = /(^|[a-z])([A-Z]+)/g;
2
3const hyphen = k => 'data-' + String(k).replace(HYPHENIZE, '$1-$2').toLowerCase();
4
5const DOMStringMapHandler = {
6
7 has(target, property) {
8 return target._ownerElement.hasAttribute(hyphen(property));
9 },
10
11 get(target, property) {
12 return target._ownerElement.getAttribute(hyphen(property));
13 },
14
15 set(target, property, value) {
16 target._ownerElement.setAttribute(hyphen(property), value);
17 return true;
18 },
19
20 deleteProperty(target, property) {
21 target._ownerElement.removeAttribute(hyphen(property));
22 return true;
23 }
24
25};
26
27// interface DOMStringMap // https://html.spec.whatwg.org/multipage/dom.html#domstringmap
28module.exports = function DOMStringMap(ownerElement) {'use strict';
29 this._ownerElement = ownerElement;
30 return new Proxy(this, DOMStringMapHandler);
31};