// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: Resize Observer 1 (https://wicg.github.io/ResizeObserver/)

[Constructor(ResizeObserverCallback callback),
    Exposed=Window]
interface ResizeObserver {
    void observe(Element target);
    void unobserve(Element target);
    void disconnect();
};

callback ResizeObserverCallback = void (sequence<ResizeObserverEntry> entries, ResizeObserver observer);

[Constructor(Element target)
]
interface ResizeObserverEntry {
    readonly attribute Element target;
    readonly attribute DOMRectReadOnly contentRect;
};

[Constructor(Element target)
]
interface ResizeObservation {
    readonly attribute Element target;
    readonly attribute float broadcastWidth;
    readonly attribute float broadcastHeight;
    boolean isActive();
};
