diff --git a/src/runtime/internal/dev.ts b/src/runtime/internal/dev.ts index 76d68086c8..16922086a3 100644 --- a/src/runtime/internal/dev.ts +++ b/src/runtime/internal/dev.ts @@ -1,4 +1,4 @@ -import { custom_event, append, append_hydration, insert, insert_hydration, detach, listen, attr } from './dom'; +import { custom_event, add_resize_observer, append, append_hydration, insert, insert_hydration, detach, listen, attr } from './dom'; import { SvelteComponent } from './Component'; export function dispatch_dev(type: string, detail?: T) { @@ -89,6 +89,14 @@ export function set_data_dev(text, data) { text.data = data; } +export function add_resize_observer_dev(node: HTMLElement, fn: (arg: any) => void, binding_name: string) { + if ('ResizeObserver' in window) { + add_resize_observer(node, fn); + } else { + throw new Error(`${binding_name} uses the ResizeObserver API, but it is not supported in this browser.`); + } +} + export function validate_each_argument(arg) { if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) { let msg = '{#each} only iterates over array-like objects.'; diff --git a/src/runtime/internal/dom.ts b/src/runtime/internal/dom.ts index 389d8bfdf4..4b6807604c 100644 --- a/src/runtime/internal/dom.ts +++ b/src/runtime/internal/dom.ts @@ -631,14 +631,9 @@ export function add_resize_listener(node: HTMLElement, fn: () => void) { } export function add_resize_observer(node: HTMLElement, fn: (arg: any) => void) { - if ('ResizeObserver' in window) { - // @ts-ignore https://github.com/Microsoft/TypeScript/issues/28502 - const observer = new ResizeObserver(entries => fn(entries.values().next().value)); - observer.observe(node); - return () => observer.disconnect(); - } else { - return noop; - } + const observer = new ResizeObserver(entries => fn(entries.values().next().value)); + observer.observe(node); + return () => observer.disconnect(); } export function toggle_class(element, name, toggle) {