increase performance by polyfilling ResizeObserver only if required
This commit is contained in:
@@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Component, Vue, Emit } from 'vue-property-decorator';
|
import { Component, Vue, Emit } from 'vue-property-decorator';
|
||||||
import { ResizeObserver } from '@juggle/resize-observer';
|
|
||||||
import { throttle } from './Throttle';
|
import { throttle } from './Throttle';
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@@ -16,11 +15,17 @@ export default class Responsive extends Vue {
|
|||||||
private observer: ResizeObserver;
|
private observer: ResizeObserver;
|
||||||
private get container(): HTMLElement { return this.$refs.containerElement as HTMLElement; }
|
private get container(): HTMLElement { return this.$refs.containerElement as HTMLElement; }
|
||||||
|
|
||||||
public mounted() {
|
public async mounted() {
|
||||||
this.width = this.container.offsetWidth;
|
this.width = this.container.offsetWidth;
|
||||||
this.height = this.container.offsetHeight;
|
this.height = this.container.offsetHeight;
|
||||||
const resizeCallback = throttle(() => this.updateSize(), 200);
|
const resizeCallback = throttle(() => this.updateSize(), 200);
|
||||||
this.observer = new ResizeObserver(resizeCallback);
|
|
||||||
|
if ('ResizeObserver' in window === false) {
|
||||||
|
const module = await import('@juggle/resize-observer');
|
||||||
|
window.ResizeObserver = module.ResizeObserver;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.observer = new window.ResizeObserver(resizeCallback);
|
||||||
this.observer.observe(this.container);
|
this.observer.observe(this.container);
|
||||||
this.fireChangeEvents();
|
this.fireChangeEvents();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user