-
-
Notifications
You must be signed in to change notification settings - Fork 487
Open
Description
ResizeObserver is available for the latest modern browsers for a while. Instead of inserting tricky DIV to catch "resize" event, it is better to simply use ResizeObserver.
For backward compability, I rewrite ResizeSensor with ResizeObserver (and Map) as an AMD module below. It works well for my project.
define(function() {
const observing = new Map(),
ro = new ResizeObserver(entries => {
for (let {target} of entries) {
(observing.get(target) || []).forEach(({callback}) => callback(target));
}
});
function ResizeSensor(elm, callback) {
observing.set(elm, [...observing.get(elm) || [], {callback, sensor: this]);
ro.observe(this.elm = elm);
}
ResizeSensor.prototype = {
constructor: ResizeSensor,
detach() {
let elm = this.elm;
ro.unobserve(elm);
observing.set(elm, [...observing.get(elm) || []].filter(({sensor}) => sensor !== this));
}
}
return ResizeSensor;
});
mcmatrix and jpradelle
Metadata
Metadata
Assignees
Labels
No labels