Skip to content

Commit 21e6077

Browse files
author
pemrouz
committed
use one-off transparent getters
1 parent 1cc33ba commit 21e6077

File tree

3 files changed

+28
-14
lines changed

3 files changed

+28
-14
lines changed

dist/index.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var render = function render(next) {
3434
return function (el) {
3535
el.createShadowRoot ? !el.shadowRoot && el.createShadowRoot() && (reflect(el), retarget(el)) : (el.shadowRoot = el, el.shadowRoot.host = el);
3636

37-
return after(next(el));
37+
return next(el);
3838
};
3939
};
4040

@@ -44,13 +44,9 @@ var reflect = function reflect(el) {
4444

4545
var retarget = function retarget(el) {
4646
return (0, _keys2.default)(el).concat(['on', 'once', 'emit', 'classList', 'getAttribute', 'setAttribute']).map(function (d) {
47-
return el.shadowRoot[d] = _is2.default.fn(el[d]) ? el[d].bind(el) : el[d];
48-
});
49-
};
50-
51-
var after = function after(el) {
52-
return (0, _keys2.default)(el).map(function (d) {
53-
return el.shadowRoot[d] = el[d];
47+
return _is2.default.fn(el[d]) ? el.shadowRoot[d] = el[d].bind(el) : Object.defineProperty(el.shadowRoot, d, { get: function get(z) {
48+
return el[d];
49+
} });
5450
});
5551
};
5652

src/index.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,16 @@ const render = next => el => {
1414
: ( el.shadowRoot = el
1515
, el.shadowRoot.host = el)
1616

17-
return after(next(el))
17+
return next(el)
1818
}
1919

2020
const reflect = el => el.shadowRoot.innerHTML = el.innerHTML
2121

2222
const retarget = el => keys(el)
2323
.concat(['on', 'once', 'emit', 'classList', 'getAttribute', 'setAttribute'])
24-
.map(d => el.shadowRoot[d] = is.fn(el[d]) ? el[d].bind(el) : el[d])
25-
26-
const after = el => keys(el)
27-
.map(d => el.shadowRoot[d] = el[d])
24+
.map(d => is.fn(el[d])
25+
? (el.shadowRoot[d] = el[d].bind(el))
26+
: Object.defineProperty(el.shadowRoot, d, { get: z => el[d] }))
2827

2928
const log = require('utilise/log')('[ri/shadow]')
3029
, err = require('utilise/err')('[ri/shadow]')

test.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
var expect = require('chai').expect
2+
, once = require('utilise/once')
23
, noop = require('utilise/noop')
4+
, time = require('utilise/time')
35
, components = require('rijs.components').default
46
, core = require('rijs.core').default
57
, data = require('rijs.data').default
@@ -63,18 +65,20 @@ describe('Shadow DOM', function(){
6365
})
6466

6567
it('should retarget utility functions', function(done){
68+
once(el2)
69+
6670
var ripple = shadow(components(fn(data(core()))))
6771

6872
ripple('component-2', noop)
6973

7074
el2.__data__ = { foo: 'bar' }
7175
el2.state = { bar: 'foo' }
7276

73-
ripple.render(el1)
7477
ripple.render(el2)
7578

7679
expect(el2.shadowRoot.__data__).to.be.eql(el2.__data__)
7780
expect(el2.shadowRoot.state).to.be.eql(el2.state)
81+
7882
expect(el2.shadowRoot.on).to.be.a('function')
7983
expect(el2.shadowRoot.once).to.be.a('function')
8084
expect(el2.shadowRoot.emit).to.be.a('function')
@@ -87,6 +91,21 @@ describe('Shadow DOM', function(){
8791
el2.shadowRoot.emit('foo', 'bar')
8892
})
8993

94+
it('should return correct host values inside component', function(done){
95+
var ripple = shadow(components(fn(data(core()))))
96+
97+
el2.change = 1
98+
ripple('component-2', function(){
99+
expect(this.change).to.eql(this.host.change)
100+
el2.change++
101+
})
102+
103+
ripple.render(el2)
104+
ripple.render(el2)
105+
106+
time(100, done)
107+
})
108+
90109
it('should retarget .classed and .attr', function(){
91110
var ripple = shadow(components(fn(data(core()))))
92111

0 commit comments

Comments
 (0)