This commit is contained in:
157
node_modules/licia/ResizeSensor.js
generated
vendored
Normal file
157
node_modules/licia/ResizeSensor.js
generated
vendored
Normal file
@@ -0,0 +1,157 @@
|
||||
var SingleEmitter = require('./SingleEmitter');
|
||||
var h = require('./h');
|
||||
var $event = require('./$event');
|
||||
var $css = require('./$css');
|
||||
var contain = require('./contain');
|
||||
var extend = require('./extend');
|
||||
var root = require('./root');
|
||||
if (root.ResizeObserver && !false) {
|
||||
exports = SingleEmitter.extend({
|
||||
initialize: function ResizeSensor(el) {
|
||||
var _this = this;
|
||||
if (el._resizeSensor) {
|
||||
return el._resizeSensor;
|
||||
}
|
||||
this.callSuper(SingleEmitter, 'initialize');
|
||||
var resizeObserver = new root.ResizeObserver(function() {
|
||||
return _this.emit();
|
||||
});
|
||||
resizeObserver.observe(el);
|
||||
el._resizeSensor = this;
|
||||
this._resizeObserver = resizeObserver;
|
||||
this._el = el;
|
||||
},
|
||||
destroy: function() {
|
||||
var el = this._el;
|
||||
if (!el._resizeSensor) {
|
||||
return;
|
||||
}
|
||||
this.rmAllListeners();
|
||||
delete el._resizeSensor;
|
||||
this._resizeObserver.unobserve(el);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
exports = SingleEmitter.extend({
|
||||
initialize: function ResizeSensor(el) {
|
||||
if (el._resizeSensor) {
|
||||
return el._resizeSensor;
|
||||
}
|
||||
this.callSuper(SingleEmitter, 'initialize');
|
||||
this._el = el;
|
||||
el._resizeSensor = this;
|
||||
if (
|
||||
!contain(
|
||||
['absolute', 'relative', 'fixed', 'sticky'],
|
||||
$css(el, 'position')
|
||||
)
|
||||
) {
|
||||
$css(el, 'position', 'relative');
|
||||
}
|
||||
this._appendResizeSensor();
|
||||
this._bindEvent();
|
||||
},
|
||||
destroy: function() {
|
||||
var el = this._el;
|
||||
if (!el._resizeSensor) {
|
||||
return;
|
||||
}
|
||||
this.rmAllListeners();
|
||||
delete el._resizeSensor;
|
||||
el.removeChild(this._resizeSensorEl);
|
||||
},
|
||||
_appendResizeSensor: function() {
|
||||
var el = this._el;
|
||||
var style = {
|
||||
pointerEvents: 'none',
|
||||
position: 'absolute',
|
||||
left: '0px',
|
||||
top: '0px',
|
||||
right: '0px',
|
||||
bottom: '0px',
|
||||
overflow: 'hidden',
|
||||
zIndex: '-1',
|
||||
visibility: 'hidden',
|
||||
maxWidth: '100%'
|
||||
};
|
||||
var styleChild = {
|
||||
position: 'absolute',
|
||||
left: '0px',
|
||||
top: '0px',
|
||||
transition: '0s'
|
||||
};
|
||||
var expandChildEl = h('div', {
|
||||
style: styleChild
|
||||
});
|
||||
var expandEl = h(
|
||||
'div.resize-sensor-expand',
|
||||
{
|
||||
style: style
|
||||
},
|
||||
expandChildEl
|
||||
);
|
||||
var shrinkEl = h(
|
||||
'div.resize-sensor-shrink',
|
||||
{
|
||||
style: style
|
||||
},
|
||||
h('div', {
|
||||
style: extend(
|
||||
{
|
||||
width: '200%',
|
||||
height: '200%'
|
||||
},
|
||||
styleChild
|
||||
)
|
||||
})
|
||||
);
|
||||
var resizeSensorEl = h(
|
||||
'div.resize-sensor',
|
||||
{
|
||||
dir: 'ltr',
|
||||
style: style
|
||||
},
|
||||
expandEl,
|
||||
shrinkEl
|
||||
);
|
||||
this._expandEl = expandEl;
|
||||
this._expandChildEl = expandChildEl;
|
||||
this._shrinkEl = shrinkEl;
|
||||
this._resizeSensorEl = resizeSensorEl;
|
||||
el.appendChild(resizeSensorEl);
|
||||
this._resetExpandShrink();
|
||||
},
|
||||
_bindEvent: function() {
|
||||
var _this2 = this;
|
||||
$event.on(this._expandEl, 'scroll', function() {
|
||||
return _this2._onScroll();
|
||||
});
|
||||
$event.on(this._shrinkEl, 'scroll', function() {
|
||||
return _this2._onScroll();
|
||||
});
|
||||
},
|
||||
_onScroll: function() {
|
||||
this.emit();
|
||||
this._resetExpandShrink();
|
||||
},
|
||||
_resetExpandShrink: function() {
|
||||
var el = this._el;
|
||||
var width = el.offsetWidth;
|
||||
var height = el.offsetHeight;
|
||||
$css(this._expandChildEl, {
|
||||
width: width + 10,
|
||||
height: height + 10
|
||||
});
|
||||
extend(this._expandEl, {
|
||||
scrollLeft: width + 10,
|
||||
scrollTop: height + 10
|
||||
});
|
||||
extend(this._shrinkEl, {
|
||||
scrollLeft: width + 10,
|
||||
scrollTop: height + 10
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = exports;
|
||||
Reference in New Issue
Block a user