Ghost/ghost/admin/app/services/resize-detector.js

35 lines
1005 B
JavaScript
Raw Normal View History

import Service from '@ember/service';
import erd from 'element-resize-detector';
export default class ResizeDetectorService extends Service {
constructor() {
super(...arguments);
this.detector = erd({
strategy: 'scroll'
});
}
setup(selectorOrElement, callback) {
const element = typeof selectorOrElement === 'string'
? document.querySelector(selectorOrElement)
: selectorOrElement;
if (!element) {
// eslint-disable-next-line
console.error(`service:resize-detector - could not find element matching ${selectorOrElement}`);
}
this.detector.listenTo(element, callback);
}
teardown(selectorOrElement, callback) {
const element = typeof selectorOrElement === 'string'
? document.querySelector(selectorOrElement)
: selectorOrElement;
if (element) {
this.detector.removeListener(element, callback);
}
}
}