1 | const HYPHENIZE = /(^|[a-z])([A-Z]+)/g;
|
2 |
|
3 | const hyphen = k => 'data-' + String(k).replace(HYPHENIZE, '$1-$2').toLowerCase();
|
4 |
|
5 | const 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 |
|
28 | module.exports = function DOMStringMap(ownerElement) {'use strict';
|
29 | this._ownerElement = ownerElement;
|
30 | return new Proxy(this, DOMStringMapHandler);
|
31 | };
|