blob: 9bfb3e3497121162f006e84a6f463bc84eb280ef [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This code is copied from `package:web` which still needs its own
// documentation for public members. Since this is a shim that users should not
// use, we ignore this lint for this file.
// ignore_for_file: public_member_api_docs
/// A stripped down version of `package:web` to avoid pinning that repo in
/// Flutter as a dependency.
///
/// These are manually copied over from `package:web` as needed, and should stay
/// in sync with the latest package version as much as possible.
///
/// If missing members are needed, copy them over into the corresponding
/// extension or interface. If missing interfaces/types are needed, copy them
/// over while excluding unnecessary inheritance to make the copy minimal. These
/// types are erased at runtime, so excluding supertypes is safe. If a member is
/// needed that belongs to a supertype, then add the necessary `implements`
/// clause to the subtype when you add that supertype. Keep extensions next to
/// the interface they extend.
library;
import 'dart:js_interop';
typedef EventListener = JSFunction;
typedef XMLHttpRequestResponseType = String;
@JS()
external Document get document;
@JS()
external Window get window;
extension type CSSStyleDeclaration._(JSObject _) implements JSObject {
external set backgroundColor(String value);
external String get backgroundColor;
external set border(String value);
external String get border;
external set height(String value);
external String get height;
external set width(String value);
external String get width;
}
extension type CSSStyleSheet._(JSObject _) implements JSObject {
external int insertRule(
String rule, [
int index,
]);
}
extension type Document._(JSObject _) implements JSObject {
external Element createElement(
String localName, [
JSAny options,
]);
external Range createRange();
external HTMLHeadElement? get head;
}
extension type DOMTokenList._(JSObject _) implements JSObject {
external void add(String tokens);
}
extension type Element._(JSObject _) implements Node, JSObject {
external DOMTokenList get classList;
external void append(JSAny nodes);
}
extension type Event._(JSObject _) implements JSObject {}
extension type EventTarget._(JSObject _) implements JSObject {
external void addEventListener(
String type,
EventListener? callback, [
JSAny options,
]);
}
extension type HTMLElement._(JSObject _) implements Element, JSObject {
external String get innerText;
external set innerText(String value);
external CSSStyleDeclaration get style;
}
extension type HTMLHeadElement._(JSObject _) implements HTMLElement, JSObject {}
extension type HTMLStyleElement._(JSObject _) implements HTMLElement, JSObject {
external CSSStyleSheet? get sheet;
}
extension type MediaQueryList._(JSObject _) implements EventTarget, JSObject {
external bool get matches;
}
extension type MouseEvent._(JSObject _) implements JSObject {
external num get offsetX;
external num get offsetY;
external int get button;
}
extension type Navigator._(JSObject _) implements JSObject {
external String get platform;
}
extension type Node._(JSObject _) implements EventTarget, JSObject {}
extension type Range._(JSObject _) implements JSObject {
external void selectNode(Node node);
}
extension type Selection._(JSObject _) implements JSObject {
external void addRange(Range range);
external void removeAllRanges();
}
extension type Window._(JSObject _) implements EventTarget, JSObject {
external Navigator get navigator;
external MediaQueryList matchMedia(String query);
external Selection? getSelection();
}
extension type XMLHttpRequest._(JSObject _)
implements XMLHttpRequestEventTarget, JSObject {
external factory XMLHttpRequest();
external void open(
String method,
String url, [
bool async,
String? username,
String? password,
]);
external void setRequestHeader(
String name,
String value,
);
external void send([JSAny? body]);
external int get status;
external set responseType(XMLHttpRequestResponseType value);
external XMLHttpRequestResponseType get responseType;
external JSAny? get response;
}
extension type XMLHttpRequestEventTarget._(JSObject _)
implements EventTarget, JSObject {}