lib/apply-properties.jsView |
---|
4 | 4 … | var caches = new global.WeakMap() |
5 | 5 … | |
6 | 6 … | module.exports = applyProperties |
7 | 7 … | |
8 | | -function applyProperties (target, properties, namespace) { |
| 8 … | +function applyProperties (target, properties) { |
9 | 9 … | var data = caches.get(target) |
10 | 10 … | if (!data) { |
11 | 11 … | data = { releases: [] } |
12 | 12 … | caches.set(target, data) |
31 | 31 … | if (styleObs) { |
32 | 32 … | data.releases.push(bindStyle(target, styleObs, k)) |
33 | 33 … | } |
34 | 34 … | } |
| 35 … | + } else if (key === 'hooks') { |
| 36 … | + value.forEach(function (v) { |
| 37 … | + var release = v(target) |
| 38 … | + if (typeof release === 'function') { |
| 39 … | + data.releases.push(release) |
| 40 … | + } |
| 41 … | + }) |
35 | 42 … | } else if (key === 'attributes') { |
36 | 43 … | for (var k in value) { |
37 | 44 … | var attrValue = resolve(value[k]) |
38 | 45 … | var attrObs = isObservable(value[k]) ? value[k] : null |
| 46 … | + target.setAttribute(k, attrValue) |
39 | 47 … | |
40 | | - if (namespace) { |
41 | | - target.setAttributeNS(namespace, k, attrValue) |
42 | | - } else { |
43 | | - target.setAttribute(k, attrValue) |
44 | | - } |
45 | | - |
46 | 48 … | if (attrObs) { |
47 | | - data.releases.push(bindAttr(target, attrObs, k, namespace)) |
| 49 … | + data.releases.push(bindAttr(target, attrObs, k)) |
48 | 50 … | } |
49 | 51 … | } |
50 | 52 … | } else if (key === 'events') { |
51 | 53 … | for (var name in value) { |
93 | 95 … | target.style.setProperty(key, value) |
94 | 96 … | }) |
95 | 97 … | } |
96 | 98 … | |
97 | | -function bindAttr (target, attrObs, key, namespace) { |
| 99 … | +function bindAttr (target, attrObs, key) { |
98 | 100 … | return attrObs(function (value) { |
99 | 101 … | if (value == null) { |
100 | | - if (namespace) { |
101 | | - target.removeAttributeNS(namespace, key) |
102 | | - } else { |
103 | | - target.removeAttribute(key) |
104 | | - } |
| 102 … | + target.removeAttribute(key) |
105 | 103 … | } else { |
106 | | - if (namespace) { |
107 | | - target.setAttributeNS(namespace, key, value) |
108 | | - } else { |
109 | | - target.setAttribute(key, value) |
110 | | - } |
| 104 … | + target.setAttribute(key, value) |
111 | 105 … | } |
112 | 106 … | }) |
113 | 107 … | } |
114 | 108 … | |
115 | | -function bind (target, obs, key, namespace) { |
| 109 … | +function bind (target, obs, key) { |
116 | 110 … | return obs(function (toValue) { |
117 | | - var fromValue = namespace |
118 | | - ? target.getAttributeNS(namespace, key) |
119 | | - : target.getAttribute(key) |
120 | | - |
| 111 … | + var fromValue = target.getAttribute(key) |
121 | 112 … | if (fromValue !== toValue) { |
122 | | - if (namespace) { |
123 | | - target.setAttributeNS(namespace, key, toValue) |
124 | | - } else { |
125 | | - target.setAttribute(key, toValue) |
126 | | - } |
| 113 … | + target.setAttribute(key, toValue) |
127 | 114 … | } |
128 | 115 … | }) |
129 | 116 … | } |
130 | 117 … | |