/
index.js
42 lines (33 loc) · 939 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
var element = require('domy-element');
var interpolate = require('interpolate');
var watchjs = require('watchjs');
var watch = watchjs.watch;
var unwatch = watchjs.unwatch;
var bindMethods = {
to: function (data) {
this.data = data;
this.template = this.element.one().outerHTML;
this.element = this.interpolate();
this.watch();
return this.element;
},
interpolate: function () {
var results = interpolate(this.template, this.data, {
delimiter: "{{}}"
});
return element(results).one();
},
watch: function () {
var self = this;
watch(this.data, function () {
var newElement = self.interpolate();
if (self.element.parentNode) {
self.element.parentNode.replaceChild(newElement, self.element);
}
self.element = newElement;
});
}
};
module.exports = function (html) {
return element(html).wrap(bindMethods);
};