oxe
Version:
A mighty tiny web components framework/library
43 lines (32 loc) • 1.2 kB
JavaScript
export default function (binder) {
const self = this;
return {
read () {
this.data = binder.data;
if (this.data === undefined || this.data === null) {
this.data = '';
} else if (typeof this.data === 'object') {
this.data = JSON.stringify(this.data);
} else if (typeof this.data !== 'string') {
this.data = String(this.data);
}
},
write () {
while (binder.target.firstChild) {
const node = binder.target.removeChild(binder.target.firstChild);
self.remove(node);
}
const fragment = document.createDocumentFragment();
const parser = document.createElement('div');
parser.innerHTML = this.data;
while (parser.firstElementChild) {
self.add(parser.firstElementChild, {
container: binder.container,
scope: binder.container.scope
});
fragment.appendChild(parser.firstElementChild);
}
binder.target.appendChild(fragment);
}
};
}