chromium/third_party/blink/renderer/core/intersection_observer/intersection_observer.idl

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// https://www.w3.org/TR/intersection-observer/#intersection-observer-interface

callback IntersectionObserverCallback = void (sequence<IntersectionObserverEntry> entries, IntersectionObserver observer);

[
    Exposed=Window,
    ActiveScriptWrappable
] interface IntersectionObserver {
    [CallWith=ScriptState, RaisesException, MeasureAs=IntersectionObserver_Constructor] constructor(IntersectionObserverCallback callback, optional IntersectionObserverInit options = {});
    readonly attribute Node? root;
    readonly attribute DOMString rootMargin;
    [RuntimeEnabled=IntersectionObserverScrollMargin]
    readonly attribute DOMString scrollMargin;
    // https://github.com/WICG/IntersectionObserver/issues/114
    readonly attribute FrozenArray<double> thresholds;
    readonly attribute DOMHighResTimeStamp delay;
    readonly attribute boolean trackVisibility;
    [RaisesException] void observe(Element target);
    [RaisesException] void unobserve(Element target);
    [RaisesException] void disconnect();
    [RaisesException] sequence<IntersectionObserverEntry> takeRecords();
};