Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Unified Diff: tool/input_sdk/lib/html/ddc/html_ddc.dart

Issue 1700153002: Wrapperless dart:html and friends (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: A couple more tweaks Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tool/input_sdk/lib/html/ddc/html_ddc.dart
diff --git a/tool/input_sdk/lib/html/ddc/html_ddc.dart b/tool/input_sdk/lib/html/ddc/html_ddc.dart
deleted file mode 100644
index 7c5c8510f38d6030587780b52e80a2c348eaa3b6..0000000000000000000000000000000000000000
--- a/tool/input_sdk/lib/html/ddc/html_ddc.dart
+++ /dev/null
@@ -1,19801 +0,0 @@
-/**
- * HTML elements and other resources for web-based applications that need to
- * interact with the browser and the DOM (Document Object Model).
- *
- * This library includes DOM element types, CSS styling, local storage,
- * media, speech, events, and more.
- * To get started,
- * check out the [Element] class, the base class for many of the HTML
- * DOM types.
- *
- * ## Other resources
- *
- * * If you've never written a web app before, try our
- * tutorials—[A Game of Darts](http://dartlang.org/docs/tutorials).
- *
- * * To see some web-based Dart apps in action and to play with the code,
- * download
- * [Dart Editor](http://www.dartlang.org/#get-started)
- * and run its built-in examples.
- *
- * * For even more examples, see
- * [Dart HTML5 Samples](https://github.com/dart-lang/dart-html5-samples)
- * on Github.
- */
-library dart.dom.html;
-
-import 'dart:_runtime' show global_;
-import 'dart:async';
-import 'dart:collection';
-import 'dart:_internal' hide Symbol;
-import 'dart:html_common';
-import 'dart:isolate';
-import "dart:convert";
-import 'dart:math';
-import 'dart:_native_typed_data';
-import 'dart:typed_data';
-import 'dart:_isolate_helper' show IsolateNatives;
-import 'dart:_foreign_helper' show JS, JS_INTERCEPTOR_CONSTANT, JS_CONST;
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('HTMLAnchorElement')
-@Native("HTMLAnchorElement")
-class AnchorElement extends HtmlElement implements UrlUtils {
- // To suppress missing implicit constructor warnings.
- factory AnchorElement._() { throw new UnsupportedError("Not supported"); }
-
- @DomName('HTMLAnchorElement.HTMLAnchorElement')
- @DocsEditable()
- factory AnchorElement({String href}) {
- AnchorElement e = document.createElement("a");
- if (href != null) e.href = href;
- return e;
- }
-
-
- @Deprecated("Internal Use Only")
- static AnchorElement internalCreateAnchorElement() {
- return new AnchorElement.internal_();
- }
-
- @Deprecated("Internal Use Only")
- AnchorElement.internal_() : super.internal_();
-
-
- @DomName('HTMLAnchorElement.download')
- @DocsEditable()
- String get download => wrap_jso(JS("String", "#.download", this.raw));
- @DomName('HTMLAnchorElement.download')
- @DocsEditable()
- void set download(String val) => JS("void", "#.download = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.hreflang')
- @DocsEditable()
- String get hreflang => wrap_jso(JS("String", "#.hreflang", this.raw));
- @DomName('HTMLAnchorElement.hreflang')
- @DocsEditable()
- void set hreflang(String val) => JS("void", "#.hreflang = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.integrity')
- @DocsEditable()
- @Experimental() // untriaged
- String get integrity => wrap_jso(JS("String", "#.integrity", this.raw));
- @DomName('HTMLAnchorElement.integrity')
- @DocsEditable()
- @Experimental() // untriaged
- void set integrity(String val) => JS("void", "#.integrity = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.rel')
- @DocsEditable()
- String get rel => wrap_jso(JS("String", "#.rel", this.raw));
- @DomName('HTMLAnchorElement.rel')
- @DocsEditable()
- void set rel(String val) => JS("void", "#.rel = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.target')
- @DocsEditable()
- String get target => wrap_jso(JS("String", "#.target", this.raw));
- @DomName('HTMLAnchorElement.target')
- @DocsEditable()
- void set target(String val) => JS("void", "#.target = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.type')
- @DocsEditable()
- String get type => wrap_jso(JS("String", "#.type", this.raw));
- @DomName('HTMLAnchorElement.type')
- @DocsEditable()
- void set type(String val) => JS("void", "#.type = #", this.raw, unwrap_jso(val));
-
- // From URLUtils
-
- @DomName('HTMLAnchorElement.hash')
- @DocsEditable()
- String get hash => wrap_jso(JS("String", "#.hash", this.raw));
- @DomName('HTMLAnchorElement.hash')
- @DocsEditable()
- void set hash(String val) => JS("void", "#.hash = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.host')
- @DocsEditable()
- String get host => wrap_jso(JS("String", "#.host", this.raw));
- @DomName('HTMLAnchorElement.host')
- @DocsEditable()
- void set host(String val) => JS("void", "#.host = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.hostname')
- @DocsEditable()
- String get hostname => wrap_jso(JS("String", "#.hostname", this.raw));
- @DomName('HTMLAnchorElement.hostname')
- @DocsEditable()
- void set hostname(String val) => JS("void", "#.hostname = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.href')
- @DocsEditable()
- String get href => wrap_jso(JS("String", "#.href", this.raw));
- @DomName('HTMLAnchorElement.href')
- @DocsEditable()
- void set href(String val) => JS("void", "#.href = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.origin')
- @DocsEditable()
- // WebKit only
- @Experimental() // non-standard
- String get origin => wrap_jso(JS("String", "#.origin", this.raw));
-
- @DomName('HTMLAnchorElement.password')
- @DocsEditable()
- @Experimental() // untriaged
- String get password => wrap_jso(JS("String", "#.password", this.raw));
- @DomName('HTMLAnchorElement.password')
- @DocsEditable()
- @Experimental() // untriaged
- void set password(String val) => JS("void", "#.password = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.pathname')
- @DocsEditable()
- String get pathname => wrap_jso(JS("String", "#.pathname", this.raw));
- @DomName('HTMLAnchorElement.pathname')
- @DocsEditable()
- void set pathname(String val) => JS("void", "#.pathname = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.port')
- @DocsEditable()
- String get port => wrap_jso(JS("String", "#.port", this.raw));
- @DomName('HTMLAnchorElement.port')
- @DocsEditable()
- void set port(String val) => JS("void", "#.port = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.protocol')
- @DocsEditable()
- String get protocol => wrap_jso(JS("String", "#.protocol", this.raw));
- @DomName('HTMLAnchorElement.protocol')
- @DocsEditable()
- void set protocol(String val) => JS("void", "#.protocol = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.search')
- @DocsEditable()
- String get search => wrap_jso(JS("String", "#.search", this.raw));
- @DomName('HTMLAnchorElement.search')
- @DocsEditable()
- void set search(String val) => JS("void", "#.search = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLAnchorElement.username')
- @DocsEditable()
- @Experimental() // untriaged
- String get username => wrap_jso(JS("String", "#.username", this.raw));
- @DomName('HTMLAnchorElement.username')
- @DocsEditable()
- @Experimental() // untriaged
- void set username(String val) => JS("void", "#.username = #", this.raw, unwrap_jso(val));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('HTMLBaseElement')
-@Native("HTMLBaseElement")
-class BaseElement extends HtmlElement {
- // To suppress missing implicit constructor warnings.
- factory BaseElement._() { throw new UnsupportedError("Not supported"); }
-
- @DomName('HTMLBaseElement.HTMLBaseElement')
- @DocsEditable()
- factory BaseElement() => document.createElement("base");
-
-
- @Deprecated("Internal Use Only")
- static BaseElement internalCreateBaseElement() {
- return new BaseElement.internal_();
- }
-
- @Deprecated("Internal Use Only")
- BaseElement.internal_() : super.internal_();
-
-
- @DomName('HTMLBaseElement.href')
- @DocsEditable()
- String get href => wrap_jso(JS("String", "#.href", this.raw));
- @DomName('HTMLBaseElement.href')
- @DocsEditable()
- void set href(String val) => JS("void", "#.href = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLBaseElement.target')
- @DocsEditable()
- String get target => wrap_jso(JS("String", "#.target", this.raw));
- @DomName('HTMLBaseElement.target')
- @DocsEditable()
- void set target(String val) => JS("void", "#.target = #", this.raw, unwrap_jso(val));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('HTMLBodyElement')
-@Native("HTMLBodyElement")
-class BodyElement extends HtmlElement {
- // To suppress missing implicit constructor warnings.
- factory BodyElement._() { throw new UnsupportedError("Not supported"); }
-
- /**
- * Static factory designed to expose `blur` events to event
- * handlers that are not necessarily instances of [BodyElement].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('HTMLBodyElement.blurEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> blurEvent = const EventStreamProvider<Event>('blur');
-
- /**
- * Static factory designed to expose `error` events to event
- * handlers that are not necessarily instances of [BodyElement].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('HTMLBodyElement.errorEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error');
-
- /**
- * Static factory designed to expose `focus` events to event
- * handlers that are not necessarily instances of [BodyElement].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('HTMLBodyElement.focusEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> focusEvent = const EventStreamProvider<Event>('focus');
-
- /**
- * Static factory designed to expose `load` events to event
- * handlers that are not necessarily instances of [BodyElement].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('HTMLBodyElement.loadEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> loadEvent = const EventStreamProvider<Event>('load');
-
- /**
- * Static factory designed to expose `resize` events to event
- * handlers that are not necessarily instances of [BodyElement].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('HTMLBodyElement.resizeEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> resizeEvent = const EventStreamProvider<Event>('resize');
-
- @DomName('HTMLBodyElement.scrollEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<Event> scrollEvent = const EventStreamProvider<Event>('scroll');
-
- @DomName('HTMLBodyElement.HTMLBodyElement')
- @DocsEditable()
- factory BodyElement() => document.createElement("body");
-
-
- @Deprecated("Internal Use Only")
- static BodyElement internalCreateBodyElement() {
- return new BodyElement.internal_();
- }
-
- @Deprecated("Internal Use Only")
- BodyElement.internal_() : super.internal_();
-
-
- /// Stream of `blur` events handled by this [BodyElement].
- @DomName('HTMLBodyElement.onblur')
- @DocsEditable()
- ElementStream<Event> get onBlur => blurEvent.forElement(this);
-
- /// Stream of `error` events handled by this [BodyElement].
- @DomName('HTMLBodyElement.onerror')
- @DocsEditable()
- ElementStream<Event> get onError => errorEvent.forElement(this);
-
- /// Stream of `focus` events handled by this [BodyElement].
- @DomName('HTMLBodyElement.onfocus')
- @DocsEditable()
- ElementStream<Event> get onFocus => focusEvent.forElement(this);
-
- /// Stream of `load` events handled by this [BodyElement].
- @DomName('HTMLBodyElement.onload')
- @DocsEditable()
- ElementStream<Event> get onLoad => loadEvent.forElement(this);
-
- /// Stream of `resize` events handled by this [BodyElement].
- @DomName('HTMLBodyElement.onresize')
- @DocsEditable()
- ElementStream<Event> get onResize => resizeEvent.forElement(this);
-
- @DomName('HTMLBodyElement.onscroll')
- @DocsEditable()
- @Experimental() // untriaged
- ElementStream<Event> get onScroll => scrollEvent.forElement(this);
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('CharacterData')
-@Native("CharacterData")
-class CharacterData extends Node implements ChildNode {
- // To suppress missing implicit constructor warnings.
- factory CharacterData._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static CharacterData internalCreateCharacterData() {
- return new CharacterData.internal_();
- }
-
- @Deprecated("Internal Use Only")
- CharacterData.internal_() : super.internal_();
-
-
- @DomName('CharacterData.data')
- @DocsEditable()
- String get data => wrap_jso(JS("String", "#.data", this.raw));
- @DomName('CharacterData.data')
- @DocsEditable()
- void set data(String val) => JS("void", "#.data = #", this.raw, unwrap_jso(val));
-
- @DomName('CharacterData.length')
- @DocsEditable()
- int get length => wrap_jso(JS("int", "#.length", this.raw));
-
- @DomName('CharacterData.appendData')
- @DocsEditable()
- void appendData(String data) {
- _appendData_1(data);
- return;
- }
- @JSName('appendData')
- @DomName('CharacterData.appendData')
- @DocsEditable()
- void _appendData_1(data) => wrap_jso(JS("void ", "#.raw.appendData(#)", this, unwrap_jso(data)));
-
- @DomName('CharacterData.deleteData')
- @DocsEditable()
- void deleteData(int offset, int length) {
- _deleteData_1(offset, length);
- return;
- }
- @JSName('deleteData')
- @DomName('CharacterData.deleteData')
- @DocsEditable()
- void _deleteData_1(offset, length) => wrap_jso(JS("void ", "#.raw.deleteData(#, #)", this, unwrap_jso(offset), unwrap_jso(length)));
-
- @DomName('CharacterData.insertData')
- @DocsEditable()
- void insertData(int offset, String data) {
- _insertData_1(offset, data);
- return;
- }
- @JSName('insertData')
- @DomName('CharacterData.insertData')
- @DocsEditable()
- void _insertData_1(offset, data) => wrap_jso(JS("void ", "#.raw.insertData(#, #)", this, unwrap_jso(offset), unwrap_jso(data)));
-
- @DomName('CharacterData.replaceData')
- @DocsEditable()
- void replaceData(int offset, int length, String data) {
- _replaceData_1(offset, length, data);
- return;
- }
- @JSName('replaceData')
- @DomName('CharacterData.replaceData')
- @DocsEditable()
- void _replaceData_1(offset, length, data) => wrap_jso(JS("void ", "#.raw.replaceData(#, #, #)", this, unwrap_jso(offset), unwrap_jso(length), unwrap_jso(data)));
-
- @DomName('CharacterData.substringData')
- @DocsEditable()
- String substringData(int offset, int length) {
- return _substringData_1(offset, length);
- }
- @JSName('substringData')
- @DomName('CharacterData.substringData')
- @DocsEditable()
- String _substringData_1(offset, length) => wrap_jso(JS("String ", "#.raw.substringData(#, #)", this, unwrap_jso(offset), unwrap_jso(length)));
-
- // From ChildNode
-
- @DomName('CharacterData.nextElementSibling')
- @DocsEditable()
- Element get nextElementSibling => wrap_jso(JS("Element", "#.nextElementSibling", this.raw));
-
- @DomName('CharacterData.previousElementSibling')
- @DocsEditable()
- Element get previousElementSibling => wrap_jso(JS("Element", "#.previousElementSibling", this.raw));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('ChildNode')
-@Experimental() // untriaged
-abstract class ChildNode extends DartHtmlDomObject {
- // To suppress missing implicit constructor warnings.
- factory ChildNode._() { throw new UnsupportedError("Not supported"); }
-
- Element get nextElementSibling => wrap_jso(JS("Element", "#.nextElementSibling", this.raw));
-
- Element get previousElementSibling => wrap_jso(JS("Element", "#.previousElementSibling", this.raw));
-
- void remove() => wrap_jso(JS("void", "#.raw.remove()", this));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('Comment')
-@Native("Comment")
-class Comment extends CharacterData {
- factory Comment([String data]) {
- if (data != null) {
- return wrap_jso(JS('Comment', '#.createComment(#)', document.raw, data));
- }
- return wrap_jso(JS('Comment', '#.createComment("")', document.raw));
- }
- // To suppress missing implicit constructor warnings.
- factory Comment._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static Comment internalCreateComment() {
- return new Comment.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Comment.internal_() : super.internal_();
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DomName('Console')
-class Console extends DartHtmlDomObject {
-
- Console._safe();
-
- static final Console _safeConsole = new Console._safe();
-
- bool get _isConsoleDefined => JS('bool', 'typeof console != "undefined"');
-
- @DomName('Console.assertCondition')
- void assertCondition(bool condition, Object arg) => _isConsoleDefined ?
- JS('void', 'console.assertCondition(#, #)', condition, arg) : null;
-
- @DomName('Console.clear')
- void clear(Object arg) => _isConsoleDefined ?
- JS('void', 'console.clear(#)', arg) : null;
-
- @DomName('Console.count')
- void count(Object arg) => _isConsoleDefined ?
- JS('void', 'console.count(#)', arg) : null;
-
- @DomName('Console.debug')
- void debug(Object arg) => _isConsoleDefined ?
- JS('void', 'console.debug(#)', arg) : null;
-
- @DomName('Console.dir')
- void dir(Object arg) => _isConsoleDefined ?
- JS('void', 'console.dir(#)', arg) : null;
-
- @DomName('Console.dirxml')
- void dirxml(Object arg) => _isConsoleDefined ?
- JS('void', 'console.dirxml(#)', arg) : null;
-
- @DomName('Console.error')
- void error(Object arg) => _isConsoleDefined ?
- JS('void', 'console.error(#)', arg) : null;
-
- @DomName('Console.group')
- void group(Object arg) => _isConsoleDefined ?
- JS('void', 'console.group(#)', arg) : null;
-
- @DomName('Console.groupCollapsed')
- void groupCollapsed(Object arg) => _isConsoleDefined ?
- JS('void', 'console.groupCollapsed(#)', arg) : null;
-
- @DomName('Console.groupEnd')
- void groupEnd() => _isConsoleDefined ?
- JS('void', 'console.groupEnd()') : null;
-
- @DomName('Console.info')
- void info(Object arg) => _isConsoleDefined ?
- JS('void', 'console.info(#)', arg) : null;
-
- @DomName('Console.log')
- void log(Object arg) => _isConsoleDefined ?
- JS('void', 'console.log(#)', arg) : null;
-
- @DomName('Console.markTimeline')
- void markTimeline(Object arg) => _isConsoleDefined ?
- JS('void', 'console.markTimeline(#)', arg) : null;
-
- @DomName('Console.profile')
- void profile(String title) => _isConsoleDefined ?
- JS('void', 'console.profile(#)', title) : null;
-
- @DomName('Console.profileEnd')
- void profileEnd(String title) => _isConsoleDefined ?
- JS('void', 'console.profileEnd(#)', title) : null;
-
- @DomName('Console.table')
- void table(Object arg) => _isConsoleDefined ?
- JS('void', 'console.table(#)', arg) : null;
-
- @DomName('Console.time')
- void time(String title) => _isConsoleDefined ?
- JS('void', 'console.time(#)', title) : null;
-
- @DomName('Console.timeEnd')
- void timeEnd(String title) => _isConsoleDefined ?
- JS('void', 'console.timeEnd(#)', title) : null;
-
- @DomName('Console.timeStamp')
- void timeStamp(Object arg) => _isConsoleDefined ?
- JS('void', 'console.timeStamp(#)', arg) : null;
-
- @DomName('Console.trace')
- void trace(Object arg) => _isConsoleDefined ?
- JS('void', 'console.trace(#)', arg) : null;
-
- @DomName('Console.warn')
- void warn(Object arg) => _isConsoleDefined ?
- JS('void', 'console.warn(#)', arg) : null;
- // To suppress missing implicit constructor warnings.
- factory Console._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static Console internalCreateConsole() {
- return new Console.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Console.internal_() : super.internal_();
-
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('ConsoleBase')
-@Experimental() // untriaged
-@Native("ConsoleBase")
-class ConsoleBase extends DartHtmlDomObject {
- // To suppress missing implicit constructor warnings.
- factory ConsoleBase._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static ConsoleBase internalCreateConsoleBase() {
- return new ConsoleBase.internal_();
- }
-
- @Deprecated("Internal Use Only")
- ConsoleBase.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('ConsoleBase.timeline')
- @DocsEditable()
- @Experimental() // untriaged
- void timeline(String title) {
- _timeline_1(title);
- return;
- }
- @JSName('timeline')
- @DomName('ConsoleBase.timeline')
- @DocsEditable()
- @Experimental() // untriaged
- void _timeline_1(title) => wrap_jso(JS("void ", "#.raw.timeline(#)", this, unwrap_jso(title)));
-
- @DomName('ConsoleBase.timelineEnd')
- @DocsEditable()
- @Experimental() // untriaged
- void timelineEnd(String title) {
- _timelineEnd_1(title);
- return;
- }
- @JSName('timelineEnd')
- @DomName('ConsoleBase.timelineEnd')
- @DocsEditable()
- @Experimental() // untriaged
- void _timelineEnd_1(title) => wrap_jso(JS("void ", "#.raw.timelineEnd(#)", this, unwrap_jso(title)));
-}
-
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: DO NOT EDIT THIS TEMPLATE FILE.
-// The template file was generated by scripts/css_code_generator.py
-
-// Source of CSS properties:
-// CSSPropertyNames.in
-
-
-@DomName('CSSStyleDeclaration')
-@Native("CSSStyleDeclaration,MSStyleCSSProperties,CSS2Properties")
-class CssStyleDeclaration extends DartHtmlDomObject with
- CssStyleDeclarationBase {
- factory CssStyleDeclaration() => new CssStyleDeclaration.css('');
-
- factory CssStyleDeclaration.css(String css) {
- final style = new Element.tag('div').style;
- style.cssText = css;
- return style;
- }
-
- String getPropertyValue(String propertyName) {
- var propValue = _getPropertyValueHelper(propertyName);
- return propValue != null ? propValue : '';
- }
-
- String _getPropertyValueHelper(String propertyName) {
- if (_supportsProperty(_camelCase(propertyName))) {
- return _getPropertyValue(propertyName);
- } else {
- return _getPropertyValue(Device.cssPrefix + propertyName);
- }
- }
-
- /**
- * Returns true if the provided *CSS* property name is supported on this
- * element.
- *
- * Please note the property name camelCase, not-hyphens. This
- * method returns true if the property is accessible via an unprefixed _or_
- * prefixed property.
- */
- bool supportsProperty(String propertyName) {
- return _supportsProperty(propertyName) ||
- _supportsProperty(_camelCase(Device.cssPrefix + propertyName));
- }
-
- bool _supportsProperty(String propertyName) {
- return JS('bool', '# in #', propertyName, this.raw);
- }
-
-
- @DomName('CSSStyleDeclaration.setProperty')
- void setProperty(String propertyName, String value, [String priority]) {
- return _setPropertyHelper(_browserPropertyName(propertyName),
- value, priority);
- }
-
- String _browserPropertyName(String propertyName) {
- String name = _readCache(propertyName);
- if (name is String) return name;
- if (_supportsProperty(_camelCase(propertyName))) {
- name = propertyName;
- } else {
- name = Device.cssPrefix + propertyName;
- }
- _writeCache(propertyName, name);
- return name;
- }
-
- static String _readCache(String key) => null;
- static void _writeCache(String key, value) {}
-
- static String _camelCase(String hyphenated) {
- // The "ms" prefix is always lowercased.
- return hyphenated.replaceFirst(new RegExp('^-ms-'), 'ms-').replaceAllMapped(
- new RegExp('-([a-z]+)', caseSensitive: false),
- (match) => match[0][1].toUpperCase() + match[0].substring(2));
- }
-
- void _setPropertyHelper(String propertyName, String value, [String priority]) {
- if (value == null) value = '';
- if (priority == null) priority = '';
- JS('void', '#.setProperty(#, #, #)', this.raw, propertyName, value, priority);
- }
-
- /**
- * Checks to see if CSS Transitions are supported.
- */
- static bool get supportsTransitions {
- return document.body.style.supportsProperty('transition');
- }
- // To suppress missing implicit constructor warnings.
- factory CssStyleDeclaration._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static CssStyleDeclaration internalCreateCssStyleDeclaration() {
- return new CssStyleDeclaration.internal_();
- }
-
- @Deprecated("Internal Use Only")
- CssStyleDeclaration.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('CSSStyleDeclaration.cssText')
- @DocsEditable()
- String get cssText => wrap_jso(JS("String", "#.cssText", this.raw));
- @DomName('CSSStyleDeclaration.cssText')
- @DocsEditable()
- void set cssText(String val) => JS("void", "#.cssText = #", this.raw, unwrap_jso(val));
-
- @DomName('CSSStyleDeclaration.length')
- @DocsEditable()
- int get length => wrap_jso(JS("int", "#.length", this.raw));
-
- @DomName('CSSStyleDeclaration.__getter__')
- @DocsEditable()
- @Experimental() // untriaged
- Object __getter__(String name) {
- return __getter___1(name);
- }
- @JSName('__getter__')
- @DomName('CSSStyleDeclaration.__getter__')
- @DocsEditable()
- @Experimental() // untriaged
- Object __getter___1(name) => wrap_jso(JS("Object ", "#.raw.__getter__(#)", this, unwrap_jso(name)));
-
- @DomName('CSSStyleDeclaration.__setter__')
- @DocsEditable()
- void __setter__(String propertyName, String propertyValue) {
- __setter___1(propertyName, propertyValue);
- return;
- }
- @JSName('__setter__')
- @DomName('CSSStyleDeclaration.__setter__')
- @DocsEditable()
- void __setter___1(propertyName, propertyValue) => wrap_jso(JS("void ", "#.raw.__setter__(#, #)", this, unwrap_jso(propertyName), unwrap_jso(propertyValue)));
-
- @DomName('CSSStyleDeclaration.getPropertyPriority')
- @DocsEditable()
- String getPropertyPriority(String propertyName) {
- return _getPropertyPriority_1(propertyName);
- }
- @JSName('getPropertyPriority')
- @DomName('CSSStyleDeclaration.getPropertyPriority')
- @DocsEditable()
- String _getPropertyPriority_1(propertyName) => wrap_jso(JS("String ", "#.raw.getPropertyPriority(#)", this, unwrap_jso(propertyName)));
-
- @DomName('CSSStyleDeclaration.getPropertyValue')
- @DocsEditable()
- String _getPropertyValue(String propertyName) {
- return _getPropertyValue_1(propertyName);
- }
- @JSName('getPropertyValue')
- @DomName('CSSStyleDeclaration.getPropertyValue')
- @DocsEditable()
- String _getPropertyValue_1(propertyName) => wrap_jso(JS("String ", "#.raw.getPropertyValue(#)", this, unwrap_jso(propertyName)));
-
- @DomName('CSSStyleDeclaration.item')
- @DocsEditable()
- String item(int index) {
- return _item_1(index);
- }
- @JSName('item')
- @DomName('CSSStyleDeclaration.item')
- @DocsEditable()
- String _item_1(index) => wrap_jso(JS("String ", "#.raw.item(#)", this, unwrap_jso(index)));
-
- @DomName('CSSStyleDeclaration.removeProperty')
- @DocsEditable()
- String removeProperty(String propertyName) {
- return _removeProperty_1(propertyName);
- }
- @JSName('removeProperty')
- @DomName('CSSStyleDeclaration.removeProperty')
- @DocsEditable()
- String _removeProperty_1(propertyName) => wrap_jso(JS("String ", "#.raw.removeProperty(#)", this, unwrap_jso(propertyName)));
-
-}
-
-class _CssStyleDeclarationSet extends Object with CssStyleDeclarationBase {
- final Iterable<Element> _elementIterable;
- Iterable<CssStyleDeclaration> _elementCssStyleDeclarationSetIterable;
-
- _CssStyleDeclarationSet(this._elementIterable) {
- _elementCssStyleDeclarationSetIterable = new List.from(
- _elementIterable).map((e) => e.style);
- }
-
- String getPropertyValue(String propertyName) =>
- _elementCssStyleDeclarationSetIterable.first.getPropertyValue(
- propertyName);
-
- void setProperty(String propertyName, String value, [String priority]) {
- _elementCssStyleDeclarationSetIterable.forEach((e) =>
- e.setProperty(propertyName, value, priority));
- }
-
-
-
- // Important note: CssStyleDeclarationSet does NOT implement every method
- // available in CssStyleDeclaration. Some of the methods don't make so much
- // sense in terms of having a resonable value to return when you're
- // considering a list of Elements. You will need to manually add any of the
- // items in the MEMBERS set if you want that functionality.
-}
-
-class CssStyleDeclarationBase {
- String getPropertyValue(String propertyName) =>
- throw new StateError('getProperty not overridden in dart:html');
- void setProperty(String propertyName, String value, [String priority]) =>
- throw new StateError('setProperty not overridden in dart:html');
-
- /** Gets the value of "align-content" */
- String get alignContent =>
- getPropertyValue('align-content');
-
- /** Sets the value of "align-content" */
- set alignContent(String value) {
- setProperty('align-content', value, '');
- }
-
- /** Gets the value of "align-items" */
- String get alignItems =>
- getPropertyValue('align-items');
-
- /** Sets the value of "align-items" */
- set alignItems(String value) {
- setProperty('align-items', value, '');
- }
-
- /** Gets the value of "align-self" */
- String get alignSelf =>
- getPropertyValue('align-self');
-
- /** Sets the value of "align-self" */
- set alignSelf(String value) {
- setProperty('align-self', value, '');
- }
-
- /** Gets the value of "animation" */
- String get animation =>
- getPropertyValue('animation');
-
- /** Sets the value of "animation" */
- set animation(String value) {
- setProperty('animation', value, '');
- }
-
- /** Gets the value of "animation-delay" */
- String get animationDelay =>
- getPropertyValue('animation-delay');
-
- /** Sets the value of "animation-delay" */
- set animationDelay(String value) {
- setProperty('animation-delay', value, '');
- }
-
- /** Gets the value of "animation-direction" */
- String get animationDirection =>
- getPropertyValue('animation-direction');
-
- /** Sets the value of "animation-direction" */
- set animationDirection(String value) {
- setProperty('animation-direction', value, '');
- }
-
- /** Gets the value of "animation-duration" */
- String get animationDuration =>
- getPropertyValue('animation-duration');
-
- /** Sets the value of "animation-duration" */
- set animationDuration(String value) {
- setProperty('animation-duration', value, '');
- }
-
- /** Gets the value of "animation-fill-mode" */
- String get animationFillMode =>
- getPropertyValue('animation-fill-mode');
-
- /** Sets the value of "animation-fill-mode" */
- set animationFillMode(String value) {
- setProperty('animation-fill-mode', value, '');
- }
-
- /** Gets the value of "animation-iteration-count" */
- String get animationIterationCount =>
- getPropertyValue('animation-iteration-count');
-
- /** Sets the value of "animation-iteration-count" */
- set animationIterationCount(String value) {
- setProperty('animation-iteration-count', value, '');
- }
-
- /** Gets the value of "animation-name" */
- String get animationName =>
- getPropertyValue('animation-name');
-
- /** Sets the value of "animation-name" */
- set animationName(String value) {
- setProperty('animation-name', value, '');
- }
-
- /** Gets the value of "animation-play-state" */
- String get animationPlayState =>
- getPropertyValue('animation-play-state');
-
- /** Sets the value of "animation-play-state" */
- set animationPlayState(String value) {
- setProperty('animation-play-state', value, '');
- }
-
- /** Gets the value of "animation-timing-function" */
- String get animationTimingFunction =>
- getPropertyValue('animation-timing-function');
-
- /** Sets the value of "animation-timing-function" */
- set animationTimingFunction(String value) {
- setProperty('animation-timing-function', value, '');
- }
-
- /** Gets the value of "app-region" */
- String get appRegion =>
- getPropertyValue('app-region');
-
- /** Sets the value of "app-region" */
- set appRegion(String value) {
- setProperty('app-region', value, '');
- }
-
- /** Gets the value of "appearance" */
- String get appearance =>
- getPropertyValue('appearance');
-
- /** Sets the value of "appearance" */
- set appearance(String value) {
- setProperty('appearance', value, '');
- }
-
- /** Gets the value of "aspect-ratio" */
- String get aspectRatio =>
- getPropertyValue('aspect-ratio');
-
- /** Sets the value of "aspect-ratio" */
- set aspectRatio(String value) {
- setProperty('aspect-ratio', value, '');
- }
-
- /** Gets the value of "backface-visibility" */
- String get backfaceVisibility =>
- getPropertyValue('backface-visibility');
-
- /** Sets the value of "backface-visibility" */
- set backfaceVisibility(String value) {
- setProperty('backface-visibility', value, '');
- }
-
- /** Gets the value of "background" */
- String get background =>
- getPropertyValue('background');
-
- /** Sets the value of "background" */
- set background(String value) {
- setProperty('background', value, '');
- }
-
- /** Gets the value of "background-attachment" */
- String get backgroundAttachment =>
- getPropertyValue('background-attachment');
-
- /** Sets the value of "background-attachment" */
- set backgroundAttachment(String value) {
- setProperty('background-attachment', value, '');
- }
-
- /** Gets the value of "background-blend-mode" */
- String get backgroundBlendMode =>
- getPropertyValue('background-blend-mode');
-
- /** Sets the value of "background-blend-mode" */
- set backgroundBlendMode(String value) {
- setProperty('background-blend-mode', value, '');
- }
-
- /** Gets the value of "background-clip" */
- String get backgroundClip =>
- getPropertyValue('background-clip');
-
- /** Sets the value of "background-clip" */
- set backgroundClip(String value) {
- setProperty('background-clip', value, '');
- }
-
- /** Gets the value of "background-color" */
- String get backgroundColor =>
- getPropertyValue('background-color');
-
- /** Sets the value of "background-color" */
- set backgroundColor(String value) {
- setProperty('background-color', value, '');
- }
-
- /** Gets the value of "background-composite" */
- String get backgroundComposite =>
- getPropertyValue('background-composite');
-
- /** Sets the value of "background-composite" */
- set backgroundComposite(String value) {
- setProperty('background-composite', value, '');
- }
-
- /** Gets the value of "background-image" */
- String get backgroundImage =>
- getPropertyValue('background-image');
-
- /** Sets the value of "background-image" */
- set backgroundImage(String value) {
- setProperty('background-image', value, '');
- }
-
- /** Gets the value of "background-origin" */
- String get backgroundOrigin =>
- getPropertyValue('background-origin');
-
- /** Sets the value of "background-origin" */
- set backgroundOrigin(String value) {
- setProperty('background-origin', value, '');
- }
-
- /** Gets the value of "background-position" */
- String get backgroundPosition =>
- getPropertyValue('background-position');
-
- /** Sets the value of "background-position" */
- set backgroundPosition(String value) {
- setProperty('background-position', value, '');
- }
-
- /** Gets the value of "background-position-x" */
- String get backgroundPositionX =>
- getPropertyValue('background-position-x');
-
- /** Sets the value of "background-position-x" */
- set backgroundPositionX(String value) {
- setProperty('background-position-x', value, '');
- }
-
- /** Gets the value of "background-position-y" */
- String get backgroundPositionY =>
- getPropertyValue('background-position-y');
-
- /** Sets the value of "background-position-y" */
- set backgroundPositionY(String value) {
- setProperty('background-position-y', value, '');
- }
-
- /** Gets the value of "background-repeat" */
- String get backgroundRepeat =>
- getPropertyValue('background-repeat');
-
- /** Sets the value of "background-repeat" */
- set backgroundRepeat(String value) {
- setProperty('background-repeat', value, '');
- }
-
- /** Gets the value of "background-repeat-x" */
- String get backgroundRepeatX =>
- getPropertyValue('background-repeat-x');
-
- /** Sets the value of "background-repeat-x" */
- set backgroundRepeatX(String value) {
- setProperty('background-repeat-x', value, '');
- }
-
- /** Gets the value of "background-repeat-y" */
- String get backgroundRepeatY =>
- getPropertyValue('background-repeat-y');
-
- /** Sets the value of "background-repeat-y" */
- set backgroundRepeatY(String value) {
- setProperty('background-repeat-y', value, '');
- }
-
- /** Gets the value of "background-size" */
- String get backgroundSize =>
- getPropertyValue('background-size');
-
- /** Sets the value of "background-size" */
- set backgroundSize(String value) {
- setProperty('background-size', value, '');
- }
-
- /** Gets the value of "border" */
- String get border =>
- getPropertyValue('border');
-
- /** Sets the value of "border" */
- set border(String value) {
- setProperty('border', value, '');
- }
-
- /** Gets the value of "border-after" */
- String get borderAfter =>
- getPropertyValue('border-after');
-
- /** Sets the value of "border-after" */
- set borderAfter(String value) {
- setProperty('border-after', value, '');
- }
-
- /** Gets the value of "border-after-color" */
- String get borderAfterColor =>
- getPropertyValue('border-after-color');
-
- /** Sets the value of "border-after-color" */
- set borderAfterColor(String value) {
- setProperty('border-after-color', value, '');
- }
-
- /** Gets the value of "border-after-style" */
- String get borderAfterStyle =>
- getPropertyValue('border-after-style');
-
- /** Sets the value of "border-after-style" */
- set borderAfterStyle(String value) {
- setProperty('border-after-style', value, '');
- }
-
- /** Gets the value of "border-after-width" */
- String get borderAfterWidth =>
- getPropertyValue('border-after-width');
-
- /** Sets the value of "border-after-width" */
- set borderAfterWidth(String value) {
- setProperty('border-after-width', value, '');
- }
-
- /** Gets the value of "border-before" */
- String get borderBefore =>
- getPropertyValue('border-before');
-
- /** Sets the value of "border-before" */
- set borderBefore(String value) {
- setProperty('border-before', value, '');
- }
-
- /** Gets the value of "border-before-color" */
- String get borderBeforeColor =>
- getPropertyValue('border-before-color');
-
- /** Sets the value of "border-before-color" */
- set borderBeforeColor(String value) {
- setProperty('border-before-color', value, '');
- }
-
- /** Gets the value of "border-before-style" */
- String get borderBeforeStyle =>
- getPropertyValue('border-before-style');
-
- /** Sets the value of "border-before-style" */
- set borderBeforeStyle(String value) {
- setProperty('border-before-style', value, '');
- }
-
- /** Gets the value of "border-before-width" */
- String get borderBeforeWidth =>
- getPropertyValue('border-before-width');
-
- /** Sets the value of "border-before-width" */
- set borderBeforeWidth(String value) {
- setProperty('border-before-width', value, '');
- }
-
- /** Gets the value of "border-bottom" */
- String get borderBottom =>
- getPropertyValue('border-bottom');
-
- /** Sets the value of "border-bottom" */
- set borderBottom(String value) {
- setProperty('border-bottom', value, '');
- }
-
- /** Gets the value of "border-bottom-color" */
- String get borderBottomColor =>
- getPropertyValue('border-bottom-color');
-
- /** Sets the value of "border-bottom-color" */
- set borderBottomColor(String value) {
- setProperty('border-bottom-color', value, '');
- }
-
- /** Gets the value of "border-bottom-left-radius" */
- String get borderBottomLeftRadius =>
- getPropertyValue('border-bottom-left-radius');
-
- /** Sets the value of "border-bottom-left-radius" */
- set borderBottomLeftRadius(String value) {
- setProperty('border-bottom-left-radius', value, '');
- }
-
- /** Gets the value of "border-bottom-right-radius" */
- String get borderBottomRightRadius =>
- getPropertyValue('border-bottom-right-radius');
-
- /** Sets the value of "border-bottom-right-radius" */
- set borderBottomRightRadius(String value) {
- setProperty('border-bottom-right-radius', value, '');
- }
-
- /** Gets the value of "border-bottom-style" */
- String get borderBottomStyle =>
- getPropertyValue('border-bottom-style');
-
- /** Sets the value of "border-bottom-style" */
- set borderBottomStyle(String value) {
- setProperty('border-bottom-style', value, '');
- }
-
- /** Gets the value of "border-bottom-width" */
- String get borderBottomWidth =>
- getPropertyValue('border-bottom-width');
-
- /** Sets the value of "border-bottom-width" */
- set borderBottomWidth(String value) {
- setProperty('border-bottom-width', value, '');
- }
-
- /** Gets the value of "border-collapse" */
- String get borderCollapse =>
- getPropertyValue('border-collapse');
-
- /** Sets the value of "border-collapse" */
- set borderCollapse(String value) {
- setProperty('border-collapse', value, '');
- }
-
- /** Gets the value of "border-color" */
- String get borderColor =>
- getPropertyValue('border-color');
-
- /** Sets the value of "border-color" */
- set borderColor(String value) {
- setProperty('border-color', value, '');
- }
-
- /** Gets the value of "border-end" */
- String get borderEnd =>
- getPropertyValue('border-end');
-
- /** Sets the value of "border-end" */
- set borderEnd(String value) {
- setProperty('border-end', value, '');
- }
-
- /** Gets the value of "border-end-color" */
- String get borderEndColor =>
- getPropertyValue('border-end-color');
-
- /** Sets the value of "border-end-color" */
- set borderEndColor(String value) {
- setProperty('border-end-color', value, '');
- }
-
- /** Gets the value of "border-end-style" */
- String get borderEndStyle =>
- getPropertyValue('border-end-style');
-
- /** Sets the value of "border-end-style" */
- set borderEndStyle(String value) {
- setProperty('border-end-style', value, '');
- }
-
- /** Gets the value of "border-end-width" */
- String get borderEndWidth =>
- getPropertyValue('border-end-width');
-
- /** Sets the value of "border-end-width" */
- set borderEndWidth(String value) {
- setProperty('border-end-width', value, '');
- }
-
- /** Gets the value of "border-fit" */
- String get borderFit =>
- getPropertyValue('border-fit');
-
- /** Sets the value of "border-fit" */
- set borderFit(String value) {
- setProperty('border-fit', value, '');
- }
-
- /** Gets the value of "border-horizontal-spacing" */
- String get borderHorizontalSpacing =>
- getPropertyValue('border-horizontal-spacing');
-
- /** Sets the value of "border-horizontal-spacing" */
- set borderHorizontalSpacing(String value) {
- setProperty('border-horizontal-spacing', value, '');
- }
-
- /** Gets the value of "border-image" */
- String get borderImage =>
- getPropertyValue('border-image');
-
- /** Sets the value of "border-image" */
- set borderImage(String value) {
- setProperty('border-image', value, '');
- }
-
- /** Gets the value of "border-image-outset" */
- String get borderImageOutset =>
- getPropertyValue('border-image-outset');
-
- /** Sets the value of "border-image-outset" */
- set borderImageOutset(String value) {
- setProperty('border-image-outset', value, '');
- }
-
- /** Gets the value of "border-image-repeat" */
- String get borderImageRepeat =>
- getPropertyValue('border-image-repeat');
-
- /** Sets the value of "border-image-repeat" */
- set borderImageRepeat(String value) {
- setProperty('border-image-repeat', value, '');
- }
-
- /** Gets the value of "border-image-slice" */
- String get borderImageSlice =>
- getPropertyValue('border-image-slice');
-
- /** Sets the value of "border-image-slice" */
- set borderImageSlice(String value) {
- setProperty('border-image-slice', value, '');
- }
-
- /** Gets the value of "border-image-source" */
- String get borderImageSource =>
- getPropertyValue('border-image-source');
-
- /** Sets the value of "border-image-source" */
- set borderImageSource(String value) {
- setProperty('border-image-source', value, '');
- }
-
- /** Gets the value of "border-image-width" */
- String get borderImageWidth =>
- getPropertyValue('border-image-width');
-
- /** Sets the value of "border-image-width" */
- set borderImageWidth(String value) {
- setProperty('border-image-width', value, '');
- }
-
- /** Gets the value of "border-left" */
- String get borderLeft =>
- getPropertyValue('border-left');
-
- /** Sets the value of "border-left" */
- set borderLeft(String value) {
- setProperty('border-left', value, '');
- }
-
- /** Gets the value of "border-left-color" */
- String get borderLeftColor =>
- getPropertyValue('border-left-color');
-
- /** Sets the value of "border-left-color" */
- set borderLeftColor(String value) {
- setProperty('border-left-color', value, '');
- }
-
- /** Gets the value of "border-left-style" */
- String get borderLeftStyle =>
- getPropertyValue('border-left-style');
-
- /** Sets the value of "border-left-style" */
- set borderLeftStyle(String value) {
- setProperty('border-left-style', value, '');
- }
-
- /** Gets the value of "border-left-width" */
- String get borderLeftWidth =>
- getPropertyValue('border-left-width');
-
- /** Sets the value of "border-left-width" */
- set borderLeftWidth(String value) {
- setProperty('border-left-width', value, '');
- }
-
- /** Gets the value of "border-radius" */
- String get borderRadius =>
- getPropertyValue('border-radius');
-
- /** Sets the value of "border-radius" */
- set borderRadius(String value) {
- setProperty('border-radius', value, '');
- }
-
- /** Gets the value of "border-right" */
- String get borderRight =>
- getPropertyValue('border-right');
-
- /** Sets the value of "border-right" */
- set borderRight(String value) {
- setProperty('border-right', value, '');
- }
-
- /** Gets the value of "border-right-color" */
- String get borderRightColor =>
- getPropertyValue('border-right-color');
-
- /** Sets the value of "border-right-color" */
- set borderRightColor(String value) {
- setProperty('border-right-color', value, '');
- }
-
- /** Gets the value of "border-right-style" */
- String get borderRightStyle =>
- getPropertyValue('border-right-style');
-
- /** Sets the value of "border-right-style" */
- set borderRightStyle(String value) {
- setProperty('border-right-style', value, '');
- }
-
- /** Gets the value of "border-right-width" */
- String get borderRightWidth =>
- getPropertyValue('border-right-width');
-
- /** Sets the value of "border-right-width" */
- set borderRightWidth(String value) {
- setProperty('border-right-width', value, '');
- }
-
- /** Gets the value of "border-spacing" */
- String get borderSpacing =>
- getPropertyValue('border-spacing');
-
- /** Sets the value of "border-spacing" */
- set borderSpacing(String value) {
- setProperty('border-spacing', value, '');
- }
-
- /** Gets the value of "border-start" */
- String get borderStart =>
- getPropertyValue('border-start');
-
- /** Sets the value of "border-start" */
- set borderStart(String value) {
- setProperty('border-start', value, '');
- }
-
- /** Gets the value of "border-start-color" */
- String get borderStartColor =>
- getPropertyValue('border-start-color');
-
- /** Sets the value of "border-start-color" */
- set borderStartColor(String value) {
- setProperty('border-start-color', value, '');
- }
-
- /** Gets the value of "border-start-style" */
- String get borderStartStyle =>
- getPropertyValue('border-start-style');
-
- /** Sets the value of "border-start-style" */
- set borderStartStyle(String value) {
- setProperty('border-start-style', value, '');
- }
-
- /** Gets the value of "border-start-width" */
- String get borderStartWidth =>
- getPropertyValue('border-start-width');
-
- /** Sets the value of "border-start-width" */
- set borderStartWidth(String value) {
- setProperty('border-start-width', value, '');
- }
-
- /** Gets the value of "border-style" */
- String get borderStyle =>
- getPropertyValue('border-style');
-
- /** Sets the value of "border-style" */
- set borderStyle(String value) {
- setProperty('border-style', value, '');
- }
-
- /** Gets the value of "border-top" */
- String get borderTop =>
- getPropertyValue('border-top');
-
- /** Sets the value of "border-top" */
- set borderTop(String value) {
- setProperty('border-top', value, '');
- }
-
- /** Gets the value of "border-top-color" */
- String get borderTopColor =>
- getPropertyValue('border-top-color');
-
- /** Sets the value of "border-top-color" */
- set borderTopColor(String value) {
- setProperty('border-top-color', value, '');
- }
-
- /** Gets the value of "border-top-left-radius" */
- String get borderTopLeftRadius =>
- getPropertyValue('border-top-left-radius');
-
- /** Sets the value of "border-top-left-radius" */
- set borderTopLeftRadius(String value) {
- setProperty('border-top-left-radius', value, '');
- }
-
- /** Gets the value of "border-top-right-radius" */
- String get borderTopRightRadius =>
- getPropertyValue('border-top-right-radius');
-
- /** Sets the value of "border-top-right-radius" */
- set borderTopRightRadius(String value) {
- setProperty('border-top-right-radius', value, '');
- }
-
- /** Gets the value of "border-top-style" */
- String get borderTopStyle =>
- getPropertyValue('border-top-style');
-
- /** Sets the value of "border-top-style" */
- set borderTopStyle(String value) {
- setProperty('border-top-style', value, '');
- }
-
- /** Gets the value of "border-top-width" */
- String get borderTopWidth =>
- getPropertyValue('border-top-width');
-
- /** Sets the value of "border-top-width" */
- set borderTopWidth(String value) {
- setProperty('border-top-width', value, '');
- }
-
- /** Gets the value of "border-vertical-spacing" */
- String get borderVerticalSpacing =>
- getPropertyValue('border-vertical-spacing');
-
- /** Sets the value of "border-vertical-spacing" */
- set borderVerticalSpacing(String value) {
- setProperty('border-vertical-spacing', value, '');
- }
-
- /** Gets the value of "border-width" */
- String get borderWidth =>
- getPropertyValue('border-width');
-
- /** Sets the value of "border-width" */
- set borderWidth(String value) {
- setProperty('border-width', value, '');
- }
-
- /** Gets the value of "bottom" */
- String get bottom =>
- getPropertyValue('bottom');
-
- /** Sets the value of "bottom" */
- set bottom(String value) {
- setProperty('bottom', value, '');
- }
-
- /** Gets the value of "box-align" */
- String get boxAlign =>
- getPropertyValue('box-align');
-
- /** Sets the value of "box-align" */
- set boxAlign(String value) {
- setProperty('box-align', value, '');
- }
-
- /** Gets the value of "box-decoration-break" */
- String get boxDecorationBreak =>
- getPropertyValue('box-decoration-break');
-
- /** Sets the value of "box-decoration-break" */
- set boxDecorationBreak(String value) {
- setProperty('box-decoration-break', value, '');
- }
-
- /** Gets the value of "box-direction" */
- String get boxDirection =>
- getPropertyValue('box-direction');
-
- /** Sets the value of "box-direction" */
- set boxDirection(String value) {
- setProperty('box-direction', value, '');
- }
-
- /** Gets the value of "box-flex" */
- String get boxFlex =>
- getPropertyValue('box-flex');
-
- /** Sets the value of "box-flex" */
- set boxFlex(String value) {
- setProperty('box-flex', value, '');
- }
-
- /** Gets the value of "box-flex-group" */
- String get boxFlexGroup =>
- getPropertyValue('box-flex-group');
-
- /** Sets the value of "box-flex-group" */
- set boxFlexGroup(String value) {
- setProperty('box-flex-group', value, '');
- }
-
- /** Gets the value of "box-lines" */
- String get boxLines =>
- getPropertyValue('box-lines');
-
- /** Sets the value of "box-lines" */
- set boxLines(String value) {
- setProperty('box-lines', value, '');
- }
-
- /** Gets the value of "box-ordinal-group" */
- String get boxOrdinalGroup =>
- getPropertyValue('box-ordinal-group');
-
- /** Sets the value of "box-ordinal-group" */
- set boxOrdinalGroup(String value) {
- setProperty('box-ordinal-group', value, '');
- }
-
- /** Gets the value of "box-orient" */
- String get boxOrient =>
- getPropertyValue('box-orient');
-
- /** Sets the value of "box-orient" */
- set boxOrient(String value) {
- setProperty('box-orient', value, '');
- }
-
- /** Gets the value of "box-pack" */
- String get boxPack =>
- getPropertyValue('box-pack');
-
- /** Sets the value of "box-pack" */
- set boxPack(String value) {
- setProperty('box-pack', value, '');
- }
-
- /** Gets the value of "box-reflect" */
- String get boxReflect =>
- getPropertyValue('box-reflect');
-
- /** Sets the value of "box-reflect" */
- set boxReflect(String value) {
- setProperty('box-reflect', value, '');
- }
-
- /** Gets the value of "box-shadow" */
- String get boxShadow =>
- getPropertyValue('box-shadow');
-
- /** Sets the value of "box-shadow" */
- set boxShadow(String value) {
- setProperty('box-shadow', value, '');
- }
-
- /** Gets the value of "box-sizing" */
- String get boxSizing =>
- getPropertyValue('box-sizing');
-
- /** Sets the value of "box-sizing" */
- set boxSizing(String value) {
- setProperty('box-sizing', value, '');
- }
-
- /** Gets the value of "caption-side" */
- String get captionSide =>
- getPropertyValue('caption-side');
-
- /** Sets the value of "caption-side" */
- set captionSide(String value) {
- setProperty('caption-side', value, '');
- }
-
- /** Gets the value of "clear" */
- String get clear =>
- getPropertyValue('clear');
-
- /** Sets the value of "clear" */
- set clear(String value) {
- setProperty('clear', value, '');
- }
-
- /** Gets the value of "clip" */
- String get clip =>
- getPropertyValue('clip');
-
- /** Sets the value of "clip" */
- set clip(String value) {
- setProperty('clip', value, '');
- }
-
- /** Gets the value of "clip-path" */
- String get clipPath =>
- getPropertyValue('clip-path');
-
- /** Sets the value of "clip-path" */
- set clipPath(String value) {
- setProperty('clip-path', value, '');
- }
-
- /** Gets the value of "color" */
- String get color =>
- getPropertyValue('color');
-
- /** Sets the value of "color" */
- set color(String value) {
- setProperty('color', value, '');
- }
-
- /** Gets the value of "column-break-after" */
- String get columnBreakAfter =>
- getPropertyValue('column-break-after');
-
- /** Sets the value of "column-break-after" */
- set columnBreakAfter(String value) {
- setProperty('column-break-after', value, '');
- }
-
- /** Gets the value of "column-break-before" */
- String get columnBreakBefore =>
- getPropertyValue('column-break-before');
-
- /** Sets the value of "column-break-before" */
- set columnBreakBefore(String value) {
- setProperty('column-break-before', value, '');
- }
-
- /** Gets the value of "column-break-inside" */
- String get columnBreakInside =>
- getPropertyValue('column-break-inside');
-
- /** Sets the value of "column-break-inside" */
- set columnBreakInside(String value) {
- setProperty('column-break-inside', value, '');
- }
-
- /** Gets the value of "column-count" */
- String get columnCount =>
- getPropertyValue('column-count');
-
- /** Sets the value of "column-count" */
- set columnCount(String value) {
- setProperty('column-count', value, '');
- }
-
- /** Gets the value of "column-fill" */
- String get columnFill =>
- getPropertyValue('column-fill');
-
- /** Sets the value of "column-fill" */
- set columnFill(String value) {
- setProperty('column-fill', value, '');
- }
-
- /** Gets the value of "column-gap" */
- String get columnGap =>
- getPropertyValue('column-gap');
-
- /** Sets the value of "column-gap" */
- set columnGap(String value) {
- setProperty('column-gap', value, '');
- }
-
- /** Gets the value of "column-rule" */
- String get columnRule =>
- getPropertyValue('column-rule');
-
- /** Sets the value of "column-rule" */
- set columnRule(String value) {
- setProperty('column-rule', value, '');
- }
-
- /** Gets the value of "column-rule-color" */
- String get columnRuleColor =>
- getPropertyValue('column-rule-color');
-
- /** Sets the value of "column-rule-color" */
- set columnRuleColor(String value) {
- setProperty('column-rule-color', value, '');
- }
-
- /** Gets the value of "column-rule-style" */
- String get columnRuleStyle =>
- getPropertyValue('column-rule-style');
-
- /** Sets the value of "column-rule-style" */
- set columnRuleStyle(String value) {
- setProperty('column-rule-style', value, '');
- }
-
- /** Gets the value of "column-rule-width" */
- String get columnRuleWidth =>
- getPropertyValue('column-rule-width');
-
- /** Sets the value of "column-rule-width" */
- set columnRuleWidth(String value) {
- setProperty('column-rule-width', value, '');
- }
-
- /** Gets the value of "column-span" */
- String get columnSpan =>
- getPropertyValue('column-span');
-
- /** Sets the value of "column-span" */
- set columnSpan(String value) {
- setProperty('column-span', value, '');
- }
-
- /** Gets the value of "column-width" */
- String get columnWidth =>
- getPropertyValue('column-width');
-
- /** Sets the value of "column-width" */
- set columnWidth(String value) {
- setProperty('column-width', value, '');
- }
-
- /** Gets the value of "columns" */
- String get columns =>
- getPropertyValue('columns');
-
- /** Sets the value of "columns" */
- set columns(String value) {
- setProperty('columns', value, '');
- }
-
- /** Gets the value of "content" */
- String get content =>
- getPropertyValue('content');
-
- /** Sets the value of "content" */
- set content(String value) {
- setProperty('content', value, '');
- }
-
- /** Gets the value of "counter-increment" */
- String get counterIncrement =>
- getPropertyValue('counter-increment');
-
- /** Sets the value of "counter-increment" */
- set counterIncrement(String value) {
- setProperty('counter-increment', value, '');
- }
-
- /** Gets the value of "counter-reset" */
- String get counterReset =>
- getPropertyValue('counter-reset');
-
- /** Sets the value of "counter-reset" */
- set counterReset(String value) {
- setProperty('counter-reset', value, '');
- }
-
- /** Gets the value of "cursor" */
- String get cursor =>
- getPropertyValue('cursor');
-
- /** Sets the value of "cursor" */
- set cursor(String value) {
- setProperty('cursor', value, '');
- }
-
- /** Gets the value of "direction" */
- String get direction =>
- getPropertyValue('direction');
-
- /** Sets the value of "direction" */
- set direction(String value) {
- setProperty('direction', value, '');
- }
-
- /** Gets the value of "display" */
- String get display =>
- getPropertyValue('display');
-
- /** Sets the value of "display" */
- set display(String value) {
- setProperty('display', value, '');
- }
-
- /** Gets the value of "empty-cells" */
- String get emptyCells =>
- getPropertyValue('empty-cells');
-
- /** Sets the value of "empty-cells" */
- set emptyCells(String value) {
- setProperty('empty-cells', value, '');
- }
-
- /** Gets the value of "filter" */
- String get filter =>
- getPropertyValue('filter');
-
- /** Sets the value of "filter" */
- set filter(String value) {
- setProperty('filter', value, '');
- }
-
- /** Gets the value of "flex" */
- String get flex =>
- getPropertyValue('flex');
-
- /** Sets the value of "flex" */
- set flex(String value) {
- setProperty('flex', value, '');
- }
-
- /** Gets the value of "flex-basis" */
- String get flexBasis =>
- getPropertyValue('flex-basis');
-
- /** Sets the value of "flex-basis" */
- set flexBasis(String value) {
- setProperty('flex-basis', value, '');
- }
-
- /** Gets the value of "flex-direction" */
- String get flexDirection =>
- getPropertyValue('flex-direction');
-
- /** Sets the value of "flex-direction" */
- set flexDirection(String value) {
- setProperty('flex-direction', value, '');
- }
-
- /** Gets the value of "flex-flow" */
- String get flexFlow =>
- getPropertyValue('flex-flow');
-
- /** Sets the value of "flex-flow" */
- set flexFlow(String value) {
- setProperty('flex-flow', value, '');
- }
-
- /** Gets the value of "flex-grow" */
- String get flexGrow =>
- getPropertyValue('flex-grow');
-
- /** Sets the value of "flex-grow" */
- set flexGrow(String value) {
- setProperty('flex-grow', value, '');
- }
-
- /** Gets the value of "flex-shrink" */
- String get flexShrink =>
- getPropertyValue('flex-shrink');
-
- /** Sets the value of "flex-shrink" */
- set flexShrink(String value) {
- setProperty('flex-shrink', value, '');
- }
-
- /** Gets the value of "flex-wrap" */
- String get flexWrap =>
- getPropertyValue('flex-wrap');
-
- /** Sets the value of "flex-wrap" */
- set flexWrap(String value) {
- setProperty('flex-wrap', value, '');
- }
-
- /** Gets the value of "float" */
- String get float =>
- getPropertyValue('float');
-
- /** Sets the value of "float" */
- set float(String value) {
- setProperty('float', value, '');
- }
-
- /** Gets the value of "font" */
- String get font =>
- getPropertyValue('font');
-
- /** Sets the value of "font" */
- set font(String value) {
- setProperty('font', value, '');
- }
-
- /** Gets the value of "font-family" */
- String get fontFamily =>
- getPropertyValue('font-family');
-
- /** Sets the value of "font-family" */
- set fontFamily(String value) {
- setProperty('font-family', value, '');
- }
-
- /** Gets the value of "font-feature-settings" */
- String get fontFeatureSettings =>
- getPropertyValue('font-feature-settings');
-
- /** Sets the value of "font-feature-settings" */
- set fontFeatureSettings(String value) {
- setProperty('font-feature-settings', value, '');
- }
-
- /** Gets the value of "font-kerning" */
- String get fontKerning =>
- getPropertyValue('font-kerning');
-
- /** Sets the value of "font-kerning" */
- set fontKerning(String value) {
- setProperty('font-kerning', value, '');
- }
-
- /** Gets the value of "font-size" */
- String get fontSize =>
- getPropertyValue('font-size');
-
- /** Sets the value of "font-size" */
- set fontSize(String value) {
- setProperty('font-size', value, '');
- }
-
- /** Gets the value of "font-size-delta" */
- String get fontSizeDelta =>
- getPropertyValue('font-size-delta');
-
- /** Sets the value of "font-size-delta" */
- set fontSizeDelta(String value) {
- setProperty('font-size-delta', value, '');
- }
-
- /** Gets the value of "font-smoothing" */
- String get fontSmoothing =>
- getPropertyValue('font-smoothing');
-
- /** Sets the value of "font-smoothing" */
- set fontSmoothing(String value) {
- setProperty('font-smoothing', value, '');
- }
-
- /** Gets the value of "font-stretch" */
- String get fontStretch =>
- getPropertyValue('font-stretch');
-
- /** Sets the value of "font-stretch" */
- set fontStretch(String value) {
- setProperty('font-stretch', value, '');
- }
-
- /** Gets the value of "font-style" */
- String get fontStyle =>
- getPropertyValue('font-style');
-
- /** Sets the value of "font-style" */
- set fontStyle(String value) {
- setProperty('font-style', value, '');
- }
-
- /** Gets the value of "font-variant" */
- String get fontVariant =>
- getPropertyValue('font-variant');
-
- /** Sets the value of "font-variant" */
- set fontVariant(String value) {
- setProperty('font-variant', value, '');
- }
-
- /** Gets the value of "font-variant-ligatures" */
- String get fontVariantLigatures =>
- getPropertyValue('font-variant-ligatures');
-
- /** Sets the value of "font-variant-ligatures" */
- set fontVariantLigatures(String value) {
- setProperty('font-variant-ligatures', value, '');
- }
-
- /** Gets the value of "font-weight" */
- String get fontWeight =>
- getPropertyValue('font-weight');
-
- /** Sets the value of "font-weight" */
- set fontWeight(String value) {
- setProperty('font-weight', value, '');
- }
-
- /** Gets the value of "grid" */
- String get grid =>
- getPropertyValue('grid');
-
- /** Sets the value of "grid" */
- set grid(String value) {
- setProperty('grid', value, '');
- }
-
- /** Gets the value of "grid-area" */
- String get gridArea =>
- getPropertyValue('grid-area');
-
- /** Sets the value of "grid-area" */
- set gridArea(String value) {
- setProperty('grid-area', value, '');
- }
-
- /** Gets the value of "grid-auto-columns" */
- String get gridAutoColumns =>
- getPropertyValue('grid-auto-columns');
-
- /** Sets the value of "grid-auto-columns" */
- set gridAutoColumns(String value) {
- setProperty('grid-auto-columns', value, '');
- }
-
- /** Gets the value of "grid-auto-flow" */
- String get gridAutoFlow =>
- getPropertyValue('grid-auto-flow');
-
- /** Sets the value of "grid-auto-flow" */
- set gridAutoFlow(String value) {
- setProperty('grid-auto-flow', value, '');
- }
-
- /** Gets the value of "grid-auto-rows" */
- String get gridAutoRows =>
- getPropertyValue('grid-auto-rows');
-
- /** Sets the value of "grid-auto-rows" */
- set gridAutoRows(String value) {
- setProperty('grid-auto-rows', value, '');
- }
-
- /** Gets the value of "grid-column" */
- String get gridColumn =>
- getPropertyValue('grid-column');
-
- /** Sets the value of "grid-column" */
- set gridColumn(String value) {
- setProperty('grid-column', value, '');
- }
-
- /** Gets the value of "grid-column-end" */
- String get gridColumnEnd =>
- getPropertyValue('grid-column-end');
-
- /** Sets the value of "grid-column-end" */
- set gridColumnEnd(String value) {
- setProperty('grid-column-end', value, '');
- }
-
- /** Gets the value of "grid-column-start" */
- String get gridColumnStart =>
- getPropertyValue('grid-column-start');
-
- /** Sets the value of "grid-column-start" */
- set gridColumnStart(String value) {
- setProperty('grid-column-start', value, '');
- }
-
- /** Gets the value of "grid-row" */
- String get gridRow =>
- getPropertyValue('grid-row');
-
- /** Sets the value of "grid-row" */
- set gridRow(String value) {
- setProperty('grid-row', value, '');
- }
-
- /** Gets the value of "grid-row-end" */
- String get gridRowEnd =>
- getPropertyValue('grid-row-end');
-
- /** Sets the value of "grid-row-end" */
- set gridRowEnd(String value) {
- setProperty('grid-row-end', value, '');
- }
-
- /** Gets the value of "grid-row-start" */
- String get gridRowStart =>
- getPropertyValue('grid-row-start');
-
- /** Sets the value of "grid-row-start" */
- set gridRowStart(String value) {
- setProperty('grid-row-start', value, '');
- }
-
- /** Gets the value of "grid-template" */
- String get gridTemplate =>
- getPropertyValue('grid-template');
-
- /** Sets the value of "grid-template" */
- set gridTemplate(String value) {
- setProperty('grid-template', value, '');
- }
-
- /** Gets the value of "grid-template-areas" */
- String get gridTemplateAreas =>
- getPropertyValue('grid-template-areas');
-
- /** Sets the value of "grid-template-areas" */
- set gridTemplateAreas(String value) {
- setProperty('grid-template-areas', value, '');
- }
-
- /** Gets the value of "grid-template-columns" */
- String get gridTemplateColumns =>
- getPropertyValue('grid-template-columns');
-
- /** Sets the value of "grid-template-columns" */
- set gridTemplateColumns(String value) {
- setProperty('grid-template-columns', value, '');
- }
-
- /** Gets the value of "grid-template-rows" */
- String get gridTemplateRows =>
- getPropertyValue('grid-template-rows');
-
- /** Sets the value of "grid-template-rows" */
- set gridTemplateRows(String value) {
- setProperty('grid-template-rows', value, '');
- }
-
- /** Gets the value of "height" */
- String get height =>
- getPropertyValue('height');
-
- /** Sets the value of "height" */
- set height(String value) {
- setProperty('height', value, '');
- }
-
- /** Gets the value of "highlight" */
- String get highlight =>
- getPropertyValue('highlight');
-
- /** Sets the value of "highlight" */
- set highlight(String value) {
- setProperty('highlight', value, '');
- }
-
- /** Gets the value of "hyphenate-character" */
- String get hyphenateCharacter =>
- getPropertyValue('hyphenate-character');
-
- /** Sets the value of "hyphenate-character" */
- set hyphenateCharacter(String value) {
- setProperty('hyphenate-character', value, '');
- }
-
- /** Gets the value of "image-rendering" */
- String get imageRendering =>
- getPropertyValue('image-rendering');
-
- /** Sets the value of "image-rendering" */
- set imageRendering(String value) {
- setProperty('image-rendering', value, '');
- }
-
- /** Gets the value of "isolation" */
- String get isolation =>
- getPropertyValue('isolation');
-
- /** Sets the value of "isolation" */
- set isolation(String value) {
- setProperty('isolation', value, '');
- }
-
- /** Gets the value of "justify-content" */
- String get justifyContent =>
- getPropertyValue('justify-content');
-
- /** Sets the value of "justify-content" */
- set justifyContent(String value) {
- setProperty('justify-content', value, '');
- }
-
- /** Gets the value of "justify-self" */
- String get justifySelf =>
- getPropertyValue('justify-self');
-
- /** Sets the value of "justify-self" */
- set justifySelf(String value) {
- setProperty('justify-self', value, '');
- }
-
- /** Gets the value of "left" */
- String get left =>
- getPropertyValue('left');
-
- /** Sets the value of "left" */
- set left(String value) {
- setProperty('left', value, '');
- }
-
- /** Gets the value of "letter-spacing" */
- String get letterSpacing =>
- getPropertyValue('letter-spacing');
-
- /** Sets the value of "letter-spacing" */
- set letterSpacing(String value) {
- setProperty('letter-spacing', value, '');
- }
-
- /** Gets the value of "line-box-contain" */
- String get lineBoxContain =>
- getPropertyValue('line-box-contain');
-
- /** Sets the value of "line-box-contain" */
- set lineBoxContain(String value) {
- setProperty('line-box-contain', value, '');
- }
-
- /** Gets the value of "line-break" */
- String get lineBreak =>
- getPropertyValue('line-break');
-
- /** Sets the value of "line-break" */
- set lineBreak(String value) {
- setProperty('line-break', value, '');
- }
-
- /** Gets the value of "line-clamp" */
- String get lineClamp =>
- getPropertyValue('line-clamp');
-
- /** Sets the value of "line-clamp" */
- set lineClamp(String value) {
- setProperty('line-clamp', value, '');
- }
-
- /** Gets the value of "line-height" */
- String get lineHeight =>
- getPropertyValue('line-height');
-
- /** Sets the value of "line-height" */
- set lineHeight(String value) {
- setProperty('line-height', value, '');
- }
-
- /** Gets the value of "list-style" */
- String get listStyle =>
- getPropertyValue('list-style');
-
- /** Sets the value of "list-style" */
- set listStyle(String value) {
- setProperty('list-style', value, '');
- }
-
- /** Gets the value of "list-style-image" */
- String get listStyleImage =>
- getPropertyValue('list-style-image');
-
- /** Sets the value of "list-style-image" */
- set listStyleImage(String value) {
- setProperty('list-style-image', value, '');
- }
-
- /** Gets the value of "list-style-position" */
- String get listStylePosition =>
- getPropertyValue('list-style-position');
-
- /** Sets the value of "list-style-position" */
- set listStylePosition(String value) {
- setProperty('list-style-position', value, '');
- }
-
- /** Gets the value of "list-style-type" */
- String get listStyleType =>
- getPropertyValue('list-style-type');
-
- /** Sets the value of "list-style-type" */
- set listStyleType(String value) {
- setProperty('list-style-type', value, '');
- }
-
- /** Gets the value of "locale" */
- String get locale =>
- getPropertyValue('locale');
-
- /** Sets the value of "locale" */
- set locale(String value) {
- setProperty('locale', value, '');
- }
-
- /** Gets the value of "logical-height" */
- String get logicalHeight =>
- getPropertyValue('logical-height');
-
- /** Sets the value of "logical-height" */
- set logicalHeight(String value) {
- setProperty('logical-height', value, '');
- }
-
- /** Gets the value of "logical-width" */
- String get logicalWidth =>
- getPropertyValue('logical-width');
-
- /** Sets the value of "logical-width" */
- set logicalWidth(String value) {
- setProperty('logical-width', value, '');
- }
-
- /** Gets the value of "margin" */
- String get margin =>
- getPropertyValue('margin');
-
- /** Sets the value of "margin" */
- set margin(String value) {
- setProperty('margin', value, '');
- }
-
- /** Gets the value of "margin-after" */
- String get marginAfter =>
- getPropertyValue('margin-after');
-
- /** Sets the value of "margin-after" */
- set marginAfter(String value) {
- setProperty('margin-after', value, '');
- }
-
- /** Gets the value of "margin-after-collapse" */
- String get marginAfterCollapse =>
- getPropertyValue('margin-after-collapse');
-
- /** Sets the value of "margin-after-collapse" */
- set marginAfterCollapse(String value) {
- setProperty('margin-after-collapse', value, '');
- }
-
- /** Gets the value of "margin-before" */
- String get marginBefore =>
- getPropertyValue('margin-before');
-
- /** Sets the value of "margin-before" */
- set marginBefore(String value) {
- setProperty('margin-before', value, '');
- }
-
- /** Gets the value of "margin-before-collapse" */
- String get marginBeforeCollapse =>
- getPropertyValue('margin-before-collapse');
-
- /** Sets the value of "margin-before-collapse" */
- set marginBeforeCollapse(String value) {
- setProperty('margin-before-collapse', value, '');
- }
-
- /** Gets the value of "margin-bottom" */
- String get marginBottom =>
- getPropertyValue('margin-bottom');
-
- /** Sets the value of "margin-bottom" */
- set marginBottom(String value) {
- setProperty('margin-bottom', value, '');
- }
-
- /** Gets the value of "margin-bottom-collapse" */
- String get marginBottomCollapse =>
- getPropertyValue('margin-bottom-collapse');
-
- /** Sets the value of "margin-bottom-collapse" */
- set marginBottomCollapse(String value) {
- setProperty('margin-bottom-collapse', value, '');
- }
-
- /** Gets the value of "margin-collapse" */
- String get marginCollapse =>
- getPropertyValue('margin-collapse');
-
- /** Sets the value of "margin-collapse" */
- set marginCollapse(String value) {
- setProperty('margin-collapse', value, '');
- }
-
- /** Gets the value of "margin-end" */
- String get marginEnd =>
- getPropertyValue('margin-end');
-
- /** Sets the value of "margin-end" */
- set marginEnd(String value) {
- setProperty('margin-end', value, '');
- }
-
- /** Gets the value of "margin-left" */
- String get marginLeft =>
- getPropertyValue('margin-left');
-
- /** Sets the value of "margin-left" */
- set marginLeft(String value) {
- setProperty('margin-left', value, '');
- }
-
- /** Gets the value of "margin-right" */
- String get marginRight =>
- getPropertyValue('margin-right');
-
- /** Sets the value of "margin-right" */
- set marginRight(String value) {
- setProperty('margin-right', value, '');
- }
-
- /** Gets the value of "margin-start" */
- String get marginStart =>
- getPropertyValue('margin-start');
-
- /** Sets the value of "margin-start" */
- set marginStart(String value) {
- setProperty('margin-start', value, '');
- }
-
- /** Gets the value of "margin-top" */
- String get marginTop =>
- getPropertyValue('margin-top');
-
- /** Sets the value of "margin-top" */
- set marginTop(String value) {
- setProperty('margin-top', value, '');
- }
-
- /** Gets the value of "margin-top-collapse" */
- String get marginTopCollapse =>
- getPropertyValue('margin-top-collapse');
-
- /** Sets the value of "margin-top-collapse" */
- set marginTopCollapse(String value) {
- setProperty('margin-top-collapse', value, '');
- }
-
- /** Gets the value of "mask" */
- String get mask =>
- getPropertyValue('mask');
-
- /** Sets the value of "mask" */
- set mask(String value) {
- setProperty('mask', value, '');
- }
-
- /** Gets the value of "mask-box-image" */
- String get maskBoxImage =>
- getPropertyValue('mask-box-image');
-
- /** Sets the value of "mask-box-image" */
- set maskBoxImage(String value) {
- setProperty('mask-box-image', value, '');
- }
-
- /** Gets the value of "mask-box-image-outset" */
- String get maskBoxImageOutset =>
- getPropertyValue('mask-box-image-outset');
-
- /** Sets the value of "mask-box-image-outset" */
- set maskBoxImageOutset(String value) {
- setProperty('mask-box-image-outset', value, '');
- }
-
- /** Gets the value of "mask-box-image-repeat" */
- String get maskBoxImageRepeat =>
- getPropertyValue('mask-box-image-repeat');
-
- /** Sets the value of "mask-box-image-repeat" */
- set maskBoxImageRepeat(String value) {
- setProperty('mask-box-image-repeat', value, '');
- }
-
- /** Gets the value of "mask-box-image-slice" */
- String get maskBoxImageSlice =>
- getPropertyValue('mask-box-image-slice');
-
- /** Sets the value of "mask-box-image-slice" */
- set maskBoxImageSlice(String value) {
- setProperty('mask-box-image-slice', value, '');
- }
-
- /** Gets the value of "mask-box-image-source" */
- String get maskBoxImageSource =>
- getPropertyValue('mask-box-image-source');
-
- /** Sets the value of "mask-box-image-source" */
- set maskBoxImageSource(String value) {
- setProperty('mask-box-image-source', value, '');
- }
-
- /** Gets the value of "mask-box-image-width" */
- String get maskBoxImageWidth =>
- getPropertyValue('mask-box-image-width');
-
- /** Sets the value of "mask-box-image-width" */
- set maskBoxImageWidth(String value) {
- setProperty('mask-box-image-width', value, '');
- }
-
- /** Gets the value of "mask-clip" */
- String get maskClip =>
- getPropertyValue('mask-clip');
-
- /** Sets the value of "mask-clip" */
- set maskClip(String value) {
- setProperty('mask-clip', value, '');
- }
-
- /** Gets the value of "mask-composite" */
- String get maskComposite =>
- getPropertyValue('mask-composite');
-
- /** Sets the value of "mask-composite" */
- set maskComposite(String value) {
- setProperty('mask-composite', value, '');
- }
-
- /** Gets the value of "mask-image" */
- String get maskImage =>
- getPropertyValue('mask-image');
-
- /** Sets the value of "mask-image" */
- set maskImage(String value) {
- setProperty('mask-image', value, '');
- }
-
- /** Gets the value of "mask-origin" */
- String get maskOrigin =>
- getPropertyValue('mask-origin');
-
- /** Sets the value of "mask-origin" */
- set maskOrigin(String value) {
- setProperty('mask-origin', value, '');
- }
-
- /** Gets the value of "mask-position" */
- String get maskPosition =>
- getPropertyValue('mask-position');
-
- /** Sets the value of "mask-position" */
- set maskPosition(String value) {
- setProperty('mask-position', value, '');
- }
-
- /** Gets the value of "mask-position-x" */
- String get maskPositionX =>
- getPropertyValue('mask-position-x');
-
- /** Sets the value of "mask-position-x" */
- set maskPositionX(String value) {
- setProperty('mask-position-x', value, '');
- }
-
- /** Gets the value of "mask-position-y" */
- String get maskPositionY =>
- getPropertyValue('mask-position-y');
-
- /** Sets the value of "mask-position-y" */
- set maskPositionY(String value) {
- setProperty('mask-position-y', value, '');
- }
-
- /** Gets the value of "mask-repeat" */
- String get maskRepeat =>
- getPropertyValue('mask-repeat');
-
- /** Sets the value of "mask-repeat" */
- set maskRepeat(String value) {
- setProperty('mask-repeat', value, '');
- }
-
- /** Gets the value of "mask-repeat-x" */
- String get maskRepeatX =>
- getPropertyValue('mask-repeat-x');
-
- /** Sets the value of "mask-repeat-x" */
- set maskRepeatX(String value) {
- setProperty('mask-repeat-x', value, '');
- }
-
- /** Gets the value of "mask-repeat-y" */
- String get maskRepeatY =>
- getPropertyValue('mask-repeat-y');
-
- /** Sets the value of "mask-repeat-y" */
- set maskRepeatY(String value) {
- setProperty('mask-repeat-y', value, '');
- }
-
- /** Gets the value of "mask-size" */
- String get maskSize =>
- getPropertyValue('mask-size');
-
- /** Sets the value of "mask-size" */
- set maskSize(String value) {
- setProperty('mask-size', value, '');
- }
-
- /** Gets the value of "mask-source-type" */
- String get maskSourceType =>
- getPropertyValue('mask-source-type');
-
- /** Sets the value of "mask-source-type" */
- set maskSourceType(String value) {
- setProperty('mask-source-type', value, '');
- }
-
- /** Gets the value of "max-height" */
- String get maxHeight =>
- getPropertyValue('max-height');
-
- /** Sets the value of "max-height" */
- set maxHeight(String value) {
- setProperty('max-height', value, '');
- }
-
- /** Gets the value of "max-logical-height" */
- String get maxLogicalHeight =>
- getPropertyValue('max-logical-height');
-
- /** Sets the value of "max-logical-height" */
- set maxLogicalHeight(String value) {
- setProperty('max-logical-height', value, '');
- }
-
- /** Gets the value of "max-logical-width" */
- String get maxLogicalWidth =>
- getPropertyValue('max-logical-width');
-
- /** Sets the value of "max-logical-width" */
- set maxLogicalWidth(String value) {
- setProperty('max-logical-width', value, '');
- }
-
- /** Gets the value of "max-width" */
- String get maxWidth =>
- getPropertyValue('max-width');
-
- /** Sets the value of "max-width" */
- set maxWidth(String value) {
- setProperty('max-width', value, '');
- }
-
- /** Gets the value of "max-zoom" */
- String get maxZoom =>
- getPropertyValue('max-zoom');
-
- /** Sets the value of "max-zoom" */
- set maxZoom(String value) {
- setProperty('max-zoom', value, '');
- }
-
- /** Gets the value of "min-height" */
- String get minHeight =>
- getPropertyValue('min-height');
-
- /** Sets the value of "min-height" */
- set minHeight(String value) {
- setProperty('min-height', value, '');
- }
-
- /** Gets the value of "min-logical-height" */
- String get minLogicalHeight =>
- getPropertyValue('min-logical-height');
-
- /** Sets the value of "min-logical-height" */
- set minLogicalHeight(String value) {
- setProperty('min-logical-height', value, '');
- }
-
- /** Gets the value of "min-logical-width" */
- String get minLogicalWidth =>
- getPropertyValue('min-logical-width');
-
- /** Sets the value of "min-logical-width" */
- set minLogicalWidth(String value) {
- setProperty('min-logical-width', value, '');
- }
-
- /** Gets the value of "min-width" */
- String get minWidth =>
- getPropertyValue('min-width');
-
- /** Sets the value of "min-width" */
- set minWidth(String value) {
- setProperty('min-width', value, '');
- }
-
- /** Gets the value of "min-zoom" */
- String get minZoom =>
- getPropertyValue('min-zoom');
-
- /** Sets the value of "min-zoom" */
- set minZoom(String value) {
- setProperty('min-zoom', value, '');
- }
-
- /** Gets the value of "mix-blend-mode" */
- String get mixBlendMode =>
- getPropertyValue('mix-blend-mode');
-
- /** Sets the value of "mix-blend-mode" */
- set mixBlendMode(String value) {
- setProperty('mix-blend-mode', value, '');
- }
-
- /** Gets the value of "object-fit" */
- String get objectFit =>
- getPropertyValue('object-fit');
-
- /** Sets the value of "object-fit" */
- set objectFit(String value) {
- setProperty('object-fit', value, '');
- }
-
- /** Gets the value of "object-position" */
- String get objectPosition =>
- getPropertyValue('object-position');
-
- /** Sets the value of "object-position" */
- set objectPosition(String value) {
- setProperty('object-position', value, '');
- }
-
- /** Gets the value of "opacity" */
- String get opacity =>
- getPropertyValue('opacity');
-
- /** Sets the value of "opacity" */
- set opacity(String value) {
- setProperty('opacity', value, '');
- }
-
- /** Gets the value of "order" */
- String get order =>
- getPropertyValue('order');
-
- /** Sets the value of "order" */
- set order(String value) {
- setProperty('order', value, '');
- }
-
- /** Gets the value of "orientation" */
- String get orientation =>
- getPropertyValue('orientation');
-
- /** Sets the value of "orientation" */
- set orientation(String value) {
- setProperty('orientation', value, '');
- }
-
- /** Gets the value of "orphans" */
- String get orphans =>
- getPropertyValue('orphans');
-
- /** Sets the value of "orphans" */
- set orphans(String value) {
- setProperty('orphans', value, '');
- }
-
- /** Gets the value of "outline" */
- String get outline =>
- getPropertyValue('outline');
-
- /** Sets the value of "outline" */
- set outline(String value) {
- setProperty('outline', value, '');
- }
-
- /** Gets the value of "outline-color" */
- String get outlineColor =>
- getPropertyValue('outline-color');
-
- /** Sets the value of "outline-color" */
- set outlineColor(String value) {
- setProperty('outline-color', value, '');
- }
-
- /** Gets the value of "outline-offset" */
- String get outlineOffset =>
- getPropertyValue('outline-offset');
-
- /** Sets the value of "outline-offset" */
- set outlineOffset(String value) {
- setProperty('outline-offset', value, '');
- }
-
- /** Gets the value of "outline-style" */
- String get outlineStyle =>
- getPropertyValue('outline-style');
-
- /** Sets the value of "outline-style" */
- set outlineStyle(String value) {
- setProperty('outline-style', value, '');
- }
-
- /** Gets the value of "outline-width" */
- String get outlineWidth =>
- getPropertyValue('outline-width');
-
- /** Sets the value of "outline-width" */
- set outlineWidth(String value) {
- setProperty('outline-width', value, '');
- }
-
- /** Gets the value of "overflow" */
- String get overflow =>
- getPropertyValue('overflow');
-
- /** Sets the value of "overflow" */
- set overflow(String value) {
- setProperty('overflow', value, '');
- }
-
- /** Gets the value of "overflow-wrap" */
- String get overflowWrap =>
- getPropertyValue('overflow-wrap');
-
- /** Sets the value of "overflow-wrap" */
- set overflowWrap(String value) {
- setProperty('overflow-wrap', value, '');
- }
-
- /** Gets the value of "overflow-x" */
- String get overflowX =>
- getPropertyValue('overflow-x');
-
- /** Sets the value of "overflow-x" */
- set overflowX(String value) {
- setProperty('overflow-x', value, '');
- }
-
- /** Gets the value of "overflow-y" */
- String get overflowY =>
- getPropertyValue('overflow-y');
-
- /** Sets the value of "overflow-y" */
- set overflowY(String value) {
- setProperty('overflow-y', value, '');
- }
-
- /** Gets the value of "padding" */
- String get padding =>
- getPropertyValue('padding');
-
- /** Sets the value of "padding" */
- set padding(String value) {
- setProperty('padding', value, '');
- }
-
- /** Gets the value of "padding-after" */
- String get paddingAfter =>
- getPropertyValue('padding-after');
-
- /** Sets the value of "padding-after" */
- set paddingAfter(String value) {
- setProperty('padding-after', value, '');
- }
-
- /** Gets the value of "padding-before" */
- String get paddingBefore =>
- getPropertyValue('padding-before');
-
- /** Sets the value of "padding-before" */
- set paddingBefore(String value) {
- setProperty('padding-before', value, '');
- }
-
- /** Gets the value of "padding-bottom" */
- String get paddingBottom =>
- getPropertyValue('padding-bottom');
-
- /** Sets the value of "padding-bottom" */
- set paddingBottom(String value) {
- setProperty('padding-bottom', value, '');
- }
-
- /** Gets the value of "padding-end" */
- String get paddingEnd =>
- getPropertyValue('padding-end');
-
- /** Sets the value of "padding-end" */
- set paddingEnd(String value) {
- setProperty('padding-end', value, '');
- }
-
- /** Gets the value of "padding-left" */
- String get paddingLeft =>
- getPropertyValue('padding-left');
-
- /** Sets the value of "padding-left" */
- set paddingLeft(String value) {
- setProperty('padding-left', value, '');
- }
-
- /** Gets the value of "padding-right" */
- String get paddingRight =>
- getPropertyValue('padding-right');
-
- /** Sets the value of "padding-right" */
- set paddingRight(String value) {
- setProperty('padding-right', value, '');
- }
-
- /** Gets the value of "padding-start" */
- String get paddingStart =>
- getPropertyValue('padding-start');
-
- /** Sets the value of "padding-start" */
- set paddingStart(String value) {
- setProperty('padding-start', value, '');
- }
-
- /** Gets the value of "padding-top" */
- String get paddingTop =>
- getPropertyValue('padding-top');
-
- /** Sets the value of "padding-top" */
- set paddingTop(String value) {
- setProperty('padding-top', value, '');
- }
-
- /** Gets the value of "page" */
- String get page =>
- getPropertyValue('page');
-
- /** Sets the value of "page" */
- set page(String value) {
- setProperty('page', value, '');
- }
-
- /** Gets the value of "page-break-after" */
- String get pageBreakAfter =>
- getPropertyValue('page-break-after');
-
- /** Sets the value of "page-break-after" */
- set pageBreakAfter(String value) {
- setProperty('page-break-after', value, '');
- }
-
- /** Gets the value of "page-break-before" */
- String get pageBreakBefore =>
- getPropertyValue('page-break-before');
-
- /** Sets the value of "page-break-before" */
- set pageBreakBefore(String value) {
- setProperty('page-break-before', value, '');
- }
-
- /** Gets the value of "page-break-inside" */
- String get pageBreakInside =>
- getPropertyValue('page-break-inside');
-
- /** Sets the value of "page-break-inside" */
- set pageBreakInside(String value) {
- setProperty('page-break-inside', value, '');
- }
-
- /** Gets the value of "perspective" */
- String get perspective =>
- getPropertyValue('perspective');
-
- /** Sets the value of "perspective" */
- set perspective(String value) {
- setProperty('perspective', value, '');
- }
-
- /** Gets the value of "perspective-origin" */
- String get perspectiveOrigin =>
- getPropertyValue('perspective-origin');
-
- /** Sets the value of "perspective-origin" */
- set perspectiveOrigin(String value) {
- setProperty('perspective-origin', value, '');
- }
-
- /** Gets the value of "perspective-origin-x" */
- String get perspectiveOriginX =>
- getPropertyValue('perspective-origin-x');
-
- /** Sets the value of "perspective-origin-x" */
- set perspectiveOriginX(String value) {
- setProperty('perspective-origin-x', value, '');
- }
-
- /** Gets the value of "perspective-origin-y" */
- String get perspectiveOriginY =>
- getPropertyValue('perspective-origin-y');
-
- /** Sets the value of "perspective-origin-y" */
- set perspectiveOriginY(String value) {
- setProperty('perspective-origin-y', value, '');
- }
-
- /** Gets the value of "pointer-events" */
- String get pointerEvents =>
- getPropertyValue('pointer-events');
-
- /** Sets the value of "pointer-events" */
- set pointerEvents(String value) {
- setProperty('pointer-events', value, '');
- }
-
- /** Gets the value of "position" */
- String get position =>
- getPropertyValue('position');
-
- /** Sets the value of "position" */
- set position(String value) {
- setProperty('position', value, '');
- }
-
- /** Gets the value of "print-color-adjust" */
- String get printColorAdjust =>
- getPropertyValue('print-color-adjust');
-
- /** Sets the value of "print-color-adjust" */
- set printColorAdjust(String value) {
- setProperty('print-color-adjust', value, '');
- }
-
- /** Gets the value of "quotes" */
- String get quotes =>
- getPropertyValue('quotes');
-
- /** Sets the value of "quotes" */
- set quotes(String value) {
- setProperty('quotes', value, '');
- }
-
- /** Gets the value of "resize" */
- String get resize =>
- getPropertyValue('resize');
-
- /** Sets the value of "resize" */
- set resize(String value) {
- setProperty('resize', value, '');
- }
-
- /** Gets the value of "right" */
- String get right =>
- getPropertyValue('right');
-
- /** Sets the value of "right" */
- set right(String value) {
- setProperty('right', value, '');
- }
-
- /** Gets the value of "rtl-ordering" */
- String get rtlOrdering =>
- getPropertyValue('rtl-ordering');
-
- /** Sets the value of "rtl-ordering" */
- set rtlOrdering(String value) {
- setProperty('rtl-ordering', value, '');
- }
-
- /** Gets the value of "ruby-position" */
- String get rubyPosition =>
- getPropertyValue('ruby-position');
-
- /** Sets the value of "ruby-position" */
- set rubyPosition(String value) {
- setProperty('ruby-position', value, '');
- }
-
- /** Gets the value of "scroll-behavior" */
- String get scrollBehavior =>
- getPropertyValue('scroll-behavior');
-
- /** Sets the value of "scroll-behavior" */
- set scrollBehavior(String value) {
- setProperty('scroll-behavior', value, '');
- }
-
- /** Gets the value of "shape-image-threshold" */
- String get shapeImageThreshold =>
- getPropertyValue('shape-image-threshold');
-
- /** Sets the value of "shape-image-threshold" */
- set shapeImageThreshold(String value) {
- setProperty('shape-image-threshold', value, '');
- }
-
- /** Gets the value of "shape-margin" */
- String get shapeMargin =>
- getPropertyValue('shape-margin');
-
- /** Sets the value of "shape-margin" */
- set shapeMargin(String value) {
- setProperty('shape-margin', value, '');
- }
-
- /** Gets the value of "shape-outside" */
- String get shapeOutside =>
- getPropertyValue('shape-outside');
-
- /** Sets the value of "shape-outside" */
- set shapeOutside(String value) {
- setProperty('shape-outside', value, '');
- }
-
- /** Gets the value of "size" */
- String get size =>
- getPropertyValue('size');
-
- /** Sets the value of "size" */
- set size(String value) {
- setProperty('size', value, '');
- }
-
- /** Gets the value of "speak" */
- String get speak =>
- getPropertyValue('speak');
-
- /** Sets the value of "speak" */
- set speak(String value) {
- setProperty('speak', value, '');
- }
-
- /** Gets the value of "src" */
- String get src =>
- getPropertyValue('src');
-
- /** Sets the value of "src" */
- set src(String value) {
- setProperty('src', value, '');
- }
-
- /** Gets the value of "tab-size" */
- String get tabSize =>
- getPropertyValue('tab-size');
-
- /** Sets the value of "tab-size" */
- set tabSize(String value) {
- setProperty('tab-size', value, '');
- }
-
- /** Gets the value of "table-layout" */
- String get tableLayout =>
- getPropertyValue('table-layout');
-
- /** Sets the value of "table-layout" */
- set tableLayout(String value) {
- setProperty('table-layout', value, '');
- }
-
- /** Gets the value of "tap-highlight-color" */
- String get tapHighlightColor =>
- getPropertyValue('tap-highlight-color');
-
- /** Sets the value of "tap-highlight-color" */
- set tapHighlightColor(String value) {
- setProperty('tap-highlight-color', value, '');
- }
-
- /** Gets the value of "text-align" */
- String get textAlign =>
- getPropertyValue('text-align');
-
- /** Sets the value of "text-align" */
- set textAlign(String value) {
- setProperty('text-align', value, '');
- }
-
- /** Gets the value of "text-align-last" */
- String get textAlignLast =>
- getPropertyValue('text-align-last');
-
- /** Sets the value of "text-align-last" */
- set textAlignLast(String value) {
- setProperty('text-align-last', value, '');
- }
-
- /** Gets the value of "text-combine" */
- String get textCombine =>
- getPropertyValue('text-combine');
-
- /** Sets the value of "text-combine" */
- set textCombine(String value) {
- setProperty('text-combine', value, '');
- }
-
- /** Gets the value of "text-decoration" */
- String get textDecoration =>
- getPropertyValue('text-decoration');
-
- /** Sets the value of "text-decoration" */
- set textDecoration(String value) {
- setProperty('text-decoration', value, '');
- }
-
- /** Gets the value of "text-decoration-color" */
- String get textDecorationColor =>
- getPropertyValue('text-decoration-color');
-
- /** Sets the value of "text-decoration-color" */
- set textDecorationColor(String value) {
- setProperty('text-decoration-color', value, '');
- }
-
- /** Gets the value of "text-decoration-line" */
- String get textDecorationLine =>
- getPropertyValue('text-decoration-line');
-
- /** Sets the value of "text-decoration-line" */
- set textDecorationLine(String value) {
- setProperty('text-decoration-line', value, '');
- }
-
- /** Gets the value of "text-decoration-style" */
- String get textDecorationStyle =>
- getPropertyValue('text-decoration-style');
-
- /** Sets the value of "text-decoration-style" */
- set textDecorationStyle(String value) {
- setProperty('text-decoration-style', value, '');
- }
-
- /** Gets the value of "text-decorations-in-effect" */
- String get textDecorationsInEffect =>
- getPropertyValue('text-decorations-in-effect');
-
- /** Sets the value of "text-decorations-in-effect" */
- set textDecorationsInEffect(String value) {
- setProperty('text-decorations-in-effect', value, '');
- }
-
- /** Gets the value of "text-emphasis" */
- String get textEmphasis =>
- getPropertyValue('text-emphasis');
-
- /** Sets the value of "text-emphasis" */
- set textEmphasis(String value) {
- setProperty('text-emphasis', value, '');
- }
-
- /** Gets the value of "text-emphasis-color" */
- String get textEmphasisColor =>
- getPropertyValue('text-emphasis-color');
-
- /** Sets the value of "text-emphasis-color" */
- set textEmphasisColor(String value) {
- setProperty('text-emphasis-color', value, '');
- }
-
- /** Gets the value of "text-emphasis-position" */
- String get textEmphasisPosition =>
- getPropertyValue('text-emphasis-position');
-
- /** Sets the value of "text-emphasis-position" */
- set textEmphasisPosition(String value) {
- setProperty('text-emphasis-position', value, '');
- }
-
- /** Gets the value of "text-emphasis-style" */
- String get textEmphasisStyle =>
- getPropertyValue('text-emphasis-style');
-
- /** Sets the value of "text-emphasis-style" */
- set textEmphasisStyle(String value) {
- setProperty('text-emphasis-style', value, '');
- }
-
- /** Gets the value of "text-fill-color" */
- String get textFillColor =>
- getPropertyValue('text-fill-color');
-
- /** Sets the value of "text-fill-color" */
- set textFillColor(String value) {
- setProperty('text-fill-color', value, '');
- }
-
- /** Gets the value of "text-indent" */
- String get textIndent =>
- getPropertyValue('text-indent');
-
- /** Sets the value of "text-indent" */
- set textIndent(String value) {
- setProperty('text-indent', value, '');
- }
-
- /** Gets the value of "text-justify" */
- String get textJustify =>
- getPropertyValue('text-justify');
-
- /** Sets the value of "text-justify" */
- set textJustify(String value) {
- setProperty('text-justify', value, '');
- }
-
- /** Gets the value of "text-line-through-color" */
- String get textLineThroughColor =>
- getPropertyValue('text-line-through-color');
-
- /** Sets the value of "text-line-through-color" */
- set textLineThroughColor(String value) {
- setProperty('text-line-through-color', value, '');
- }
-
- /** Gets the value of "text-line-through-mode" */
- String get textLineThroughMode =>
- getPropertyValue('text-line-through-mode');
-
- /** Sets the value of "text-line-through-mode" */
- set textLineThroughMode(String value) {
- setProperty('text-line-through-mode', value, '');
- }
-
- /** Gets the value of "text-line-through-style" */
- String get textLineThroughStyle =>
- getPropertyValue('text-line-through-style');
-
- /** Sets the value of "text-line-through-style" */
- set textLineThroughStyle(String value) {
- setProperty('text-line-through-style', value, '');
- }
-
- /** Gets the value of "text-line-through-width" */
- String get textLineThroughWidth =>
- getPropertyValue('text-line-through-width');
-
- /** Sets the value of "text-line-through-width" */
- set textLineThroughWidth(String value) {
- setProperty('text-line-through-width', value, '');
- }
-
- /** Gets the value of "text-orientation" */
- String get textOrientation =>
- getPropertyValue('text-orientation');
-
- /** Sets the value of "text-orientation" */
- set textOrientation(String value) {
- setProperty('text-orientation', value, '');
- }
-
- /** Gets the value of "text-overflow" */
- String get textOverflow =>
- getPropertyValue('text-overflow');
-
- /** Sets the value of "text-overflow" */
- set textOverflow(String value) {
- setProperty('text-overflow', value, '');
- }
-
- /** Gets the value of "text-overline-color" */
- String get textOverlineColor =>
- getPropertyValue('text-overline-color');
-
- /** Sets the value of "text-overline-color" */
- set textOverlineColor(String value) {
- setProperty('text-overline-color', value, '');
- }
-
- /** Gets the value of "text-overline-mode" */
- String get textOverlineMode =>
- getPropertyValue('text-overline-mode');
-
- /** Sets the value of "text-overline-mode" */
- set textOverlineMode(String value) {
- setProperty('text-overline-mode', value, '');
- }
-
- /** Gets the value of "text-overline-style" */
- String get textOverlineStyle =>
- getPropertyValue('text-overline-style');
-
- /** Sets the value of "text-overline-style" */
- set textOverlineStyle(String value) {
- setProperty('text-overline-style', value, '');
- }
-
- /** Gets the value of "text-overline-width" */
- String get textOverlineWidth =>
- getPropertyValue('text-overline-width');
-
- /** Sets the value of "text-overline-width" */
- set textOverlineWidth(String value) {
- setProperty('text-overline-width', value, '');
- }
-
- /** Gets the value of "text-rendering" */
- String get textRendering =>
- getPropertyValue('text-rendering');
-
- /** Sets the value of "text-rendering" */
- set textRendering(String value) {
- setProperty('text-rendering', value, '');
- }
-
- /** Gets the value of "text-security" */
- String get textSecurity =>
- getPropertyValue('text-security');
-
- /** Sets the value of "text-security" */
- set textSecurity(String value) {
- setProperty('text-security', value, '');
- }
-
- /** Gets the value of "text-shadow" */
- String get textShadow =>
- getPropertyValue('text-shadow');
-
- /** Sets the value of "text-shadow" */
- set textShadow(String value) {
- setProperty('text-shadow', value, '');
- }
-
- /** Gets the value of "text-stroke" */
- String get textStroke =>
- getPropertyValue('text-stroke');
-
- /** Sets the value of "text-stroke" */
- set textStroke(String value) {
- setProperty('text-stroke', value, '');
- }
-
- /** Gets the value of "text-stroke-color" */
- String get textStrokeColor =>
- getPropertyValue('text-stroke-color');
-
- /** Sets the value of "text-stroke-color" */
- set textStrokeColor(String value) {
- setProperty('text-stroke-color', value, '');
- }
-
- /** Gets the value of "text-stroke-width" */
- String get textStrokeWidth =>
- getPropertyValue('text-stroke-width');
-
- /** Sets the value of "text-stroke-width" */
- set textStrokeWidth(String value) {
- setProperty('text-stroke-width', value, '');
- }
-
- /** Gets the value of "text-transform" */
- String get textTransform =>
- getPropertyValue('text-transform');
-
- /** Sets the value of "text-transform" */
- set textTransform(String value) {
- setProperty('text-transform', value, '');
- }
-
- /** Gets the value of "text-underline-color" */
- String get textUnderlineColor =>
- getPropertyValue('text-underline-color');
-
- /** Sets the value of "text-underline-color" */
- set textUnderlineColor(String value) {
- setProperty('text-underline-color', value, '');
- }
-
- /** Gets the value of "text-underline-mode" */
- String get textUnderlineMode =>
- getPropertyValue('text-underline-mode');
-
- /** Sets the value of "text-underline-mode" */
- set textUnderlineMode(String value) {
- setProperty('text-underline-mode', value, '');
- }
-
- /** Gets the value of "text-underline-position" */
- String get textUnderlinePosition =>
- getPropertyValue('text-underline-position');
-
- /** Sets the value of "text-underline-position" */
- set textUnderlinePosition(String value) {
- setProperty('text-underline-position', value, '');
- }
-
- /** Gets the value of "text-underline-style" */
- String get textUnderlineStyle =>
- getPropertyValue('text-underline-style');
-
- /** Sets the value of "text-underline-style" */
- set textUnderlineStyle(String value) {
- setProperty('text-underline-style', value, '');
- }
-
- /** Gets the value of "text-underline-width" */
- String get textUnderlineWidth =>
- getPropertyValue('text-underline-width');
-
- /** Sets the value of "text-underline-width" */
- set textUnderlineWidth(String value) {
- setProperty('text-underline-width', value, '');
- }
-
- /** Gets the value of "top" */
- String get top =>
- getPropertyValue('top');
-
- /** Sets the value of "top" */
- set top(String value) {
- setProperty('top', value, '');
- }
-
- /** Gets the value of "touch-action" */
- String get touchAction =>
- getPropertyValue('touch-action');
-
- /** Sets the value of "touch-action" */
- set touchAction(String value) {
- setProperty('touch-action', value, '');
- }
-
- /** Gets the value of "touch-action-delay" */
- String get touchActionDelay =>
- getPropertyValue('touch-action-delay');
-
- /** Sets the value of "touch-action-delay" */
- set touchActionDelay(String value) {
- setProperty('touch-action-delay', value, '');
- }
-
- /** Gets the value of "transform" */
- String get transform =>
- getPropertyValue('transform');
-
- /** Sets the value of "transform" */
- set transform(String value) {
- setProperty('transform', value, '');
- }
-
- /** Gets the value of "transform-origin" */
- String get transformOrigin =>
- getPropertyValue('transform-origin');
-
- /** Sets the value of "transform-origin" */
- set transformOrigin(String value) {
- setProperty('transform-origin', value, '');
- }
-
- /** Gets the value of "transform-origin-x" */
- String get transformOriginX =>
- getPropertyValue('transform-origin-x');
-
- /** Sets the value of "transform-origin-x" */
- set transformOriginX(String value) {
- setProperty('transform-origin-x', value, '');
- }
-
- /** Gets the value of "transform-origin-y" */
- String get transformOriginY =>
- getPropertyValue('transform-origin-y');
-
- /** Sets the value of "transform-origin-y" */
- set transformOriginY(String value) {
- setProperty('transform-origin-y', value, '');
- }
-
- /** Gets the value of "transform-origin-z" */
- String get transformOriginZ =>
- getPropertyValue('transform-origin-z');
-
- /** Sets the value of "transform-origin-z" */
- set transformOriginZ(String value) {
- setProperty('transform-origin-z', value, '');
- }
-
- /** Gets the value of "transform-style" */
- String get transformStyle =>
- getPropertyValue('transform-style');
-
- /** Sets the value of "transform-style" */
- set transformStyle(String value) {
- setProperty('transform-style', value, '');
- }
-
- /** Gets the value of "transition" */@SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- String get transition =>
- getPropertyValue('transition');
-
- /** Sets the value of "transition" */@SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- set transition(String value) {
- setProperty('transition', value, '');
- }
-
- /** Gets the value of "transition-delay" */
- String get transitionDelay =>
- getPropertyValue('transition-delay');
-
- /** Sets the value of "transition-delay" */
- set transitionDelay(String value) {
- setProperty('transition-delay', value, '');
- }
-
- /** Gets the value of "transition-duration" */
- String get transitionDuration =>
- getPropertyValue('transition-duration');
-
- /** Sets the value of "transition-duration" */
- set transitionDuration(String value) {
- setProperty('transition-duration', value, '');
- }
-
- /** Gets the value of "transition-property" */
- String get transitionProperty =>
- getPropertyValue('transition-property');
-
- /** Sets the value of "transition-property" */
- set transitionProperty(String value) {
- setProperty('transition-property', value, '');
- }
-
- /** Gets the value of "transition-timing-function" */
- String get transitionTimingFunction =>
- getPropertyValue('transition-timing-function');
-
- /** Sets the value of "transition-timing-function" */
- set transitionTimingFunction(String value) {
- setProperty('transition-timing-function', value, '');
- }
-
- /** Gets the value of "unicode-bidi" */
- String get unicodeBidi =>
- getPropertyValue('unicode-bidi');
-
- /** Sets the value of "unicode-bidi" */
- set unicodeBidi(String value) {
- setProperty('unicode-bidi', value, '');
- }
-
- /** Gets the value of "unicode-range" */
- String get unicodeRange =>
- getPropertyValue('unicode-range');
-
- /** Sets the value of "unicode-range" */
- set unicodeRange(String value) {
- setProperty('unicode-range', value, '');
- }
-
- /** Gets the value of "user-drag" */
- String get userDrag =>
- getPropertyValue('user-drag');
-
- /** Sets the value of "user-drag" */
- set userDrag(String value) {
- setProperty('user-drag', value, '');
- }
-
- /** Gets the value of "user-modify" */
- String get userModify =>
- getPropertyValue('user-modify');
-
- /** Sets the value of "user-modify" */
- set userModify(String value) {
- setProperty('user-modify', value, '');
- }
-
- /** Gets the value of "user-select" */
- String get userSelect =>
- getPropertyValue('user-select');
-
- /** Sets the value of "user-select" */
- set userSelect(String value) {
- setProperty('user-select', value, '');
- }
-
- /** Gets the value of "user-zoom" */
- String get userZoom =>
- getPropertyValue('user-zoom');
-
- /** Sets the value of "user-zoom" */
- set userZoom(String value) {
- setProperty('user-zoom', value, '');
- }
-
- /** Gets the value of "vertical-align" */
- String get verticalAlign =>
- getPropertyValue('vertical-align');
-
- /** Sets the value of "vertical-align" */
- set verticalAlign(String value) {
- setProperty('vertical-align', value, '');
- }
-
- /** Gets the value of "visibility" */
- String get visibility =>
- getPropertyValue('visibility');
-
- /** Sets the value of "visibility" */
- set visibility(String value) {
- setProperty('visibility', value, '');
- }
-
- /** Gets the value of "white-space" */
- String get whiteSpace =>
- getPropertyValue('white-space');
-
- /** Sets the value of "white-space" */
- set whiteSpace(String value) {
- setProperty('white-space', value, '');
- }
-
- /** Gets the value of "widows" */
- String get widows =>
- getPropertyValue('widows');
-
- /** Sets the value of "widows" */
- set widows(String value) {
- setProperty('widows', value, '');
- }
-
- /** Gets the value of "width" */
- String get width =>
- getPropertyValue('width');
-
- /** Sets the value of "width" */
- set width(String value) {
- setProperty('width', value, '');
- }
-
- /** Gets the value of "will-change" */
- String get willChange =>
- getPropertyValue('will-change');
-
- /** Sets the value of "will-change" */
- set willChange(String value) {
- setProperty('will-change', value, '');
- }
-
- /** Gets the value of "word-break" */
- String get wordBreak =>
- getPropertyValue('word-break');
-
- /** Sets the value of "word-break" */
- set wordBreak(String value) {
- setProperty('word-break', value, '');
- }
-
- /** Gets the value of "word-spacing" */
- String get wordSpacing =>
- getPropertyValue('word-spacing');
-
- /** Sets the value of "word-spacing" */
- set wordSpacing(String value) {
- setProperty('word-spacing', value, '');
- }
-
- /** Gets the value of "word-wrap" */
- String get wordWrap =>
- getPropertyValue('word-wrap');
-
- /** Sets the value of "word-wrap" */
- set wordWrap(String value) {
- setProperty('word-wrap', value, '');
- }
-
- /** Gets the value of "wrap-flow" */
- String get wrapFlow =>
- getPropertyValue('wrap-flow');
-
- /** Sets the value of "wrap-flow" */
- set wrapFlow(String value) {
- setProperty('wrap-flow', value, '');
- }
-
- /** Gets the value of "wrap-through" */
- String get wrapThrough =>
- getPropertyValue('wrap-through');
-
- /** Sets the value of "wrap-through" */
- set wrapThrough(String value) {
- setProperty('wrap-through', value, '');
- }
-
- /** Gets the value of "writing-mode" */
- String get writingMode =>
- getPropertyValue('writing-mode');
-
- /** Sets the value of "writing-mode" */
- set writingMode(String value) {
- setProperty('writing-mode', value, '');
- }
-
- /** Gets the value of "z-index" */
- String get zIndex =>
- getPropertyValue('z-index');
-
- /** Sets the value of "z-index" */
- set zIndex(String value) {
- setProperty('z-index', value, '');
- }
-
- /** Gets the value of "zoom" */
- String get zoom =>
- getPropertyValue('zoom');
-
- /** Sets the value of "zoom" */
- set zoom(String value) {
- setProperty('zoom', value, '');
- }
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: Do not edit - generated code.
-
-
-@DomName('CustomEvent')
-@Native("CustomEvent")
-class CustomEvent extends Event {
- var _dartDetail;
-
- factory CustomEvent(String type,
- {bool canBubble: true, bool cancelable: true, Object detail}) {
-
- final CustomEvent e = document._createEvent('CustomEvent');
-
- e._dartDetail = detail;
-
- // Only try setting the detail if it's one of these types to avoid
- // first-chance exceptions. Can expand this list in the future as needed.
- if (detail is List || detail is Map || detail is String || detail is num) {
- try {
- e._initCustomEvent(type, canBubble, cancelable, detail);
- } catch(_) {
- e._initCustomEvent(type, canBubble, cancelable, null);
- }
- } else {
- e._initCustomEvent(type, canBubble, cancelable, null);
- }
-
- return e;
- }
-
- @DomName('CustomEvent.detail')
- get detail {
- if (_dartDetail != null) {
- return _dartDetail;
- }
- return _detail;
- }
- // To suppress missing implicit constructor warnings.
- factory CustomEvent._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static CustomEvent internalCreateCustomEvent() {
- return new CustomEvent.internal_();
- }
-
- @Deprecated("Internal Use Only")
- CustomEvent.internal_() : super.internal_();
-
-
- @DomName('CustomEvent._detail')
- @DocsEditable()
- @Experimental() // untriaged
- dynamic get _detail => convertNativeToDart_SerializedScriptValue(this._get__detail);
- @JSName('detail')
- @DomName('CustomEvent._detail')
- @DocsEditable()
- @Experimental() // untriaged
- @Creates('Null')
- dynamic get _get__detail => wrap_jso(JS("dynamic", "#.detail", this.raw));
-
- @DomName('CustomEvent.initCustomEvent')
- @DocsEditable()
- void _initCustomEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object detailArg) {
- _initCustomEvent_1(typeArg, canBubbleArg, cancelableArg, detailArg);
- return;
- }
- @JSName('initCustomEvent')
- @DomName('CustomEvent.initCustomEvent')
- @DocsEditable()
- void _initCustomEvent_1(typeArg, canBubbleArg, cancelableArg, detailArg) => wrap_jso(JS("void ", "#.raw.initCustomEvent(#, #, #, #)", this, unwrap_jso(typeArg), unwrap_jso(canBubbleArg), unwrap_jso(cancelableArg), unwrap_jso(detailArg)));
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-/**
- * A generic container for content on an HTML page;
- * corresponds to the &lt;div&gt; tag.
- *
- * The [DivElement] is a generic container and does not have any semantic
- * significance. It is functionally similar to [SpanElement].
- *
- * The [DivElement] is a block-level element, as opposed to [SpanElement],
- * which is an inline-level element.
- *
- * Example usage:
- *
- * DivElement div = new DivElement();
- * div.text = 'Here's my new DivElem
- * document.body.elements.add(elem);
- *
- * See also:
- *
- * * [HTML <div> element](http://www.w3.org/TR/html-markup/div.html) from W3C.
- * * [Block-level element](http://www.w3.org/TR/CSS2/visuren.html#block-boxes) from W3C.
- * * [Inline-level element](http://www.w3.org/TR/CSS2/visuren.html#inline-boxes) from W3C.
- */
-@DomName('HTMLDivElement')
-@Native("HTMLDivElement")
-class DivElement extends HtmlElement {
- // To suppress missing implicit constructor warnings.
- factory DivElement._() { throw new UnsupportedError("Not supported"); }
-
- @DomName('HTMLDivElement.HTMLDivElement')
- @DocsEditable()
- factory DivElement() => document.createElement("div");
-
-
- @Deprecated("Internal Use Only")
- static DivElement internalCreateDivElement() {
- return new DivElement.internal_();
- }
-
- @Deprecated("Internal Use Only")
- DivElement.internal_() : super.internal_();
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-/**
- * The base class for all documents.
- *
- * Each web page loaded in the browser has its own [Document] object, which is
- * typically an [HtmlDocument].
- *
- * If you aren't comfortable with DOM concepts, see the Dart tutorial
- * [Target 2: Connect Dart & HTML](http://www.dartlang.org/docs/tutorials/connect-dart-html/).
- */
-@DomName('Document')
-@Native("Document")
-class Document extends Node
-{
-
- // To suppress missing implicit constructor warnings.
- factory Document._() { throw new UnsupportedError("Not supported"); }
-
- @DomName('Document.pointerlockchangeEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<Event> pointerLockChangeEvent = const EventStreamProvider<Event>('pointerlockchange');
-
- @DomName('Document.pointerlockerrorEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<Event> pointerLockErrorEvent = const EventStreamProvider<Event>('pointerlockerror');
-
- /**
- * Static factory designed to expose `readystatechange` events to event
- * handlers that are not necessarily instances of [Document].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Document.readystatechangeEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> readyStateChangeEvent = const EventStreamProvider<Event>('readystatechange');
-
- /**
- * Static factory designed to expose `selectionchange` events to event
- * handlers that are not necessarily instances of [Document].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Document.selectionchangeEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> selectionChangeEvent = const EventStreamProvider<Event>('selectionchange');
-
-
- @Deprecated("Internal Use Only")
- static Document internalCreateDocument() {
- return new Document.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Document.internal_() : super.internal_();
-
-
- @DomName('Document.activeElement')
- @DocsEditable()
- @Experimental() // untriaged
- Element get activeElement => wrap_jso(JS("Element", "#.activeElement", this.raw));
-
- @JSName('body')
- @DomName('Document.body')
- @DocsEditable()
- HtmlElement get _body => wrap_jso(JS("HtmlElement", "#.body", this.raw));
- @JSName('body')
- @DomName('Document.body')
- @DocsEditable()
- void set _body(HtmlElement val) => JS("void", "#.body = #", this.raw, unwrap_jso(val));
-
- @DomName('Document.contentType')
- @DocsEditable()
- @Experimental() // untriaged
- String get contentType => wrap_jso(JS("String", "#.contentType", this.raw));
-
- @DomName('Document.cookie')
- @DocsEditable()
- String get cookie => wrap_jso(JS("String", "#.cookie", this.raw));
- @DomName('Document.cookie')
- @DocsEditable()
- void set cookie(String val) => JS("void", "#.cookie = #", this.raw, unwrap_jso(val));
-
- @DomName('Document.currentScript')
- @DocsEditable()
- @Experimental() // untriaged
- HtmlElement get currentScript => wrap_jso(JS("HtmlElement", "#.currentScript", this.raw));
-
- @DomName('Document.window')
- @DocsEditable()
- @Experimental() // untriaged
- WindowBase get window => _convertNativeToDart_Window(this._get_window);
- @JSName('defaultView')
- @DomName('Document.window')
- @DocsEditable()
- @Experimental() // untriaged
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- @Creates('Window|=Object|Null')
- @Returns('Window|=Object|Null')
- dynamic get _get_window => wrap_jso(JS("dynamic", "#.defaultView", this.raw));
-
- @DomName('Document.documentElement')
- @DocsEditable()
- Element get documentElement => wrap_jso(JS("Element", "#.documentElement", this.raw));
-
- @DomName('Document.domain')
- @DocsEditable()
- String get domain => wrap_jso(JS("String", "#.domain", this.raw));
-
- @DomName('Document.fullscreenElement')
- @DocsEditable()
- @Experimental() // untriaged
- Element get fullscreenElement => wrap_jso(JS("Element", "#.fullscreenElement", this.raw));
-
- @DomName('Document.fullscreenEnabled')
- @DocsEditable()
- @Experimental() // untriaged
- bool get fullscreenEnabled => wrap_jso(JS("bool", "#.fullscreenEnabled", this.raw));
-
- @JSName('head')
- @DomName('Document.head')
- @DocsEditable()
- HeadElement get _head => wrap_jso(JS("HeadElement", "#.head", this.raw));
-
- @DomName('Document.hidden')
- @DocsEditable()
- @Experimental() // untriaged
- bool get hidden => wrap_jso(JS("bool", "#.hidden", this.raw));
-
- @DomName('Document.implementation')
- @DocsEditable()
- DomImplementation get implementation => wrap_jso(JS("DomImplementation", "#.implementation", this.raw));
-
- @JSName('lastModified')
- @DomName('Document.lastModified')
- @DocsEditable()
- String get _lastModified => wrap_jso(JS("String", "#.lastModified", this.raw));
-
- @DomName('Document.pointerLockElement')
- @DocsEditable()
- @Experimental() // untriaged
- Element get pointerLockElement => wrap_jso(JS("Element", "#.pointerLockElement", this.raw));
-
- @JSName('preferredStylesheetSet')
- @DomName('Document.preferredStylesheetSet')
- @DocsEditable()
- String get _preferredStylesheetSet => wrap_jso(JS("String", "#.preferredStylesheetSet", this.raw));
-
- @DomName('Document.readyState')
- @DocsEditable()
- String get readyState => wrap_jso(JS("String", "#.readyState", this.raw));
-
- @JSName('referrer')
- @DomName('Document.referrer')
- @DocsEditable()
- String get _referrer => wrap_jso(JS("String", "#.referrer", this.raw));
-
- @DomName('Document.rootElement')
- @DocsEditable()
- @Experimental() // untriaged
- Element get rootElement => wrap_jso(JS("Element", "#.rootElement", this.raw));
-
- @JSName('selectedStylesheetSet')
- @DomName('Document.selectedStylesheetSet')
- @DocsEditable()
- String get _selectedStylesheetSet => wrap_jso(JS("String", "#.selectedStylesheetSet", this.raw));
- @JSName('selectedStylesheetSet')
- @DomName('Document.selectedStylesheetSet')
- @DocsEditable()
- void set _selectedStylesheetSet(String val) => JS("void", "#.selectedStylesheetSet = #", this.raw, unwrap_jso(val));
-
- @JSName('title')
- @DomName('Document.title')
- @DocsEditable()
- String get _title => wrap_jso(JS("String", "#.title", this.raw));
- @JSName('title')
- @DomName('Document.title')
- @DocsEditable()
- void set _title(String val) => JS("void", "#.title = #", this.raw, unwrap_jso(val));
-
- @DomName('Document.visibilityState')
- @DocsEditable()
- @Experimental() // untriaged
- String get visibilityState => wrap_jso(JS("String", "#.visibilityState", this.raw));
-
- @JSName('webkitFullscreenElement')
- @DomName('Document.webkitFullscreenElement')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenelement
- Element get _webkitFullscreenElement => wrap_jso(JS("Element", "#.webkitFullscreenElement", this.raw));
-
- @JSName('webkitFullscreenEnabled')
- @DomName('Document.webkitFullscreenEnabled')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenenabled
- bool get _webkitFullscreenEnabled => wrap_jso(JS("bool", "#.webkitFullscreenEnabled", this.raw));
-
- @JSName('webkitHidden')
- @DomName('Document.webkitHidden')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#document
- bool get _webkitHidden => wrap_jso(JS("bool", "#.webkitHidden", this.raw));
-
- @JSName('webkitVisibilityState')
- @DomName('Document.webkitVisibilityState')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#dom-document-visibilitystate
- String get _webkitVisibilityState => wrap_jso(JS("String", "#.webkitVisibilityState", this.raw));
-
- @DomName('Document.adoptNode')
- @DocsEditable()
- Node adoptNode(Node node) {
- return _adoptNode_1(node);
- }
- @JSName('adoptNode')
- @DomName('Document.adoptNode')
- @DocsEditable()
- Node _adoptNode_1(Node node) => wrap_jso(JS("Node ", "#.raw.adoptNode(#)", this, unwrap_jso(node)));
-
- @DomName('Document.caretRangeFromPoint')
- @DocsEditable()
- // http://www.w3.org/TR/2009/WD-cssom-view-20090804/#dom-documentview-caretrangefrompoint
- @Experimental()
- Range _caretRangeFromPoint(int x, int y) {
- return _caretRangeFromPoint_1(x, y);
- }
- @JSName('caretRangeFromPoint')
- @DomName('Document.caretRangeFromPoint')
- @DocsEditable()
- // http://www.w3.org/TR/2009/WD-cssom-view-20090804/#dom-documentview-caretrangefrompoint
- @Experimental()
- Range _caretRangeFromPoint_1(x, y) => wrap_jso(JS("Range ", "#.raw.caretRangeFromPoint(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
-
- @DomName('Document.createDocumentFragment')
- @DocsEditable()
- DocumentFragment createDocumentFragment() {
- return _createDocumentFragment_1();
- }
- @JSName('createDocumentFragment')
- @DomName('Document.createDocumentFragment')
- @DocsEditable()
- DocumentFragment _createDocumentFragment_1() => wrap_jso(JS("DocumentFragment ", "#.raw.createDocumentFragment()", this));
-
- @DomName('Document.createElement')
- @DocsEditable()
- Element _createElement(String localName_OR_tagName, [String typeExtension]) {
- if (typeExtension == null) {
- return _createElement_1(localName_OR_tagName);
- }
- if (typeExtension != null) {
- return _createElement_2(localName_OR_tagName, typeExtension);
- }
- throw new ArgumentError("Incorrect number or type of arguments");
- }
- @JSName('createElement')
- @DomName('Document.createElement')
- @DocsEditable()
- Element _createElement_1(tagName) => wrap_jso(JS("Element ", "#.raw.createElement(#)", this, unwrap_jso(tagName)));
- @JSName('createElement')
- @DomName('Document.createElement')
- @DocsEditable()
- Element _createElement_2(localName, typeExtension) => wrap_jso(JS("Element ", "#.raw.createElement(#, #)", this, unwrap_jso(localName), unwrap_jso(typeExtension)));
-
- @DomName('Document.createElementNS')
- @DocsEditable()
- Element _createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) {
- if (typeExtension == null) {
- return _createElementNS_1(namespaceURI, qualifiedName);
- }
- if (typeExtension != null) {
- return _createElementNS_2(namespaceURI, qualifiedName, typeExtension);
- }
- throw new ArgumentError("Incorrect number or type of arguments");
- }
- @JSName('createElementNS')
- @DomName('Document.createElementNS')
- @DocsEditable()
- Element _createElementNS_1(namespaceURI, qualifiedName) => wrap_jso(JS("Element ", "#.raw.createElementNS(#, #)", this, unwrap_jso(namespaceURI), unwrap_jso(qualifiedName)));
- @JSName('createElementNS')
- @DomName('Document.createElementNS')
- @DocsEditable()
- Element _createElementNS_2(namespaceURI, qualifiedName, typeExtension) => wrap_jso(JS("Element ", "#.raw.createElementNS(#, #, #)", this, unwrap_jso(namespaceURI), unwrap_jso(qualifiedName), unwrap_jso(typeExtension)));
-
- @DomName('Document.createEvent')
- @DocsEditable()
- Event _createEvent(String eventType) {
- return _createEvent_1(eventType);
- }
- @JSName('createEvent')
- @DomName('Document.createEvent')
- @DocsEditable()
- Event _createEvent_1(eventType) => wrap_jso(JS("Event ", "#.raw.createEvent(#)", this, unwrap_jso(eventType)));
-
- @DomName('Document.createRange')
- @DocsEditable()
- Range createRange() {
- return _createRange_1();
- }
- @JSName('createRange')
- @DomName('Document.createRange')
- @DocsEditable()
- Range _createRange_1() => wrap_jso(JS("Range ", "#.raw.createRange()", this));
-
- @DomName('Document.createTextNode')
- @DocsEditable()
- Text _createTextNode(String data) {
- return _createTextNode_1(data);
- }
- @JSName('createTextNode')
- @DomName('Document.createTextNode')
- @DocsEditable()
- Text _createTextNode_1(data) => wrap_jso(JS("Text ", "#.raw.createTextNode(#)", this, unwrap_jso(data)));
-
- @DomName('Document.elementFromPoint')
- @DocsEditable()
- Element _elementFromPoint(int x, int y) {
- return _elementFromPoint_1(x, y);
- }
- @JSName('elementFromPoint')
- @DomName('Document.elementFromPoint')
- @DocsEditable()
- Element _elementFromPoint_1(x, y) => wrap_jso(JS("Element ", "#.raw.elementFromPoint(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
-
- @DomName('Document.execCommand')
- @DocsEditable()
- bool execCommand(String command, bool userInterface, String value) {
- return _execCommand_1(command, userInterface, value);
- }
- @JSName('execCommand')
- @DomName('Document.execCommand')
- @DocsEditable()
- bool _execCommand_1(command, userInterface, value) => wrap_jso(JS("bool ", "#.raw.execCommand(#, #, #)", this, unwrap_jso(command), unwrap_jso(userInterface), unwrap_jso(value)));
-
- @DomName('Document.exitFullscreen')
- @DocsEditable()
- @Experimental() // untriaged
- void exitFullscreen() {
- _exitFullscreen_1();
- return;
- }
- @JSName('exitFullscreen')
- @DomName('Document.exitFullscreen')
- @DocsEditable()
- @Experimental() // untriaged
- void _exitFullscreen_1() => wrap_jso(JS("void ", "#.raw.exitFullscreen()", this));
-
- @DomName('Document.exitPointerLock')
- @DocsEditable()
- @Experimental() // untriaged
- void exitPointerLock() {
- _exitPointerLock_1();
- return;
- }
- @JSName('exitPointerLock')
- @DomName('Document.exitPointerLock')
- @DocsEditable()
- @Experimental() // untriaged
- void _exitPointerLock_1() => wrap_jso(JS("void ", "#.raw.exitPointerLock()", this));
-
- @DomName('Document.getCSSCanvasContext')
- @DocsEditable()
- // https://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariCSSRef/Articles/Functions.html
- @Experimental() // non-standard
- Object _getCssCanvasContext(String contextId, String name, int width, int height) {
- return _getCssCanvasContext_1(contextId, name, width, height);
- }
- @JSName('getCSSCanvasContext')
- @DomName('Document.getCSSCanvasContext')
- @DocsEditable()
- // https://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariCSSRef/Articles/Functions.html
- @Experimental() // non-standard
- Object _getCssCanvasContext_1(contextId, name, width, height) => wrap_jso(JS("Object ", "#.raw.getCSSCanvasContext(#, #, #, #)", this, unwrap_jso(contextId), unwrap_jso(name), unwrap_jso(width), unwrap_jso(height)));
-
- @DomName('Document.getElementById')
- @DocsEditable()
- Element getElementById(String elementId) {
- return _getElementById_1(elementId);
- }
- @JSName('getElementById')
- @DomName('Document.getElementById')
- @DocsEditable()
- Element _getElementById_1(elementId) => wrap_jso(JS("Element ", "#.raw.getElementById(#)", this, unwrap_jso(elementId)));
-
- @DomName('Document.getElementsByClassName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection getElementsByClassName(String classNames) {
- return _getElementsByClassName_1(classNames);
- }
- @JSName('getElementsByClassName')
- @DomName('Document.getElementsByClassName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection _getElementsByClassName_1(classNames) => wrap_jso(JS("HtmlCollection ", "#.raw.getElementsByClassName(#)", this, unwrap_jso(classNames)));
-
- @DomName('Document.getElementsByName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- NodeList getElementsByName(String elementName) {
- return _getElementsByName_1(elementName);
- }
- @JSName('getElementsByName')
- @DomName('Document.getElementsByName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- NodeList _getElementsByName_1(elementName) => wrap_jso(JS("NodeList ", "#.raw.getElementsByName(#)", this, unwrap_jso(elementName)));
-
- @DomName('Document.getElementsByTagName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection getElementsByTagName(String localName) {
- return _getElementsByTagName_1(localName);
- }
- @JSName('getElementsByTagName')
- @DomName('Document.getElementsByTagName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection _getElementsByTagName_1(localName) => wrap_jso(JS("HtmlCollection ", "#.raw.getElementsByTagName(#)", this, unwrap_jso(localName)));
-
- @DomName('Document.importNode')
- @DocsEditable()
- Node importNode(Node node, [bool deep]) {
- if (deep != null) {
- return _importNode_1(node, deep);
- }
- return _importNode_2(node);
- }
- @JSName('importNode')
- @DomName('Document.importNode')
- @DocsEditable()
- Node _importNode_1(Node node, deep) => wrap_jso(JS("Node ", "#.raw.importNode(#, #)", this, unwrap_jso(node), unwrap_jso(deep)));
- @JSName('importNode')
- @DomName('Document.importNode')
- @DocsEditable()
- Node _importNode_2(Node node) => wrap_jso(JS("Node ", "#.raw.importNode(#)", this, unwrap_jso(node)));
-
- @DomName('Document.queryCommandEnabled')
- @DocsEditable()
- bool queryCommandEnabled(String command) {
- return _queryCommandEnabled_1(command);
- }
- @JSName('queryCommandEnabled')
- @DomName('Document.queryCommandEnabled')
- @DocsEditable()
- bool _queryCommandEnabled_1(command) => wrap_jso(JS("bool ", "#.raw.queryCommandEnabled(#)", this, unwrap_jso(command)));
-
- @DomName('Document.queryCommandIndeterm')
- @DocsEditable()
- bool queryCommandIndeterm(String command) {
- return _queryCommandIndeterm_1(command);
- }
- @JSName('queryCommandIndeterm')
- @DomName('Document.queryCommandIndeterm')
- @DocsEditable()
- bool _queryCommandIndeterm_1(command) => wrap_jso(JS("bool ", "#.raw.queryCommandIndeterm(#)", this, unwrap_jso(command)));
-
- @DomName('Document.queryCommandState')
- @DocsEditable()
- bool queryCommandState(String command) {
- return _queryCommandState_1(command);
- }
- @JSName('queryCommandState')
- @DomName('Document.queryCommandState')
- @DocsEditable()
- bool _queryCommandState_1(command) => wrap_jso(JS("bool ", "#.raw.queryCommandState(#)", this, unwrap_jso(command)));
-
- @DomName('Document.queryCommandSupported')
- @DocsEditable()
- bool queryCommandSupported(String command) {
- return _queryCommandSupported_1(command);
- }
- @JSName('queryCommandSupported')
- @DomName('Document.queryCommandSupported')
- @DocsEditable()
- bool _queryCommandSupported_1(command) => wrap_jso(JS("bool ", "#.raw.queryCommandSupported(#)", this, unwrap_jso(command)));
-
- @DomName('Document.queryCommandValue')
- @DocsEditable()
- String queryCommandValue(String command) {
- return _queryCommandValue_1(command);
- }
- @JSName('queryCommandValue')
- @DomName('Document.queryCommandValue')
- @DocsEditable()
- String _queryCommandValue_1(command) => wrap_jso(JS("String ", "#.raw.queryCommandValue(#)", this, unwrap_jso(command)));
-
- @DomName('Document.transformDocumentToTreeView')
- @DocsEditable()
- @Experimental() // untriaged
- void transformDocumentToTreeView(String noStyleMessage) {
- _transformDocumentToTreeView_1(noStyleMessage);
- return;
- }
- @JSName('transformDocumentToTreeView')
- @DomName('Document.transformDocumentToTreeView')
- @DocsEditable()
- @Experimental() // untriaged
- void _transformDocumentToTreeView_1(noStyleMessage) => wrap_jso(JS("void ", "#.raw.transformDocumentToTreeView(#)", this, unwrap_jso(noStyleMessage)));
-
- @DomName('Document.webkitExitFullscreen')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen
- void _webkitExitFullscreen() {
- _webkitExitFullscreen_1();
- return;
- }
- @JSName('webkitExitFullscreen')
- @DomName('Document.webkitExitFullscreen')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen
- void _webkitExitFullscreen_1() => wrap_jso(JS("void ", "#.raw.webkitExitFullscreen()", this));
-
- // From ParentNode
-
- @JSName('childElementCount')
- @DomName('Document.childElementCount')
- @DocsEditable()
- int get _childElementCount => wrap_jso(JS("int", "#.childElementCount", this.raw));
-
- @JSName('children')
- @DomName('Document.children')
- @DocsEditable()
- @Returns('HtmlCollection')
- @Creates('HtmlCollection')
- List<Node> get _children => wrap_jso(JS("List<Node>", "#.children", this.raw));
-
- @JSName('firstElementChild')
- @DomName('Document.firstElementChild')
- @DocsEditable()
- Element get _firstElementChild => wrap_jso(JS("Element", "#.firstElementChild", this.raw));
-
- @JSName('lastElementChild')
- @DomName('Document.lastElementChild')
- @DocsEditable()
- Element get _lastElementChild => wrap_jso(JS("Element", "#.lastElementChild", this.raw));
-
- /**
- * Finds the first descendant element of this document that matches the
- * specified group of selectors.
- *
- * Unless your webpage contains multiple documents, the top-level
- * [querySelector]
- * method behaves the same as this method, so you should use it instead to
- * save typing a few characters.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * var element1 = document.querySelector('.className');
- * var element2 = document.querySelector('#id');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
- @DomName('Document.querySelector')
- @DocsEditable()
- Element querySelector(String selectors) {
- return _querySelector_1(selectors);
- }
- @JSName('querySelector')
- /**
- * Finds the first descendant element of this document that matches the
- * specified group of selectors.
- *
- * Unless your webpage contains multiple documents, the top-level
- * [querySelector]
- * method behaves the same as this method, so you should use it instead to
- * save typing a few characters.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * var element1 = document.querySelector('.className');
- * var element2 = document.querySelector('#id');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
- @DomName('Document.querySelector')
- @DocsEditable()
- Element _querySelector_1(selectors) => wrap_jso(JS("Element ", "#.raw.querySelector(#)", this, unwrap_jso(selectors)));
-
- @DomName('Document.querySelectorAll')
- @DocsEditable()
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList _querySelectorAll(String selectors) {
- return _querySelectorAll_1(selectors);
- }
- @JSName('querySelectorAll')
- @DomName('Document.querySelectorAll')
- @DocsEditable()
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList _querySelectorAll_1(selectors) => wrap_jso(JS("NodeList ", "#.raw.querySelectorAll(#)", this, unwrap_jso(selectors)));
-
- /// Stream of `beforecopy` events handled by this [Document].
- @DomName('Document.onbeforecopy')
- @DocsEditable()
- Stream<Event> get onBeforeCopy => Element.beforeCopyEvent.forTarget(this);
-
- /// Stream of `beforecut` events handled by this [Document].
- @DomName('Document.onbeforecut')
- @DocsEditable()
- Stream<Event> get onBeforeCut => Element.beforeCutEvent.forTarget(this);
-
- /// Stream of `beforepaste` events handled by this [Document].
- @DomName('Document.onbeforepaste')
- @DocsEditable()
- Stream<Event> get onBeforePaste => Element.beforePasteEvent.forTarget(this);
-
- /// Stream of `copy` events handled by this [Document].
- @DomName('Document.oncopy')
- @DocsEditable()
- Stream<Event> get onCopy => Element.copyEvent.forTarget(this);
-
- /// Stream of `cut` events handled by this [Document].
- @DomName('Document.oncut')
- @DocsEditable()
- Stream<Event> get onCut => Element.cutEvent.forTarget(this);
-
- /// Stream of `paste` events handled by this [Document].
- @DomName('Document.onpaste')
- @DocsEditable()
- Stream<Event> get onPaste => Element.pasteEvent.forTarget(this);
-
- @DomName('Document.onpointerlockchange')
- @DocsEditable()
- @Experimental() // untriaged
- Stream<Event> get onPointerLockChange => pointerLockChangeEvent.forTarget(this);
-
- @DomName('Document.onpointerlockerror')
- @DocsEditable()
- @Experimental() // untriaged
- Stream<Event> get onPointerLockError => pointerLockErrorEvent.forTarget(this);
-
- /// Stream of `readystatechange` events handled by this [Document].
- @DomName('Document.onreadystatechange')
- @DocsEditable()
- Stream<Event> get onReadyStateChange => readyStateChangeEvent.forTarget(this);
-
- /// Stream of `search` events handled by this [Document].
- @DomName('Document.onsearch')
- @DocsEditable()
- // http://www.w3.org/TR/html-markup/input.search.html
- @Experimental()
- Stream<Event> get onSearch => Element.searchEvent.forTarget(this);
-
- /// Stream of `selectionchange` events handled by this [Document].
- @DomName('Document.onselectionchange')
- @DocsEditable()
- Stream<Event> get onSelectionChange => selectionChangeEvent.forTarget(this);
-
- /// Stream of `selectstart` events handled by this [Document].
- @DomName('Document.onselectstart')
- @DocsEditable()
- Stream<Event> get onSelectStart => Element.selectStartEvent.forTarget(this);
-
- /// Stream of `fullscreenchange` events handled by this [Document].
- @DomName('Document.onwebkitfullscreenchange')
- @DocsEditable()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- @Experimental()
- Stream<Event> get onFullscreenChange => Element.fullscreenChangeEvent.forTarget(this);
-
- /// Stream of `fullscreenerror` events handled by this [Document].
- @DomName('Document.onwebkitfullscreenerror')
- @DocsEditable()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- @Experimental()
- Stream<Event> get onFullscreenError => Element.fullscreenErrorEvent.forTarget(this);
-
- /**
- * Finds all descendant elements of this document that match the specified
- * group of selectors.
- *
- * Unless your webpage contains multiple documents, the top-level
- * [querySelectorAll]
- * method behaves the same as this method, so you should use it instead to
- * save typing a few characters.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * var items = document.querySelectorAll('.itemClassName');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
- ElementList<Element> querySelectorAll(String selectors) {
- return new _FrozenElementList._wrap(_querySelectorAll(selectors));
- }
-
- /**
- * Alias for [querySelector]. Note this function is deprecated because its
- * semantics will be changing in the future.
- */
- @deprecated
- @Experimental()
- @DomName('Document.querySelector')
- Element query(String relativeSelectors) => querySelector(relativeSelectors);
-
- /**
- * Alias for [querySelectorAll]. Note this function is deprecated because its
- * semantics will be changing in the future.
- */
- @deprecated
- @Experimental()
- @DomName('Document.querySelectorAll')
- ElementList<Element> queryAll(String relativeSelectors) =>
- querySelectorAll(relativeSelectors);
-
- /// Checks if [registerElement] is supported on the current platform.
- bool get supportsRegisterElement {
- return true;
- }
-
- /// *Deprecated*: use [supportsRegisterElement] instead.
- @deprecated
- bool get supportsRegister => supportsRegisterElement;
-
- @DomName('Document.createElement')
- Element createElement(String tagName, [String typeExtension]) {
- return _createElement(tagName, typeExtension);
- }
-
- @DomName('Document.createElementNS')
- @DocsEditable()
- Element createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) {
- return _createElementNS(namespaceURI, qualifiedName, typeExtension);
- }
-
-}
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DomName('DocumentFragment')
-@Native("DocumentFragment")
-class DocumentFragment extends Node implements ParentNode {
- factory DocumentFragment() => document.createDocumentFragment();
-
- factory DocumentFragment.html(String html,
- {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
-
- return document.body.createFragment(html,
- validator: validator, treeSanitizer: treeSanitizer);
- }
-
- factory DocumentFragment.svg(String svgContent,
- {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
- throw 'SVG not supported in DDC';
- }
-
- HtmlCollection get _children => throw new UnimplementedError(
- 'Use _docChildren instead');
-
- List<Element> _docChildren;
-
- List<Element> get children {
- if (_docChildren == null) {
- _docChildren = new FilteredElementList(this);
- }
- return _docChildren;
- }
-
- set children(List<Element> value) {
- // Copy list first since we don't want liveness during iteration.
- List copy = new List.from(value);
- var children = this.children;
- children.clear();
- children.addAll(copy);
- }
-
- /**
- * Finds all descendant elements of this document fragment that match the
- * specified group of selectors.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * var items = document.querySelectorAll('.itemClassName');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
- ElementList<Element> querySelectorAll(String selectors) =>
- new _FrozenElementList._wrap(_querySelectorAll(selectors));
-
- String get innerHtml {
- final e = new Element.tag("div");
- e.append(this.clone(true));
- return e.innerHtml;
- }
-
- set innerHtml(String value) {
- this.setInnerHtml(value);
- }
-
- void setInnerHtml(String html,
- {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
-
- this.nodes.clear();
- append(document.body.createFragment(
- html, validator: validator, treeSanitizer: treeSanitizer));
- }
-
- /**
- * Adds the specified text as a text node after the last child of this
- * document fragment.
- */
- void appendText(String text) {
- this.append(new Text(text));
- }
-
-
- /**
- * Parses the specified text as HTML and adds the resulting node after the
- * last child of this document fragment.
- */
- void appendHtml(String text, {NodeValidator validator,
- NodeTreeSanitizer, treeSanitizer}) {
- this.append(new DocumentFragment.html(text, validator: validator,
- treeSanitizer: treeSanitizer));
- }
-
- /**
- * Alias for [querySelector]. Note this function is deprecated because its
- * semantics will be changing in the future.
- */
- @deprecated
- @Experimental()
- @DomName('DocumentFragment.querySelector')
- Element query(String relativeSelectors) {
- return querySelector(relativeSelectors);
- }
-
- /**
- * Alias for [querySelectorAll]. Note this function is deprecated because its
- * semantics will be changing in the future.
- */
- @deprecated
- @Experimental()
- @DomName('DocumentFragment.querySelectorAll')
- ElementList<Element> queryAll(String relativeSelectors) {
- return querySelectorAll(relativeSelectors);
- }
- // To suppress missing implicit constructor warnings.
- factory DocumentFragment._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static DocumentFragment internalCreateDocumentFragment() {
- return new DocumentFragment.internal_();
- }
-
- @Deprecated("Internal Use Only")
- DocumentFragment.internal_() : super.internal_();
-
-
- @DomName('DocumentFragment.getElementById')
- @DocsEditable()
- @Experimental() // untriaged
- Element getElementById(String elementId) {
- return _getElementById_1(elementId);
- }
- @JSName('getElementById')
- @DomName('DocumentFragment.getElementById')
- @DocsEditable()
- @Experimental() // untriaged
- Element _getElementById_1(elementId) => wrap_jso(JS("Element ", "#.raw.getElementById(#)", this, unwrap_jso(elementId)));
-
- // From ParentNode
-
- @JSName('childElementCount')
- @DomName('DocumentFragment.childElementCount')
- @DocsEditable()
- int get _childElementCount => wrap_jso(JS("int", "#.childElementCount", this.raw));
-
- @JSName('firstElementChild')
- @DomName('DocumentFragment.firstElementChild')
- @DocsEditable()
- Element get _firstElementChild => wrap_jso(JS("Element", "#.firstElementChild", this.raw));
-
- @JSName('lastElementChild')
- @DomName('DocumentFragment.lastElementChild')
- @DocsEditable()
- Element get _lastElementChild => wrap_jso(JS("Element", "#.lastElementChild", this.raw));
-
- /**
- * Finds the first descendant element of this document fragment that matches
- * the specified group of selectors.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * var element1 = fragment.querySelector('.className');
- * var element2 = fragment.querySelector('#id');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
- @DomName('DocumentFragment.querySelector')
- @DocsEditable()
- Element querySelector(String selectors) {
- return _querySelector_1(selectors);
- }
- @JSName('querySelector')
- /**
- * Finds the first descendant element of this document fragment that matches
- * the specified group of selectors.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * var element1 = fragment.querySelector('.className');
- * var element2 = fragment.querySelector('#id');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
- @DomName('DocumentFragment.querySelector')
- @DocsEditable()
- Element _querySelector_1(selectors) => wrap_jso(JS("Element ", "#.raw.querySelector(#)", this, unwrap_jso(selectors)));
-
- @DomName('DocumentFragment.querySelectorAll')
- @DocsEditable()
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList _querySelectorAll(String selectors) {
- return _querySelectorAll_1(selectors);
- }
- @JSName('querySelectorAll')
- @DomName('DocumentFragment.querySelectorAll')
- @DocsEditable()
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList _querySelectorAll_1(selectors) => wrap_jso(JS("NodeList ", "#.raw.querySelectorAll(#)", this, unwrap_jso(selectors)));
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('DOMImplementation')
-@Native("DOMImplementation")
-class DomImplementation extends DartHtmlDomObject {
- // To suppress missing implicit constructor warnings.
- factory DomImplementation._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static DomImplementation internalCreateDomImplementation() {
- return new DomImplementation.internal_();
- }
-
- @Deprecated("Internal Use Only")
- DomImplementation.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('DOMImplementation.createDocument')
- @DocsEditable()
- Document createDocument(String namespaceURI, String qualifiedName, Node doctype) {
- return _createDocument_1(namespaceURI, qualifiedName, doctype);
- }
- @JSName('createDocument')
- @DomName('DOMImplementation.createDocument')
- @DocsEditable()
- Document _createDocument_1(namespaceURI, qualifiedName, Node doctype) => wrap_jso(JS("Document ", "#.raw.createDocument(#, #, #)", this, unwrap_jso(namespaceURI), unwrap_jso(qualifiedName), unwrap_jso(doctype)));
-
- @DomName('DOMImplementation.createDocumentType')
- @DocsEditable()
- Node createDocumentType(String qualifiedName, String publicId, String systemId) {
- return _createDocumentType_1(qualifiedName, publicId, systemId);
- }
- @JSName('createDocumentType')
- @DomName('DOMImplementation.createDocumentType')
- @DocsEditable()
- Node _createDocumentType_1(qualifiedName, publicId, systemId) => wrap_jso(JS("Node ", "#.raw.createDocumentType(#, #, #)", this, unwrap_jso(qualifiedName), unwrap_jso(publicId), unwrap_jso(systemId)));
-
- @DomName('DOMImplementation.createHTMLDocument')
- @DocsEditable()
- HtmlDocument createHtmlDocument(String title) {
- return _createHtmlDocument_1(title);
- }
- @JSName('createHTMLDocument')
- @DomName('DOMImplementation.createHTMLDocument')
- @DocsEditable()
- HtmlDocument _createHtmlDocument_1(title) => wrap_jso(JS("HtmlDocument ", "#.raw.createHTMLDocument(#)", this, unwrap_jso(title)));
-
- @DomName('DOMImplementation.hasFeature')
- @DocsEditable()
- bool hasFeature(String feature, String version) {
- return _hasFeature_1(feature, version);
- }
- @JSName('hasFeature')
- @DomName('DOMImplementation.hasFeature')
- @DocsEditable()
- bool _hasFeature_1(feature, version) => wrap_jso(JS("bool ", "#.raw.hasFeature(#, #)", this, unwrap_jso(feature), unwrap_jso(version)));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('DOMTokenList')
-@Native("DOMTokenList")
-class DomTokenList extends DartHtmlDomObject {
- // To suppress missing implicit constructor warnings.
- factory DomTokenList._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static DomTokenList internalCreateDomTokenList() {
- return new DomTokenList.internal_();
- }
-
- @Deprecated("Internal Use Only")
- DomTokenList.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('DOMTokenList.length')
- @DocsEditable()
- int get length => wrap_jso(JS("int", "#.length", this.raw));
-
- @DomName('DOMTokenList.add')
- @DocsEditable()
- @Experimental() // untriaged
- void add(String tokens) {
- _add_1(tokens);
- return;
- }
- @JSName('add')
- @DomName('DOMTokenList.add')
- @DocsEditable()
- @Experimental() // untriaged
- void _add_1(tokens) => wrap_jso(JS("void ", "#.raw.add(#)", this, unwrap_jso(tokens)));
-
- @DomName('DOMTokenList.contains')
- @DocsEditable()
- bool contains(String token) {
- return _contains_1(token);
- }
- @JSName('contains')
- @DomName('DOMTokenList.contains')
- @DocsEditable()
- bool _contains_1(token) => wrap_jso(JS("bool ", "#.raw.contains(#)", this, unwrap_jso(token)));
-
- @DomName('DOMTokenList.item')
- @DocsEditable()
- String item(int index) {
- return _item_1(index);
- }
- @JSName('item')
- @DomName('DOMTokenList.item')
- @DocsEditable()
- String _item_1(index) => wrap_jso(JS("String ", "#.raw.item(#)", this, unwrap_jso(index)));
-
- @DomName('DOMTokenList.remove')
- @DocsEditable()
- @Experimental() // untriaged
- void remove(String tokens) {
- _remove_1(tokens);
- return;
- }
- @JSName('remove')
- @DomName('DOMTokenList.remove')
- @DocsEditable()
- @Experimental() // untriaged
- void _remove_1(tokens) => wrap_jso(JS("void ", "#.raw.remove(#)", this, unwrap_jso(tokens)));
-
- @DomName('DOMTokenList.toggle')
- @DocsEditable()
- bool toggle(String token, [bool force]) {
- if (force != null) {
- return _toggle_1(token, force);
- }
- return _toggle_2(token);
- }
- @JSName('toggle')
- @DomName('DOMTokenList.toggle')
- @DocsEditable()
- bool _toggle_1(token, force) => wrap_jso(JS("bool ", "#.raw.toggle(#, #)", this, unwrap_jso(token), unwrap_jso(force)));
- @JSName('toggle')
- @DomName('DOMTokenList.toggle')
- @DocsEditable()
- bool _toggle_2(token) => wrap_jso(JS("bool ", "#.raw.toggle(#)", this, unwrap_jso(token)));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-class _ChildrenElementList extends ListBase<Element>
- implements NodeListWrapper {
- // Raw Element.
- final Element _element;
- final HtmlCollection _childElements;
-
- _ChildrenElementList._wrap(Element element)
- : _childElements = element._children,
- _element = element;
-
- bool contains(Object element) => _childElements.contains(element);
-
-
- bool get isEmpty {
- return _element._firstElementChild == null;
- }
-
- int get length {
- return _childElements.length;
- }
-
- Element operator [](int index) {
- return _childElements[index];
- }
-
- void operator []=(int index, Element value) {
- _element._replaceChild(value, _childElements[index]);
- }
-
- set length(int newLength) {
- // TODO(jacobr): remove children when length is reduced.
- throw new UnsupportedError('Cannot resize element lists');
- }
-
- Element add(Element value) {
- _element.append(value);
- return value;
- }
-
- Iterator<Element> get iterator => toList().iterator;
-
- void addAll(Iterable<Element> iterable) {
- if (iterable is _ChildNodeListLazy) {
- iterable = new List.from(iterable);
- }
-
- for (Element element in iterable) {
- _element.append(element);
- }
- }
-
- void sort([int compare(Element a, Element b)]) {
- throw new UnsupportedError('Cannot sort element lists');
- }
-
- void shuffle([Random random]) {
- throw new UnsupportedError('Cannot shuffle element lists');
- }
-
- void removeWhere(bool test(Element element)) {
- _filter(test, false);
- }
-
- void retainWhere(bool test(Element element)) {
- _filter(test, true);
- }
-
- void _filter(bool test(var element), bool retainMatching) {
- var removed;
- if (retainMatching) {
- removed = _element.children.where((e) => !test(e));
- } else {
- removed = _element.children.where(test);
- }
- for (var e in removed) e.remove();
- }
-
- void setRange(int start, int end, Iterable<Element> iterable,
- [int skipCount = 0]) {
- throw new UnimplementedError();
- }
-
- void replaceRange(int start, int end, Iterable<Element> iterable) {
- throw new UnimplementedError();
- }
-
- void fillRange(int start, int end, [Element fillValue]) {
- throw new UnimplementedError();
- }
-
- bool remove(Object object) {
- if (object is Element) {
- Element element = object;
- // We aren't preserving identity of nodes in JSINTEROP mode
- if (element.parentNode == _element) {
- _element._removeChild(element);
- return true;
- }
- }
- return false;
- }
-
- void insert(int index, Element element) {
- if (index < 0 || index > length) {
- throw new RangeError.range(index, 0, length);
- }
- if (index == length) {
- _element.append(element);
- } else {
- _element.insertBefore(element, this[index]);
- }
- }
-
- void setAll(int index, Iterable<Element> iterable) {
- throw new UnimplementedError();
- }
-
- void clear() {
- _element._clearChildren();
- }
-
- Element removeAt(int index) {
- final result = this[index];
- if (result != null) {
- _element._removeChild(result);
- }
- return result;
- }
-
- Element removeLast() {
- final result = this.last;
- if (result != null) {
- _element._removeChild(result);
- }
- return result;
- }
-
- Element get first {
- Element result = _element._firstElementChild;
- if (result == null) throw new StateError("No elements");
- return result;
- }
-
-
- Element get last {
- Element result = _element._lastElementChild;
- if (result == null) throw new StateError("No elements");
- return result;
- }
-
- Element get single {
- if (length > 1) throw new StateError("More than one element");
- return first;
- }
-
- List<Node> get rawList => _childElements;
-}
-
-/**
- * An immutable list containing HTML elements. This list contains some
- * additional methods when compared to regular lists for ease of CSS
- * manipulation on a group of elements.
- */
-abstract class ElementList<T extends Element> extends ListBase<T> {
- /**
- * The union of all CSS classes applied to the elements in this list.
- *
- * This set makes it easy to add, remove or toggle (add if not present, remove
- * if present) the classes applied to a collection of elements.
- *
- * htmlList.classes.add('selected');
- * htmlList.classes.toggle('isOnline');
- * htmlList.classes.remove('selected');
- */
- CssClassSet get classes;
-
- /** Replace the classes with `value` for every element in this list. */
- set classes(Iterable<String> value);
-
- /**
- * Access the union of all [CssStyleDeclaration]s that are associated with an
- * [ElementList].
- *
- * Grouping the style objects all together provides easy editing of specific
- * properties of a collection of elements. Setting a specific property value
- * will set that property in all [Element]s in the [ElementList]. Getting a
- * specific property value will return the value of the property of the first
- * element in the [ElementList].
- */
- CssStyleDeclarationBase get style;
-
- /**
- * Access dimensions and position of the Elements in this list.
- *
- * Setting the height or width properties will set the height or width
- * property for all elements in the list. This returns a rectangle with the
- * dimenions actually available for content
- * in this element, in pixels, regardless of this element's box-sizing
- * property. Getting the height or width returns the height or width of the
- * first Element in this list.
- *
- * Unlike [getBoundingClientRect], the dimensions of this rectangle
- * will return the same numerical height if the element is hidden or not.
- */
- @Experimental()
- CssRect get contentEdge;
-
- /**
- * Access dimensions and position of the first Element's content + padding box
- * in this list.
- *
- * This returns a rectangle with the dimenions actually available for content
- * in this element, in pixels, regardless of this element's box-sizing
- * property. Unlike [getBoundingClientRect], the dimensions of this rectangle
- * will return the same numerical height if the element is hidden or not. This
- * can be used to retrieve jQuery's `innerHeight` value for an element. This
- * is also a rectangle equalling the dimensions of clientHeight and
- * clientWidth.
- */
- @Experimental()
- CssRect get paddingEdge;
-
- /**
- * Access dimensions and position of the first Element's content + padding +
- * border box in this list.
- *
- * This returns a rectangle with the dimenions actually available for content
- * in this element, in pixels, regardless of this element's box-sizing
- * property. Unlike [getBoundingClientRect], the dimensions of this rectangle
- * will return the same numerical height if the element is hidden or not. This
- * can be used to retrieve jQuery's `outerHeight` value for an element.
- */
- @Experimental()
- CssRect get borderEdge;
-
- /**
- * Access dimensions and position of the first Element's content + padding +
- * border + margin box in this list.
- *
- * This returns a rectangle with the dimenions actually available for content
- * in this element, in pixels, regardless of this element's box-sizing
- * property. Unlike [getBoundingClientRect], the dimensions of this rectangle
- * will return the same numerical height if the element is hidden or not. This
- * can be used to retrieve jQuery's `outerHeight` value for an element.
- */
- @Experimental()
- CssRect get marginEdge;
-
- /// Stream of `beforecopy` events handled by this [Element].
- @DomName('Element.onbeforecopy')
- @DocsEditable()
- ElementStream<Event> get onBeforeCopy;
-
- /// Stream of `beforecut` events handled by this [Element].
- @DomName('Element.onbeforecut')
- @DocsEditable()
- ElementStream<Event> get onBeforeCut;
-
- /// Stream of `beforepaste` events handled by this [Element].
- @DomName('Element.onbeforepaste')
- @DocsEditable()
- ElementStream<Event> get onBeforePaste;
-
- /// Stream of `copy` events handled by this [Element].
- @DomName('Element.oncopy')
- @DocsEditable()
- ElementStream<Event> get onCopy;
-
- /// Stream of `cut` events handled by this [Element].
- @DomName('Element.oncut')
- @DocsEditable()
- ElementStream<Event> get onCut;
-
- /// Stream of `paste` events handled by this [Element].
- @DomName('Element.onpaste')
- @DocsEditable()
- ElementStream<Event> get onPaste;
-
- /// Stream of `search` events handled by this [Element].
- @DomName('Element.onsearch')
- @DocsEditable()
- // http://www.w3.org/TR/html-markup/input.search.html
- @Experimental()
- ElementStream<Event> get onSearch;
-
- /// Stream of `selectstart` events handled by this [Element].
- @DomName('Element.onselectstart')
- @DocsEditable()
- @Experimental() // nonstandard
- ElementStream<Event> get onSelectStart;
-
- /// Stream of `fullscreenchange` events handled by this [Element].
- @DomName('Element.onwebkitfullscreenchange')
- @DocsEditable()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- @Experimental()
- ElementStream<Event> get onFullscreenChange;
-
- /// Stream of `fullscreenerror` events handled by this [Element].
- @DomName('Element.onwebkitfullscreenerror')
- @DocsEditable()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- @Experimental()
- ElementStream<Event> get onFullscreenError;
-
-}
-
-// Wrapper over an immutable NodeList to make it implement ElementList.
-//
-// Clients are {`Document`, `DocumentFragment`}.`querySelectorAll` which are
-// declared to return `ElementList`. This provides all the static analysis
-// benefit so there is no need for this class have a constrained type parameter.
-//
-class _FrozenElementList extends ListBase<Element>
- implements ElementList<Element>, NodeListWrapper {
- final List<Node> _nodeList;
-
- var dartClass_instance;
-
- _FrozenElementList._wrap(this._nodeList) {
- this.dartClass_instance = this._nodeList;
- }
-
- int get length => _nodeList.length;
-
- Element operator [](int index) => _nodeList[index];
-
- void operator []=(int index, Element value) {
- throw new UnsupportedError('Cannot modify list');
- }
-
- set length(int newLength) {
- throw new UnsupportedError('Cannot modify list');
- }
-
- void sort([Comparator<Element> compare]) {
- throw new UnsupportedError('Cannot sort list');
- }
-
- void shuffle([Random random]) {
- throw new UnsupportedError('Cannot shuffle list');
- }
-
- Element get first => _nodeList.first;
-
- Element get last => _nodeList.last;
-
- Element get single => _nodeList.single;
-
- CssClassSet get classes => new _MultiElementCssClassSet(this);
-
- CssStyleDeclarationBase get style =>
- new _CssStyleDeclarationSet(this);
-
- set classes(Iterable<String> value) {
- // TODO(sra): This might be faster for Sets:
- //
- // new _MultiElementCssClassSet(this).writeClasses(value)
- //
- // as the code below converts the Iterable[value] to a string multiple
- // times. Maybe compute the string and set className here.
- _nodeList.forEach((e) => e.classes = value);
- }
-
- CssRect get contentEdge => new _ContentCssListRect(this);
-
- CssRect get paddingEdge => this.first.paddingEdge;
-
- CssRect get borderEdge => this.first.borderEdge;
-
- CssRect get marginEdge => this.first.marginEdge;
-
- List<Node> get rawList => _nodeList;
-
-
- /// Stream of `beforecopy` events handled by this [Element].
- @DomName('Element.onbeforecopy')
- @DocsEditable()
- ElementStream<Event> get onBeforeCopy => Element.beforeCopyEvent._forElementList(this);
-
- /// Stream of `beforecut` events handled by this [Element].
- @DomName('Element.onbeforecut')
- @DocsEditable()
- ElementStream<Event> get onBeforeCut => Element.beforeCutEvent._forElementList(this);
-
- /// Stream of `beforepaste` events handled by this [Element].
- @DomName('Element.onbeforepaste')
- @DocsEditable()
- ElementStream<Event> get onBeforePaste => Element.beforePasteEvent._forElementList(this);
-
- /// Stream of `copy` events handled by this [Element].
- @DomName('Element.oncopy')
- @DocsEditable()
- ElementStream<Event> get onCopy => Element.copyEvent._forElementList(this);
-
- /// Stream of `cut` events handled by this [Element].
- @DomName('Element.oncut')
- @DocsEditable()
- ElementStream<Event> get onCut => Element.cutEvent._forElementList(this);
-
- /// Stream of `paste` events handled by this [Element].
- @DomName('Element.onpaste')
- @DocsEditable()
- ElementStream<Event> get onPaste => Element.pasteEvent._forElementList(this);
-
- /// Stream of `search` events handled by this [Element].
- @DomName('Element.onsearch')
- @DocsEditable()
- // http://www.w3.org/TR/html-markup/input.search.html
- @Experimental()
- ElementStream<Event> get onSearch => Element.searchEvent._forElementList(this);
-
- /// Stream of `selectstart` events handled by this [Element].
- @DomName('Element.onselectstart')
- @DocsEditable()
- @Experimental() // nonstandard
- ElementStream<Event> get onSelectStart => Element.selectStartEvent._forElementList(this);
-
- /// Stream of `fullscreenchange` events handled by this [Element].
- @DomName('Element.onwebkitfullscreenchange')
- @DocsEditable()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- @Experimental()
- ElementStream<Event> get onFullscreenChange => Element.fullscreenChangeEvent._forElementList(this);
-
- /// Stream of `fullscreenerror` events handled by this [Element].
- @DomName('Element.onwebkitfullscreenerror')
- @DocsEditable()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- @Experimental()
- ElementStream<Event> get onFullscreenError => Element.fullscreenErrorEvent._forElementList(this);
-
-}
-
-@DocsEditable()
-/**
- * An abstract class, which all HTML elements extend.
- */
-@DomName('Element')
-@Native("Element")
-class Element extends Node implements ParentNode, ChildNode {
-
- /**
- * Creates an HTML element from a valid fragment of HTML.
- *
- * var element = new Element.html('<div class="foo">content</div>');
- *
- * The HTML fragment should contain only one single root element, any
- * leading or trailing text nodes will be removed.
- *
- * The HTML fragment is parsed as if it occurred within the context of a
- * `<body>` tag, this means that special elements such as `<caption>` which
- * must be parsed within the scope of a `<table>` element will be dropped. Use
- * [createFragment] to parse contextual HTML fragments.
- *
- * Unless a validator is provided this will perform the default validation
- * and remove all scriptable elements and attributes.
- *
- * See also:
- *
- * * [NodeValidator]
- *
- */
- factory Element.html(String html,
- {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
- var fragment = document.body.createFragment(html, validator: validator,
- treeSanitizer: treeSanitizer);
-
- return fragment.nodes.where((e) => e is Element).single;
- }
-
- /**
- * Custom element creation constructor.
- *
- * This constructor is used by the DOM when a custom element has been
- * created. It can only be invoked by subclasses of Element from
- * that classes created constructor.
- *
- * class CustomElement extends Element {
- * factory CustomElement() => new Element.tag('x-custom');
- *
- * CustomElement.created() : super.created() {
- * // Perform any element initialization.
- * }
- * }
- * document.registerElement('x-custom', CustomElement);
- */
- Element.created() : super._created();
-
- /**
- * Creates the HTML element specified by the tag name.
- *
- * This is similar to [Document.createElement].
- * [tag] should be a valid HTML tag name. If [tag] is an unknown tag then
- * this will create an [UnknownElement].
- *
- * var divElement = new Element.tag('div');
- * print(divElement is DivElement); // 'true'
- * var myElement = new Element.tag('unknownTag');
- * print(myElement is UnknownElement); // 'true'
- *
- * For standard elements it is more preferable to use the type constructors:
- * var element = new DivElement();
- *
- * See also:
- *
- * * [isTagSupported]
- */
- factory Element.tag(String tag, [String typeExtention]) =>
- _ElementFactoryProvider.createElement_tag(tag, typeExtention);
-
- /// Creates a new `<a>` element.
- ///
- /// This is identical to calling `new Element.tag('a')`.
- factory Element.a() => new Element.tag('a');
-
- /// Creates a new `<article>` element.
- ///
- /// This is identical to calling `new Element.tag('article')`.
- factory Element.article() => new Element.tag('article');
-
- /// Creates a new `<aside>` element.
- ///
- /// This is identical to calling `new Element.tag('aside')`.
- factory Element.aside() => new Element.tag('aside');
-
- /// Creates a new `<audio>` element.
- ///
- /// This is identical to calling `new Element.tag('audio')`.
- factory Element.audio() => new Element.tag('audio');
-
- /// Creates a new `<br>` element.
- ///
- /// This is identical to calling `new Element.tag('br')`.
- factory Element.br() => new Element.tag('br');
-
- /// Creates a new `<canvas>` element.
- ///
- /// This is identical to calling `new Element.tag('canvas')`.
- factory Element.canvas() => new Element.tag('canvas');
-
- /// Creates a new `<div>` element.
- ///
- /// This is identical to calling `new Element.tag('div')`.
- factory Element.div() => new Element.tag('div');
-
- /// Creates a new `<footer>` element.
- ///
- /// This is identical to calling `new Element.tag('footer')`.
- factory Element.footer() => new Element.tag('footer');
-
- /// Creates a new `<header>` element.
- ///
- /// This is identical to calling `new Element.tag('header')`.
- factory Element.header() => new Element.tag('header');
-
- /// Creates a new `<hr>` element.
- ///
- /// This is identical to calling `new Element.tag('hr')`.
- factory Element.hr() => new Element.tag('hr');
-
- /// Creates a new `<iframe>` element.
- ///
- /// This is identical to calling `new Element.tag('iframe')`.
- factory Element.iframe() => new Element.tag('iframe');
-
- /// Creates a new `<img>` element.
- ///
- /// This is identical to calling `new Element.tag('img')`.
- factory Element.img() => new Element.tag('img');
-
- /// Creates a new `<li>` element.
- ///
- /// This is identical to calling `new Element.tag('li')`.
- factory Element.li() => new Element.tag('li');
-
- /// Creates a new `<nav>` element.
- ///
- /// This is identical to calling `new Element.tag('nav')`.
- factory Element.nav() => new Element.tag('nav');
-
- /// Creates a new `<ol>` element.
- ///
- /// This is identical to calling `new Element.tag('ol')`.
- factory Element.ol() => new Element.tag('ol');
-
- /// Creates a new `<option>` element.
- ///
- /// This is identical to calling `new Element.tag('option')`.
- factory Element.option() => new Element.tag('option');
-
- /// Creates a new `<p>` element.
- ///
- /// This is identical to calling `new Element.tag('p')`.
- factory Element.p() => new Element.tag('p');
-
- /// Creates a new `<pre>` element.
- ///
- /// This is identical to calling `new Element.tag('pre')`.
- factory Element.pre() => new Element.tag('pre');
-
- /// Creates a new `<section>` element.
- ///
- /// This is identical to calling `new Element.tag('section')`.
- factory Element.section() => new Element.tag('section');
-
- /// Creates a new `<select>` element.
- ///
- /// This is identical to calling `new Element.tag('select')`.
- factory Element.select() => new Element.tag('select');
-
- /// Creates a new `<span>` element.
- ///
- /// This is identical to calling `new Element.tag('span')`.
- factory Element.span() => new Element.tag('span');
-
- /// Creates a new `<svg>` element.
- ///
- /// This is identical to calling `new Element.tag('svg')`.
- factory Element.svg() => new Element.tag('svg');
-
- /// Creates a new `<table>` element.
- ///
- /// This is identical to calling `new Element.tag('table')`.
- factory Element.table() => new Element.tag('table');
-
- /// Creates a new `<td>` element.
- ///
- /// This is identical to calling `new Element.tag('td')`.
- factory Element.td() => new Element.tag('td');
-
- /// Creates a new `<textarea>` element.
- ///
- /// This is identical to calling `new Element.tag('textarea')`.
- factory Element.textarea() => new Element.tag('textarea');
-
- /// Creates a new `<th>` element.
- ///
- /// This is identical to calling `new Element.tag('th')`.
- factory Element.th() => new Element.tag('th');
-
- /// Creates a new `<tr>` element.
- ///
- /// This is identical to calling `new Element.tag('tr')`.
- factory Element.tr() => new Element.tag('tr');
-
- /// Creates a new `<ul>` element.
- ///
- /// This is identical to calling `new Element.tag('ul')`.
- factory Element.ul() => new Element.tag('ul');
-
- /// Creates a new `<video>` element.
- ///
- /// This is identical to calling `new Element.tag('video')`.
- factory Element.video() => new Element.tag('video');
-
- /**
- * All attributes on this element.
- *
- * Any modifications to the attribute map will automatically be applied to
- * this element.
- *
- * This only includes attributes which are not in a namespace
- * (such as 'xlink:href'), additional attributes can be accessed via
- * [getNamespacedAttributes].
- */
- Map<String, String> get attributes => new _ElementAttributeMap(this);
-
- set attributes(Map<String, String> value) {
- Map<String, String> attributes = this.attributes;
- attributes.clear();
- for (String key in value.keys) {
- attributes[key] = value[key];
- }
- }
-
- /**
- * List of the direct children of this element.
- *
- * This collection can be used to add and remove elements from the document.
- *
- * var item = new DivElement();
- * item.text = 'Something';
- * document.body.children.add(item) // Item is now displayed on the page.
- * for (var element in document.body.children) {
- * element.style.background = 'red'; // Turns every child of body red.
- * }
- */
- List<Element> get children => new _ChildrenElementList._wrap(this);
-
- set children(List<Element> value) {
- // Copy list first since we don't want liveness during iteration.
- List copy = new List.from(value);
- var children = this.children;
- children.clear();
- children.addAll(copy);
- }
-
- /**
- * Finds all descendent elements of this element that match the specified
- * group of selectors.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * var items = element.querySelectorAll('.itemClassName');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
- @DomName('Element.querySelectorAll')
- ElementList<Element> querySelectorAll(String selectors) =>
- new _FrozenElementList._wrap(_querySelectorAll(selectors));
-
- /**
- * Alias for [querySelector]. Note this function is deprecated because its
- * semantics will be changing in the future.
- */
- @deprecated
- @DomName('Element.querySelector')
- @Experimental()
- Element query(String relativeSelectors) => querySelector(relativeSelectors);
-
- /**
- * Alias for [querySelectorAll]. Note this function is deprecated because its
- * semantics will be changing in the future.
- */
- @deprecated
- @DomName('Element.querySelectorAll')
- @Experimental()
- ElementList<Element> queryAll(String relativeSelectors) =>
- querySelectorAll(relativeSelectors);
-
- /**
- * The set of CSS classes applied to this element.
- *
- * This set makes it easy to add, remove or toggle the classes applied to
- * this element.
- *
- * element.classes.add('selected');
- * element.classes.toggle('isOnline');
- * element.classes.remove('selected');
- */
- CssClassSet get classes => new _ElementCssClassSet(this);
-
- set classes(Iterable<String> value) {
- // TODO(sra): Do this without reading the classes in clear() and addAll(),
- // or writing the classes in clear().
- CssClassSet classSet = classes;
- classSet.clear();
- classSet.addAll(value);
- }
-
- /**
- * Allows access to all custom data attributes (data-*) set on this element.
- *
- * The keys for the map must follow these rules:
- *
- * * The name must not begin with 'xml'.
- * * The name cannot contain a semi-colon (';').
- * * The name cannot contain any capital letters.
- *
- * Any keys from markup will be converted to camel-cased keys in the map.
- *
- * For example, HTML specified as:
- *
- * <div data-my-random-value='value'></div>
- *
- * Would be accessed in Dart as:
- *
- * var value = element.dataset['myRandomValue'];
- *
- * See also:
- *
- * * [Custom data attributes](http://www.w3.org/TR/html5/global-attributes.html#custom-data-attribute)
- */
- Map<String, String> get dataset =>
- new _DataAttributeMap(attributes);
-
- set dataset(Map<String, String> value) {
- final data = this.dataset;
- data.clear();
- for (String key in value.keys) {
- data[key] = value[key];
- }
- }
-
- /**
- * Gets a map for manipulating the attributes of a particular namespace.
- *
- * This is primarily useful for SVG attributes such as xref:link.
- */
- Map<String, String> getNamespacedAttributes(String namespace) {
- return new _NamespacedAttributeMap(this, namespace);
- }
-
- /**
- * The set of all CSS values applied to this element, including inherited
- * and default values.
- *
- * The computedStyle contains values that are inherited from other
- * sources, such as parent elements or stylesheets. This differs from the
- * [style] property, which contains only the values specified directly on this
- * element.
- *
- * PseudoElement can be values such as `::after`, `::before`, `::marker`,
- * `::line-marker`.
- *
- * See also:
- *
- * * [CSS Inheritance and Cascade](http://docs.webplatform.org/wiki/tutorials/inheritance_and_cascade)
- * * [Pseudo-elements](http://docs.webplatform.org/wiki/css/selectors/pseudo-elements)
- */
- CssStyleDeclaration getComputedStyle([String pseudoElement]) {
- if (pseudoElement == null) {
- pseudoElement = '';
- }
- // TODO(jacobr): last param should be null, see b/5045788
- return window._getComputedStyle(this, pseudoElement);
- }
-
- /**
- * Gets the position of this element relative to the client area of the page.
- */
- Rectangle get client => new Rectangle(clientLeft, clientTop, clientWidth,
- clientHeight);
-
- /**
- * Gets the offset of this element relative to its offsetParent.
- */
- Rectangle get offset => new Rectangle(offsetLeft, offsetTop, offsetWidth,
- offsetHeight);
-
- /**
- * Adds the specified text after the last child of this element.
- */
- void appendText(String text) {
- this.append(new Text(text));
- }
-
- /**
- * Parses the specified text as HTML and adds the resulting node after the
- * last child of this element.
- */
- void appendHtml(String text, {NodeValidator validator,
- NodeTreeSanitizer treeSanitizer}) {
- this.insertAdjacentHtml('beforeend', text, validator: validator,
- treeSanitizer: treeSanitizer);
- }
-
- /**
- * Checks to see if the tag name is supported by the current platform.
- *
- * The tag should be a valid HTML tag name.
- */
- static bool isTagSupported(String tag) {
- var e = _ElementFactoryProvider.createElement_tag(tag, null);
- return e is Element && !(JS('bool', '#.constructor.name == "HTMLUnknownElement"', e));
- }
-
- /**
- * Called by the DOM when this element has been inserted into the live
- * document.
- *
- * More information can be found in the
- * [Custom Elements](http://w3c.github.io/webcomponents/spec/custom/#dfn-attached-callback)
- * draft specification.
- */
- @Experimental()
- void attached() {
- // For the deprecation period, call the old callback.
- enteredView();
- }
-
- /**
- * Called by the DOM when this element has been removed from the live
- * document.
- *
- * More information can be found in the
- * [Custom Elements](http://w3c.github.io/webcomponents/spec/custom/#dfn-detached-callback)
- * draft specification.
- */
- @Experimental()
- void detached() {
- // For the deprecation period, call the old callback.
- leftView();
- }
-
- /** *Deprecated*: override [attached] instead. */
- @Experimental()
- @deprecated
- void enteredView() {}
-
- /** *Deprecated*: override [detached] instead. */
- @Experimental()
- @deprecated
- void leftView() {}
-
-
- /**
- * Called by the DOM whenever an attribute on this has been changed.
- */
- void attributeChanged(String name, String oldValue, String newValue) {}
-
- // Hooks to support custom WebComponents.
-
- Element _xtag;
-
- /**
- * Experimental support for [web components][wc]. This field stores a
- * reference to the component implementation. It was inspired by Mozilla's
- * [x-tags][] project. Please note: in the future it may be possible to
- * `extend Element` from your class, in which case this field will be
- * deprecated.
- *
- * If xtag has not been set, it will simply return `this` [Element].
- *
- * [wc]: http://dvcs.w3.org/hg/webcomponents/raw-file/tip/explainer/index.html
- * [x-tags]: http://x-tags.org/
- */
- // Note: return type is `dynamic` for convenience to suppress warnings when
- // members of the component are used. The actual type is a subtype of Element.
- get xtag => _xtag != null ? _xtag : this;
-
- set xtag(Element value) {
- _xtag = value;
- }
-
- @DomName('Element.localName')
- @DocsEditable()
- String get localName => _localName;
-
- /**
- * A URI that identifies the XML namespace of this element.
- *
- * `null` if no namespace URI is specified.
- *
- * ## Other resources
- *
- * * [Node.namespaceURI]
- * (http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-NodeNSname) from W3C.
- */
- @DomName('Element.namespaceUri')
- String get namespaceUri => _namespaceUri;
-
- /**
- * The string representation of this element.
- *
- * This is equivalent to reading the [localName] property.
- */
- String toString() => localName;
-
- /**
- * Scrolls this element into view.
- *
- * Only one of of the alignment options may be specified at a time.
- *
- * If no options are specified then this will attempt to scroll the minimum
- * amount needed to bring the element into view.
- *
- * Note that alignCenter is currently only supported on WebKit platforms. If
- * alignCenter is specified but not supported then this will fall back to
- * alignTop.
- *
- * See also:
- *
- * * [scrollIntoView](http://docs.webplatform.org/wiki/dom/methods/scrollIntoView)
- * * [scrollIntoViewIfNeeded](http://docs.webplatform.org/wiki/dom/methods/scrollIntoViewIfNeeded)
- */
- void scrollIntoView([ScrollAlignment alignment]) {
- var hasScrollIntoViewIfNeeded = true;
- if (alignment == ScrollAlignment.TOP) {
- this._scrollIntoView(true);
- } else if (alignment == ScrollAlignment.BOTTOM) {
- this._scrollIntoView(false);
- } else if (hasScrollIntoViewIfNeeded) {
- if (alignment == ScrollAlignment.CENTER) {
- this._scrollIntoViewIfNeeded(true);
- } else {
- this._scrollIntoViewIfNeeded();
- }
- } else {
- this._scrollIntoView();
- }
- }
-
-
- /**
- * Parses text as an HTML fragment and inserts it into the DOM at the
- * specified location.
- *
- * The [where] parameter indicates where to insert the HTML fragment:
- *
- * * 'beforeBegin': Immediately before this element.
- * * 'afterBegin': As the first child of this element.
- * * 'beforeEnd': As the last child of this element.
- * * 'afterEnd': Immediately after this element.
- *
- * var html = '<div class="something">content</div>';
- * // Inserts as the first child
- * document.body.insertAdjacentHtml('afterBegin', html);
- * var createdElement = document.body.children[0];
- * print(createdElement.classes[0]); // Prints 'something'
- *
- * See also:
- *
- * * [insertAdjacentText]
- * * [insertAdjacentElement]
- */
- void insertAdjacentHtml(String where, String html, {NodeValidator validator,
- NodeTreeSanitizer treeSanitizer}) {
- if (treeSanitizer is _TrustedHtmlTreeSanitizer) {
- _insertAdjacentHtml(where, html);
- } else {
- _insertAdjacentNode(where, createFragment(html,
- validator: validator, treeSanitizer: treeSanitizer));
- }
- }
-
- @JSName('insertAdjacentHTML')
- void _insertAdjacentHtml(String where, String text) => JS('void', '#.insertAdjacentHTML(#,#)', this.raw, where, text);
-
-
- void _insertAdjacentNode(String where, Node node) {
- switch (where.toLowerCase()) {
- case 'beforebegin':
- this.parentNode.insertBefore(node, this);
- break;
- case 'afterbegin':
- var first = this.nodes.length > 0 ? this.nodes[0] : null;
- this.insertBefore(node, first);
- break;
- case 'beforeend':
- this.append(node);
- break;
- case 'afterend':
- this.parentNode.insertBefore(node, this.nextNode);
- break;
- default:
- throw new ArgumentError("Invalid position ${where}");
- }
- }
-
- bool matches(String selectors) => JS('bool', '#.matches(#)', this.raw, selectors);
-
- /** Checks if this element or any of its parents match the CSS selectors. */
- @Experimental()
- bool matchesWithAncestors(String selectors) {
- var elem = this;
- do {
- if (elem.matches(selectors)) return true;
- elem = elem.parent;
- } while(elem != null);
- return false;
- }
-
-
- /**
- * Access this element's content position.
- *
- * This returns a rectangle with the dimenions actually available for content
- * in this element, in pixels, regardless of this element's box-sizing
- * property. Unlike [getBoundingClientRect], the dimensions of this rectangle
- * will return the same numerical height if the element is hidden or not.
- *
- * _Important_ _note_: use of this method _will_ perform CSS calculations that
- * can trigger a browser reflow. Therefore, use of this property _during_ an
- * animation frame is discouraged. See also:
- * [Browser Reflow](https://developers.google.com/speed/articles/reflow)
- */
- @Experimental()
- CssRect get contentEdge => new _ContentCssRect(this);
-
- /**
- * Access the dimensions and position of this element's content + padding box.
- *
- * This returns a rectangle with the dimenions actually available for content
- * in this element, in pixels, regardless of this element's box-sizing
- * property. Unlike [getBoundingClientRect], the dimensions of this rectangle
- * will return the same numerical height if the element is hidden or not. This
- * can be used to retrieve jQuery's
- * [innerHeight](http://api.jquery.com/innerHeight/) value for an element.
- * This is also a rectangle equalling the dimensions of clientHeight and
- * clientWidth.
- *
- * _Important_ _note_: use of this method _will_ perform CSS calculations that
- * can trigger a browser reflow. Therefore, use of this property _during_ an
- * animation frame is discouraged. See also:
- * [Browser Reflow](https://developers.google.com/speed/articles/reflow)
- */
- @Experimental()
- CssRect get paddingEdge => new _PaddingCssRect(this);
-
- /**
- * Access the dimensions and position of this element's content + padding +
- * border box.
- *
- * This returns a rectangle with the dimenions actually available for content
- * in this element, in pixels, regardless of this element's box-sizing
- * property. Unlike [getBoundingClientRect], the dimensions of this rectangle
- * will return the same numerical height if the element is hidden or not. This
- * can be used to retrieve jQuery's
- * [outerHeight](http://api.jquery.com/outerHeight/) value for an element.
- *
- * _Important_ _note_: use of this method _will_ perform CSS calculations that
- * can trigger a browser reflow. Therefore, use of this property _during_ an
- * animation frame is discouraged. See also:
- * [Browser Reflow](https://developers.google.com/speed/articles/reflow)
- */
- @Experimental()
- CssRect get borderEdge => new _BorderCssRect(this);
-
- /**
- * Access the dimensions and position of this element's content + padding +
- * border + margin box.
- *
- * This returns a rectangle with the dimenions actually available for content
- * in this element, in pixels, regardless of this element's box-sizing
- * property. Unlike [getBoundingClientRect], the dimensions of this rectangle
- * will return the same numerical height if the element is hidden or not. This
- * can be used to retrieve jQuery's
- * [outerHeight](http://api.jquery.com/outerHeight/) value for an element.
- *
- * _Important_ _note_: use of this method will perform CSS calculations that
- * can trigger a browser reflow. Therefore, use of this property _during_ an
- * animation frame is discouraged. See also:
- * [Browser Reflow](https://developers.google.com/speed/articles/reflow)
- */
- @Experimental()
- CssRect get marginEdge => new _MarginCssRect(this);
-
- /**
- * Provides the coordinates of the element relative to the top of the
- * document.
- *
- * This method is the Dart equivalent to jQuery's
- * [offset](http://api.jquery.com/offset/) method.
- */
- @Experimental()
- Point get documentOffset => offsetTo(document.documentElement);
-
- /**
- * Provides the offset of this element's [borderEdge] relative to the
- * specified [parent].
- *
- * This is the Dart equivalent of jQuery's
- * [position](http://api.jquery.com/position/) method. Unlike jQuery's
- * position, however, [parent] can be any parent element of `this`,
- * rather than only `this`'s immediate [offsetParent]. If the specified
- * element is _not_ an offset parent or transitive offset parent to this
- * element, an [ArgumentError] is thrown.
- */
- @Experimental()
- Point offsetTo(Element parent) {
- return Element._offsetToHelper(this, parent);
- }
-
- static Point _offsetToHelper(Element current, Element parent) {
- // We're hopping from _offsetParent_ to offsetParent (not just parent), so
- // offsetParent, "tops out" at BODY. But people could conceivably pass in
- // the document.documentElement and I want it to return an absolute offset,
- // so we have the special case checking for HTML.
- bool sameAsParent = current == parent;
- bool foundAsParent = sameAsParent || parent.tagName == 'HTML';
- if (current == null || sameAsParent) {
- if (foundAsParent) return new Point(0, 0);
- throw new ArgumentError("Specified element is not a transitive offset "
- "parent of this element.");
- }
- Element parentOffset = current.offsetParent;
- Point p = Element._offsetToHelper(parentOffset, parent);
- return new Point(p.x + current.offsetLeft, p.y + current.offsetTop);
- }
-
- static HtmlDocument _parseDocument;
- static Range _parseRange;
- static NodeValidatorBuilder _defaultValidator;
- static _ValidatingTreeSanitizer _defaultSanitizer;
-
- /**
- * Create a DocumentFragment from the HTML fragment and ensure that it follows
- * the sanitization rules specified by the validator or treeSanitizer.
- *
- * If the default validation behavior is too restrictive then a new
- * NodeValidator should be created, either extending or wrapping a default
- * validator and overriding the validation APIs.
- *
- * The treeSanitizer is used to walk the generated node tree and sanitize it.
- * A custom treeSanitizer can also be provided to perform special validation
- * rules but since the API is more complex to implement this is discouraged.
- *
- * The returned tree is guaranteed to only contain nodes and attributes which
- * are allowed by the provided validator.
- *
- * See also:
- *
- * * [NodeValidator]
- * * [NodeTreeSanitizer]
- */
- DocumentFragment createFragment(String html,
- {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
- if (treeSanitizer == null) {
- if (validator == null) {
- if (_defaultValidator == null) {
- _defaultValidator = new NodeValidatorBuilder.common();
- }
- validator = _defaultValidator;
- }
- if (_defaultSanitizer == null) {
- _defaultSanitizer = new _ValidatingTreeSanitizer(validator);
- } else {
- _defaultSanitizer.validator = validator;
- }
- treeSanitizer = _defaultSanitizer;
- } else if (validator != null) {
- throw new ArgumentError(
- 'validator can only be passed if treeSanitizer is null');
- }
-
- if (_parseDocument == null) {
- _parseDocument = document.implementation.createHtmlDocument('');
- _parseRange = _parseDocument.createRange();
-
- // Workaround for Safari bug. Was also previously Chrome bug 229142
- // - URIs are not resolved in new doc.
- BaseElement base = _parseDocument.createElement('base');
- base.href = document.baseUri;
- _parseDocument.head.append(base);
- }
- var contextElement;
- if (this is BodyElement) {
- contextElement = _parseDocument.body;
- } else {
- contextElement = _parseDocument.createElement(tagName);
- _parseDocument.body.append(contextElement);
- }
- var fragment;
- if (Range.supportsCreateContextualFragment &&
- _canBeUsedToCreateContextualFragment) {
- _parseRange.selectNodeContents(contextElement);
- fragment = _parseRange.createContextualFragment(html);
- } else {
- contextElement._innerHtml = html;
-
- fragment = _parseDocument.createDocumentFragment();
- while (contextElement.firstChild != null) {
- fragment.append(contextElement.firstChild);
- }
- }
- if (contextElement != _parseDocument.body) {
- contextElement.remove();
- }
-
- treeSanitizer.sanitizeTree(fragment);
- // Copy the fragment over to the main document (fix for 14184)
- document.adoptNode(fragment);
-
- return fragment;
- }
-
- /** Test if createContextualFragment is supported for this element type */
- bool get _canBeUsedToCreateContextualFragment =>
- !_cannotBeUsedToCreateContextualFragment;
-
- /** Test if createContextualFragment is NOT supported for this element type */
- bool get _cannotBeUsedToCreateContextualFragment =>
- _tagsForWhichCreateContextualFragmentIsNotSupported.contains(tagName);
-
- /**
- * A hard-coded list of the tag names for which createContextualFragment
- * isn't supported.
- */
- static const _tagsForWhichCreateContextualFragmentIsNotSupported =
- const ['HEAD', 'AREA',
- 'BASE', 'BASEFONT', 'BR', 'COL', 'COLGROUP', 'EMBED', 'FRAME', 'FRAMESET',
- 'HR', 'IMAGE', 'IMG', 'INPUT', 'ISINDEX', 'LINK', 'META', 'PARAM',
- 'SOURCE', 'STYLE', 'TITLE', 'WBR'];
-
- /**
- * Parses the HTML fragment and sets it as the contents of this element.
- *
- * This uses the default sanitization behavior to sanitize the HTML fragment,
- * use [setInnerHtml] to override the default behavior.
- */
- set innerHtml(String html) {
- this.setInnerHtml(html);
- }
-
- /**
- * Parses the HTML fragment and sets it as the contents of this element.
- * This ensures that the generated content follows the sanitization rules
- * specified by the validator or treeSanitizer.
- *
- * If the default validation behavior is too restrictive then a new
- * NodeValidator should be created, either extending or wrapping a default
- * validator and overriding the validation APIs.
- *
- * The treeSanitizer is used to walk the generated node tree and sanitize it.
- * A custom treeSanitizer can also be provided to perform special validation
- * rules but since the API is more complex to implement this is discouraged.
- *
- * The resulting tree is guaranteed to only contain nodes and attributes which
- * are allowed by the provided validator.
- *
- * See also:
- *
- * * [NodeValidator]
- * * [NodeTreeSanitizer]
- */
- void setInnerHtml(String html,
- {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
- text = null;
- if (treeSanitizer is _TrustedHtmlTreeSanitizer) {
- _innerHtml = html;
- } else {
- append(createFragment(
- html, validator: validator, treeSanitizer: treeSanitizer));
- }
- }
- String get innerHtml => _innerHtml;
-
- /**
- * This is an ease-of-use accessor for event streams which should only be
- * used when an explicit accessor is not available.
- */
- ElementEvents get on => new ElementEvents(this);
-
- /**
- * Verify if any of the attributes that we use in the sanitizer look unexpected,
- * possibly indicating DOM clobbering attacks.
- *
- * Those attributes are: attributes, lastChild, children, previousNode and tagName.
- */
- static bool _hasCorruptedAttributes(Element element) {
- return JS('bool', r'''
- (function(element) {
- if (!(element.attributes instanceof NamedNodeMap)) {
- return true;
- }
- var childNodes = element.childNodes;
- if (element.lastChild &&
- element.lastChild !== childNodes[childNodes.length -1]) {
- return true;
- }
- if (element.children) { // On Safari, children can apparently be null.
- if (!((element.children instanceof HTMLCollection) ||
- (element.children instanceof NodeList))) {
- return true;
- }
- }
- var length = 0;
- if (element.children) {
- length = element.children.length;
- }
- for (var i = 0; i < length; i++) {
- var child = element.children[i];
- // On IE it seems like we sometimes don't see the clobbered attribute,
- // perhaps as a result of an over-optimization. Also use another route
- // to check of attributes, children, or lastChild are clobbered. It may
- // seem silly to check children as we rely on children to do this iteration,
- // but it seems possible that the access to children might see the real thing,
- // allowing us to check for clobbering that may show up in other accesses.
- if (child["id"] == 'attributes' || child["name"] == 'attributes' ||
- child["id"] == 'lastChild' || child["name"] == 'lastChild' ||
- child["id"] == 'children' || child["name"] == 'children') {
- return true;
- }
- }
- return false;
- })(#)''',
- element.raw
-);
- }
-
- /// A secondary check for corruption, needed on IE
- static bool _hasCorruptedAttributesAdditionalCheck(Element element) {
- return JS('bool', r'!(#.attributes instanceof NamedNodeMap)',
- element.raw
-);
- }
-
- static String _safeTagName(element) {
- String result = 'element tag unavailable';
- try {
- if (element.tagName is String) {
- result = element.tagName;
- }
- } catch (e) {}
- return result;
- }
-
- @DomName('Element.offsetHeight')
- @DocsEditable()
- int get offsetHeight => JS('num', '#.offsetHeight', this.raw).round();
-
- @DomName('Element.offsetLeft')
- @DocsEditable()
- int get offsetLeft => JS('num', '#.offsetLeft', this.raw).round();
-
- @DomName('Element.offsetTop')
- @DocsEditable()
- int get offsetTop => JS('num', '#.offsetTop', this.raw).round();
-
- @DomName('Element.offsetWidth')
- @DocsEditable()
- int get offsetWidth => JS('num', '#.offsetWidth', this.raw).round();
-
- @DomName('Element.clientHeight')
- @DocsEditable()
- int get clientHeight => JS('num', '#.clientHeight', this.raw).round();
-
- @DomName('Element.clientLeft')
- @DocsEditable()
- int get clientLeft => JS('num', '#.clientLeft', this.raw).round();
-
- @DomName('Element.clientTop')
- @DocsEditable()
- int get clientTop => JS('num', '#.clientTop', this.raw).round();
-
- @DomName('Element.clientWidth')
- @DocsEditable()
- int get clientWidth => JS('num', '#.clientWidth', this.raw).round();
-
- @DomName('Element.scrollHeight')
- @DocsEditable()
- int get scrollHeight => JS('num', '#.scrollHeight', this.raw).round();
-
- @DomName('Element.scrollLeft')
- @DocsEditable()
- int get scrollLeft => JS('num', '#.scrollLeft', this.raw).round();
-
- @DomName('Element.scrollLeft')
- @DocsEditable()
- set scrollLeft(int value) {
- JS("void", "#.scrollLeft = #", this.raw, value.round());
- }
-
- @DomName('Element.scrollTop')
- @DocsEditable()
- int get scrollTop => JS('num', '#.scrollTop', this.raw).round();
-
- @DomName('Element.scrollTop')
- @DocsEditable()
- set scrollTop(int value) {
- JS("void", "#.scrollTop = #", this.raw, value.round());
- }
-
- @DomName('Element.scrollWidth')
- @DocsEditable()
- int get scrollWidth => JS('num', '#.scrollWidth', this.raw).round();
-
- // To suppress missing implicit constructor warnings.
- factory Element._() { throw new UnsupportedError("Not supported"); }
-
- /**
- * Static factory designed to expose `beforecopy` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.beforecopyEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> beforeCopyEvent = const EventStreamProvider<Event>('beforecopy');
-
- /**
- * Static factory designed to expose `beforecut` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.beforecutEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> beforeCutEvent = const EventStreamProvider<Event>('beforecut');
-
- /**
- * Static factory designed to expose `beforepaste` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.beforepasteEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> beforePasteEvent = const EventStreamProvider<Event>('beforepaste');
-
- /**
- * Static factory designed to expose `copy` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.copyEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> copyEvent = const EventStreamProvider<Event>('copy');
-
- /**
- * Static factory designed to expose `cut` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.cutEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> cutEvent = const EventStreamProvider<Event>('cut');
-
- /**
- * Static factory designed to expose `paste` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.pasteEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> pasteEvent = const EventStreamProvider<Event>('paste');
-
- /**
- * Static factory designed to expose `search` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.searchEvent')
- @DocsEditable()
- // http://www.w3.org/TR/html-markup/input.search.html
- @Experimental()
- static const EventStreamProvider<Event> searchEvent = const EventStreamProvider<Event>('search');
-
- /**
- * Static factory designed to expose `selectstart` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.selectstartEvent')
- @DocsEditable()
- @Experimental() // nonstandard
- static const EventStreamProvider<Event> selectStartEvent = const EventStreamProvider<Event>('selectstart');
-
- /**
- * Static factory designed to expose `fullscreenchange` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.webkitfullscreenchangeEvent')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- static const EventStreamProvider<Event> fullscreenChangeEvent = const EventStreamProvider<Event>('webkitfullscreenchange');
-
- /**
- * Static factory designed to expose `fullscreenerror` events to event
- * handlers that are not necessarily instances of [Element].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Element.webkitfullscreenerrorEvent')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- static const EventStreamProvider<Event> fullscreenErrorEvent = const EventStreamProvider<Event>('webkitfullscreenerror');
-
-
- @Deprecated("Internal Use Only")
- static Element internalCreateElement() {
- return new Element.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Element.internal_() : super.internal_();
-
-
- @DomName('Element.contentEditable')
- @DocsEditable()
- String get contentEditable => wrap_jso(JS("String", "#.contentEditable", this.raw));
- @DomName('Element.contentEditable')
- @DocsEditable()
- void set contentEditable(String val) => JS("void", "#.contentEditable = #", this.raw, unwrap_jso(val));
-
- @DomName('Element.contextMenu')
- @DocsEditable()
- @Experimental() // untriaged
- HtmlElement get contextMenu => wrap_jso(JS("HtmlElement", "#.contextMenu", this.raw));
- @DomName('Element.contextMenu')
- @DocsEditable()
- @Experimental() // untriaged
- void set contextMenu(HtmlElement val) => JS("void", "#.contextMenu = #", this.raw, unwrap_jso(val));
-
- @DomName('Element.dir')
- @DocsEditable()
- String get dir => wrap_jso(JS("String", "#.dir", this.raw));
- @DomName('Element.dir')
- @DocsEditable()
- void set dir(String val) => JS("void", "#.dir = #", this.raw, unwrap_jso(val));
-
- /**
- * Indicates whether the element can be dragged and dropped.
- *
- * ## Other resources
- *
- * * [Drag and drop sample]
- * (https://github.com/dart-lang/dart-samples/tree/master/web/html5/dnd/basics)
- * based on [the tutorial](http://www.html5rocks.com/en/tutorials/dnd/basics/)
- * from HTML5Rocks.
- * * [Drag and drop specification]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#dnd)
- * from WHATWG.
- */
- @DomName('Element.draggable')
- @DocsEditable()
- bool get draggable => wrap_jso(JS("bool", "#.draggable", this.raw));
- /**
- * Indicates whether the element can be dragged and dropped.
- *
- * ## Other resources
- *
- * * [Drag and drop sample]
- * (https://github.com/dart-lang/dart-samples/tree/master/web/html5/dnd/basics)
- * based on [the tutorial](http://www.html5rocks.com/en/tutorials/dnd/basics/)
- * from HTML5Rocks.
- * * [Drag and drop specification]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#dnd)
- * from WHATWG.
- */
- @DomName('Element.draggable')
- @DocsEditable()
- void set draggable(bool val) => JS("void", "#.draggable = #", this.raw, unwrap_jso(val));
-
- /**
- * Indicates whether the element is not relevant to the page's current state.
- *
- * ## Other resources
- *
- * * [Hidden attribute specification]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#the-hidden-attribute)
- * from WHATWG.
- */
- @DomName('Element.hidden')
- @DocsEditable()
- bool get hidden => wrap_jso(JS("bool", "#.hidden", this.raw));
- /**
- * Indicates whether the element is not relevant to the page's current state.
- *
- * ## Other resources
- *
- * * [Hidden attribute specification]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#the-hidden-attribute)
- * from WHATWG.
- */
- @DomName('Element.hidden')
- @DocsEditable()
- void set hidden(bool val) => JS("void", "#.hidden = #", this.raw, unwrap_jso(val));
-
- @DomName('Element.isContentEditable')
- @DocsEditable()
- bool get isContentEditable => wrap_jso(JS("bool", "#.isContentEditable", this.raw));
-
- @DomName('Element.lang')
- @DocsEditable()
- String get lang => wrap_jso(JS("String", "#.lang", this.raw));
- @DomName('Element.lang')
- @DocsEditable()
- void set lang(String val) => JS("void", "#.lang = #", this.raw, unwrap_jso(val));
-
- @DomName('Element.spellcheck')
- @DocsEditable()
- // http://blog.whatwg.org/the-road-to-html-5-spellchecking
- @Experimental() // nonstandard
- bool get spellcheck => wrap_jso(JS("bool", "#.spellcheck", this.raw));
- @DomName('Element.spellcheck')
- @DocsEditable()
- // http://blog.whatwg.org/the-road-to-html-5-spellchecking
- @Experimental() // nonstandard
- void set spellcheck(bool val) => JS("void", "#.spellcheck = #", this.raw, unwrap_jso(val));
-
- @DomName('Element.tabIndex')
- @DocsEditable()
- int get tabIndex => wrap_jso(JS("int", "#.tabIndex", this.raw));
- @DomName('Element.tabIndex')
- @DocsEditable()
- void set tabIndex(int val) => JS("void", "#.tabIndex = #", this.raw, unwrap_jso(val));
-
- @DomName('Element.title')
- @DocsEditable()
- String get title => wrap_jso(JS("String", "#.title", this.raw));
- @DomName('Element.title')
- @DocsEditable()
- void set title(String val) => JS("void", "#.title = #", this.raw, unwrap_jso(val));
-
- /**
- * Specifies whether this element's text content changes when the page is
- * localized.
- *
- * ## Other resources
- *
- * * [The translate attribute]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#the-translate-attribute)
- * from WHATWG.
- */
- @DomName('Element.translate')
- @DocsEditable()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#the-translate-attribute
- @Experimental()
- bool get translate => wrap_jso(JS("bool", "#.translate", this.raw));
- /**
- * Specifies whether this element's text content changes when the page is
- * localized.
- *
- * ## Other resources
- *
- * * [The translate attribute]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#the-translate-attribute)
- * from WHATWG.
- */
- @DomName('Element.translate')
- @DocsEditable()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#the-translate-attribute
- @Experimental()
- void set translate(bool val) => JS("void", "#.translate = #", this.raw, unwrap_jso(val));
-
- @JSName('webkitdropzone')
- /**
- * A set of space-separated keywords that specify what kind of data this
- * Element accepts on drop and what to do with that data.
- *
- * ## Other resources
- *
- * * [Drag and drop sample]
- * (https://github.com/dart-lang/dart-samples/tree/master/web/html5/dnd/basics)
- * based on [the tutorial](http://www.html5rocks.com/en/tutorials/dnd/basics/)
- * from HTML5Rocks.
- * * [Drag and drop specification]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#dnd)
- * from WHATWG.
- */
- @DomName('Element.webkitdropzone')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dropzone-attribute
- String get dropzone => wrap_jso(JS("String", "#.webkitdropzone", this.raw));
- @JSName('webkitdropzone')
- /**
- * A set of space-separated keywords that specify what kind of data this
- * Element accepts on drop and what to do with that data.
- *
- * ## Other resources
- *
- * * [Drag and drop sample]
- * (https://github.com/dart-lang/dart-samples/tree/master/web/html5/dnd/basics)
- * based on [the tutorial](http://www.html5rocks.com/en/tutorials/dnd/basics/)
- * from HTML5Rocks.
- * * [Drag and drop specification]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#dnd)
- * from WHATWG.
- */
- @DomName('Element.webkitdropzone')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dropzone-attribute
- void set dropzone(String val) => JS("void", "#.webkitdropzone = #", this.raw, unwrap_jso(val));
-
- @DomName('Element.click')
- @DocsEditable()
- void click() {
- _click_1();
- return;
- }
- @JSName('click')
- @DomName('Element.click')
- @DocsEditable()
- void _click_1() => wrap_jso(JS("void ", "#.raw.click()", this));
-
- @JSName('attributes')
- @DomName('Element.attributes')
- @DocsEditable()
- _NamedNodeMap get _attributes => wrap_jso(JS("_NamedNodeMap", "#.attributes", this.raw));
-
- @DomName('Element.className')
- @DocsEditable()
- String get className => wrap_jso(JS("String", "#.className", this.raw));
- @DomName('Element.className')
- @DocsEditable()
- void set className(String val) => JS("void", "#.className = #", this.raw, unwrap_jso(val));
-
- @JSName('clientHeight')
- @DomName('Element.clientHeight')
- @DocsEditable()
- int get _clientHeight => wrap_jso(JS("int", "#.clientHeight", this.raw));
-
- @JSName('clientLeft')
- @DomName('Element.clientLeft')
- @DocsEditable()
- int get _clientLeft => wrap_jso(JS("int", "#.clientLeft", this.raw));
-
- @JSName('clientTop')
- @DomName('Element.clientTop')
- @DocsEditable()
- int get _clientTop => wrap_jso(JS("int", "#.clientTop", this.raw));
-
- @JSName('clientWidth')
- @DomName('Element.clientWidth')
- @DocsEditable()
- int get _clientWidth => wrap_jso(JS("int", "#.clientWidth", this.raw));
-
- @DomName('Element.id')
- @DocsEditable()
- String get id => wrap_jso(JS("String", "#.id", this.raw));
- @DomName('Element.id')
- @DocsEditable()
- void set id(String val) => JS("void", "#.id = #", this.raw, unwrap_jso(val));
-
- @JSName('innerHTML')
- @DomName('Element.innerHTML')
- @DocsEditable()
- String get _innerHtml => wrap_jso(JS("String", "#.innerHTML", this.raw));
- @JSName('innerHTML')
- @DomName('Element.innerHTML')
- @DocsEditable()
- void set _innerHtml(String val) => JS("void", "#.innerHTML = #", this.raw, unwrap_jso(val));
-
- // Use implementation from Node.
- // final String _localName;
-
- // Use implementation from Node.
- // final String _namespaceUri;
-
- @JSName('offsetHeight')
- @DomName('Element.offsetHeight')
- @DocsEditable()
- int get _offsetHeight => wrap_jso(JS("int", "#.offsetHeight", this.raw));
-
- @JSName('offsetLeft')
- @DomName('Element.offsetLeft')
- @DocsEditable()
- int get _offsetLeft => wrap_jso(JS("int", "#.offsetLeft", this.raw));
-
- @DomName('Element.offsetParent')
- @DocsEditable()
- Element get offsetParent => wrap_jso(JS("Element", "#.offsetParent", this.raw));
-
- @JSName('offsetTop')
- @DomName('Element.offsetTop')
- @DocsEditable()
- int get _offsetTop => wrap_jso(JS("int", "#.offsetTop", this.raw));
-
- @JSName('offsetWidth')
- @DomName('Element.offsetWidth')
- @DocsEditable()
- int get _offsetWidth => wrap_jso(JS("int", "#.offsetWidth", this.raw));
-
- @JSName('outerHTML')
- @DomName('Element.outerHTML')
- @DocsEditable()
- String get outerHtml => wrap_jso(JS("String", "#.outerHTML", this.raw));
-
- @JSName('scrollHeight')
- @DomName('Element.scrollHeight')
- @DocsEditable()
- int get _scrollHeight => wrap_jso(JS("int", "#.scrollHeight", this.raw));
-
- @JSName('scrollLeft')
- @DomName('Element.scrollLeft')
- @DocsEditable()
- num get _scrollLeft => wrap_jso(JS("num", "#.scrollLeft", this.raw));
- @JSName('scrollLeft')
- @DomName('Element.scrollLeft')
- @DocsEditable()
- void set _scrollLeft(num val) => JS("void", "#.scrollLeft = #", this.raw, unwrap_jso(val));
-
- @JSName('scrollTop')
- @DomName('Element.scrollTop')
- @DocsEditable()
- num get _scrollTop => wrap_jso(JS("num", "#.scrollTop", this.raw));
- @JSName('scrollTop')
- @DomName('Element.scrollTop')
- @DocsEditable()
- void set _scrollTop(num val) => JS("void", "#.scrollTop = #", this.raw, unwrap_jso(val));
-
- @JSName('scrollWidth')
- @DomName('Element.scrollWidth')
- @DocsEditable()
- int get _scrollWidth => wrap_jso(JS("int", "#.scrollWidth", this.raw));
-
- @DomName('Element.style')
- @DocsEditable()
- CssStyleDeclaration get style => wrap_jso(JS("CssStyleDeclaration", "#.style", this.raw));
-
- @DomName('Element.tagName')
- @DocsEditable()
- String get tagName => wrap_jso(JS("String", "#.tagName", this.raw));
-
- @DomName('Element.blur')
- @DocsEditable()
- void blur() {
- _blur_1();
- return;
- }
- @JSName('blur')
- @DomName('Element.blur')
- @DocsEditable()
- void _blur_1() => wrap_jso(JS("void ", "#.raw.blur()", this));
-
- @DomName('Element.focus')
- @DocsEditable()
- void focus() {
- _focus_1();
- return;
- }
- @JSName('focus')
- @DomName('Element.focus')
- @DocsEditable()
- void _focus_1() => wrap_jso(JS("void ", "#.raw.focus()", this));
-
- @DomName('Element.getAttribute')
- @DocsEditable()
- @Experimental() // untriaged
- String getAttribute(String name) {
- return _getAttribute_1(name);
- }
- @JSName('getAttribute')
- @DomName('Element.getAttribute')
- @DocsEditable()
- @Experimental() // untriaged
- String _getAttribute_1(name) => wrap_jso(JS("String ", "#.raw.getAttribute(#)", this, unwrap_jso(name)));
-
- @DomName('Element.getAttributeNS')
- @DocsEditable()
- @Experimental() // untriaged
- String getAttributeNS(String namespaceURI, String localName) {
- return _getAttributeNS_1(namespaceURI, localName);
- }
- @JSName('getAttributeNS')
- @DomName('Element.getAttributeNS')
- @DocsEditable()
- @Experimental() // untriaged
- String _getAttributeNS_1(namespaceURI, localName) => wrap_jso(JS("String ", "#.raw.getAttributeNS(#, #)", this, unwrap_jso(namespaceURI), unwrap_jso(localName)));
-
- /**
- * Returns the smallest bounding rectangle that encompasses this element's
- * padding, scrollbar, and border.
- *
- * ## Other resources
- *
- * * [Element.getBoundingClientRect]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect)
- * from MDN.
- * * [The getBoundingClientRect() method]
- * (http://www.w3.org/TR/cssom-view/#the-getclientrects-and-getboundingclientrect-methods)
- * from W3C.
- */
- @DomName('Element.getBoundingClientRect')
- @DocsEditable()
- Rectangle getBoundingClientRect() {
- return _getBoundingClientRect_1();
- }
- @JSName('getBoundingClientRect')
- /**
- * Returns the smallest bounding rectangle that encompasses this element's
- * padding, scrollbar, and border.
- *
- * ## Other resources
- *
- * * [Element.getBoundingClientRect]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect)
- * from MDN.
- * * [The getBoundingClientRect() method]
- * (http://www.w3.org/TR/cssom-view/#the-getclientrects-and-getboundingclientrect-methods)
- * from W3C.
- */
- @DomName('Element.getBoundingClientRect')
- @DocsEditable()
- Rectangle _getBoundingClientRect_1() => wrap_jso(JS("Rectangle ", "#.raw.getBoundingClientRect()", this));
-
- /**
- * Returns a list of shadow DOM insertion points to which this element is
- * distributed.
- *
- * ## Other resources
- *
- * * [Shadow DOM specification]
- * (https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html)
- * from W3C.
- */
- @DomName('Element.getDestinationInsertionPoints')
- @DocsEditable()
- @Experimental() // untriaged
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList getDestinationInsertionPoints() {
- return _getDestinationInsertionPoints_1();
- }
- @JSName('getDestinationInsertionPoints')
- /**
- * Returns a list of shadow DOM insertion points to which this element is
- * distributed.
- *
- * ## Other resources
- *
- * * [Shadow DOM specification]
- * (https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html)
- * from W3C.
- */
- @DomName('Element.getDestinationInsertionPoints')
- @DocsEditable()
- @Experimental() // untriaged
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList _getDestinationInsertionPoints_1() => wrap_jso(JS("NodeList ", "#.raw.getDestinationInsertionPoints()", this));
-
- /**
- * Returns a list of nodes with the given class name inside this element.
- *
- * ## Other resources
- *
- * * [getElementsByClassName]
- * (https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByClassName)
- * from MDN.
- * * [DOM specification]
- * (http://www.w3.org/TR/domcore/) from W3C.
- */
- @DomName('Element.getElementsByClassName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection getElementsByClassName(String classNames) {
- return _getElementsByClassName_1(classNames);
- }
- @JSName('getElementsByClassName')
- /**
- * Returns a list of nodes with the given class name inside this element.
- *
- * ## Other resources
- *
- * * [getElementsByClassName]
- * (https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByClassName)
- * from MDN.
- * * [DOM specification]
- * (http://www.w3.org/TR/domcore/) from W3C.
- */
- @DomName('Element.getElementsByClassName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection _getElementsByClassName_1(classNames) => wrap_jso(JS("HtmlCollection ", "#.raw.getElementsByClassName(#)", this, unwrap_jso(classNames)));
-
- @DomName('Element.getElementsByTagName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection _getElementsByTagName(String name) {
- return _getElementsByTagName_1(name);
- }
- @JSName('getElementsByTagName')
- @DomName('Element.getElementsByTagName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection _getElementsByTagName_1(name) => wrap_jso(JS("HtmlCollection ", "#.raw.getElementsByTagName(#)", this, unwrap_jso(name)));
-
- @DomName('Element.hasAttribute')
- @DocsEditable()
- bool _hasAttribute(String name) {
- return _hasAttribute_1(name);
- }
- @JSName('hasAttribute')
- @DomName('Element.hasAttribute')
- @DocsEditable()
- bool _hasAttribute_1(name) => wrap_jso(JS("bool ", "#.raw.hasAttribute(#)", this, unwrap_jso(name)));
-
- @DomName('Element.hasAttributeNS')
- @DocsEditable()
- bool _hasAttributeNS(String namespaceURI, String localName) {
- return _hasAttributeNS_1(namespaceURI, localName);
- }
- @JSName('hasAttributeNS')
- @DomName('Element.hasAttributeNS')
- @DocsEditable()
- bool _hasAttributeNS_1(namespaceURI, localName) => wrap_jso(JS("bool ", "#.raw.hasAttributeNS(#, #)", this, unwrap_jso(namespaceURI), unwrap_jso(localName)));
-
- @DomName('Element.removeAttribute')
- @DocsEditable()
- void _removeAttribute(String name) {
- _removeAttribute_1(name);
- return;
- }
- @JSName('removeAttribute')
- @DomName('Element.removeAttribute')
- @DocsEditable()
- void _removeAttribute_1(name) => wrap_jso(JS("void ", "#.raw.removeAttribute(#)", this, unwrap_jso(name)));
-
- @DomName('Element.removeAttributeNS')
- @DocsEditable()
- void _removeAttributeNS(String namespaceURI, String localName) {
- _removeAttributeNS_1(namespaceURI, localName);
- return;
- }
- @JSName('removeAttributeNS')
- @DomName('Element.removeAttributeNS')
- @DocsEditable()
- void _removeAttributeNS_1(namespaceURI, localName) => wrap_jso(JS("void ", "#.raw.removeAttributeNS(#, #)", this, unwrap_jso(namespaceURI), unwrap_jso(localName)));
-
- @DomName('Element.requestFullscreen')
- @DocsEditable()
- @Experimental() // untriaged
- void requestFullscreen() {
- _requestFullscreen_1();
- return;
- }
- @JSName('requestFullscreen')
- @DomName('Element.requestFullscreen')
- @DocsEditable()
- @Experimental() // untriaged
- void _requestFullscreen_1() => wrap_jso(JS("void ", "#.raw.requestFullscreen()", this));
-
- @DomName('Element.requestPointerLock')
- @DocsEditable()
- @Experimental() // untriaged
- void requestPointerLock() {
- _requestPointerLock_1();
- return;
- }
- @JSName('requestPointerLock')
- @DomName('Element.requestPointerLock')
- @DocsEditable()
- @Experimental() // untriaged
- void _requestPointerLock_1() => wrap_jso(JS("void ", "#.raw.requestPointerLock()", this));
-
- @DomName('Element.scrollIntoView')
- @DocsEditable()
- void _scrollIntoView([bool alignWithTop]) {
- if (alignWithTop != null) {
- _scrollIntoView_1(alignWithTop);
- return;
- }
- _scrollIntoView_2();
- return;
- }
- @JSName('scrollIntoView')
- @DomName('Element.scrollIntoView')
- @DocsEditable()
- void _scrollIntoView_1(alignWithTop) => wrap_jso(JS("void ", "#.raw.scrollIntoView(#)", this, unwrap_jso(alignWithTop)));
- @JSName('scrollIntoView')
- @DomName('Element.scrollIntoView')
- @DocsEditable()
- void _scrollIntoView_2() => wrap_jso(JS("void ", "#.raw.scrollIntoView()", this));
-
- @DomName('Element.scrollIntoViewIfNeeded')
- @DocsEditable()
- // http://docs.webplatform.org/wiki/dom/methods/scrollIntoViewIfNeeded
- @Experimental() // non-standard
- void _scrollIntoViewIfNeeded([bool centerIfNeeded]) {
- if (centerIfNeeded != null) {
- _scrollIntoViewIfNeeded_1(centerIfNeeded);
- return;
- }
- _scrollIntoViewIfNeeded_2();
- return;
- }
- @JSName('scrollIntoViewIfNeeded')
- @DomName('Element.scrollIntoViewIfNeeded')
- @DocsEditable()
- // http://docs.webplatform.org/wiki/dom/methods/scrollIntoViewIfNeeded
- @Experimental() // non-standard
- void _scrollIntoViewIfNeeded_1(centerIfNeeded) => wrap_jso(JS("void ", "#.raw.scrollIntoViewIfNeeded(#)", this, unwrap_jso(centerIfNeeded)));
- @JSName('scrollIntoViewIfNeeded')
- @DomName('Element.scrollIntoViewIfNeeded')
- @DocsEditable()
- // http://docs.webplatform.org/wiki/dom/methods/scrollIntoViewIfNeeded
- @Experimental() // non-standard
- void _scrollIntoViewIfNeeded_2() => wrap_jso(JS("void ", "#.raw.scrollIntoViewIfNeeded()", this));
-
- @DomName('Element.setAttribute')
- @DocsEditable()
- void setAttribute(String name, String value) {
- _setAttribute_1(name, value);
- return;
- }
- @JSName('setAttribute')
- @DomName('Element.setAttribute')
- @DocsEditable()
- void _setAttribute_1(name, value) => wrap_jso(JS("void ", "#.raw.setAttribute(#, #)", this, unwrap_jso(name), unwrap_jso(value)));
-
- @DomName('Element.setAttributeNS')
- @DocsEditable()
- void setAttributeNS(String namespaceURI, String qualifiedName, String value) {
- _setAttributeNS_1(namespaceURI, qualifiedName, value);
- return;
- }
- @JSName('setAttributeNS')
- @DomName('Element.setAttributeNS')
- @DocsEditable()
- void _setAttributeNS_1(namespaceURI, qualifiedName, value) => wrap_jso(JS("void ", "#.raw.setAttributeNS(#, #, #)", this, unwrap_jso(namespaceURI), unwrap_jso(qualifiedName), unwrap_jso(value)));
-
- // From ChildNode
-
- @DomName('Element.nextElementSibling')
- @DocsEditable()
- Element get nextElementSibling => wrap_jso(JS("Element", "#.nextElementSibling", this.raw));
-
- @DomName('Element.previousElementSibling')
- @DocsEditable()
- Element get previousElementSibling => wrap_jso(JS("Element", "#.previousElementSibling", this.raw));
-
- // From ParentNode
-
- @JSName('childElementCount')
- @DomName('Element.childElementCount')
- @DocsEditable()
- int get _childElementCount => wrap_jso(JS("int", "#.childElementCount", this.raw));
-
- @JSName('children')
- @DomName('Element.children')
- @DocsEditable()
- @Returns('HtmlCollection')
- @Creates('HtmlCollection')
- List<Node> get _children => wrap_jso(JS("List<Node>", "#.children", this.raw));
-
- @JSName('firstElementChild')
- @DomName('Element.firstElementChild')
- @DocsEditable()
- Element get _firstElementChild => wrap_jso(JS("Element", "#.firstElementChild", this.raw));
-
- @JSName('lastElementChild')
- @DomName('Element.lastElementChild')
- @DocsEditable()
- Element get _lastElementChild => wrap_jso(JS("Element", "#.lastElementChild", this.raw));
-
- /**
- * Finds the first descendant element of this element that matches the
- * specified group of selectors.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * // Gets the first descendant with the class 'classname'
- * var element = element.querySelector('.className');
- * // Gets the element with id 'id'
- * var element = element.querySelector('#id');
- * // Gets the first descendant [ImageElement]
- * var img = element.querySelector('img');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
- @DomName('Element.querySelector')
- @DocsEditable()
- Element querySelector(String selectors) {
- return _querySelector_1(selectors);
- }
- @JSName('querySelector')
- /**
- * Finds the first descendant element of this element that matches the
- * specified group of selectors.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * // Gets the first descendant with the class 'classname'
- * var element = element.querySelector('.className');
- * // Gets the element with id 'id'
- * var element = element.querySelector('#id');
- * // Gets the first descendant [ImageElement]
- * var img = element.querySelector('img');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
- @DomName('Element.querySelector')
- @DocsEditable()
- Element _querySelector_1(selectors) => wrap_jso(JS("Element ", "#.raw.querySelector(#)", this, unwrap_jso(selectors)));
-
- @DomName('Element.querySelectorAll')
- @DocsEditable()
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList _querySelectorAll(String selectors) {
- return _querySelectorAll_1(selectors);
- }
- @JSName('querySelectorAll')
- @DomName('Element.querySelectorAll')
- @DocsEditable()
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList _querySelectorAll_1(selectors) => wrap_jso(JS("NodeList ", "#.raw.querySelectorAll(#)", this, unwrap_jso(selectors)));
-
- /// Stream of `beforecopy` events handled by this [Element].
- @DomName('Element.onbeforecopy')
- @DocsEditable()
- ElementStream<Event> get onBeforeCopy => beforeCopyEvent.forElement(this);
-
- /// Stream of `beforecut` events handled by this [Element].
- @DomName('Element.onbeforecut')
- @DocsEditable()
- ElementStream<Event> get onBeforeCut => beforeCutEvent.forElement(this);
-
- /// Stream of `beforepaste` events handled by this [Element].
- @DomName('Element.onbeforepaste')
- @DocsEditable()
- ElementStream<Event> get onBeforePaste => beforePasteEvent.forElement(this);
-
- /// Stream of `copy` events handled by this [Element].
- @DomName('Element.oncopy')
- @DocsEditable()
- ElementStream<Event> get onCopy => copyEvent.forElement(this);
-
- /// Stream of `cut` events handled by this [Element].
- @DomName('Element.oncut')
- @DocsEditable()
- ElementStream<Event> get onCut => cutEvent.forElement(this);
-
- /// Stream of `paste` events handled by this [Element].
- @DomName('Element.onpaste')
- @DocsEditable()
- ElementStream<Event> get onPaste => pasteEvent.forElement(this);
-
- /// Stream of `search` events handled by this [Element].
- @DomName('Element.onsearch')
- @DocsEditable()
- // http://www.w3.org/TR/html-markup/input.search.html
- @Experimental()
- ElementStream<Event> get onSearch => searchEvent.forElement(this);
-
- /// Stream of `selectstart` events handled by this [Element].
- @DomName('Element.onselectstart')
- @DocsEditable()
- @Experimental() // nonstandard
- ElementStream<Event> get onSelectStart => selectStartEvent.forElement(this);
-
- /// Stream of `fullscreenchange` events handled by this [Element].
- @DomName('Element.onwebkitfullscreenchange')
- @DocsEditable()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- @Experimental()
- ElementStream<Event> get onFullscreenChange => fullscreenChangeEvent.forElement(this);
-
- /// Stream of `fullscreenerror` events handled by this [Element].
- @DomName('Element.onwebkitfullscreenerror')
- @DocsEditable()
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- @Experimental()
- ElementStream<Event> get onFullscreenError => fullscreenErrorEvent.forElement(this);
-
-}
-
-
-class _ElementFactoryProvider {
-
- @DomName('Document.createElement')
- static Element createElement_tag(String tag, String typeExtension) =>
- document.createElement(tag, typeExtension);
-}
-
-
-/**
- * Options for Element.scrollIntoView.
- */
-class ScrollAlignment {
- final _value;
- const ScrollAlignment._internal(this._value);
- toString() => 'ScrollAlignment.$_value';
-
- /// Attempt to align the element to the top of the scrollable area.
- static const TOP = const ScrollAlignment._internal('TOP');
- /// Attempt to center the element in the scrollable area.
- static const CENTER = const ScrollAlignment._internal('CENTER');
- /// Attempt to align the element to the bottom of the scrollable area.
- static const BOTTOM = const ScrollAlignment._internal('BOTTOM');
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: Do not edit - generated code.
-
-
-@DomName('Event')
-@Native("Event,InputEvent,ClipboardEvent")
-class Event extends DartHtmlDomObject {
- // In JS, canBubble and cancelable are technically required parameters to
- // init*Event. In practice, though, if they aren't provided they simply
- // default to false (since that's Boolean(undefined)).
- //
- // Contrary to JS, we default canBubble and cancelable to true, since that's
- // what people want most of the time anyway.
- factory Event(String type,
- {bool canBubble: true, bool cancelable: true}) {
- return new Event.eventType('Event', type, canBubble: canBubble,
- cancelable: cancelable);
- }
-
- /**
- * Creates a new Event object of the specified type.
- *
- * This is analogous to document.createEvent.
- * Normally events should be created via their constructors, if available.
- *
- * var e = new Event.type('MouseEvent', 'mousedown', true, true);
- */
- factory Event.eventType(String type, String name, {bool canBubble: true,
- bool cancelable: true}) {
- final Event e = document._createEvent(type);
- e._initEvent(name, canBubble, cancelable);
- return e;
- }
-
- /** The CSS selector involved with event delegation. */
- String _selector;
-
- /**
- * A pointer to the element whose CSS selector matched within which an event
- * was fired. If this Event was not associated with any Event delegation,
- * accessing this value will throw an [UnsupportedError].
- */
- Element get matchingTarget {
- if (_selector == null) {
- throw new UnsupportedError('Cannot call matchingTarget if this Event did'
- ' not arise as a result of event delegation.');
- }
- Element currentTarget = this.currentTarget;
- Element target = this.target;
- var matchedTarget;
- do {
- if (target.matches(_selector)) return target;
- target = target.parent;
- } while (target != null && target != currentTarget.parent);
- throw new StateError('No selector matched for populating matchedTarget.');
- }
- // To suppress missing implicit constructor warnings.
- factory Event._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static Event internalCreateEvent() {
- return new Event.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Event.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- /**
- * This event is being handled by the event target.
- *
- * ## Other resources
- *
- * * [Target phase] (http://www.w3.org/TR/DOM-Level-3-Events/#target-phase)
- * from W3C.
- */
- @DomName('Event.AT_TARGET')
- @DocsEditable()
- static const int AT_TARGET = 2;
-
- /**
- * This event is bubbling up through the target's ancestors.
- *
- * ## Other resources
- *
- * * [Bubble phase] (http://www.w3.org/TR/DOM-Level-3-Events/#bubble-phase)
- * from W3C.
- */
- @DomName('Event.BUBBLING_PHASE')
- @DocsEditable()
- static const int BUBBLING_PHASE = 3;
-
- /**
- * This event is propagating through the target's ancestors, starting from the
- * document.
- *
- * ## Other resources
- *
- * * [Bubble phase] (http://www.w3.org/TR/DOM-Level-3-Events/#bubble-phase)
- * from W3C.
- */
- @DomName('Event.CAPTURING_PHASE')
- @DocsEditable()
- static const int CAPTURING_PHASE = 1;
-
- @DomName('Event.bubbles')
- @DocsEditable()
- bool get bubbles => wrap_jso(JS("bool", "#.bubbles", this.raw));
-
- @DomName('Event.cancelable')
- @DocsEditable()
- bool get cancelable => wrap_jso(JS("bool", "#.cancelable", this.raw));
-
- @DomName('Event.currentTarget')
- @DocsEditable()
- EventTarget get currentTarget => _convertNativeToDart_EventTarget(this._get_currentTarget);
- @JSName('currentTarget')
- @DomName('Event.currentTarget')
- @DocsEditable()
- @Creates('Null')
- @Returns('EventTarget|=Object')
- dynamic get _get_currentTarget => wrap_jso(JS("dynamic", "#.currentTarget", this.raw));
-
- @DomName('Event.defaultPrevented')
- @DocsEditable()
- bool get defaultPrevented => wrap_jso(JS("bool", "#.defaultPrevented", this.raw));
-
- @DomName('Event.eventPhase')
- @DocsEditable()
- int get eventPhase => wrap_jso(JS("int", "#.eventPhase", this.raw));
-
- /**
- * This event's path, taking into account shadow DOM.
- *
- * ## Other resources
- *
- * * [Shadow DOM extensions to Event]
- * (http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-event) from
- * W3C.
- */
- @DomName('Event.path')
- @DocsEditable()
- // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#extensions-to-event
- @Experimental()
- @Returns('NodeList')
- @Creates('NodeList')
- List<Node> get path => wrap_jso(JS("List<Node>", "#.path", this.raw));
-
- @DomName('Event.target')
- @DocsEditable()
- EventTarget get target => _convertNativeToDart_EventTarget(this._get_target);
- @JSName('target')
- @DomName('Event.target')
- @DocsEditable()
- @Creates('Node')
- @Returns('EventTarget|=Object')
- dynamic get _get_target => wrap_jso(JS("dynamic", "#.target", this.raw));
-
- @DomName('Event.timeStamp')
- @DocsEditable()
- int get timeStamp => wrap_jso(JS("int", "#.timeStamp", this.raw));
-
- @DomName('Event.type')
- @DocsEditable()
- String get type => wrap_jso(JS("String", "#.type", this.raw));
-
- @DomName('Event.initEvent')
- @DocsEditable()
- void _initEvent(String eventTypeArg, bool canBubbleArg, bool cancelableArg) {
- _initEvent_1(eventTypeArg, canBubbleArg, cancelableArg);
- return;
- }
- @JSName('initEvent')
- @DomName('Event.initEvent')
- @DocsEditable()
- void _initEvent_1(eventTypeArg, canBubbleArg, cancelableArg) => wrap_jso(JS("void ", "#.raw.initEvent(#, #, #)", this, unwrap_jso(eventTypeArg), unwrap_jso(canBubbleArg), unwrap_jso(cancelableArg)));
-
- @DomName('Event.preventDefault')
- @DocsEditable()
- void preventDefault() {
- _preventDefault_1();
- return;
- }
- @JSName('preventDefault')
- @DomName('Event.preventDefault')
- @DocsEditable()
- void _preventDefault_1() => wrap_jso(JS("void ", "#.raw.preventDefault()", this));
-
- @DomName('Event.stopImmediatePropagation')
- @DocsEditable()
- void stopImmediatePropagation() {
- _stopImmediatePropagation_1();
- return;
- }
- @JSName('stopImmediatePropagation')
- @DomName('Event.stopImmediatePropagation')
- @DocsEditable()
- void _stopImmediatePropagation_1() => wrap_jso(JS("void ", "#.raw.stopImmediatePropagation()", this));
-
- @DomName('Event.stopPropagation')
- @DocsEditable()
- void stopPropagation() {
- _stopPropagation_1();
- return;
- }
- @JSName('stopPropagation')
- @DomName('Event.stopPropagation')
- @DocsEditable()
- void _stopPropagation_1() => wrap_jso(JS("void ", "#.raw.stopPropagation()", this));
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * Base class that supports listening for and dispatching browser events.
- *
- * Normally events are accessed via the Stream getter:
- *
- * element.onMouseOver.listen((e) => print('Mouse over!'));
- *
- * To access bubbling events which are declared on one element, but may bubble
- * up to another element type (common for MediaElement events):
- *
- * MediaElement.pauseEvent.forTarget(document.body).listen(...);
- *
- * To useCapture on events:
- *
- * Element.keyDownEvent.forTarget(element, useCapture: true).listen(...);
- *
- * Custom events can be declared as:
- *
- * class DataGenerator {
- * static EventStreamProvider<Event> dataEvent =
- * new EventStreamProvider('data');
- * }
- *
- * Then listeners should access the event with:
- *
- * DataGenerator.dataEvent.forTarget(element).listen(...);
- *
- * Custom events can also be accessed as:
- *
- * element.on['some_event'].listen(...);
- *
- * This approach is generally discouraged as it loses the event typing and
- * some DOM events may have multiple platform-dependent event names under the
- * covers. By using the standard Stream getters you will get the platform
- * specific event name automatically.
- */
-class Events {
- /* Raw event target. */
- final EventTarget _ptr;
-
- Events(this._ptr);
-
- Stream operator [](String type) {
- return new _EventStream(_ptr, type, false);
- }
-}
-
-class ElementEvents extends Events {
- /* Raw event target. */
- static final webkitEvents = {
- 'animationend' : 'webkitAnimationEnd',
- 'animationiteration' : 'webkitAnimationIteration',
- 'animationstart' : 'webkitAnimationStart',
- 'fullscreenchange' : 'webkitfullscreenchange',
- 'fullscreenerror' : 'webkitfullscreenerror',
- 'keyadded' : 'webkitkeyadded',
- 'keyerror' : 'webkitkeyerror',
- 'keymessage' : 'webkitkeymessage',
- 'needkey' : 'webkitneedkey',
- 'pointerlockchange' : 'webkitpointerlockchange',
- 'pointerlockerror' : 'webkitpointerlockerror',
- 'resourcetimingbufferfull' : 'webkitresourcetimingbufferfull',
- 'transitionend': 'webkitTransitionEnd',
- 'speechchange' : 'webkitSpeechChange'
- };
-
- ElementEvents(Element ptr) : super(ptr);
-
- Stream operator [](String type) {
- if (webkitEvents.keys.contains(type.toLowerCase())) {
- if (Device.isWebKit) {
- return new _ElementEventStreamImpl(
- _ptr, webkitEvents[type.toLowerCase()], false);
- }
- }
- return new _ElementEventStreamImpl(_ptr, type, false);
- }
-}
-
-/**
- * Base class for all browser objects that support events.
- *
- * Use the [on] property to add, and remove events
- * for compile-time type checks and a more concise API.
- */
-@DomName('EventTarget')
-@Native("EventTarget")
-class EventTarget extends DartHtmlDomObject {
-
- // Custom element created callback.
- EventTarget._created();
-
- /**
- * This is an ease-of-use accessor for event streams which should only be
- * used when an explicit accessor is not available.
- */
- Events get on => new Events(this);
-
- void addEventListener(String type, EventListener listener, [bool useCapture]) {
- // TODO(leafp): This check is avoid a bug in our dispatch code when
- // listener is null. The browser treats this call as a no-op in this
- // case, so it's fine to short-circuit it, but we should not have to.
- if (listener != null) {
- _addEventListener(type, listener, useCapture);
- }
- }
-
- void removeEventListener(String type, EventListener listener, [bool useCapture]) {
- // TODO(leafp): This check is avoid a bug in our dispatch code when
- // listener is null. The browser treats this call as a no-op in this
- // case, so it's fine to short-circuit it, but we should not have to.
- if (listener != null) {
- _removeEventListener(type, listener, useCapture);
- }
- }
-
- // To suppress missing implicit constructor warnings.
- factory EventTarget._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static EventTarget internalCreateEventTarget() {
- return new EventTarget.internal_();
- }
-
- @Deprecated("Internal Use Only")
- EventTarget.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('EventTarget.addEventListener')
- @DocsEditable()
- void _addEventListener([String type, EventListener listener, bool useCapture]) {
- if (useCapture != null) {
- _addEventListener_1(type, listener, useCapture);
- return;
- }
- if (listener != null) {
- _addEventListener_2(type, listener);
- return;
- }
- if (type != null) {
- _addEventListener_3(type);
- return;
- }
- _addEventListener_4();
- return;
- }
- @JSName('addEventListener')
- @DomName('EventTarget.addEventListener')
- @DocsEditable()
- void _addEventListener_1(type, EventListener listener, useCapture) => wrap_jso(JS("void ", "#.raw.addEventListener(#, #, #)", this, unwrap_jso(type), unwrap_jso(listener), unwrap_jso(useCapture)));
- @JSName('addEventListener')
- @DomName('EventTarget.addEventListener')
- @DocsEditable()
- void _addEventListener_2(type, EventListener listener) => wrap_jso(JS("void ", "#.raw.addEventListener(#, #)", this, unwrap_jso(type), unwrap_jso(listener)));
- @JSName('addEventListener')
- @DomName('EventTarget.addEventListener')
- @DocsEditable()
- void _addEventListener_3(type) => wrap_jso(JS("void ", "#.raw.addEventListener(#)", this, unwrap_jso(type)));
- @JSName('addEventListener')
- @DomName('EventTarget.addEventListener')
- @DocsEditable()
- void _addEventListener_4() => wrap_jso(JS("void ", "#.raw.addEventListener()", this));
-
- @DomName('EventTarget.dispatchEvent')
- @DocsEditable()
- bool dispatchEvent(Event event) {
- return _dispatchEvent_1(event);
- }
- @JSName('dispatchEvent')
- @DomName('EventTarget.dispatchEvent')
- @DocsEditable()
- bool _dispatchEvent_1(Event event) => wrap_jso(JS("bool ", "#.raw.dispatchEvent(#)", this, unwrap_jso(event)));
-
- @DomName('EventTarget.removeEventListener')
- @DocsEditable()
- void _removeEventListener([String type, EventListener listener, bool useCapture]) {
- if (useCapture != null) {
- _removeEventListener_1(type, listener, useCapture);
- return;
- }
- if (listener != null) {
- _removeEventListener_2(type, listener);
- return;
- }
- if (type != null) {
- _removeEventListener_3(type);
- return;
- }
- _removeEventListener_4();
- return;
- }
- @JSName('removeEventListener')
- @DomName('EventTarget.removeEventListener')
- @DocsEditable()
- void _removeEventListener_1(type, EventListener listener, useCapture) => wrap_jso(JS("void ", "#.raw.removeEventListener(#, #, #)", this, unwrap_jso(type), unwrap_jso(listener), unwrap_jso(useCapture)));
- @JSName('removeEventListener')
- @DomName('EventTarget.removeEventListener')
- @DocsEditable()
- void _removeEventListener_2(type, EventListener listener) => wrap_jso(JS("void ", "#.raw.removeEventListener(#, #)", this, unwrap_jso(type), unwrap_jso(listener)));
- @JSName('removeEventListener')
- @DomName('EventTarget.removeEventListener')
- @DocsEditable()
- void _removeEventListener_3(type) => wrap_jso(JS("void ", "#.raw.removeEventListener(#)", this, unwrap_jso(type)));
- @JSName('removeEventListener')
- @DomName('EventTarget.removeEventListener')
- @DocsEditable()
- void _removeEventListener_4() => wrap_jso(JS("void ", "#.raw.removeEventListener()", this));
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('HTMLHeadElement')
-@Native("HTMLHeadElement")
-class HeadElement extends HtmlElement {
- // To suppress missing implicit constructor warnings.
- factory HeadElement._() { throw new UnsupportedError("Not supported"); }
-
- @DomName('HTMLHeadElement.HTMLHeadElement')
- @DocsEditable()
- factory HeadElement() => document.createElement("head");
-
-
- @Deprecated("Internal Use Only")
- static HeadElement internalCreateHeadElement() {
- return new HeadElement.internal_();
- }
-
- @Deprecated("Internal Use Only")
- HeadElement.internal_() : super.internal_();
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DomName('History')
-@Native("History")
-class History extends DartHtmlDomObject implements HistoryBase {
-
- /**
- * Checks if the State APIs are supported on the current platform.
- *
- * See also:
- *
- * * [pushState]
- * * [replaceState]
- * * [state]
- */
- static bool get supportsState => true;
- // To suppress missing implicit constructor warnings.
- factory History._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static History internalCreateHistory() {
- return new History.internal_();
- }
-
- @Deprecated("Internal Use Only")
- History.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('History.length')
- @DocsEditable()
- int get length => wrap_jso(JS("int", "#.length", this.raw));
-
- @DomName('History.state')
- @DocsEditable()
- dynamic get state => convertNativeToDart_SerializedScriptValue(this._get_state);
- @JSName('state')
- @DomName('History.state')
- @DocsEditable()
- @annotation_Creates_SerializedScriptValue
- @annotation_Returns_SerializedScriptValue
- dynamic get _get_state => wrap_jso(JS("dynamic", "#.state", this.raw));
-
- @DomName('History.back')
- @DocsEditable()
- void back() {
- _back_1();
- return;
- }
- @JSName('back')
- @DomName('History.back')
- @DocsEditable()
- void _back_1() => wrap_jso(JS("void ", "#.raw.back()", this));
-
- @DomName('History.forward')
- @DocsEditable()
- void forward() {
- _forward_1();
- return;
- }
- @JSName('forward')
- @DomName('History.forward')
- @DocsEditable()
- void _forward_1() => wrap_jso(JS("void ", "#.raw.forward()", this));
-
- @DomName('History.go')
- @DocsEditable()
- void go(int distance) {
- _go_1(distance);
- return;
- }
- @JSName('go')
- @DomName('History.go')
- @DocsEditable()
- void _go_1(distance) => wrap_jso(JS("void ", "#.raw.go(#)", this, unwrap_jso(distance)));
-
- @DomName('History.pushState')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- void pushState(/*any*/ data, String title, [String url]) {
- if (url != null) {
- var data_1 = convertDartToNative_SerializedScriptValue(data);
- _pushState_1(data_1, title, url);
- return;
- }
- var data_1 = convertDartToNative_SerializedScriptValue(data);
- _pushState_2(data_1, title);
- return;
- }
- @JSName('pushState')
- @DomName('History.pushState')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- void _pushState_1(data, title, url) => wrap_jso(JS("void ", "#.raw.pushState(#, #, #)", this, unwrap_jso(data), unwrap_jso(title), unwrap_jso(url)));
- @JSName('pushState')
- @DomName('History.pushState')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- void _pushState_2(data, title) => wrap_jso(JS("void ", "#.raw.pushState(#, #)", this, unwrap_jso(data), unwrap_jso(title)));
-
- @DomName('History.replaceState')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- void replaceState(/*any*/ data, String title, [String url]) {
- if (url != null) {
- var data_1 = convertDartToNative_SerializedScriptValue(data);
- _replaceState_1(data_1, title, url);
- return;
- }
- var data_1 = convertDartToNative_SerializedScriptValue(data);
- _replaceState_2(data_1, title);
- return;
- }
- @JSName('replaceState')
- @DomName('History.replaceState')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- void _replaceState_1(data, title, url) => wrap_jso(JS("void ", "#.raw.replaceState(#, #, #)", this, unwrap_jso(data), unwrap_jso(title), unwrap_jso(url)));
- @JSName('replaceState')
- @DomName('History.replaceState')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- void _replaceState_2(data, title) => wrap_jso(JS("void ", "#.raw.replaceState(#, #)", this, unwrap_jso(data), unwrap_jso(title)));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('HTMLCollection')
-@Native("HTMLCollection")
-class HtmlCollection extends DartHtmlDomObject with ListMixin<Node>, ImmutableListMixin<Node> implements JavaScriptIndexingBehavior, List<Node> {
- // To suppress missing implicit constructor warnings.
- factory HtmlCollection._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static HtmlCollection internalCreateHtmlCollection() {
- return new HtmlCollection.internal_();
- }
-
- @Deprecated("Internal Use Only")
- HtmlCollection.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('HTMLCollection.length')
- @DocsEditable()
- int get length => wrap_jso(JS("int", "#.length", this.raw));
-
- Node operator[](int index) {
- if (JS("bool", "# >>> 0 !== # || # >= #", index,
- index, index, length))
- throw new RangeError.index(index, this);
- return wrap_jso(JS("Node", "#[#]", this.raw, index));
- }
- void operator[]=(int index, Node value) {
- throw new UnsupportedError("Cannot assign element of immutable List.");
- }
- // -- start List<Node> mixins.
- // Node is the element type.
-
-
- set length(int value) {
- throw new UnsupportedError("Cannot resize immutable List.");
- }
-
- Node get first {
- if (this.length > 0) {
- return wrap_jso(JS('Node', '#[0]', this.raw));
- }
- throw new StateError("No elements");
- }
-
- Node get last {
- int len = this.length;
- if (len > 0) {
- return wrap_jso(JS('Node', '#[#]', this.raw, len - 1));
- }
- throw new StateError("No elements");
- }
-
- Node get single {
- int len = this.length;
- if (len == 1) {
- return wrap_jso(JS('Node', '#[0]', this.raw));
- }
- if (len == 0) throw new StateError("No elements");
- throw new StateError("More than one element");
- }
-
- Node elementAt(int index) => this[index];
- // -- end List<Node> mixins.
-
- @DomName('HTMLCollection.item')
- @DocsEditable()
- Element item(int index) {
- return _item_1(index);
- }
- @JSName('item')
- @DomName('HTMLCollection.item')
- @DocsEditable()
- Element _item_1(index) => wrap_jso(JS("Element ", "#.raw.item(#)", this, unwrap_jso(index)));
-
- @DomName('HTMLCollection.namedItem')
- @DocsEditable()
- Element namedItem(String name) {
- return _namedItem_1(name);
- }
- @JSName('namedItem')
- @DomName('HTMLCollection.namedItem')
- @DocsEditable()
- Element _namedItem_1(name) => wrap_jso(JS("Element ", "#.raw.namedItem(#)", this, unwrap_jso(name)));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: Do not edit - generated code.
-
-
-@DomName('HTMLDocument')
-@Native("HTMLDocument")
-class HtmlDocument extends Document {
- // To suppress missing implicit constructor warnings.
- factory HtmlDocument._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static HtmlDocument internalCreateHtmlDocument() {
- return new HtmlDocument.internal_();
- }
-
- @Deprecated("Internal Use Only")
- HtmlDocument.internal_() : super.internal_();
-
-
-
- @DomName('Document.body')
- BodyElement get body => _body;
-
- @DomName('Document.body')
- set body(BodyElement value) {
- _body = value;
- }
-
- @DomName('Document.caretRangeFromPoint')
- Range caretRangeFromPoint(int x, int y) {
- return _caretRangeFromPoint(x, y);
- }
-
- @DomName('Document.elementFromPoint')
- Element elementFromPoint(int x, int y) {
- return _elementFromPoint(x, y);
- }
-
- /**
- * Checks if the getCssCanvasContext API is supported on the current platform.
- *
- * See also:
- *
- * * [getCssCanvasContext]
- */
- static bool get supportsCssCanvasContext =>
- JS('bool', '!!(document.getCSSCanvasContext)');
-
-
- @DomName('Document.head')
- HeadElement get head => _head;
-
- @DomName('Document.lastModified')
- String get lastModified => _lastModified;
-
- @DomName('Document.preferredStylesheetSet')
- String get preferredStylesheetSet => _preferredStylesheetSet;
-
- @DomName('Document.referrer')
- String get referrer => _referrer;
-
- @DomName('Document.selectedStylesheetSet')
- String get selectedStylesheetSet => _selectedStylesheetSet;
- set selectedStylesheetSet(String value) {
- _selectedStylesheetSet = value;
- }
-
-
- @DomName('Document.title')
- String get title => _title;
-
- @DomName('Document.title')
- set title(String value) {
- _title = value;
- }
-
- /**
- * Returns page to standard layout.
- *
- * Has no effect if the page is not in fullscreen mode.
- *
- * ## Other resources
- *
- * * [Using the fullscreen API]
- * (http://docs.webplatform.org/wiki/tutorials/using_the_full-screen_api) from
- * WebPlatform.org.
- * * [Fullscreen specification]
- * (http://www.w3.org/TR/fullscreen/) from W3C.
- */
- @DomName('Document.webkitExitFullscreen')
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- void exitFullscreen() {
- _webkitExitFullscreen();
- }
-
- /**
- * Returns the element, if any, that is currently displayed in fullscreen.
- *
- * Returns null if there is currently no fullscreen element. You can use
- * this to determine if the page is in fullscreen mode.
- *
- * myVideo = new VideoElement();
- * if (document.fullscreenElement == null) {
- * myVideo.requestFullscreen();
- * print(document.fullscreenElement == myVideo); // true
- * }
- *
- * ## Other resources
- *
- * * [Using the fullscreen API]
- * (http://docs.webplatform.org/wiki/tutorials/using_the_full-screen_api) from
- * WebPlatform.org.
- * * [Fullscreen specification]
- * (http://www.w3.org/TR/fullscreen/) from W3C.
- */
- @DomName('Document.webkitFullscreenElement')
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- Element get fullscreenElement => _webkitFullscreenElement;
-
- /**
- * Returns true if this document can display elements in fullscreen mode.
- *
- * ## Other resources
- *
- * * [Using the fullscreen API]
- * (http://docs.webplatform.org/wiki/tutorials/using_the_full-screen_api) from
- * WebPlatform.org.
- * * [Fullscreen specification]
- * (http://www.w3.org/TR/fullscreen/) from W3C.
- */
- @DomName('Document.webkitFullscreenEnabled')
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- bool get fullscreenEnabled => _webkitFullscreenEnabled;
-
- @DomName('Document.webkitHidden')
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- bool get hidden => _webkitHidden;
-
- @DomName('Document.visibilityState')
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @Experimental()
- String get visibilityState => _webkitVisibilityState;
-
- @Experimental()
- /**
- * Register a custom subclass of Element to be instantiatable by the DOM.
- *
- * This is necessary to allow the construction of any custom elements.
- *
- * The class being registered must either subclass HtmlElement or SvgElement.
- * If they subclass these directly then they can be used as:
- *
- * class FooElement extends HtmlElement{
- * void created() {
- * print('FooElement created!');
- * }
- * }
- *
- * main() {
- * document.registerElement('x-foo', FooElement);
- * var myFoo = new Element.tag('x-foo');
- * // prints 'FooElement created!' to the console.
- * }
- *
- * The custom element can also be instantiated via HTML using the syntax
- * `<x-foo></x-foo>`
- *
- * Other elements can be subclassed as well:
- *
- * class BarElement extends InputElement{
- * void created() {
- * print('BarElement created!');
- * }
- * }
- *
- * main() {
- * document.registerElement('x-bar', BarElement);
- * var myBar = new Element.tag('input', 'x-bar');
- * // prints 'BarElement created!' to the console.
- * }
- *
- * This custom element can also be instantiated via HTML using the syntax
- * `<input is="x-bar"></input>`
- *
- */
- void registerElement(String tag, Type customElementClass,
- {String extendsTag}) {
- _registerCustomElement(JS('', 'window'), this, tag, customElementClass,
- extendsTag);
- }
-
- /** *Deprecated*: use [registerElement] instead. */
- @deprecated
- @Experimental()
- void register(String tag, Type customElementClass, {String extendsTag}) {
- return registerElement(tag, customElementClass, extendsTag: extendsTag);
- }
-
- /**
- * Static factory designed to expose `visibilitychange` events to event
- * handlers that are not necessarily instances of [Document].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Document.visibilityChange')
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @Experimental()
- static const EventStreamProvider<Event> visibilityChangeEvent =
- const _CustomEventStreamProvider<Event>(
- _determineVisibilityChangeEventType);
-
- static String _determineVisibilityChangeEventType(EventTarget e) {
- return 'webkitvisibilitychange';
- }
-
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @Experimental()
- Stream<Event> get onVisibilityChange =>
- visibilityChangeEvent.forTarget(this);
-
- /// Creates an element upgrader which can be used to change the Dart wrapper
- /// type for elements.
- ///
- /// The type specified must be a subclass of HtmlElement, when an element is
- /// upgraded then the created constructor will be invoked on that element.
- ///
- /// If the type is not a direct subclass of HtmlElement then the extendsTag
- /// parameter must be provided.
- @Experimental()
- ElementUpgrader createElementUpgrader(Type type, {String extendsTag}) {
- throw 'ElementUpgrader not yet supported on DDC';
- }
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('HTMLHtmlElement')
-@Native("HTMLHtmlElement")
-class HtmlHtmlElement extends HtmlElement {
- // To suppress missing implicit constructor warnings.
- factory HtmlHtmlElement._() { throw new UnsupportedError("Not supported"); }
-
- @DomName('HTMLHtmlElement.HTMLHtmlElement')
- @DocsEditable()
- factory HtmlHtmlElement() => document.createElement("html");
-
-
- @Deprecated("Internal Use Only")
- static HtmlHtmlElement internalCreateHtmlHtmlElement() {
- return new HtmlHtmlElement.internal_();
- }
-
- @Deprecated("Internal Use Only")
- HtmlHtmlElement.internal_() : super.internal_();
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
- /**
- * A client-side XHR request for getting data from a URL,
- * formally known as XMLHttpRequest.
- *
- * HttpRequest can be used to obtain data from HTTP and FTP protocols,
- * and is useful for AJAX-style page updates.
- *
- * The simplest way to get the contents of a text file, such as a
- * JSON-formatted file, is with [getString].
- * For example, the following code gets the contents of a JSON file
- * and prints its length:
- *
- * var path = 'myData.json';
- * HttpRequest.getString(path)
- * .then((String fileContents) {
- * print(fileContents.length);
- * })
- * .catchError((Error error) {
- * print(error.toString());
- * });
- *
- * ## Fetching data from other servers
- *
- * For security reasons, browsers impose restrictions on requests
- * made by embedded apps.
- * With the default behavior of this class,
- * the code making the request must be served from the same origin
- * (domain name, port, and application layer protocol)
- * as the requested resource.
- * In the example above, the myData.json file must be co-located with the
- * app that uses it.
- * You might be able to
- * [get around this restriction](http://www.dartlang.org/articles/json-web-service/#a-note-on-cors-and-httprequest)
- * by using CORS headers or JSONP.
- *
- * ## Other resources
- *
- * * [Fetch Data Dynamically](https://www.dartlang.org/docs/tutorials/fetchdata/),
- * a tutorial from _A Game of Darts_,
- * shows two different ways to use HttpRequest to get a JSON file.
- * * [Get Input from a Form](https://www.dartlang.org/docs/tutorials/forms/),
- * another tutorial from _A Game of Darts_,
- * shows using HttpRequest with a custom server.
- * * [Dart article on using HttpRequests](http://www.dartlang.org/articles/json-web-service/#getting-data)
- * * [JS XMLHttpRequest](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest)
- * * [Using XMLHttpRequest](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest)
- */
-@DomName('XMLHttpRequest')
-@Native("XMLHttpRequest")
-class HttpRequest extends HttpRequestEventTarget {
-
- /**
- * Creates a GET request for the specified [url].
- *
- * The server response must be a `text/` mime type for this request to
- * succeed.
- *
- * This is similar to [request] but specialized for HTTP GET requests which
- * return text content.
- *
- * To add query parameters, append them to the [url] following a `?`,
- * joining each key to its value with `=` and separating key-value pairs with
- * `&`.
- *
- * var name = Uri.encodeQueryComponent('John');
- * var id = Uri.encodeQueryComponent('42');
- * HttpRequest.getString('users.json?name=$name&id=$id')
- * .then((HttpRequest resp) {
- * // Do something with the response.
- * });
- *
- * See also:
- *
- * * [request]
- */
- static Future<String> getString(String url,
- {bool withCredentials, void onProgress(ProgressEvent e)}) {
- return request(url, withCredentials: withCredentials,
- onProgress: onProgress).then((HttpRequest xhr) => xhr.responseText);
- }
-
- /**
- * Makes a server POST request with the specified data encoded as form data.
- *
- * This is roughly the POST equivalent of getString. This method is similar
- * to sending a FormData object with broader browser support but limited to
- * String values.
- *
- * If [data] is supplied, the key/value pairs are URI encoded with
- * [Uri.encodeQueryComponent] and converted into an HTTP query string.
- *
- * Unless otherwise specified, this method appends the following header:
- *
- * Content-Type: application/x-www-form-urlencoded; charset=UTF-8
- *
- * Here's an example of using this method:
- *
- * var data = { 'firstName' : 'John', 'lastName' : 'Doe' };
- * HttpRequest.postFormData('/send', data).then((HttpRequest resp) {
- * // Do something with the response.
- * });
- *
- * See also:
- *
- * * [request]
- */
- static Future<HttpRequest> postFormData(String url, Map<String, String> data,
- {bool withCredentials, String responseType,
- Map<String, String> requestHeaders,
- void onProgress(ProgressEvent e)}) {
-
- var parts = [];
- data.forEach((key, value) {
- parts.add('${Uri.encodeQueryComponent(key)}='
- '${Uri.encodeQueryComponent(value)}');
- });
- var formData = parts.join('&');
-
- if (requestHeaders == null) {
- requestHeaders = <String, String>{};
- }
- requestHeaders.putIfAbsent('Content-Type',
- () => 'application/x-www-form-urlencoded; charset=UTF-8');
-
- return request(url, method: 'POST', withCredentials: withCredentials,
- responseType: responseType,
- requestHeaders: requestHeaders, sendData: formData,
- onProgress: onProgress);
- }
-
- /**
- * Creates and sends a URL request for the specified [url].
- *
- * By default `request` will perform an HTTP GET request, but a different
- * method (`POST`, `PUT`, `DELETE`, etc) can be used by specifying the
- * [method] parameter. (See also [HttpRequest.postFormData] for `POST`
- * requests only.
- *
- * The Future is completed when the response is available.
- *
- * If specified, `sendData` will send data in the form of a [ByteBuffer],
- * [Blob], [Document], [String], or [FormData] along with the HttpRequest.
- *
- * If specified, [responseType] sets the desired response format for the
- * request. By default it is [String], but can also be 'arraybuffer', 'blob',
- * 'document', 'json', or 'text'. See also [HttpRequest.responseType]
- * for more information.
- *
- * The [withCredentials] parameter specified that credentials such as a cookie
- * (already) set in the header or
- * [authorization headers](http://tools.ietf.org/html/rfc1945#section-10.2)
- * should be specified for the request. Details to keep in mind when using
- * credentials:
- *
- * * Using credentials is only useful for cross-origin requests.
- * * The `Access-Control-Allow-Origin` header of `url` cannot contain a wildcard (*).
- * * The `Access-Control-Allow-Credentials` header of `url` must be set to true.
- * * If `Access-Control-Expose-Headers` has not been set to true, only a subset of all the response headers will be returned when calling [getAllRequestHeaders].
- *
- * The following is equivalent to the [getString] sample above:
- *
- * var name = Uri.encodeQueryComponent('John');
- * var id = Uri.encodeQueryComponent('42');
- * HttpRequest.request('users.json?name=$name&id=$id')
- * .then((HttpRequest resp) {
- * // Do something with the response.
- * });
- *
- * Here's an example of submitting an entire form with [FormData].
- *
- * var myForm = querySelector('form#myForm');
- * var data = new FormData(myForm);
- * HttpRequest.request('/submit', method: 'POST', sendData: data)
- * .then((HttpRequest resp) {
- * // Do something with the response.
- * });
- *
- * Note that requests for file:// URIs are only supported by Chrome extensions
- * with appropriate permissions in their manifest. Requests to file:// URIs
- * will also never fail- the Future will always complete successfully, even
- * when the file cannot be found.
- *
- * See also: [authorization headers](http://en.wikipedia.org/wiki/Basic_access_authentication).
- */
- static Future<HttpRequest> request(String url,
- {String method, bool withCredentials, String responseType,
- String mimeType, Map<String, String> requestHeaders, sendData,
- void onProgress(ProgressEvent e)}) {
- var completer = new Completer<HttpRequest>();
-
- var xhr = new HttpRequest();
- if (method == null) {
- method = 'GET';
- }
- xhr.open(method, url, async: true);
-
- if (withCredentials != null) {
- xhr.withCredentials = withCredentials;
- }
-
- if (responseType != null) {
- xhr.responseType = responseType;
- }
-
- if (mimeType != null) {
- xhr.overrideMimeType(mimeType);
- }
-
- if (requestHeaders != null) {
- requestHeaders.forEach((header, value) {
- xhr.setRequestHeader(header, value);
- });
- }
-
- if (onProgress != null) {
- xhr.onProgress.listen(onProgress);
- }
-
- xhr.onLoad.listen((e) {
- var accepted = xhr.status >= 200 && xhr.status < 300;
- var fileUri = xhr.status == 0; // file:// URIs have status of 0.
- var notModified = xhr.status == 304;
- // Redirect status is specified up to 307, but others have been used in
- // practice. Notably Google Drive uses 308 Resume Incomplete for
- // resumable uploads, and it's also been used as a redirect. The
- // redirect case will be handled by the browser before it gets to us,
- // so if we see it we should pass it through to the user.
- var unknownRedirect = xhr.status > 307 && xhr.status < 400;
-
- if (accepted || fileUri || notModified || unknownRedirect) {
- completer.complete(xhr);
- } else {
- completer.completeError(e);
- }
- });
-
- xhr.onError.listen(completer.completeError);
-
- if (sendData != null) {
- xhr.send(sendData);
- } else {
- xhr.send();
- }
-
- return completer.future;
- }
-
- /**
- * Checks to see if the Progress event is supported on the current platform.
- */
- static bool get supportsProgressEvent {
- return true;
- }
-
- /**
- * Checks to see if the current platform supports making cross origin
- * requests.
- *
- * Note that even if cross origin requests are supported, they still may fail
- * if the destination server does not support CORS requests.
- */
- static bool get supportsCrossOrigin {
- return true;
- }
-
- /**
- * Checks to see if the LoadEnd event is supported on the current platform.
- */
- static bool get supportsLoadEndEvent {
- return true;
- }
-
- /**
- * Checks to see if the overrideMimeType method is supported on the current
- * platform.
- */
- static bool get supportsOverrideMimeType {
- return true;
- }
-
- /**
- * Makes a cross-origin request to the specified URL.
- *
- * This API provides a subset of [request] which works on IE9. If IE9
- * cross-origin support is not required then [request] should be used instead.
- */
- @Experimental()
- static Future<String> requestCrossOrigin(String url,
- {String method, String sendData}) {
- if (supportsCrossOrigin) {
- return request(url, method: method, sendData: sendData).then((xhr) {
- return xhr.responseText;
- });
- }
- }
-
- /**
- * Returns all response headers as a key-value map.
- *
- * Multiple values for the same header key can be combined into one,
- * separated by a comma and a space.
- *
- * See: http://www.w3.org/TR/XMLHttpRequest/#the-getresponseheader()-method
- */
- Map<String, String> get responseHeaders {
- // from Closure's goog.net.Xhrio.getResponseHeaders.
- var headers = <String, String>{};
- var headersString = this.getAllResponseHeaders();
- if (headersString == null) {
- return headers;
- }
- var headersList = headersString.split('\r\n');
- for (var header in headersList) {
- if (header.isEmpty) {
- continue;
- }
-
- var splitIdx = header.indexOf(': ');
- if (splitIdx == -1) {
- continue;
- }
- var key = header.substring(0, splitIdx).toLowerCase();
- var value = header.substring(splitIdx + 2);
- if (headers.containsKey(key)) {
- headers[key] = '${headers[key]}, $value';
- } else {
- headers[key] = value;
- }
- }
- return headers;
- }
-
- /**
- * Specify the desired `url`, and `method` to use in making the request.
- *
- * By default the request is done asyncronously, with no user or password
- * authentication information. If `async` is false, the request will be send
- * synchronously.
- *
- * Calling `open` again on a currently active request is equivalent to
- * calling `abort`.
- *
- * Note: Most simple HTTP requests can be accomplished using the [getString],
- * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
- * `open` method is intended only for more complext HTTP requests where
- * finer-grained control is needed.
- */
- @DomName('XMLHttpRequest.open')
- @DocsEditable()
- void open(String method, String url, {bool async, String user, String password}) {
- if (async == null && user == null && password == null) {
- JS('void', '#.open(#, #)', this.raw, method, url);
- } else {
- JS('void', '#.open(#, #, #, #, #)', this.raw, method, url, async, user, password);
- }
- }
-
- String get responseType => JS('String', '#.responseType', this.raw);
- void set responseType(String value) { JS('void', '#.responseType = #', this.raw, value); }
-
- // To suppress missing implicit constructor warnings.
- factory HttpRequest._() { throw new UnsupportedError("Not supported"); }
-
- /**
- * Static factory designed to expose `readystatechange` events to event
- * handlers that are not necessarily instances of [HttpRequest].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('XMLHttpRequest.readystatechangeEvent')
- @DocsEditable()
- static const EventStreamProvider<ProgressEvent> readyStateChangeEvent = const EventStreamProvider<ProgressEvent>('readystatechange');
-
- /**
- * General constructor for any type of request (GET, POST, etc).
- *
- * This call is used in conjunction with [open]:
- *
- * var request = new HttpRequest();
- * request.open('GET', 'http://dartlang.org');
- * request.onLoad.listen((event) => print(
- * 'Request complete ${event.target.reponseText}'));
- * request.send();
- *
- * is the (more verbose) equivalent of
- *
- * HttpRequest.getString('http://dartlang.org').then(
- * (result) => print('Request complete: $result'));
- */
- @DomName('XMLHttpRequest.XMLHttpRequest')
- @DocsEditable()
- factory HttpRequest() {
- return HttpRequest._create_1();
- }
- static HttpRequest _create_1() => wrap_jso(JS('HttpRequest', 'new XMLHttpRequest()'));
-
-
- @Deprecated("Internal Use Only")
- static HttpRequest internalCreateHttpRequest() {
- return new HttpRequest.internal_();
- }
-
- @Deprecated("Internal Use Only")
- HttpRequest.internal_() : super.internal_();
-
-
- @DomName('XMLHttpRequest.DONE')
- @DocsEditable()
- static const int DONE = 4;
-
- @DomName('XMLHttpRequest.HEADERS_RECEIVED')
- @DocsEditable()
- static const int HEADERS_RECEIVED = 2;
-
- @DomName('XMLHttpRequest.LOADING')
- @DocsEditable()
- static const int LOADING = 3;
-
- @DomName('XMLHttpRequest.OPENED')
- @DocsEditable()
- static const int OPENED = 1;
-
- @DomName('XMLHttpRequest.UNSENT')
- @DocsEditable()
- static const int UNSENT = 0;
-
- /**
- * Indicator of the current state of the request:
- *
- * <table>
- * <tr>
- * <td>Value</td>
- * <td>State</td>
- * <td>Meaning</td>
- * </tr>
- * <tr>
- * <td>0</td>
- * <td>unsent</td>
- * <td><code>open()</code> has not yet been called</td>
- * </tr>
- * <tr>
- * <td>1</td>
- * <td>opened</td>
- * <td><code>send()</code> has not yet been called</td>
- * </tr>
- * <tr>
- * <td>2</td>
- * <td>headers received</td>
- * <td><code>sent()</code> has been called; response headers and <code>status</code> are available</td>
- * </tr>
- * <tr>
- * <td>3</td> <td>loading</td> <td><code>responseText</code> holds some data</td>
- * </tr>
- * <tr>
- * <td>4</td> <td>done</td> <td>request is complete</td>
- * </tr>
- * </table>
- */
- @DomName('XMLHttpRequest.readyState')
- @DocsEditable()
- int get readyState => wrap_jso(JS("int", "#.readyState", this.raw));
-
- /**
- * The data received as a reponse from the request.
- *
- * The data could be in the
- * form of a [String], [ByteBuffer], [Document], [Blob], or json (also a
- * [String]). `null` indicates request failure.
- */
- @DomName('XMLHttpRequest.response')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- dynamic get response => _convertNativeToDart_XHR_Response(this._get_response);
- @JSName('response')
- /**
- * The data received as a reponse from the request.
- *
- * The data could be in the
- * form of a [String], [ByteBuffer], [Document], [Blob], or json (also a
- * [String]). `null` indicates request failure.
- */
- @DomName('XMLHttpRequest.response')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Creates('NativeByteBuffer|Blob|Document|=Object|JSExtendableArray|String|num')
- dynamic get _get_response => wrap_jso(JS("dynamic", "#.response", this.raw));
-
- /**
- * The response in String form or empty String on failure.
- */
- @DomName('XMLHttpRequest.responseText')
- @DocsEditable()
- String get responseText => wrap_jso(JS("String", "#.responseText", this.raw));
-
- @JSName('responseURL')
- @DomName('XMLHttpRequest.responseURL')
- @DocsEditable()
- @Experimental() // untriaged
- String get responseUrl => wrap_jso(JS("String", "#.responseURL", this.raw));
-
- @JSName('responseXML')
- /**
- * The request response, or null on failure.
- *
- * The response is processed as
- * `text/xml` stream, unless responseType = 'document' and the request is
- * synchronous.
- */
- @DomName('XMLHttpRequest.responseXML')
- @DocsEditable()
- Document get responseXml => wrap_jso(JS("Document", "#.responseXML", this.raw));
-
- /**
- * The http result code from the request (200, 404, etc).
- * See also: [Http Status Codes](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)
- */
- @DomName('XMLHttpRequest.status')
- @DocsEditable()
- int get status => wrap_jso(JS("int", "#.status", this.raw));
-
- /**
- * The request response string (such as \"200 OK\").
- * See also: [Http Status Codes](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)
- */
- @DomName('XMLHttpRequest.statusText')
- @DocsEditable()
- String get statusText => wrap_jso(JS("String", "#.statusText", this.raw));
-
- /**
- * Length of time before a request is automatically terminated.
- *
- * When the time has passed, a [TimeoutEvent] is dispatched.
- *
- * If [timeout] is set to 0, then the request will not time out.
- *
- * ## Other resources
- *
- * * [XMLHttpRequest.timeout]
- * (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#timeout)
- * from MDN.
- * * [The timeout attribute]
- * (http://www.w3.org/TR/XMLHttpRequest/#the-timeout-attribute)
- * from W3C.
- */
- @DomName('XMLHttpRequest.timeout')
- @DocsEditable()
- @Experimental() // untriaged
- int get timeout => wrap_jso(JS("int", "#.timeout", this.raw));
- /**
- * Length of time before a request is automatically terminated.
- *
- * When the time has passed, a [TimeoutEvent] is dispatched.
- *
- * If [timeout] is set to 0, then the request will not time out.
- *
- * ## Other resources
- *
- * * [XMLHttpRequest.timeout]
- * (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#timeout)
- * from MDN.
- * * [The timeout attribute]
- * (http://www.w3.org/TR/XMLHttpRequest/#the-timeout-attribute)
- * from W3C.
- */
- @DomName('XMLHttpRequest.timeout')
- @DocsEditable()
- @Experimental() // untriaged
- void set timeout(int val) => JS("void", "#.timeout = #", this.raw, unwrap_jso(val));
-
- /**
- * [EventTarget] that can hold listeners to track the progress of the request.
- * The events fired will be members of [HttpRequestUploadEvents].
- */
- @DomName('XMLHttpRequest.upload')
- @DocsEditable()
- @Unstable()
- HttpRequestEventTarget get upload => wrap_jso(JS("HttpRequestEventTarget", "#.upload", this.raw));
-
- /**
- * True if cross-site requests should use credentials such as cookies
- * or authorization headers; false otherwise.
- *
- * This value is ignored for same-site requests.
- */
- @DomName('XMLHttpRequest.withCredentials')
- @DocsEditable()
- bool get withCredentials => wrap_jso(JS("bool", "#.withCredentials", this.raw));
- /**
- * True if cross-site requests should use credentials such as cookies
- * or authorization headers; false otherwise.
- *
- * This value is ignored for same-site requests.
- */
- @DomName('XMLHttpRequest.withCredentials')
- @DocsEditable()
- void set withCredentials(bool val) => JS("void", "#.withCredentials = #", this.raw, unwrap_jso(val));
-
- /**
- * Stop the current request.
- *
- * The request can only be stopped if readyState is `HEADERS_RECIEVED` or
- * `LOADING`. If this method is not in the process of being sent, the method
- * has no effect.
- */
- @DomName('XMLHttpRequest.abort')
- @DocsEditable()
- void abort() {
- _abort_1();
- return;
- }
- @JSName('abort')
- /**
- * Stop the current request.
- *
- * The request can only be stopped if readyState is `HEADERS_RECIEVED` or
- * `LOADING`. If this method is not in the process of being sent, the method
- * has no effect.
- */
- @DomName('XMLHttpRequest.abort')
- @DocsEditable()
- void _abort_1() => wrap_jso(JS("void ", "#.raw.abort()", this));
-
- /**
- * Retrieve all the response headers from a request.
- *
- * `null` if no headers have been received. For multipart requests,
- * `getAllResponseHeaders` will return the response headers for the current
- * part of the request.
- *
- * See also [HTTP response headers](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses)
- * for a list of common response headers.
- */
- @DomName('XMLHttpRequest.getAllResponseHeaders')
- @DocsEditable()
- @Unstable()
- String getAllResponseHeaders() {
- return _getAllResponseHeaders_1();
- }
- @JSName('getAllResponseHeaders')
- /**
- * Retrieve all the response headers from a request.
- *
- * `null` if no headers have been received. For multipart requests,
- * `getAllResponseHeaders` will return the response headers for the current
- * part of the request.
- *
- * See also [HTTP response headers](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses)
- * for a list of common response headers.
- */
- @DomName('XMLHttpRequest.getAllResponseHeaders')
- @DocsEditable()
- @Unstable()
- String _getAllResponseHeaders_1() => wrap_jso(JS("String ", "#.raw.getAllResponseHeaders()", this));
-
- /**
- * Return the response header named `header`, or null if not found.
- *
- * See also [HTTP response headers](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses)
- * for a list of common response headers.
- */
- @DomName('XMLHttpRequest.getResponseHeader')
- @DocsEditable()
- @Unstable()
- String getResponseHeader(String header) {
- return _getResponseHeader_1(header);
- }
- @JSName('getResponseHeader')
- /**
- * Return the response header named `header`, or null if not found.
- *
- * See also [HTTP response headers](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses)
- * for a list of common response headers.
- */
- @DomName('XMLHttpRequest.getResponseHeader')
- @DocsEditable()
- @Unstable()
- String _getResponseHeader_1(header) => wrap_jso(JS("String ", "#.raw.getResponseHeader(#)", this, unwrap_jso(header)));
-
- /**
- * Specify a particular MIME type (such as `text/xml`) desired for the
- * response.
- *
- * This value must be set before the request has been sent. See also the list
- * of [common MIME types](http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types)
- */
- @DomName('XMLHttpRequest.overrideMimeType')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- void overrideMimeType(String override) {
- _overrideMimeType_1(override);
- return;
- }
- @JSName('overrideMimeType')
- /**
- * Specify a particular MIME type (such as `text/xml`) desired for the
- * response.
- *
- * This value must be set before the request has been sent. See also the list
- * of [common MIME types](http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types)
- */
- @DomName('XMLHttpRequest.overrideMimeType')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- void _overrideMimeType_1(override) => wrap_jso(JS("void ", "#.raw.overrideMimeType(#)", this, unwrap_jso(override)));
-
- /**
- * Send the request with any given `data`.
- *
- * Note: Most simple HTTP requests can be accomplished using the [getString],
- * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
- * `send` method is intended only for more complext HTTP requests where
- * finer-grained control is needed.
- *
- * ## Other resources
- *
- * * [XMLHttpRequest.send]
- * (https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#send%28%29)
- * from MDN.
- */
- @DomName('XMLHttpRequest.send')
- @DocsEditable()
- void send([data]) {
- if (data == null) {
- _send_1();
- return;
- }
- if ((data is Document || data == null)) {
- _send_2(data);
- return;
- }
- if ((data is String || data == null)) {
- _send_3(data);
- return;
- }
- throw new ArgumentError("Incorrect number or type of arguments");
- }
- @JSName('send')
- /**
- * Send the request with any given `data`.
- *
- * Note: Most simple HTTP requests can be accomplished using the [getString],
- * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
- * `send` method is intended only for more complext HTTP requests where
- * finer-grained control is needed.
- *
- * ## Other resources
- *
- * * [XMLHttpRequest.send]
- * (https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#send%28%29)
- * from MDN.
- */
- @DomName('XMLHttpRequest.send')
- @DocsEditable()
- void _send_1() => wrap_jso(JS("void ", "#.raw.send()", this));
- @JSName('send')
- /**
- * Send the request with any given `data`.
- *
- * Note: Most simple HTTP requests can be accomplished using the [getString],
- * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
- * `send` method is intended only for more complext HTTP requests where
- * finer-grained control is needed.
- *
- * ## Other resources
- *
- * * [XMLHttpRequest.send]
- * (https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#send%28%29)
- * from MDN.
- */
- @DomName('XMLHttpRequest.send')
- @DocsEditable()
- void _send_2(Document data) => wrap_jso(JS("void ", "#.raw.send(#)", this, unwrap_jso(data)));
- @JSName('send')
- /**
- * Send the request with any given `data`.
- *
- * Note: Most simple HTTP requests can be accomplished using the [getString],
- * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
- * `send` method is intended only for more complext HTTP requests where
- * finer-grained control is needed.
- *
- * ## Other resources
- *
- * * [XMLHttpRequest.send]
- * (https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#send%28%29)
- * from MDN.
- */
- @DomName('XMLHttpRequest.send')
- @DocsEditable()
- void _send_3(String data) => wrap_jso(JS("void ", "#.raw.send(#)", this, unwrap_jso(data)));
-
- /**
- * Sets the value of an HTTP requst header.
- *
- * This method should be called after the request is opened, but before
- * the request is sent.
- *
- * Multiple calls with the same header will combine all their values into a
- * single header.
- *
- * ## Other resources
- *
- * * [XMLHttpRequest.setRequestHeader]
- * (https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#send%28%29)
- * from MDN.
- * * [The setRequestHeader() method]
- * (http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader()-method) from
- * W3C.
- */
- @DomName('XMLHttpRequest.setRequestHeader')
- @DocsEditable()
- void setRequestHeader(String header, String value) {
- _setRequestHeader_1(header, value);
- return;
- }
- @JSName('setRequestHeader')
- /**
- * Sets the value of an HTTP requst header.
- *
- * This method should be called after the request is opened, but before
- * the request is sent.
- *
- * Multiple calls with the same header will combine all their values into a
- * single header.
- *
- * ## Other resources
- *
- * * [XMLHttpRequest.setRequestHeader]
- * (https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#send%28%29)
- * from MDN.
- * * [The setRequestHeader() method]
- * (http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader()-method) from
- * W3C.
- */
- @DomName('XMLHttpRequest.setRequestHeader')
- @DocsEditable()
- void _setRequestHeader_1(header, value) => wrap_jso(JS("void ", "#.raw.setRequestHeader(#, #)", this, unwrap_jso(header), unwrap_jso(value)));
-
- /// Stream of `readystatechange` events handled by this [HttpRequest].
-/**
- * Event listeners to be notified every time the [HttpRequest]
- * object's `readyState` changes values.
- */
- @DomName('XMLHttpRequest.onreadystatechange')
- @DocsEditable()
- Stream<ProgressEvent> get onReadyStateChange => readyStateChangeEvent.forTarget(this);
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('XMLHttpRequestEventTarget')
-@Experimental() // untriaged
-@Native("XMLHttpRequestEventTarget")
-class HttpRequestEventTarget extends EventTarget {
- // To suppress missing implicit constructor warnings.
- factory HttpRequestEventTarget._() { throw new UnsupportedError("Not supported"); }
-
- /**
- * Static factory designed to expose `abort` events to event
- * handlers that are not necessarily instances of [HttpRequestEventTarget].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('XMLHttpRequestEventTarget.abortEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<ProgressEvent> abortEvent = const EventStreamProvider<ProgressEvent>('abort');
-
- /**
- * Static factory designed to expose `error` events to event
- * handlers that are not necessarily instances of [HttpRequestEventTarget].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('XMLHttpRequestEventTarget.errorEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<ProgressEvent> errorEvent = const EventStreamProvider<ProgressEvent>('error');
-
- /**
- * Static factory designed to expose `load` events to event
- * handlers that are not necessarily instances of [HttpRequestEventTarget].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('XMLHttpRequestEventTarget.loadEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<ProgressEvent> loadEvent = const EventStreamProvider<ProgressEvent>('load');
-
- /**
- * Static factory designed to expose `loadend` events to event
- * handlers that are not necessarily instances of [HttpRequestEventTarget].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('XMLHttpRequestEventTarget.loadendEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<ProgressEvent> loadEndEvent = const EventStreamProvider<ProgressEvent>('loadend');
-
- /**
- * Static factory designed to expose `loadstart` events to event
- * handlers that are not necessarily instances of [HttpRequestEventTarget].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('XMLHttpRequestEventTarget.loadstartEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<ProgressEvent> loadStartEvent = const EventStreamProvider<ProgressEvent>('loadstart');
-
- /**
- * Static factory designed to expose `progress` events to event
- * handlers that are not necessarily instances of [HttpRequestEventTarget].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('XMLHttpRequestEventTarget.progressEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<ProgressEvent> progressEvent = const EventStreamProvider<ProgressEvent>('progress');
-
- /**
- * Static factory designed to expose `timeout` events to event
- * handlers that are not necessarily instances of [HttpRequestEventTarget].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('XMLHttpRequestEventTarget.timeoutEvent')
- @DocsEditable()
- @Experimental() // untriaged
- static const EventStreamProvider<ProgressEvent> timeoutEvent = const EventStreamProvider<ProgressEvent>('timeout');
-
-
- @Deprecated("Internal Use Only")
- static HttpRequestEventTarget internalCreateHttpRequestEventTarget() {
- return new HttpRequestEventTarget.internal_();
- }
-
- @Deprecated("Internal Use Only")
- HttpRequestEventTarget.internal_() : super.internal_();
-
-
- /// Stream of `abort` events handled by this [HttpRequestEventTarget].
- @DomName('XMLHttpRequestEventTarget.onabort')
- @DocsEditable()
- @Experimental() // untriaged
- Stream<ProgressEvent> get onAbort => abortEvent.forTarget(this);
-
- /// Stream of `error` events handled by this [HttpRequestEventTarget].
- @DomName('XMLHttpRequestEventTarget.onerror')
- @DocsEditable()
- @Experimental() // untriaged
- Stream<ProgressEvent> get onError => errorEvent.forTarget(this);
-
- /// Stream of `load` events handled by this [HttpRequestEventTarget].
- @DomName('XMLHttpRequestEventTarget.onload')
- @DocsEditable()
- @Experimental() // untriaged
- Stream<ProgressEvent> get onLoad => loadEvent.forTarget(this);
-
- /// Stream of `loadend` events handled by this [HttpRequestEventTarget].
- @DomName('XMLHttpRequestEventTarget.onloadend')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental() // untriaged
- Stream<ProgressEvent> get onLoadEnd => loadEndEvent.forTarget(this);
-
- /// Stream of `loadstart` events handled by this [HttpRequestEventTarget].
- @DomName('XMLHttpRequestEventTarget.onloadstart')
- @DocsEditable()
- @Experimental() // untriaged
- Stream<ProgressEvent> get onLoadStart => loadStartEvent.forTarget(this);
-
- /// Stream of `progress` events handled by this [HttpRequestEventTarget].
- @DomName('XMLHttpRequestEventTarget.onprogress')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.FIREFOX)
- @SupportedBrowser(SupportedBrowser.IE, '10')
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental() // untriaged
- Stream<ProgressEvent> get onProgress => progressEvent.forTarget(this);
-
- /// Stream of `timeout` events handled by this [HttpRequestEventTarget].
- @DomName('XMLHttpRequestEventTarget.ontimeout')
- @DocsEditable()
- @Experimental() // untriaged
- Stream<ProgressEvent> get onTimeout => timeoutEvent.forTarget(this);
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DomName('HTMLInputElement')
-@Native("HTMLInputElement")
-class InputElement extends HtmlElement implements
- HiddenInputElement,
- SearchInputElement,
- TextInputElement,
- UrlInputElement,
- TelephoneInputElement,
- EmailInputElement,
- PasswordInputElement,
- DateInputElement,
- MonthInputElement,
- WeekInputElement,
- TimeInputElement,
- LocalDateTimeInputElement,
- NumberInputElement,
- RangeInputElement,
- CheckboxInputElement,
- RadioButtonInputElement,
- FileUploadInputElement,
- SubmitButtonInputElement,
- ImageButtonInputElement,
- ResetButtonInputElement,
- ButtonInputElement {
-
- factory InputElement({String type}) {
- InputElement e = document.createElement("input");
- if (type != null) {
- try {
- // IE throws an exception for unknown types.
- e.type = type;
- } catch(_) {}
- }
- return e;
- }
-
- // To suppress missing implicit constructor warnings.
- factory InputElement._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static InputElement internalCreateInputElement() {
- return new InputElement.internal_();
- }
-
- @Deprecated("Internal Use Only")
- InputElement.internal_() : super.internal_();
-
-
- @DomName('HTMLInputElement.accept')
- @DocsEditable()
- String get accept => wrap_jso(JS("String", "#.accept", this.raw));
- @DomName('HTMLInputElement.accept')
- @DocsEditable()
- void set accept(String val) => JS("void", "#.accept = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.alt')
- @DocsEditable()
- String get alt => wrap_jso(JS("String", "#.alt", this.raw));
- @DomName('HTMLInputElement.alt')
- @DocsEditable()
- void set alt(String val) => JS("void", "#.alt = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.autocomplete')
- @DocsEditable()
- String get autocomplete => wrap_jso(JS("String", "#.autocomplete", this.raw));
- @DomName('HTMLInputElement.autocomplete')
- @DocsEditable()
- void set autocomplete(String val) => JS("void", "#.autocomplete = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.autofocus')
- @DocsEditable()
- bool get autofocus => wrap_jso(JS("bool", "#.autofocus", this.raw));
- @DomName('HTMLInputElement.autofocus')
- @DocsEditable()
- void set autofocus(bool val) => JS("void", "#.autofocus = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.capture')
- @DocsEditable()
- @Experimental() // untriaged
- bool get capture => wrap_jso(JS("bool", "#.capture", this.raw));
- @DomName('HTMLInputElement.capture')
- @DocsEditable()
- @Experimental() // untriaged
- void set capture(bool val) => JS("void", "#.capture = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.checked')
- @DocsEditable()
- bool get checked => wrap_jso(JS("bool", "#.checked", this.raw));
- @DomName('HTMLInputElement.checked')
- @DocsEditable()
- void set checked(bool val) => JS("void", "#.checked = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.defaultChecked')
- @DocsEditable()
- bool get defaultChecked => wrap_jso(JS("bool", "#.defaultChecked", this.raw));
- @DomName('HTMLInputElement.defaultChecked')
- @DocsEditable()
- void set defaultChecked(bool val) => JS("void", "#.defaultChecked = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.defaultValue')
- @DocsEditable()
- String get defaultValue => wrap_jso(JS("String", "#.defaultValue", this.raw));
- @DomName('HTMLInputElement.defaultValue')
- @DocsEditable()
- void set defaultValue(String val) => JS("void", "#.defaultValue = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.dirName')
- @DocsEditable()
- String get dirName => wrap_jso(JS("String", "#.dirName", this.raw));
- @DomName('HTMLInputElement.dirName')
- @DocsEditable()
- void set dirName(String val) => JS("void", "#.dirName = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.disabled')
- @DocsEditable()
- bool get disabled => wrap_jso(JS("bool", "#.disabled", this.raw));
- @DomName('HTMLInputElement.disabled')
- @DocsEditable()
- void set disabled(bool val) => JS("void", "#.disabled = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.form')
- @DocsEditable()
- HtmlElement get form => wrap_jso(JS("HtmlElement", "#.form", this.raw));
-
- @DomName('HTMLInputElement.formAction')
- @DocsEditable()
- String get formAction => wrap_jso(JS("String", "#.formAction", this.raw));
- @DomName('HTMLInputElement.formAction')
- @DocsEditable()
- void set formAction(String val) => JS("void", "#.formAction = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.formEnctype')
- @DocsEditable()
- String get formEnctype => wrap_jso(JS("String", "#.formEnctype", this.raw));
- @DomName('HTMLInputElement.formEnctype')
- @DocsEditable()
- void set formEnctype(String val) => JS("void", "#.formEnctype = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.formMethod')
- @DocsEditable()
- String get formMethod => wrap_jso(JS("String", "#.formMethod", this.raw));
- @DomName('HTMLInputElement.formMethod')
- @DocsEditable()
- void set formMethod(String val) => JS("void", "#.formMethod = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.formNoValidate')
- @DocsEditable()
- bool get formNoValidate => wrap_jso(JS("bool", "#.formNoValidate", this.raw));
- @DomName('HTMLInputElement.formNoValidate')
- @DocsEditable()
- void set formNoValidate(bool val) => JS("void", "#.formNoValidate = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.formTarget')
- @DocsEditable()
- String get formTarget => wrap_jso(JS("String", "#.formTarget", this.raw));
- @DomName('HTMLInputElement.formTarget')
- @DocsEditable()
- void set formTarget(String val) => JS("void", "#.formTarget = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.height')
- @DocsEditable()
- int get height => wrap_jso(JS("int", "#.height", this.raw));
- @DomName('HTMLInputElement.height')
- @DocsEditable()
- void set height(int val) => JS("void", "#.height = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.incremental')
- @DocsEditable()
- // http://www.w3.org/TR/html-markup/input.search.html
- @Experimental()
- bool get incremental => wrap_jso(JS("bool", "#.incremental", this.raw));
- @DomName('HTMLInputElement.incremental')
- @DocsEditable()
- // http://www.w3.org/TR/html-markup/input.search.html
- @Experimental()
- void set incremental(bool val) => JS("void", "#.incremental = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.indeterminate')
- @DocsEditable()
- bool get indeterminate => wrap_jso(JS("bool", "#.indeterminate", this.raw));
- @DomName('HTMLInputElement.indeterminate')
- @DocsEditable()
- void set indeterminate(bool val) => JS("void", "#.indeterminate = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.inputMode')
- @DocsEditable()
- @Experimental() // untriaged
- String get inputMode => wrap_jso(JS("String", "#.inputMode", this.raw));
- @DomName('HTMLInputElement.inputMode')
- @DocsEditable()
- @Experimental() // untriaged
- void set inputMode(String val) => JS("void", "#.inputMode = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.labels')
- @DocsEditable()
- @Returns('NodeList')
- @Creates('NodeList')
- List<Node> get labels => wrap_jso(JS("List<Node>", "#.labels", this.raw));
-
- @DomName('HTMLInputElement.list')
- @DocsEditable()
- HtmlElement get list => wrap_jso(JS("HtmlElement", "#.list", this.raw));
-
- @DomName('HTMLInputElement.max')
- @DocsEditable()
- String get max => wrap_jso(JS("String", "#.max", this.raw));
- @DomName('HTMLInputElement.max')
- @DocsEditable()
- void set max(String val) => JS("void", "#.max = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.maxLength')
- @DocsEditable()
- int get maxLength => wrap_jso(JS("int", "#.maxLength", this.raw));
- @DomName('HTMLInputElement.maxLength')
- @DocsEditable()
- void set maxLength(int val) => JS("void", "#.maxLength = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.min')
- @DocsEditable()
- String get min => wrap_jso(JS("String", "#.min", this.raw));
- @DomName('HTMLInputElement.min')
- @DocsEditable()
- void set min(String val) => JS("void", "#.min = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.multiple')
- @DocsEditable()
- bool get multiple => wrap_jso(JS("bool", "#.multiple", this.raw));
- @DomName('HTMLInputElement.multiple')
- @DocsEditable()
- void set multiple(bool val) => JS("void", "#.multiple = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.name')
- @DocsEditable()
- String get name => wrap_jso(JS("String", "#.name", this.raw));
- @DomName('HTMLInputElement.name')
- @DocsEditable()
- void set name(String val) => JS("void", "#.name = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.pattern')
- @DocsEditable()
- String get pattern => wrap_jso(JS("String", "#.pattern", this.raw));
- @DomName('HTMLInputElement.pattern')
- @DocsEditable()
- void set pattern(String val) => JS("void", "#.pattern = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.placeholder')
- @DocsEditable()
- String get placeholder => wrap_jso(JS("String", "#.placeholder", this.raw));
- @DomName('HTMLInputElement.placeholder')
- @DocsEditable()
- void set placeholder(String val) => JS("void", "#.placeholder = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.readOnly')
- @DocsEditable()
- bool get readOnly => wrap_jso(JS("bool", "#.readOnly", this.raw));
- @DomName('HTMLInputElement.readOnly')
- @DocsEditable()
- void set readOnly(bool val) => JS("void", "#.readOnly = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.required')
- @DocsEditable()
- bool get required => wrap_jso(JS("bool", "#.required", this.raw));
- @DomName('HTMLInputElement.required')
- @DocsEditable()
- void set required(bool val) => JS("void", "#.required = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.selectionDirection')
- @DocsEditable()
- String get selectionDirection => wrap_jso(JS("String", "#.selectionDirection", this.raw));
- @DomName('HTMLInputElement.selectionDirection')
- @DocsEditable()
- void set selectionDirection(String val) => JS("void", "#.selectionDirection = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.selectionEnd')
- @DocsEditable()
- int get selectionEnd => wrap_jso(JS("int", "#.selectionEnd", this.raw));
- @DomName('HTMLInputElement.selectionEnd')
- @DocsEditable()
- void set selectionEnd(int val) => JS("void", "#.selectionEnd = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.selectionStart')
- @DocsEditable()
- int get selectionStart => wrap_jso(JS("int", "#.selectionStart", this.raw));
- @DomName('HTMLInputElement.selectionStart')
- @DocsEditable()
- void set selectionStart(int val) => JS("void", "#.selectionStart = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.size')
- @DocsEditable()
- int get size => wrap_jso(JS("int", "#.size", this.raw));
- @DomName('HTMLInputElement.size')
- @DocsEditable()
- void set size(int val) => JS("void", "#.size = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.src')
- @DocsEditable()
- String get src => wrap_jso(JS("String", "#.src", this.raw));
- @DomName('HTMLInputElement.src')
- @DocsEditable()
- void set src(String val) => JS("void", "#.src = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.step')
- @DocsEditable()
- String get step => wrap_jso(JS("String", "#.step", this.raw));
- @DomName('HTMLInputElement.step')
- @DocsEditable()
- void set step(String val) => JS("void", "#.step = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.type')
- @DocsEditable()
- String get type => wrap_jso(JS("String", "#.type", this.raw));
- @DomName('HTMLInputElement.type')
- @DocsEditable()
- void set type(String val) => JS("void", "#.type = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.validationMessage')
- @DocsEditable()
- String get validationMessage => wrap_jso(JS("String", "#.validationMessage", this.raw));
-
- @DomName('HTMLInputElement.value')
- @DocsEditable()
- String get value => wrap_jso(JS("String", "#.value", this.raw));
- @DomName('HTMLInputElement.value')
- @DocsEditable()
- void set value(String val) => JS("void", "#.value = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.valueAsDate')
- @DocsEditable()
- DateTime get valueAsDate => convertNativeToDart_DateTime(this._get_valueAsDate);
- @JSName('valueAsDate')
- @DomName('HTMLInputElement.valueAsDate')
- @DocsEditable()
- @Creates('Null')
- dynamic get _get_valueAsDate => wrap_jso(JS("dynamic", "#.valueAsDate", this.raw));
-
- set valueAsDate(DateTime value) {
- this._set_valueAsDate = convertDartToNative_DateTime(value);
- }
- set _set_valueAsDate(/*dynamic*/ value) {
- JS("void", "#.raw.valueAsDate = #", this, unwrap_jso(value));
- }
-
- @DomName('HTMLInputElement.valueAsNumber')
- @DocsEditable()
- num get valueAsNumber => wrap_jso(JS("num", "#.valueAsNumber", this.raw));
- @DomName('HTMLInputElement.valueAsNumber')
- @DocsEditable()
- void set valueAsNumber(num val) => JS("void", "#.valueAsNumber = #", this.raw, unwrap_jso(val));
-
- @JSName('webkitdirectory')
- @DomName('HTMLInputElement.webkitdirectory')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3
- bool get directory => wrap_jso(JS("bool", "#.webkitdirectory", this.raw));
- @JSName('webkitdirectory')
- @DomName('HTMLInputElement.webkitdirectory')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3
- void set directory(bool val) => JS("void", "#.webkitdirectory = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.width')
- @DocsEditable()
- int get width => wrap_jso(JS("int", "#.width", this.raw));
- @DomName('HTMLInputElement.width')
- @DocsEditable()
- void set width(int val) => JS("void", "#.width = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLInputElement.willValidate')
- @DocsEditable()
- bool get willValidate => wrap_jso(JS("bool", "#.willValidate", this.raw));
-
- @DomName('HTMLInputElement.checkValidity')
- @DocsEditable()
- bool checkValidity() {
- return _checkValidity_1();
- }
- @JSName('checkValidity')
- @DomName('HTMLInputElement.checkValidity')
- @DocsEditable()
- bool _checkValidity_1() => wrap_jso(JS("bool ", "#.raw.checkValidity()", this));
-
- @DomName('HTMLInputElement.select')
- @DocsEditable()
- void select() {
- _select_1();
- return;
- }
- @JSName('select')
- @DomName('HTMLInputElement.select')
- @DocsEditable()
- void _select_1() => wrap_jso(JS("void ", "#.raw.select()", this));
-
- @DomName('HTMLInputElement.setCustomValidity')
- @DocsEditable()
- void setCustomValidity(String error) {
- _setCustomValidity_1(error);
- return;
- }
- @JSName('setCustomValidity')
- @DomName('HTMLInputElement.setCustomValidity')
- @DocsEditable()
- void _setCustomValidity_1(error) => wrap_jso(JS("void ", "#.raw.setCustomValidity(#)", this, unwrap_jso(error)));
-
- @DomName('HTMLInputElement.setRangeText')
- @DocsEditable()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-textarea/input-setrangetext
- @Experimental() // experimental
- void setRangeText(String replacement, {int start, int end, String selectionMode}) {
- if (start == null && end == null && selectionMode == null) {
- _setRangeText_1(replacement);
- return;
- }
- if (end != null && start != null && selectionMode == null) {
- _setRangeText_2(replacement, start, end);
- return;
- }
- if (selectionMode != null && end != null && start != null) {
- _setRangeText_3(replacement, start, end, selectionMode);
- return;
- }
- throw new ArgumentError("Incorrect number or type of arguments");
- }
- @JSName('setRangeText')
- @DomName('HTMLInputElement.setRangeText')
- @DocsEditable()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-textarea/input-setrangetext
- @Experimental() // experimental
- void _setRangeText_1(replacement) => wrap_jso(JS("void ", "#.raw.setRangeText(#)", this, unwrap_jso(replacement)));
- @JSName('setRangeText')
- @DomName('HTMLInputElement.setRangeText')
- @DocsEditable()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-textarea/input-setrangetext
- @Experimental() // experimental
- void _setRangeText_2(replacement, start, end) => wrap_jso(JS("void ", "#.raw.setRangeText(#, #, #)", this, unwrap_jso(replacement), unwrap_jso(start), unwrap_jso(end)));
- @JSName('setRangeText')
- @DomName('HTMLInputElement.setRangeText')
- @DocsEditable()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-textarea/input-setrangetext
- @Experimental() // experimental
- void _setRangeText_3(replacement, start, end, selectionMode) => wrap_jso(JS("void ", "#.raw.setRangeText(#, #, #, #)", this, unwrap_jso(replacement), unwrap_jso(start), unwrap_jso(end), unwrap_jso(selectionMode)));
-
- @DomName('HTMLInputElement.setSelectionRange')
- @DocsEditable()
- void setSelectionRange(int start, int end, [String direction]) {
- if (direction != null) {
- _setSelectionRange_1(start, end, direction);
- return;
- }
- _setSelectionRange_2(start, end);
- return;
- }
- @JSName('setSelectionRange')
- @DomName('HTMLInputElement.setSelectionRange')
- @DocsEditable()
- void _setSelectionRange_1(start, end, direction) => wrap_jso(JS("void ", "#.raw.setSelectionRange(#, #, #)", this, unwrap_jso(start), unwrap_jso(end), unwrap_jso(direction)));
- @JSName('setSelectionRange')
- @DomName('HTMLInputElement.setSelectionRange')
- @DocsEditable()
- void _setSelectionRange_2(start, end) => wrap_jso(JS("void ", "#.raw.setSelectionRange(#, #)", this, unwrap_jso(start), unwrap_jso(end)));
-
- @DomName('HTMLInputElement.stepDown')
- @DocsEditable()
- void stepDown([int n]) {
- if (n != null) {
- _stepDown_1(n);
- return;
- }
- _stepDown_2();
- return;
- }
- @JSName('stepDown')
- @DomName('HTMLInputElement.stepDown')
- @DocsEditable()
- void _stepDown_1(n) => wrap_jso(JS("void ", "#.raw.stepDown(#)", this, unwrap_jso(n)));
- @JSName('stepDown')
- @DomName('HTMLInputElement.stepDown')
- @DocsEditable()
- void _stepDown_2() => wrap_jso(JS("void ", "#.raw.stepDown()", this));
-
- @DomName('HTMLInputElement.stepUp')
- @DocsEditable()
- void stepUp([int n]) {
- if (n != null) {
- _stepUp_1(n);
- return;
- }
- _stepUp_2();
- return;
- }
- @JSName('stepUp')
- @DomName('HTMLInputElement.stepUp')
- @DocsEditable()
- void _stepUp_1(n) => wrap_jso(JS("void ", "#.raw.stepUp(#)", this, unwrap_jso(n)));
- @JSName('stepUp')
- @DomName('HTMLInputElement.stepUp')
- @DocsEditable()
- void _stepUp_2() => wrap_jso(JS("void ", "#.raw.stepUp()", this));
-
-}
-
-
-// Interfaces representing the InputElement APIs which are supported
-// for the various types of InputElement. From:
-// http://www.w3.org/html/wg/drafts/html/master/forms.html#the-input-element.
-
-/**
- * Exposes the functionality common between all InputElement types.
- */
-abstract class InputElementBase implements Element {
- @DomName('HTMLInputElement.autofocus')
- bool autofocus;
-
- @DomName('HTMLInputElement.disabled')
- bool disabled;
-
- @DomName('HTMLInputElement.incremental')
- bool incremental;
-
- @DomName('HTMLInputElement.indeterminate')
- bool indeterminate;
-
- @DomName('HTMLInputElement.labels')
- List<Node> get labels;
-
- @DomName('HTMLInputElement.name')
- String name;
-
- @DomName('HTMLInputElement.validationMessage')
- String get validationMessage;
-
-
- @DomName('HTMLInputElement.value')
- String value;
-
- @DomName('HTMLInputElement.willValidate')
- bool get willValidate;
-
- @DomName('HTMLInputElement.checkValidity')
- bool checkValidity();
-
- @DomName('HTMLInputElement.setCustomValidity')
- void setCustomValidity(String error);
-}
-
-/**
- * Hidden input which is not intended to be seen or edited by the user.
- */
-abstract class HiddenInputElement implements InputElementBase {
- factory HiddenInputElement() => new InputElement(type: 'hidden');
-}
-
-
-/**
- * Base interface for all inputs which involve text editing.
- */
-abstract class TextInputElementBase implements InputElementBase {
- @DomName('HTMLInputElement.autocomplete')
- String autocomplete;
-
- @DomName('HTMLInputElement.maxLength')
- int maxLength;
-
- @DomName('HTMLInputElement.pattern')
- String pattern;
-
- @DomName('HTMLInputElement.placeholder')
- String placeholder;
-
- @DomName('HTMLInputElement.readOnly')
- bool readOnly;
-
- @DomName('HTMLInputElement.required')
- bool required;
-
- @DomName('HTMLInputElement.size')
- int size;
-
- @DomName('HTMLInputElement.select')
- void select();
-
- @DomName('HTMLInputElement.selectionDirection')
- String selectionDirection;
-
- @DomName('HTMLInputElement.selectionEnd')
- int selectionEnd;
-
- @DomName('HTMLInputElement.selectionStart')
- int selectionStart;
-
- @DomName('HTMLInputElement.setSelectionRange')
- void setSelectionRange(int start, int end, [String direction]);
-}
-
-/**
- * Similar to [TextInputElement], but on platforms where search is styled
- * differently this will get the search style.
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME)
-@SupportedBrowser(SupportedBrowser.FIREFOX)
-@SupportedBrowser(SupportedBrowser.IE, '10')
-@SupportedBrowser(SupportedBrowser.SAFARI)
-abstract class SearchInputElement implements TextInputElementBase {
- factory SearchInputElement() => new InputElement(type: 'search');
-
- @DomName('HTMLInputElement.dirName')
- String dirName;
-
- @DomName('HTMLInputElement.list')
- Element get list;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'search')).type == 'search';
- }
-}
-
-/**
- * A basic text input editor control.
- */
-abstract class TextInputElement implements TextInputElementBase {
- factory TextInputElement() => new InputElement(type: 'text');
-
- @DomName('HTMLInputElement.dirName')
- String dirName;
-
- @DomName('HTMLInputElement.list')
- Element get list;
-}
-
-/**
- * A control for editing an absolute URL.
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME)
-@SupportedBrowser(SupportedBrowser.FIREFOX)
-@SupportedBrowser(SupportedBrowser.IE, '10')
-@SupportedBrowser(SupportedBrowser.SAFARI)
-abstract class UrlInputElement implements TextInputElementBase {
- factory UrlInputElement() => new InputElement(type: 'url');
-
- @DomName('HTMLInputElement.list')
- Element get list;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'url')).type == 'url';
- }
-}
-
-/**
- * Represents a control for editing a telephone number.
- *
- * This provides a single line of text with minimal formatting help since
- * there is a wide variety of telephone numbers.
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME)
-@SupportedBrowser(SupportedBrowser.FIREFOX)
-@SupportedBrowser(SupportedBrowser.IE, '10')
-@SupportedBrowser(SupportedBrowser.SAFARI)
-abstract class TelephoneInputElement implements TextInputElementBase {
- factory TelephoneInputElement() => new InputElement(type: 'tel');
-
- @DomName('HTMLInputElement.list')
- Element get list;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'tel')).type == 'tel';
- }
-}
-
-/**
- * An e-mail address or list of e-mail addresses.
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME)
-@SupportedBrowser(SupportedBrowser.FIREFOX)
-@SupportedBrowser(SupportedBrowser.IE, '10')
-@SupportedBrowser(SupportedBrowser.SAFARI)
-abstract class EmailInputElement implements TextInputElementBase {
- factory EmailInputElement() => new InputElement(type: 'email');
-
- @DomName('HTMLInputElement.autocomplete')
- String autocomplete;
-
- @DomName('HTMLInputElement.autofocus')
- bool autofocus;
-
- @DomName('HTMLInputElement.list')
- Element get list;
-
- @DomName('HTMLInputElement.maxLength')
- int maxLength;
-
- @DomName('HTMLInputElement.multiple')
- bool multiple;
-
- @DomName('HTMLInputElement.pattern')
- String pattern;
-
- @DomName('HTMLInputElement.placeholder')
- String placeholder;
-
- @DomName('HTMLInputElement.readOnly')
- bool readOnly;
-
- @DomName('HTMLInputElement.required')
- bool required;
-
- @DomName('HTMLInputElement.size')
- int size;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'email')).type == 'email';
- }
-}
-
-/**
- * Text with no line breaks (sensitive information).
- */
-abstract class PasswordInputElement implements TextInputElementBase {
- factory PasswordInputElement() => new InputElement(type: 'password');
-}
-
-/**
- * Base interface for all input element types which involve ranges.
- */
-abstract class RangeInputElementBase implements InputElementBase {
-
- @DomName('HTMLInputElement.list')
- Element get list;
-
- @DomName('HTMLInputElement.max')
- String max;
-
- @DomName('HTMLInputElement.min')
- String min;
-
- @DomName('HTMLInputElement.step')
- String step;
-
- @DomName('HTMLInputElement.valueAsNumber')
- num valueAsNumber;
-
- @DomName('HTMLInputElement.stepDown')
- void stepDown([int n]);
-
- @DomName('HTMLInputElement.stepUp')
- void stepUp([int n]);
-}
-
-/**
- * A date (year, month, day) with no time zone.
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME, '25')
-@Experimental()
-abstract class DateInputElement implements RangeInputElementBase {
- factory DateInputElement() => new InputElement(type: 'date');
-
- @DomName('HTMLInputElement.valueAsDate')
- DateTime valueAsDate;
-
- @DomName('HTMLInputElement.readOnly')
- bool readOnly;
-
- @DomName('HTMLInputElement.required')
- bool required;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'date')).type == 'date';
- }
-}
-
-/**
- * A date consisting of a year and a month with no time zone.
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME, '25')
-@Experimental()
-abstract class MonthInputElement implements RangeInputElementBase {
- factory MonthInputElement() => new InputElement(type: 'month');
-
- @DomName('HTMLInputElement.valueAsDate')
- DateTime valueAsDate;
-
- @DomName('HTMLInputElement.readOnly')
- bool readOnly;
-
- @DomName('HTMLInputElement.required')
- bool required;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'month')).type == 'month';
- }
-}
-
-/**
- * A date consisting of a week-year number and a week number with no time zone.
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME, '25')
-@Experimental()
-abstract class WeekInputElement implements RangeInputElementBase {
- factory WeekInputElement() => new InputElement(type: 'week');
-
- @DomName('HTMLInputElement.valueAsDate')
- DateTime valueAsDate;
-
- @DomName('HTMLInputElement.readOnly')
- bool readOnly;
-
- @DomName('HTMLInputElement.required')
- bool required;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'week')).type == 'week';
- }
-}
-
-/**
- * A time (hour, minute, seconds, fractional seconds) with no time zone.
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME)
-@Experimental()
-abstract class TimeInputElement implements RangeInputElementBase {
- factory TimeInputElement() => new InputElement(type: 'time');
-
- @DomName('HTMLInputElement.valueAsDate')
- DateTime valueAsDate;
-
- @DomName('HTMLInputElement.readOnly')
- bool readOnly;
-
- @DomName('HTMLInputElement.required')
- bool required;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'time')).type == 'time';
- }
-}
-
-/**
- * A date and time (year, month, day, hour, minute, second, fraction of a
- * second) with no time zone.
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME, '25')
-@Experimental()
-abstract class LocalDateTimeInputElement implements RangeInputElementBase {
- factory LocalDateTimeInputElement() =>
- new InputElement(type: 'datetime-local');
-
- @DomName('HTMLInputElement.readOnly')
- bool readOnly;
-
- @DomName('HTMLInputElement.required')
- bool required;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'datetime-local')).type == 'datetime-local';
- }
-}
-
-/**
- * A numeric editor control.
- */
-@SupportedBrowser(SupportedBrowser.CHROME)
-@SupportedBrowser(SupportedBrowser.IE)
-@SupportedBrowser(SupportedBrowser.SAFARI)
-@Experimental()
-abstract class NumberInputElement implements RangeInputElementBase {
- factory NumberInputElement() => new InputElement(type: 'number');
-
- @DomName('HTMLInputElement.placeholder')
- String placeholder;
-
- @DomName('HTMLInputElement.readOnly')
- bool readOnly;
-
- @DomName('HTMLInputElement.required')
- bool required;
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'number')).type == 'number';
- }
-}
-
-/**
- * Similar to [NumberInputElement] but the browser may provide more optimal
- * styling (such as a slider control).
- *
- * Use [supported] to check if this is supported on the current platform.
- */
-@SupportedBrowser(SupportedBrowser.CHROME)
-@SupportedBrowser(SupportedBrowser.IE, '10')
-@Experimental()
-abstract class RangeInputElement implements RangeInputElementBase {
- factory RangeInputElement() => new InputElement(type: 'range');
-
- /// Returns true if this input type is supported on the current platform.
- static bool get supported {
- return (new InputElement(type: 'range')).type == 'range';
- }
-}
-
-/**
- * A boolean editor control.
- *
- * Note that if [indeterminate] is set then this control is in a third
- * indeterminate state.
- */
-abstract class CheckboxInputElement implements InputElementBase {
- factory CheckboxInputElement() => new InputElement(type: 'checkbox');
-
- @DomName('HTMLInputElement.checked')
- bool checked;
-
- @DomName('HTMLInputElement.required')
- bool required;
-}
-
-
-/**
- * A control that when used with other [ReadioButtonInputElement] controls
- * forms a radio button group in which only one control can be checked at a
- * time.
- *
- * Radio buttons are considered to be in the same radio button group if:
- *
- * * They are all of type 'radio'.
- * * They all have either the same [FormElement] owner, or no owner.
- * * Their name attributes contain the same name.
- */
-abstract class RadioButtonInputElement implements InputElementBase {
- factory RadioButtonInputElement() => new InputElement(type: 'radio');
-
- @DomName('HTMLInputElement.checked')
- bool checked;
-
- @DomName('HTMLInputElement.required')
- bool required;
-}
-
-/**
- * A control for picking files from the user's computer.
- */
-abstract class FileUploadInputElement implements InputElementBase {
- factory FileUploadInputElement() => new InputElement(type: 'file');
-
- @DomName('HTMLInputElement.accept')
- String accept;
-
- @DomName('HTMLInputElement.multiple')
- bool multiple;
-
- @DomName('HTMLInputElement.required')
- bool required;
-
-}
-
-/**
- * A button, which when clicked, submits the form.
- */
-abstract class SubmitButtonInputElement implements InputElementBase {
- factory SubmitButtonInputElement() => new InputElement(type: 'submit');
-
- @DomName('HTMLInputElement.formAction')
- String formAction;
-
- @DomName('HTMLInputElement.formEnctype')
- String formEnctype;
-
- @DomName('HTMLInputElement.formMethod')
- String formMethod;
-
- @DomName('HTMLInputElement.formNoValidate')
- bool formNoValidate;
-
- @DomName('HTMLInputElement.formTarget')
- String formTarget;
-}
-
-/**
- * Either an image which the user can select a coordinate to or a form
- * submit button.
- */
-abstract class ImageButtonInputElement implements InputElementBase {
- factory ImageButtonInputElement() => new InputElement(type: 'image');
-
- @DomName('HTMLInputElement.alt')
- String alt;
-
- @DomName('HTMLInputElement.formAction')
- String formAction;
-
- @DomName('HTMLInputElement.formEnctype')
- String formEnctype;
-
- @DomName('HTMLInputElement.formMethod')
- String formMethod;
-
- @DomName('HTMLInputElement.formNoValidate')
- bool formNoValidate;
-
- @DomName('HTMLInputElement.formTarget')
- String formTarget;
-
- @DomName('HTMLInputElement.height')
- int height;
-
- @DomName('HTMLInputElement.src')
- String src;
-
- @DomName('HTMLInputElement.width')
- int width;
-}
-
-/**
- * A button, which when clicked, resets the form.
- */
-abstract class ResetButtonInputElement implements InputElementBase {
- factory ResetButtonInputElement() => new InputElement(type: 'reset');
-}
-
-/**
- * A button, with no default behavior.
- */
-abstract class ButtonInputElement implements InputElementBase {
- factory ButtonInputElement() => new InputElement(type: 'button');
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * An event that describes user interaction with the keyboard.
- *
- * The [type] of the event identifies what kind of interaction occurred.
- *
- * See also:
- *
- * * [KeyboardEvent](https://developer.mozilla.org/en/DOM/KeyboardEvent) at MDN.
- */
-@DomName('KeyboardEvent')
-@Native("KeyboardEvent")
-class KeyboardEvent extends UIEvent {
-
- /**
- * Programmatically create a KeyboardEvent.
- *
- * Due to browser differences, keyCode, charCode, or keyIdentifier values
- * cannot be specified in this base level constructor. This constructor
- * enables the user to programmatically create and dispatch a [KeyboardEvent],
- * but it will not contain any particular key content. For programmatically
- * creating keyboard events with specific key value contents, see the custom
- * Event [KeyEvent].
- */
- factory KeyboardEvent(String type,
- {Window view, bool canBubble: true, bool cancelable: true,
- int keyLocation: 1, bool ctrlKey: false,
- bool altKey: false, bool shiftKey: false, bool metaKey: false}) {
- if (view == null) {
- view = window;
- }
- KeyboardEvent e = document._createEvent("KeyboardEvent");
- e._initKeyboardEvent(type, canBubble, cancelable, view, "",
- keyLocation, ctrlKey, altKey, shiftKey, metaKey);
- return e;
- }
-
- @DomName('KeyboardEvent.initKeyboardEvent')
- void _initKeyboardEvent(String type, bool canBubble, bool cancelable,
- Window view, String keyIdentifier, int keyLocation, bool ctrlKey,
- bool altKey, bool shiftKey, bool metaKey) {
- if (JS('bool', 'typeof(#.initKeyEvent) == "function"', this.raw)) {
- // initKeyEvent is only in Firefox (instead of initKeyboardEvent). It has
- // a slightly different signature, and allows you to specify keyCode and
- // charCode as the last two arguments, but we just set them as the default
- // since they can't be specified in other browsers.
- JS('void', '#.initKeyEvent(#, #, #, #, #, #, #, #, 0, 0)', this.raw,
- type, canBubble, cancelable, unwrap_jso(view),
- ctrlKey, altKey, shiftKey, metaKey);
- } else {
- // initKeyboardEvent is for all other browsers.
- JS('void', '#.initKeyboardEvent(#, #, #, #, #, #, #, #, #, #)', this.raw,
- type, canBubble, cancelable, unwrap_jso(view), keyIdentifier, keyLocation,
- ctrlKey, altKey, shiftKey, metaKey);
- }
- }
-
- @DomName('KeyboardEvent.keyCode')
- int get keyCode => _keyCode;
-
- @DomName('KeyboardEvent.charCode')
- int get charCode => _charCode;
- // To suppress missing implicit constructor warnings.
- factory KeyboardEvent._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static KeyboardEvent internalCreateKeyboardEvent() {
- return new KeyboardEvent.internal_();
- }
-
- @Deprecated("Internal Use Only")
- KeyboardEvent.internal_() : super.internal_();
-
-
- @DomName('KeyboardEvent.DOM_KEY_LOCATION_LEFT')
- @DocsEditable()
- @Experimental() // untriaged
- static const int DOM_KEY_LOCATION_LEFT = 0x01;
-
- @DomName('KeyboardEvent.DOM_KEY_LOCATION_NUMPAD')
- @DocsEditable()
- @Experimental() // untriaged
- static const int DOM_KEY_LOCATION_NUMPAD = 0x03;
-
- @DomName('KeyboardEvent.DOM_KEY_LOCATION_RIGHT')
- @DocsEditable()
- @Experimental() // untriaged
- static const int DOM_KEY_LOCATION_RIGHT = 0x02;
-
- @DomName('KeyboardEvent.DOM_KEY_LOCATION_STANDARD')
- @DocsEditable()
- @Experimental() // untriaged
- static const int DOM_KEY_LOCATION_STANDARD = 0x00;
-
- @DomName('KeyboardEvent.altKey')
- @DocsEditable()
- bool get altKey => wrap_jso(JS("bool", "#.altKey", this.raw));
-
- @DomName('KeyboardEvent.ctrlKey')
- @DocsEditable()
- bool get ctrlKey => wrap_jso(JS("bool", "#.ctrlKey", this.raw));
-
- @JSName('keyIdentifier')
- @DomName('KeyboardEvent.keyIdentifier')
- @DocsEditable()
- @Experimental() // nonstandard
- String get _keyIdentifier => wrap_jso(JS("String", "#.keyIdentifier", this.raw));
-
- @DomName('KeyboardEvent.keyLocation')
- @DocsEditable()
- @Experimental() // nonstandard
- int get keyLocation => wrap_jso(JS("int", "#.keyLocation", this.raw));
-
- @DomName('KeyboardEvent.location')
- @DocsEditable()
- @Experimental() // untriaged
- int get location => wrap_jso(JS("int", "#.location", this.raw));
-
- @DomName('KeyboardEvent.metaKey')
- @DocsEditable()
- bool get metaKey => wrap_jso(JS("bool", "#.metaKey", this.raw));
-
- @DomName('KeyboardEvent.repeat')
- @DocsEditable()
- @Experimental() // untriaged
- bool get repeat => wrap_jso(JS("bool", "#.repeat", this.raw));
-
- @DomName('KeyboardEvent.shiftKey')
- @DocsEditable()
- bool get shiftKey => wrap_jso(JS("bool", "#.shiftKey", this.raw));
-
- @DomName('KeyboardEvent.getModifierState')
- @DocsEditable()
- @Experimental() // untriaged
- bool getModifierState(String keyArgument) {
- return _getModifierState_1(keyArgument);
- }
- @JSName('getModifierState')
- @DomName('KeyboardEvent.getModifierState')
- @DocsEditable()
- @Experimental() // untriaged
- bool _getModifierState_1(keyArgument) => wrap_jso(JS("bool ", "#.raw.getModifierState(#)", this, unwrap_jso(keyArgument)));
-
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('Location')
-@Native("Location")
-class Location extends DartHtmlDomObject implements LocationBase {
- // To suppress missing implicit constructor warnings.
- factory Location._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static Location internalCreateLocation() {
- return new Location.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Location.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('Location.hash')
- @DocsEditable()
- String get hash => wrap_jso(JS("String", "#.hash", this.raw));
- @DomName('Location.hash')
- @DocsEditable()
- void set hash(String val) => JS("void", "#.hash = #", this.raw, unwrap_jso(val));
-
- @DomName('Location.host')
- @DocsEditable()
- String get host => wrap_jso(JS("String", "#.host", this.raw));
- @DomName('Location.host')
- @DocsEditable()
- void set host(String val) => JS("void", "#.host = #", this.raw, unwrap_jso(val));
-
- @DomName('Location.hostname')
- @DocsEditable()
- String get hostname => wrap_jso(JS("String", "#.hostname", this.raw));
- @DomName('Location.hostname')
- @DocsEditable()
- void set hostname(String val) => JS("void", "#.hostname = #", this.raw, unwrap_jso(val));
-
- @DomName('Location.href')
- @DocsEditable()
- String get href => wrap_jso(JS("String", "#.href", this.raw));
- @DomName('Location.href')
- @DocsEditable()
- void set href(String val) => JS("void", "#.href = #", this.raw, unwrap_jso(val));
-
- @DomName('Location.pathname')
- @DocsEditable()
- String get pathname => wrap_jso(JS("String", "#.pathname", this.raw));
- @DomName('Location.pathname')
- @DocsEditable()
- void set pathname(String val) => JS("void", "#.pathname = #", this.raw, unwrap_jso(val));
-
- @DomName('Location.port')
- @DocsEditable()
- String get port => wrap_jso(JS("String", "#.port", this.raw));
- @DomName('Location.port')
- @DocsEditable()
- void set port(String val) => JS("void", "#.port = #", this.raw, unwrap_jso(val));
-
- @DomName('Location.protocol')
- @DocsEditable()
- String get protocol => wrap_jso(JS("String", "#.protocol", this.raw));
- @DomName('Location.protocol')
- @DocsEditable()
- void set protocol(String val) => JS("void", "#.protocol = #", this.raw, unwrap_jso(val));
-
- @DomName('Location.search')
- @DocsEditable()
- String get search => wrap_jso(JS("String", "#.search", this.raw));
- @DomName('Location.search')
- @DocsEditable()
- void set search(String val) => JS("void", "#.search = #", this.raw, unwrap_jso(val));
-
- @DomName('Location.assign')
- @DocsEditable()
- void assign([String url]) {
- if (url != null) {
- _assign_1(url);
- return;
- }
- _assign_2();
- return;
- }
- @JSName('assign')
- @DomName('Location.assign')
- @DocsEditable()
- void _assign_1(url) => wrap_jso(JS("void ", "#.raw.assign(#)", this, unwrap_jso(url)));
- @JSName('assign')
- @DomName('Location.assign')
- @DocsEditable()
- void _assign_2() => wrap_jso(JS("void ", "#.raw.assign()", this));
-
- @DomName('Location.reload')
- @DocsEditable()
- void reload() {
- _reload_1();
- return;
- }
- @JSName('reload')
- @DomName('Location.reload')
- @DocsEditable()
- void _reload_1() => wrap_jso(JS("void ", "#.raw.reload()", this));
-
- @DomName('Location.replace')
- @DocsEditable()
- void replace(String url) {
- _replace_1(url);
- return;
- }
- @JSName('replace')
- @DomName('Location.replace')
- @DocsEditable()
- void _replace_1(url) => wrap_jso(JS("void ", "#.raw.replace(#)", this, unwrap_jso(url)));
-
-
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('MouseEvent')
-@Native("MouseEvent,DragEvent,PointerEvent,MSPointerEvent")
-class MouseEvent extends UIEvent {
- // To suppress missing implicit constructor warnings.
- factory MouseEvent._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static MouseEvent internalCreateMouseEvent() {
- return new MouseEvent.internal_();
- }
-
- @Deprecated("Internal Use Only")
- MouseEvent.internal_() : super.internal_();
-
-
- @DomName('MouseEvent.altKey')
- @DocsEditable()
- bool get altKey => wrap_jso(JS("bool", "#.altKey", this.raw));
-
- @DomName('MouseEvent.button')
- @DocsEditable()
- int get button => wrap_jso(JS("int", "#.button", this.raw));
-
- @JSName('clientX')
- @DomName('MouseEvent.clientX')
- @DocsEditable()
- int get _clientX => wrap_jso(JS("int", "#.clientX", this.raw));
-
- @JSName('clientY')
- @DomName('MouseEvent.clientY')
- @DocsEditable()
- int get _clientY => wrap_jso(JS("int", "#.clientY", this.raw));
-
- @DomName('MouseEvent.ctrlKey')
- @DocsEditable()
- bool get ctrlKey => wrap_jso(JS("bool", "#.ctrlKey", this.raw));
-
- /**
- * The nonstandard way to access the element that the mouse comes
- * from in the case of a `mouseover` event.
- *
- * This member is deprecated and not cross-browser compatible; use
- * relatedTarget to get the same information in the standard way.
- */
- @DomName('MouseEvent.fromElement')
- @DocsEditable()
- @deprecated
- Node get fromElement => wrap_jso(JS("Node", "#.fromElement", this.raw));
-
- @DomName('MouseEvent.metaKey')
- @DocsEditable()
- bool get metaKey => wrap_jso(JS("bool", "#.metaKey", this.raw));
-
- @JSName('movementX')
- @DomName('MouseEvent.movementX')
- @DocsEditable()
- @Experimental() // untriaged
- int get _movementX => wrap_jso(JS("int", "#.movementX", this.raw));
-
- @JSName('movementY')
- @DomName('MouseEvent.movementY')
- @DocsEditable()
- @Experimental() // untriaged
- int get _movementY => wrap_jso(JS("int", "#.movementY", this.raw));
-
- @DomName('MouseEvent.region')
- @DocsEditable()
- @Experimental() // untriaged
- String get region => wrap_jso(JS("String", "#.region", this.raw));
-
- @DomName('MouseEvent.relatedTarget')
- @DocsEditable()
- EventTarget get relatedTarget => _convertNativeToDart_EventTarget(this._get_relatedTarget);
- @JSName('relatedTarget')
- @DomName('MouseEvent.relatedTarget')
- @DocsEditable()
- @Creates('Node')
- @Returns('EventTarget|=Object')
- dynamic get _get_relatedTarget => wrap_jso(JS("dynamic", "#.relatedTarget", this.raw));
-
- @JSName('screenX')
- @DomName('MouseEvent.screenX')
- @DocsEditable()
- int get _screenX => wrap_jso(JS("int", "#.screenX", this.raw));
-
- @JSName('screenY')
- @DomName('MouseEvent.screenY')
- @DocsEditable()
- int get _screenY => wrap_jso(JS("int", "#.screenY", this.raw));
-
- @DomName('MouseEvent.shiftKey')
- @DocsEditable()
- bool get shiftKey => wrap_jso(JS("bool", "#.shiftKey", this.raw));
-
- /**
- * The nonstandard way to access the element that the mouse goes
- * to in the case of a `mouseout` event.
- *
- * This member is deprecated and not cross-browser compatible; use
- * relatedTarget to get the same information in the standard way.
- */
- @DomName('MouseEvent.toElement')
- @DocsEditable()
- @deprecated
- Node get toElement => wrap_jso(JS("Node", "#.toElement", this.raw));
-
- @JSName('webkitMovementX')
- @DomName('MouseEvent.webkitMovementX')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- int get _webkitMovementX => wrap_jso(JS("int", "#.webkitMovementX", this.raw));
-
- @JSName('webkitMovementY')
- @DomName('MouseEvent.webkitMovementY')
- @DocsEditable()
- @SupportedBrowser(SupportedBrowser.CHROME)
- @SupportedBrowser(SupportedBrowser.SAFARI)
- @Experimental()
- int get _webkitMovementY => wrap_jso(JS("int", "#.webkitMovementY", this.raw));
-
- @DomName('MouseEvent.initMouseEvent')
- @DocsEditable()
- void _initMouseEvent(String type, bool canBubble, bool cancelable, Window view, int detail, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, int button, EventTarget relatedTarget) {
- var relatedTarget_1 = _convertDartToNative_EventTarget(relatedTarget);
- _initMouseEvent_1(type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget_1);
- return;
- }
- @JSName('initMouseEvent')
- @DomName('MouseEvent.initMouseEvent')
- @DocsEditable()
- void _initMouseEvent_1(type, canBubble, cancelable, Window view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) => wrap_jso(JS("void ", "#.raw.initMouseEvent(#, #, #, #, #, #, #, #, #, #, #, #, #, #, #)", this, unwrap_jso(type), unwrap_jso(canBubble), unwrap_jso(cancelable), unwrap_jso(view), unwrap_jso(detail), unwrap_jso(screenX), unwrap_jso(screenY), unwrap_jso(clientX), unwrap_jso(clientY), unwrap_jso(ctrlKey), unwrap_jso(altKey), unwrap_jso(shiftKey), unwrap_jso(metaKey), unwrap_jso(button), unwrap_jso(relatedTarget)));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DomName('Navigator')
-@Native("Navigator")
-class Navigator extends DartHtmlDomObject implements NavigatorCpu {
-
-
- @DomName('Navigator.language')
- String get language => JS('String', '#.language || #.userLanguage', this.raw,
- this.raw);
-
-
- // To suppress missing implicit constructor warnings.
- factory Navigator._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static Navigator internalCreateNavigator() {
- return new Navigator.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Navigator.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('Navigator.cookieEnabled')
- @DocsEditable()
- @Unstable()
- bool get cookieEnabled => wrap_jso(JS("bool", "#.cookieEnabled", this.raw));
-
- @DomName('Navigator.doNotTrack')
- @DocsEditable()
- // http://www.w3.org/2011/tracking-protection/drafts/tracking-dnt.html#js-dom
- @Experimental() // experimental
- String get doNotTrack => wrap_jso(JS("String", "#.doNotTrack", this.raw));
-
- @DomName('Navigator.maxTouchPoints')
- @DocsEditable()
- @Experimental() // untriaged
- int get maxTouchPoints => wrap_jso(JS("int", "#.maxTouchPoints", this.raw));
-
- @DomName('Navigator.productSub')
- @DocsEditable()
- @Unstable()
- String get productSub => wrap_jso(JS("String", "#.productSub", this.raw));
-
- @DomName('Navigator.vendor')
- @DocsEditable()
- @Unstable()
- String get vendor => wrap_jso(JS("String", "#.vendor", this.raw));
-
- @DomName('Navigator.vendorSub')
- @DocsEditable()
- @Unstable()
- String get vendorSub => wrap_jso(JS("String", "#.vendorSub", this.raw));
-
- @DomName('Navigator.getBattery')
- @DocsEditable()
- @Experimental() // untriaged
- Future getBattery() {
- return _getBattery_1();
- }
- @JSName('getBattery')
- @DomName('Navigator.getBattery')
- @DocsEditable()
- @Experimental() // untriaged
- Future _getBattery_1() => wrap_jso(JS("Future ", "#.raw.getBattery()", this));
-
- @DomName('Navigator.getStorageUpdates')
- @DocsEditable()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorstorageutils
- @Experimental()
- void getStorageUpdates() {
- _getStorageUpdates_1();
- return;
- }
- @JSName('getStorageUpdates')
- @DomName('Navigator.getStorageUpdates')
- @DocsEditable()
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorstorageutils
- @Experimental()
- void _getStorageUpdates_1() => wrap_jso(JS("void ", "#.raw.getStorageUpdates()", this));
-
- @DomName('Navigator.registerProtocolHandler')
- @DocsEditable()
- @Unstable()
- void registerProtocolHandler(String scheme, String url, String title) {
- _registerProtocolHandler_1(scheme, url, title);
- return;
- }
- @JSName('registerProtocolHandler')
- @DomName('Navigator.registerProtocolHandler')
- @DocsEditable()
- @Unstable()
- void _registerProtocolHandler_1(scheme, url, title) => wrap_jso(JS("void ", "#.raw.registerProtocolHandler(#, #, #)", this, unwrap_jso(scheme), unwrap_jso(url), unwrap_jso(title)));
-
- @DomName('Navigator.sendBeacon')
- @DocsEditable()
- @Experimental() // untriaged
- bool sendBeacon(String url, String data) {
- return _sendBeacon_1(url, data);
- }
- @JSName('sendBeacon')
- @DomName('Navigator.sendBeacon')
- @DocsEditable()
- @Experimental() // untriaged
- bool _sendBeacon_1(url, data) => wrap_jso(JS("bool ", "#.raw.sendBeacon(#, #)", this, unwrap_jso(url), unwrap_jso(data)));
-
- // From NavigatorCPU
-
- @DomName('Navigator.hardwareConcurrency')
- @DocsEditable()
- @Experimental() // untriaged
- int get hardwareConcurrency => wrap_jso(JS("int", "#.hardwareConcurrency", this.raw));
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('NavigatorCPU')
-@Experimental() // untriaged
-abstract class NavigatorCpu extends DartHtmlDomObject {
- // To suppress missing implicit constructor warnings.
- factory NavigatorCpu._() { throw new UnsupportedError("Not supported"); }
-
- int get hardwareConcurrency => wrap_jso(JS("int", "#.hardwareConcurrency", this.raw));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * Lazy implementation of the child nodes of an element that does not request
- * the actual child nodes of an element until strictly necessary greatly
- * improving performance for the typical cases where it is not required.
- */
-class _ChildNodeListLazy extends ListBase<Node> implements NodeListWrapper {
- final Node _this;
-
- _ChildNodeListLazy(this._this);
-
-
- Node get first {
- Node result = _this.firstChild;
- if (result == null) throw new StateError("No elements");
- return result;
- }
- Node get last {
- Node result = _this.lastChild;
- if (result == null) throw new StateError("No elements");
- return result;
- }
- Node get single {
- int l = this.length;
- if (l == 0) throw new StateError("No elements");
- if (l > 1) throw new StateError("More than one element");
- return _this.firstChild;
- }
-
- void add(Node value) {
- _this.append(value);
- }
-
- void addAll(Iterable<Node> iterable) {
- if (iterable is _ChildNodeListLazy) {
- _ChildNodeListLazy otherList = iterable;
- if (!identical(otherList._this, _this)) {
- // Optimized route for copying between nodes.
- for (var i = 0, len = otherList.length; i < len; ++i) {
- _this.append(otherList._this.firstChild);
- }
- }
- return;
- }
- for (Node node in iterable) {
- _this.append(node);
- }
- }
-
- void insert(int index, Node node) {
- if (index < 0 || index > length) {
- throw new RangeError.range(index, 0, length);
- }
- if (index == length) {
- _this.append(node);
- } else {
- _this.insertBefore(node, this[index]);
- }
- }
-
- void insertAll(int index, Iterable<Node> iterable) {
- if (index == length) {
- addAll(iterable);
- } else {
- var item = this[index];
- _this.insertAllBefore(iterable, item);
- }
- }
-
- void setAll(int index, Iterable<Node> iterable) {
- throw new UnsupportedError("Cannot setAll on Node list");
- }
-
- Node removeLast() {
- final result = last;
- if (result != null) {
- _this._removeChild(result);
- }
- return result;
- }
-
- Node removeAt(int index) {
- var result = this[index];
- if (result != null) {
- _this._removeChild(result);
- }
- return result;
- }
-
- bool remove(Object object) {
- if (object is! Node) return false;
- Node node = object;
- // We aren't preserving identity of nodes in JSINTEROP mode
- if (_this != node.parentNode) return false;
- _this._removeChild(node);
- return true;
- }
-
- void _filter(bool test(Node node), bool removeMatching) {
- // This implementation of removeWhere/retainWhere is more efficient
- // than the default in ListBase. Child nodes can be removed in constant
- // time.
- Node child = _this.firstChild;
- while (child != null) {
- Node nextChild = child.nextNode;
- if (test(child) == removeMatching) {
- _this._removeChild(child);
- }
- child = nextChild;
- }
- }
-
- void removeWhere(bool test(Node node)) {
- _filter(test, true);
- }
-
- void retainWhere(bool test(Node node)) {
- _filter(test, false);
- }
-
- void clear() {
- _this._clearChildren();
- }
-
- void operator []=(int index, Node value) {
- _this._replaceChild(value, this[index]);
- }
-
- Iterator<Node> get iterator => _this.childNodes.iterator;
-
- // From List<Node>:
-
- // TODO(jacobr): this could be implemented for child node lists.
- // The exception we throw here is misleading.
- void sort([Comparator<Node> compare]) {
- throw new UnsupportedError("Cannot sort Node list");
- }
-
- void shuffle([Random random]) {
- throw new UnsupportedError("Cannot shuffle Node list");
- }
-
- // FIXME: implement these.
- void setRange(int start, int end, Iterable<Node> iterable,
- [int skipCount = 0]) {
- throw new UnsupportedError("Cannot setRange on Node list");
- }
-
- void fillRange(int start, int end, [Node fill]) {
- throw new UnsupportedError("Cannot fillRange on Node list");
- }
- // -- end List<Node> mixins.
-
- // TODO(jacobr): benchmark whether this is more efficient or whether caching
- // a local copy of childNodes is more efficient.
- int get length => _this.childNodes.length;
-
- set length(int value) {
- throw new UnsupportedError(
- "Cannot set length on immutable List.");
- }
-
- Node operator[](int index) => _this.childNodes[index];
-
- List<Node> get rawList => _this.childNodes;
-}
-
-
-@DomName('Node')
-@Native("Node")
-class Node extends EventTarget {
-
- // Custom element created callback.
- Node._created() : super._created();
-
- /**
- * A modifiable list of this node's children.
- */
- List<Node> get nodes {
- return new _ChildNodeListLazy(this);
- }
-
- set nodes(Iterable<Node> value) {
- // Copy list first since we don't want liveness during iteration.
- // TODO(jacobr): there is a better way to do this.
- List copy = new List.from(value);
- text = '';
- for (Node node in copy) {
- append(node);
- }
- }
-
- /**
- * Removes this node from the DOM.
- */
- @DomName('Node.removeChild')
- void remove() {
- // TODO(jacobr): should we throw an exception if parent is already null?
- // TODO(vsm): Use the native remove when available.
- if (this.parentNode != null) {
- final Node parent = this.parentNode;
- parentNode._removeChild(this);
- }
- }
-
- /**
- * Replaces this node with another node.
- */
- @DomName('Node.replaceChild')
- Node replaceWith(Node otherNode) {
- try {
- final Node parent = this.parentNode;
- parent._replaceChild(otherNode, this);
- } catch (e) {
-
- };
- return this;
- }
-
- /**
- * Inserts all of the nodes into this node directly before refChild.
- *
- * See also:
- *
- * * [insertBefore]
- */
- Node insertAllBefore(Iterable<Node> newNodes, Node refChild) {
- if (newNodes is _ChildNodeListLazy) {
- _ChildNodeListLazy otherList = newNodes;
- if (identical(otherList._this, this)) {
- throw new ArgumentError(newNodes);
- }
-
- // Optimized route for copying between nodes.
- for (var i = 0, len = otherList.length; i < len; ++i) {
- this.insertBefore(otherList._this.firstChild, refChild);
- }
- } else {
- for (var node in newNodes) {
- this.insertBefore(node, refChild);
- }
- }
- }
-
- void _clearChildren() {
- while (firstChild != null) {
- _removeChild(firstChild);
- }
- }
-
- /**
- * Print out a String representation of this Node.
- */
- String toString() {
- String value = nodeValue; // Fetch DOM Node property once.
- return value == null ? super.toString() : value;
- }
-
- /**
- * A list of this node's children.
- *
- * ## Other resources
- *
- * * [Node.childNodes]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.childNodes)
- * from MDN.
- */
- @DomName('Node.childNodes')
- @DocsEditable()
- List<Node> get childNodes => wrap_jso(JS('List', '#.childNodes', this.raw));
- // To suppress missing implicit constructor warnings.
- factory Node._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static Node internalCreateNode() {
- return new Node.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Node.internal_() : super.internal_();
-
-
- @DomName('Node.ATTRIBUTE_NODE')
- @DocsEditable()
- static const int ATTRIBUTE_NODE = 2;
-
- @DomName('Node.CDATA_SECTION_NODE')
- @DocsEditable()
- static const int CDATA_SECTION_NODE = 4;
-
- @DomName('Node.COMMENT_NODE')
- @DocsEditable()
- static const int COMMENT_NODE = 8;
-
- @DomName('Node.DOCUMENT_FRAGMENT_NODE')
- @DocsEditable()
- static const int DOCUMENT_FRAGMENT_NODE = 11;
-
- @DomName('Node.DOCUMENT_NODE')
- @DocsEditable()
- static const int DOCUMENT_NODE = 9;
-
- @DomName('Node.DOCUMENT_TYPE_NODE')
- @DocsEditable()
- static const int DOCUMENT_TYPE_NODE = 10;
-
- @DomName('Node.ELEMENT_NODE')
- @DocsEditable()
- static const int ELEMENT_NODE = 1;
-
- @DomName('Node.ENTITY_NODE')
- @DocsEditable()
- static const int ENTITY_NODE = 6;
-
- @DomName('Node.ENTITY_REFERENCE_NODE')
- @DocsEditable()
- static const int ENTITY_REFERENCE_NODE = 5;
-
- @DomName('Node.NOTATION_NODE')
- @DocsEditable()
- static const int NOTATION_NODE = 12;
-
- @DomName('Node.PROCESSING_INSTRUCTION_NODE')
- @DocsEditable()
- static const int PROCESSING_INSTRUCTION_NODE = 7;
-
- @DomName('Node.TEXT_NODE')
- @DocsEditable()
- static const int TEXT_NODE = 3;
-
- @JSName('baseURI')
- @DomName('Node.baseURI')
- @DocsEditable()
- String get baseUri => wrap_jso(JS("String", "#.baseURI", this.raw));
-
- /**
- * The first child of this node.
- *
- * ## Other resources
- *
- * * [Node.firstChild]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild)
- * from MDN.
- */
- @DomName('Node.firstChild')
- @DocsEditable()
- Node get firstChild => wrap_jso(JS("Node", "#.firstChild", this.raw));
-
- /**
- * The last child of this node.
- *
- * ## Other resources
- *
- * * [Node.lastChild]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild)
- * from MDN.
- */
- @DomName('Node.lastChild')
- @DocsEditable()
- Node get lastChild => wrap_jso(JS("Node", "#.lastChild", this.raw));
-
- @JSName('localName')
- @DomName('Node.localName')
- @DocsEditable()
- String get _localName => wrap_jso(JS("String", "#.localName", this.raw));
-
- @JSName('namespaceURI')
- @DomName('Node.namespaceURI')
- @DocsEditable()
- String get _namespaceUri => wrap_jso(JS("String", "#.namespaceURI", this.raw));
-
- @JSName('nextSibling')
- /**
- * The next sibling node.
- *
- * ## Other resources
- *
- * * [Node.nextSibling]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling)
- * from MDN.
- */
- @DomName('Node.nextSibling')
- @DocsEditable()
- Node get nextNode => wrap_jso(JS("Node", "#.nextSibling", this.raw));
-
- /**
- * The name of this node.
- *
- * This varies by this node's [nodeType].
- *
- * ## Other resources
- *
- * * [Node.nodeName]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeName)
- * from MDN. This page contains a table of [nodeName] values for each
- * [nodeType].
- */
- @DomName('Node.nodeName')
- @DocsEditable()
- String get nodeName => wrap_jso(JS("String", "#.nodeName", this.raw));
-
- /**
- * The type of node.
- *
- * This value is one of:
- *
- * * [ATTRIBUTE_NODE] if this node is an attribute.
- * * [CDATA_SECTION_NODE] if this node is a [CDataSection].
- * * [COMMENT_NODE] if this node is a [Comment].
- * * [DOCUMENT_FRAGMENT_NODE] if this node is a [DocumentFragment].
- * * [DOCUMENT_NODE] if this node is a [Document].
- * * [DOCUMENT_TYPE_NODE] if this node is a [DocumentType] node.
- * * [ELEMENT_NODE] if this node is an [Element].
- * * [ENTITY_NODE] if this node is an entity.
- * * [ENTITY_REFERENCE_NODE] if this node is an entity reference.
- * * [NOTATION_NODE] if this node is a notation.
- * * [PROCESSING_INSTRUCTION_NODE] if this node is a [ProcessingInstruction].
- * * [TEXT_NODE] if this node is a [Text] node.
- *
- * ## Other resources
- *
- * * [Node.nodeType]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType) from MDN.
- */
- @DomName('Node.nodeType')
- @DocsEditable()
- int get nodeType => wrap_jso(JS("int", "#.nodeType", this.raw));
-
- /**
- * The value of this node.
- *
- * This varies by this type's [nodeType].
- *
- * ## Other resources
- *
- * * [Node.nodeValue]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue)
- * from MDN. This page contains a table of [nodeValue] values for each
- * [nodeType].
- */
- @DomName('Node.nodeValue')
- @DocsEditable()
- String get nodeValue => wrap_jso(JS("String", "#.nodeValue", this.raw));
-
- /**
- * The document this node belongs to.
- *
- * Returns null if this node does not belong to any document.
- *
- * ## Other resources
- *
- * * [Node.ownerDocument]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument) from
- * MDN.
- */
- @DomName('Node.ownerDocument')
- @DocsEditable()
- Document get ownerDocument => wrap_jso(JS("Document", "#.ownerDocument", this.raw));
-
- @JSName('parentElement')
- /**
- * The parent element of this node.
- *
- * Returns null if this node either does not have a parent or its parent is
- * not an element.
- *
- * ## Other resources
- *
- * * [Node.parentElement]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement) from
- * W3C.
- */
- @DomName('Node.parentElement')
- @DocsEditable()
- Element get parent => wrap_jso(JS("Element", "#.parentElement", this.raw));
-
- /**
- * The parent node of this node.
- *
- * ## Other resources
- *
- * * [Node.parentNode]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode) from
- * MDN.
- */
- @DomName('Node.parentNode')
- @DocsEditable()
- Node get parentNode => wrap_jso(JS("Node", "#.parentNode", this.raw));
-
- @JSName('previousSibling')
- /**
- * The previous sibling node.
- *
- * ## Other resources
- *
- * * [Node.previousSibling]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling)
- * from MDN.
- */
- @DomName('Node.previousSibling')
- @DocsEditable()
- Node get previousNode => wrap_jso(JS("Node", "#.previousSibling", this.raw));
-
- @JSName('textContent')
- /**
- * All text within this node and its decendents.
- *
- * ## Other resources
- *
- * * [Node.textContent]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent) from
- * MDN.
- */
- @DomName('Node.textContent')
- @DocsEditable()
- String get text => wrap_jso(JS("String", "#.textContent", this.raw));
- @JSName('textContent')
- /**
- * All text within this node and its decendents.
- *
- * ## Other resources
- *
- * * [Node.textContent]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent) from
- * MDN.
- */
- @DomName('Node.textContent')
- @DocsEditable()
- void set text(String val) => JS("void", "#.textContent = #", this.raw, unwrap_jso(val));
-
- /**
- * Adds a node to the end of the child [nodes] list of this node.
- *
- * If the node already exists in this document, it will be removed from its
- * current parent node, then added to this node.
- *
- * This method is more efficient than `nodes.add`, and is the preferred
- * way of appending a child node.
- */
- @DomName('Node.appendChild')
- @DocsEditable()
- Node append(Node newChild) {
- return _append_1(newChild);
- }
- @JSName('appendChild')
- /**
- * Adds a node to the end of the child [nodes] list of this node.
- *
- * If the node already exists in this document, it will be removed from its
- * current parent node, then added to this node.
- *
- * This method is more efficient than `nodes.add`, and is the preferred
- * way of appending a child node.
- */
- @DomName('Node.appendChild')
- @DocsEditable()
- Node _append_1(Node newChild) => wrap_jso(JS("Node ", "#.raw.appendChild(#)", this, unwrap_jso(newChild)));
-
- /**
- * Returns a copy of this node.
- *
- * If [deep] is `true`, then all of this node's children and decendents are
- * copied as well. If [deep] is `false`, then only this node is copied.
- *
- * ## Other resources
- *
- * * [Node.cloneNode]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode) from
- * MDN.
- */
- @DomName('Node.cloneNode')
- @DocsEditable()
- Node clone(bool deep) {
- return _clone_1(deep);
- }
- @JSName('cloneNode')
- /**
- * Returns a copy of this node.
- *
- * If [deep] is `true`, then all of this node's children and decendents are
- * copied as well. If [deep] is `false`, then only this node is copied.
- *
- * ## Other resources
- *
- * * [Node.cloneNode]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode) from
- * MDN.
- */
- @DomName('Node.cloneNode')
- @DocsEditable()
- Node _clone_1(deep) => wrap_jso(JS("Node ", "#.raw.cloneNode(#)", this, unwrap_jso(deep)));
-
- /**
- * Returns true if this node contains the specified node.
- *
- * ## Other resources
- *
- * * [Node.contains]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.contains) from MDN.
- */
- @DomName('Node.contains')
- @DocsEditable()
- bool contains(Node other) {
- return _contains_1(other);
- }
- @JSName('contains')
- /**
- * Returns true if this node contains the specified node.
- *
- * ## Other resources
- *
- * * [Node.contains]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.contains) from MDN.
- */
- @DomName('Node.contains')
- @DocsEditable()
- bool _contains_1(Node other) => wrap_jso(JS("bool ", "#.raw.contains(#)", this, unwrap_jso(other)));
-
- /**
- * Returns true if this node has any children.
- *
- * ## Other resources
- *
- * * [Node.hasChildNodes]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes) from
- * MDN.
- */
- @DomName('Node.hasChildNodes')
- @DocsEditable()
- bool hasChildNodes() {
- return _hasChildNodes_1();
- }
- @JSName('hasChildNodes')
- /**
- * Returns true if this node has any children.
- *
- * ## Other resources
- *
- * * [Node.hasChildNodes]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes) from
- * MDN.
- */
- @DomName('Node.hasChildNodes')
- @DocsEditable()
- bool _hasChildNodes_1() => wrap_jso(JS("bool ", "#.raw.hasChildNodes()", this));
-
- /**
- * Inserts all of the nodes into this node directly before refChild.
- *
- * ## Other resources
- *
- * * [Node.insertBefore]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore) from
- * MDN.
- */
- @DomName('Node.insertBefore')
- @DocsEditable()
- Node insertBefore(Node newChild, Node refChild) {
- return _insertBefore_1(newChild, refChild);
- }
- @JSName('insertBefore')
- /**
- * Inserts all of the nodes into this node directly before refChild.
- *
- * ## Other resources
- *
- * * [Node.insertBefore]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore) from
- * MDN.
- */
- @DomName('Node.insertBefore')
- @DocsEditable()
- Node _insertBefore_1(Node newChild, Node refChild) => wrap_jso(JS("Node ", "#.raw.insertBefore(#, #)", this, unwrap_jso(newChild), unwrap_jso(refChild)));
-
- @DomName('Node.removeChild')
- @DocsEditable()
- Node _removeChild(Node oldChild) {
- return _removeChild_1(oldChild);
- }
- @JSName('removeChild')
- @DomName('Node.removeChild')
- @DocsEditable()
- Node _removeChild_1(Node oldChild) => wrap_jso(JS("Node ", "#.raw.removeChild(#)", this, unwrap_jso(oldChild)));
-
- @DomName('Node.replaceChild')
- @DocsEditable()
- Node _replaceChild(Node newChild, Node oldChild) {
- return _replaceChild_1(newChild, oldChild);
- }
- @JSName('replaceChild')
- @DomName('Node.replaceChild')
- @DocsEditable()
- Node _replaceChild_1(Node newChild, Node oldChild) => wrap_jso(JS("Node ", "#.raw.replaceChild(#, #)", this, unwrap_jso(newChild), unwrap_jso(oldChild)));
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('NodeList')
-@Native("NodeList,RadioNodeList")
-class NodeList extends DartHtmlDomObject with ListMixin<Node>, ImmutableListMixin<Node> implements JavaScriptIndexingBehavior, List<Node> {
- // To suppress missing implicit constructor warnings.
- factory NodeList._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static NodeList internalCreateNodeList() {
- return new NodeList.internal_();
- }
-
- @Deprecated("Internal Use Only")
- NodeList.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('NodeList.length')
- @DocsEditable()
- int get length => wrap_jso(JS("int", "#.length", this.raw));
-
- Node operator[](int index) {
- if (JS("bool", "# >>> 0 !== # || # >= #", index,
- index, index, length))
- throw new RangeError.index(index, this);
- return wrap_jso(JS("Node", "#[#]", this.raw, index));
- }
- void operator[]=(int index, Node value) {
- throw new UnsupportedError("Cannot assign element of immutable List.");
- }
- // -- start List<Node> mixins.
- // Node is the element type.
-
-
- set length(int value) {
- throw new UnsupportedError("Cannot resize immutable List.");
- }
-
- Node get first {
- if (this.length > 0) {
- return wrap_jso(JS('Node', '#[0]', this.raw));
- }
- throw new StateError("No elements");
- }
-
- Node get last {
- int len = this.length;
- if (len > 0) {
- return wrap_jso(JS('Node', '#[#]', this.raw, len - 1));
- }
- throw new StateError("No elements");
- }
-
- Node get single {
- int len = this.length;
- if (len == 1) {
- return wrap_jso(JS('Node', '#[0]', this.raw));
- }
- if (len == 0) throw new StateError("No elements");
- throw new StateError("More than one element");
- }
-
- Node elementAt(int index) => this[index];
- // -- end List<Node> mixins.
-
- @DomName('NodeList.item')
- @DocsEditable()
- Node _item(int index) {
- return _item_1(index);
- }
- @JSName('item')
- @DomName('NodeList.item')
- @DocsEditable()
- Node _item_1(index) => wrap_jso(JS("Node ", "#.raw.item(#)", this, unwrap_jso(index)));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('ParentNode')
-@Experimental() // untriaged
-abstract class ParentNode extends DartHtmlDomObject {
- // To suppress missing implicit constructor warnings.
- factory ParentNode._() { throw new UnsupportedError("Not supported"); }
-
- int get _childElementCount => wrap_jso(JS("int", "#.childElementCount", this.raw));
-
- List<Node> get _children => wrap_jso(JS("List<Node>", "#.children", this.raw));
-
- Element get _firstElementChild => wrap_jso(JS("Element", "#.firstElementChild", this.raw));
-
- Element get _lastElementChild => wrap_jso(JS("Element", "#.lastElementChild", this.raw));
-
- Element querySelector(String selectors) => wrap_jso(JS("Element", "#.raw.querySelector(#)", this, unwrap_jso(selectors)));
-
- List<Node> _querySelectorAll(String selectors) => wrap_jso(JS("List<Node>", "#.raw.querySelectorAll(#)", this, unwrap_jso(selectors)));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('ProgressEvent')
-@Native("ProgressEvent")
-class ProgressEvent extends Event {
- // To suppress missing implicit constructor warnings.
- factory ProgressEvent._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static ProgressEvent internalCreateProgressEvent() {
- return new ProgressEvent.internal_();
- }
-
- @Deprecated("Internal Use Only")
- ProgressEvent.internal_() : super.internal_();
-
-
- @DomName('ProgressEvent.lengthComputable')
- @DocsEditable()
- bool get lengthComputable => wrap_jso(JS("bool", "#.lengthComputable", this.raw));
-
- @DomName('ProgressEvent.loaded')
- @DocsEditable()
- int get loaded => wrap_jso(JS("int", "#.loaded", this.raw));
-
- @DomName('ProgressEvent.total')
- @DocsEditable()
- int get total => wrap_jso(JS("int", "#.total", this.raw));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: Do not edit - generated code.
-
-
-@DomName('Range')
-@Unstable()
-@Native("Range")
-class Range extends DartHtmlDomObject {
- factory Range() => document.createRange();
-
- factory Range.fromPoint(Point point) =>
- document._caretRangeFromPoint(point.x, point.y);
- // To suppress missing implicit constructor warnings.
- factory Range._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static Range internalCreateRange() {
- return new Range.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Range.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('Range.END_TO_END')
- @DocsEditable()
- static const int END_TO_END = 2;
-
- @DomName('Range.END_TO_START')
- @DocsEditable()
- static const int END_TO_START = 3;
-
- @DomName('Range.NODE_AFTER')
- @DocsEditable()
- @Experimental() // nonstandard
- static const int NODE_AFTER = 1;
-
- @DomName('Range.NODE_BEFORE')
- @DocsEditable()
- @Experimental() // nonstandard
- static const int NODE_BEFORE = 0;
-
- @DomName('Range.NODE_BEFORE_AND_AFTER')
- @DocsEditable()
- @Experimental() // nonstandard
- static const int NODE_BEFORE_AND_AFTER = 2;
-
- @DomName('Range.NODE_INSIDE')
- @DocsEditable()
- @Experimental() // nonstandard
- static const int NODE_INSIDE = 3;
-
- @DomName('Range.START_TO_END')
- @DocsEditable()
- static const int START_TO_END = 1;
-
- @DomName('Range.START_TO_START')
- @DocsEditable()
- static const int START_TO_START = 0;
-
- @DomName('Range.collapsed')
- @DocsEditable()
- bool get collapsed => wrap_jso(JS("bool", "#.collapsed", this.raw));
-
- @DomName('Range.commonAncestorContainer')
- @DocsEditable()
- Node get commonAncestorContainer => wrap_jso(JS("Node", "#.commonAncestorContainer", this.raw));
-
- @DomName('Range.endContainer')
- @DocsEditable()
- Node get endContainer => wrap_jso(JS("Node", "#.endContainer", this.raw));
-
- @DomName('Range.endOffset')
- @DocsEditable()
- int get endOffset => wrap_jso(JS("int", "#.endOffset", this.raw));
-
- @DomName('Range.startContainer')
- @DocsEditable()
- Node get startContainer => wrap_jso(JS("Node", "#.startContainer", this.raw));
-
- @DomName('Range.startOffset')
- @DocsEditable()
- int get startOffset => wrap_jso(JS("int", "#.startOffset", this.raw));
-
- @DomName('Range.cloneContents')
- @DocsEditable()
- DocumentFragment cloneContents() {
- return _cloneContents_1();
- }
- @JSName('cloneContents')
- @DomName('Range.cloneContents')
- @DocsEditable()
- DocumentFragment _cloneContents_1() => wrap_jso(JS("DocumentFragment ", "#.raw.cloneContents()", this));
-
- @DomName('Range.cloneRange')
- @DocsEditable()
- Range cloneRange() {
- return _cloneRange_1();
- }
- @JSName('cloneRange')
- @DomName('Range.cloneRange')
- @DocsEditable()
- Range _cloneRange_1() => wrap_jso(JS("Range ", "#.raw.cloneRange()", this));
-
- @DomName('Range.collapse')
- @DocsEditable()
- void collapse([bool toStart]) {
- if (toStart != null) {
- _collapse_1(toStart);
- return;
- }
- _collapse_2();
- return;
- }
- @JSName('collapse')
- @DomName('Range.collapse')
- @DocsEditable()
- void _collapse_1(toStart) => wrap_jso(JS("void ", "#.raw.collapse(#)", this, unwrap_jso(toStart)));
- @JSName('collapse')
- @DomName('Range.collapse')
- @DocsEditable()
- void _collapse_2() => wrap_jso(JS("void ", "#.raw.collapse()", this));
-
- @DomName('Range.compareBoundaryPoints')
- @DocsEditable()
- @Experimental() // untriaged
- int compareBoundaryPoints(int how, Range sourceRange) {
- return _compareBoundaryPoints_1(how, sourceRange);
- }
- @JSName('compareBoundaryPoints')
- @DomName('Range.compareBoundaryPoints')
- @DocsEditable()
- @Experimental() // untriaged
- int _compareBoundaryPoints_1(how, Range sourceRange) => wrap_jso(JS("int ", "#.raw.compareBoundaryPoints(#, #)", this, unwrap_jso(how), unwrap_jso(sourceRange)));
-
- @DomName('Range.comparePoint')
- @DocsEditable()
- int comparePoint(Node refNode, int offset) {
- return _comparePoint_1(refNode, offset);
- }
- @JSName('comparePoint')
- @DomName('Range.comparePoint')
- @DocsEditable()
- int _comparePoint_1(Node refNode, offset) => wrap_jso(JS("int ", "#.raw.comparePoint(#, #)", this, unwrap_jso(refNode), unwrap_jso(offset)));
-
- @DomName('Range.createContextualFragment')
- @DocsEditable()
- DocumentFragment createContextualFragment(String html) {
- return _createContextualFragment_1(html);
- }
- @JSName('createContextualFragment')
- @DomName('Range.createContextualFragment')
- @DocsEditable()
- DocumentFragment _createContextualFragment_1(html) => wrap_jso(JS("DocumentFragment ", "#.raw.createContextualFragment(#)", this, unwrap_jso(html)));
-
- @DomName('Range.deleteContents')
- @DocsEditable()
- void deleteContents() {
- _deleteContents_1();
- return;
- }
- @JSName('deleteContents')
- @DomName('Range.deleteContents')
- @DocsEditable()
- void _deleteContents_1() => wrap_jso(JS("void ", "#.raw.deleteContents()", this));
-
- @DomName('Range.detach')
- @DocsEditable()
- void detach() {
- _detach_1();
- return;
- }
- @JSName('detach')
- @DomName('Range.detach')
- @DocsEditable()
- void _detach_1() => wrap_jso(JS("void ", "#.raw.detach()", this));
-
- @DomName('Range.expand')
- @DocsEditable()
- @Experimental() // non-standard
- void expand(String unit) {
- _expand_1(unit);
- return;
- }
- @JSName('expand')
- @DomName('Range.expand')
- @DocsEditable()
- @Experimental() // non-standard
- void _expand_1(unit) => wrap_jso(JS("void ", "#.raw.expand(#)", this, unwrap_jso(unit)));
-
- @DomName('Range.extractContents')
- @DocsEditable()
- DocumentFragment extractContents() {
- return _extractContents_1();
- }
- @JSName('extractContents')
- @DomName('Range.extractContents')
- @DocsEditable()
- DocumentFragment _extractContents_1() => wrap_jso(JS("DocumentFragment ", "#.raw.extractContents()", this));
-
- @DomName('Range.getBoundingClientRect')
- @DocsEditable()
- Rectangle getBoundingClientRect() {
- return _getBoundingClientRect_1();
- }
- @JSName('getBoundingClientRect')
- @DomName('Range.getBoundingClientRect')
- @DocsEditable()
- Rectangle _getBoundingClientRect_1() => wrap_jso(JS("Rectangle ", "#.raw.getBoundingClientRect()", this));
-
- @DomName('Range.insertNode')
- @DocsEditable()
- void insertNode(Node newNode) {
- _insertNode_1(newNode);
- return;
- }
- @JSName('insertNode')
- @DomName('Range.insertNode')
- @DocsEditable()
- void _insertNode_1(Node newNode) => wrap_jso(JS("void ", "#.raw.insertNode(#)", this, unwrap_jso(newNode)));
-
- @DomName('Range.isPointInRange')
- @DocsEditable()
- bool isPointInRange(Node refNode, int offset) {
- return _isPointInRange_1(refNode, offset);
- }
- @JSName('isPointInRange')
- @DomName('Range.isPointInRange')
- @DocsEditable()
- bool _isPointInRange_1(Node refNode, offset) => wrap_jso(JS("bool ", "#.raw.isPointInRange(#, #)", this, unwrap_jso(refNode), unwrap_jso(offset)));
-
- @DomName('Range.selectNode')
- @DocsEditable()
- void selectNode(Node refNode) {
- _selectNode_1(refNode);
- return;
- }
- @JSName('selectNode')
- @DomName('Range.selectNode')
- @DocsEditable()
- void _selectNode_1(Node refNode) => wrap_jso(JS("void ", "#.raw.selectNode(#)", this, unwrap_jso(refNode)));
-
- @DomName('Range.selectNodeContents')
- @DocsEditable()
- void selectNodeContents(Node refNode) {
- _selectNodeContents_1(refNode);
- return;
- }
- @JSName('selectNodeContents')
- @DomName('Range.selectNodeContents')
- @DocsEditable()
- void _selectNodeContents_1(Node refNode) => wrap_jso(JS("void ", "#.raw.selectNodeContents(#)", this, unwrap_jso(refNode)));
-
- @DomName('Range.setEnd')
- @DocsEditable()
- void setEnd(Node refNode, int offset) {
- _setEnd_1(refNode, offset);
- return;
- }
- @JSName('setEnd')
- @DomName('Range.setEnd')
- @DocsEditable()
- void _setEnd_1(Node refNode, offset) => wrap_jso(JS("void ", "#.raw.setEnd(#, #)", this, unwrap_jso(refNode), unwrap_jso(offset)));
-
- @DomName('Range.setEndAfter')
- @DocsEditable()
- void setEndAfter(Node refNode) {
- _setEndAfter_1(refNode);
- return;
- }
- @JSName('setEndAfter')
- @DomName('Range.setEndAfter')
- @DocsEditable()
- void _setEndAfter_1(Node refNode) => wrap_jso(JS("void ", "#.raw.setEndAfter(#)", this, unwrap_jso(refNode)));
-
- @DomName('Range.setEndBefore')
- @DocsEditable()
- void setEndBefore(Node refNode) {
- _setEndBefore_1(refNode);
- return;
- }
- @JSName('setEndBefore')
- @DomName('Range.setEndBefore')
- @DocsEditable()
- void _setEndBefore_1(Node refNode) => wrap_jso(JS("void ", "#.raw.setEndBefore(#)", this, unwrap_jso(refNode)));
-
- @DomName('Range.setStart')
- @DocsEditable()
- void setStart(Node refNode, int offset) {
- _setStart_1(refNode, offset);
- return;
- }
- @JSName('setStart')
- @DomName('Range.setStart')
- @DocsEditable()
- void _setStart_1(Node refNode, offset) => wrap_jso(JS("void ", "#.raw.setStart(#, #)", this, unwrap_jso(refNode), unwrap_jso(offset)));
-
- @DomName('Range.setStartAfter')
- @DocsEditable()
- void setStartAfter(Node refNode) {
- _setStartAfter_1(refNode);
- return;
- }
- @JSName('setStartAfter')
- @DomName('Range.setStartAfter')
- @DocsEditable()
- void _setStartAfter_1(Node refNode) => wrap_jso(JS("void ", "#.raw.setStartAfter(#)", this, unwrap_jso(refNode)));
-
- @DomName('Range.setStartBefore')
- @DocsEditable()
- void setStartBefore(Node refNode) {
- _setStartBefore_1(refNode);
- return;
- }
- @JSName('setStartBefore')
- @DomName('Range.setStartBefore')
- @DocsEditable()
- void _setStartBefore_1(Node refNode) => wrap_jso(JS("void ", "#.raw.setStartBefore(#)", this, unwrap_jso(refNode)));
-
- @DomName('Range.surroundContents')
- @DocsEditable()
- void surroundContents(Node newParent) {
- _surroundContents_1(newParent);
- return;
- }
- @JSName('surroundContents')
- @DomName('Range.surroundContents')
- @DocsEditable()
- void _surroundContents_1(Node newParent) => wrap_jso(JS("void ", "#.raw.surroundContents(#)", this, unwrap_jso(newParent)));
-
-
- /**
- * Checks if createContextualFragment is supported.
- *
- * See also:
- *
- * * [createContextualFragment]
- */
- static bool get supportsCreateContextualFragment => true;
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: Do not edit - generated code.
-
-
-@DomName('RequestAnimationFrameCallback')
-typedef void RequestAnimationFrameCallback(num highResTime);
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('Screen')
-@Native("Screen")
-class Screen extends DartHtmlDomObject {
-
- @DomName('Screen.availHeight')
- @DomName('Screen.availLeft')
- @DomName('Screen.availTop')
- @DomName('Screen.availWidth')
- Rectangle get available => new Rectangle(_availLeft, _availTop, _availWidth,
- _availHeight);
- // To suppress missing implicit constructor warnings.
- factory Screen._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static Screen internalCreateScreen() {
- return new Screen.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Screen.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @JSName('availHeight')
- @DomName('Screen.availHeight')
- @DocsEditable()
- int get _availHeight => wrap_jso(JS("int", "#.availHeight", this.raw));
-
- @JSName('availLeft')
- @DomName('Screen.availLeft')
- @DocsEditable()
- @Experimental() // nonstandard
- int get _availLeft => wrap_jso(JS("int", "#.availLeft", this.raw));
-
- @JSName('availTop')
- @DomName('Screen.availTop')
- @DocsEditable()
- @Experimental() // nonstandard
- int get _availTop => wrap_jso(JS("int", "#.availTop", this.raw));
-
- @JSName('availWidth')
- @DomName('Screen.availWidth')
- @DocsEditable()
- int get _availWidth => wrap_jso(JS("int", "#.availWidth", this.raw));
-
- @DomName('Screen.colorDepth')
- @DocsEditable()
- int get colorDepth => wrap_jso(JS("int", "#.colorDepth", this.raw));
-
- @DomName('Screen.height')
- @DocsEditable()
- int get height => wrap_jso(JS("int", "#.height", this.raw));
-
- @DomName('Screen.pixelDepth')
- @DocsEditable()
- int get pixelDepth => wrap_jso(JS("int", "#.pixelDepth", this.raw));
-
- @DomName('Screen.width')
- @DocsEditable()
- int get width => wrap_jso(JS("int", "#.width", this.raw));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: Do not edit - generated code.
-
-
-@DomName('ShadowRoot')
-@SupportedBrowser(SupportedBrowser.CHROME, '26')
-@Experimental()
-// https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-shadow-root
-@Native("ShadowRoot")
-class ShadowRoot extends DocumentFragment {
- // To suppress missing implicit constructor warnings.
- factory ShadowRoot._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static ShadowRoot internalCreateShadowRoot() {
- return new ShadowRoot.internal_();
- }
-
- @Deprecated("Internal Use Only")
- ShadowRoot.internal_() : super.internal_();
-
-
- @DomName('ShadowRoot.activeElement')
- @DocsEditable()
- Element get activeElement => wrap_jso(JS("Element", "#.activeElement", this.raw));
-
- @DomName('ShadowRoot.host')
- @DocsEditable()
- @Experimental() // untriaged
- Element get host => wrap_jso(JS("Element", "#.host", this.raw));
-
- @JSName('innerHTML')
- @DomName('ShadowRoot.innerHTML')
- @DocsEditable()
- String get innerHtml => wrap_jso(JS("String", "#.innerHTML", this.raw));
- @JSName('innerHTML')
- @DomName('ShadowRoot.innerHTML')
- @DocsEditable()
- void set innerHtml(String val) => JS("void", "#.innerHTML = #", this.raw, unwrap_jso(val));
-
- @DomName('ShadowRoot.olderShadowRoot')
- @DocsEditable()
- @Experimental() // untriaged
- ShadowRoot get olderShadowRoot => wrap_jso(JS("ShadowRoot", "#.olderShadowRoot", this.raw));
-
- @DomName('ShadowRoot.cloneNode')
- @DocsEditable()
- Node clone(bool deep) {
- return _clone_1(deep);
- }
- @JSName('cloneNode')
- @DomName('ShadowRoot.cloneNode')
- @DocsEditable()
- Node _clone_1(deep) => wrap_jso(JS("Node ", "#.raw.cloneNode(#)", this, unwrap_jso(deep)));
-
- @DomName('ShadowRoot.elementFromPoint')
- @DocsEditable()
- Element elementFromPoint(int x, int y) {
- return _elementFromPoint_1(x, y);
- }
- @JSName('elementFromPoint')
- @DomName('ShadowRoot.elementFromPoint')
- @DocsEditable()
- Element _elementFromPoint_1(x, y) => wrap_jso(JS("Element ", "#.raw.elementFromPoint(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
-
- @DomName('ShadowRoot.getElementsByClassName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection getElementsByClassName(String className) {
- return _getElementsByClassName_1(className);
- }
- @JSName('getElementsByClassName')
- @DomName('ShadowRoot.getElementsByClassName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection _getElementsByClassName_1(className) => wrap_jso(JS("HtmlCollection ", "#.raw.getElementsByClassName(#)", this, unwrap_jso(className)));
-
- @DomName('ShadowRoot.getElementsByTagName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection getElementsByTagName(String tagName) {
- return _getElementsByTagName_1(tagName);
- }
- @JSName('getElementsByTagName')
- @DomName('ShadowRoot.getElementsByTagName')
- @DocsEditable()
- @Creates('NodeList|HtmlCollection')
- @Returns('NodeList|HtmlCollection')
- HtmlCollection _getElementsByTagName_1(tagName) => wrap_jso(JS("HtmlCollection ", "#.raw.getElementsByTagName(#)", this, unwrap_jso(tagName)));
-
- static final bool supported = true;
-
- static bool _shadowRootDeprecationReported = false;
- static void _shadowRootDeprecationReport() {
- if (!_shadowRootDeprecationReported) {
- window.console.warn('''
-ShadowRoot.resetStyleInheritance and ShadowRoot.applyAuthorStyles now deprecated in dart:html.
-Please remove them from your code.
-''');
- _shadowRootDeprecationReported = true;
- }
- }
-
- @deprecated
- bool get resetStyleInheritance {
- _shadowRootDeprecationReport();
- // Default value from when it was specified.
- return false;
- }
-
- @deprecated
- set resetStyleInheritance(bool value) {
- _shadowRootDeprecationReport();
- }
-
- @deprecated
- bool get applyAuthorStyles {
- _shadowRootDeprecationReport();
- // Default value from when it was specified.
- return false;
- }
-
- @deprecated
- set applyAuthorStyles(bool value) {
- _shadowRootDeprecationReport();
- }
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('HTMLStyleElement')
-@Native("HTMLStyleElement")
-class StyleElement extends HtmlElement {
- // To suppress missing implicit constructor warnings.
- factory StyleElement._() { throw new UnsupportedError("Not supported"); }
-
- @DomName('HTMLStyleElement.HTMLStyleElement')
- @DocsEditable()
- factory StyleElement() => document.createElement("style");
-
-
- @Deprecated("Internal Use Only")
- static StyleElement internalCreateStyleElement() {
- return new StyleElement.internal_();
- }
-
- @Deprecated("Internal Use Only")
- StyleElement.internal_() : super.internal_();
-
-
- @DomName('HTMLStyleElement.disabled')
- @DocsEditable()
- bool get disabled => wrap_jso(JS("bool", "#.disabled", this.raw));
- @DomName('HTMLStyleElement.disabled')
- @DocsEditable()
- void set disabled(bool val) => JS("void", "#.disabled = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLStyleElement.media')
- @DocsEditable()
- String get media => wrap_jso(JS("String", "#.media", this.raw));
- @DomName('HTMLStyleElement.media')
- @DocsEditable()
- void set media(String val) => JS("void", "#.media = #", this.raw, unwrap_jso(val));
-
- @DomName('HTMLStyleElement.type')
- @DocsEditable()
- String get type => wrap_jso(JS("String", "#.type", this.raw));
- @DomName('HTMLStyleElement.type')
- @DocsEditable()
- void set type(String val) => JS("void", "#.type = #", this.raw, unwrap_jso(val));
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: Do not edit - generated code.
-
-
-@Experimental()
-@DomName('HTMLTemplateElement')
-@SupportedBrowser(SupportedBrowser.CHROME)
-@Experimental()
-// https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#template-element
-@Native("HTMLTemplateElement")
-class TemplateElement extends HtmlElement {
- // To suppress missing implicit constructor warnings.
- factory TemplateElement._() { throw new UnsupportedError("Not supported"); }
-
- @DomName('HTMLTemplateElement.HTMLTemplateElement')
- @DocsEditable()
- factory TemplateElement() => document.createElement("template");
-
-
- @Deprecated("Internal Use Only")
- static TemplateElement internalCreateTemplateElement() {
- return new TemplateElement.internal_();
- }
-
- @Deprecated("Internal Use Only")
- TemplateElement.internal_() : super.internal_();
-
-
- /// Checks if this type is supported on the current platform.
- static bool get supported => Element.isTagSupported('template');
-
- @DomName('HTMLTemplateElement.content')
- @DocsEditable()
- DocumentFragment get content => wrap_jso(JS("DocumentFragment", "#.content", this.raw));
-
-
- /**
- * An override to place the contents into content rather than as child nodes.
- *
- * See also:
- *
- * * <https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#innerhtml-on-templates>
- */
- void setInnerHtml(String html,
- {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
- text = null;
- var fragment = createFragment(
- html, validator: validator, treeSanitizer: treeSanitizer);
-
- content.append(fragment);
- }
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: Do not edit - generated code.
-
-
-@DomName('Text')
-@Native("Text")
-class Text extends CharacterData {
- factory Text(String data) => document._createTextNode(data);
- // To suppress missing implicit constructor warnings.
- factory Text._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static Text internalCreateText() {
- return new Text.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Text.internal_() : super.internal_();
-
-
- @DomName('Text.wholeText')
- @DocsEditable()
- String get wholeText => wrap_jso(JS("String", "#.wholeText", this.raw));
-
- @DomName('Text.getDestinationInsertionPoints')
- @DocsEditable()
- @Experimental() // untriaged
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList getDestinationInsertionPoints() {
- return _getDestinationInsertionPoints_1();
- }
- @JSName('getDestinationInsertionPoints')
- @DomName('Text.getDestinationInsertionPoints')
- @DocsEditable()
- @Experimental() // untriaged
- @Returns('NodeList')
- @Creates('NodeList')
- NodeList _getDestinationInsertionPoints_1() => wrap_jso(JS("NodeList ", "#.raw.getDestinationInsertionPoints()", this));
-
- @DomName('Text.splitText')
- @DocsEditable()
- Text splitText(int offset) {
- return _splitText_1(offset);
- }
- @JSName('splitText')
- @DomName('Text.splitText')
- @DocsEditable()
- Text _splitText_1(offset) => wrap_jso(JS("Text ", "#.raw.splitText(#)", this, unwrap_jso(offset)));
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// WARNING: Do not edit - generated code.
-
-
-@DomName('UIEvent')
-@Native("UIEvent")
-class UIEvent extends Event {
- // In JS, canBubble and cancelable are technically required parameters to
- // init*Event. In practice, though, if they aren't provided they simply
- // default to false (since that's Boolean(undefined)).
- //
- // Contrary to JS, we default canBubble and cancelable to true, since that's
- // what people want most of the time anyway.
- factory UIEvent(String type,
- {Window view, int detail: 0, bool canBubble: true,
- bool cancelable: true}) {
- if (view == null) {
- view = window;
- }
- UIEvent e = document._createEvent("UIEvent");
- e._initUIEvent(type, canBubble, cancelable, view, detail);
- return e;
- }
- // To suppress missing implicit constructor warnings.
- factory UIEvent._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static UIEvent internalCreateUIEvent() {
- return new UIEvent.internal_();
- }
-
- @Deprecated("Internal Use Only")
- UIEvent.internal_() : super.internal_();
-
-
- @JSName('charCode')
- @DomName('UIEvent.charCode')
- @DocsEditable()
- @Unstable()
- int get _charCode => wrap_jso(JS("int", "#.charCode", this.raw));
-
- @DomName('UIEvent.detail')
- @DocsEditable()
- int get detail => wrap_jso(JS("int", "#.detail", this.raw));
-
- @JSName('keyCode')
- @DomName('UIEvent.keyCode')
- @DocsEditable()
- @Unstable()
- int get _keyCode => wrap_jso(JS("int", "#.keyCode", this.raw));
-
- @JSName('layerX')
- @DomName('UIEvent.layerX')
- @DocsEditable()
- // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents
- @Experimental() // nonstandard
- int get _layerX => wrap_jso(JS("int", "#.layerX", this.raw));
-
- @JSName('layerY')
- @DomName('UIEvent.layerY')
- @DocsEditable()
- // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents
- @Experimental() // nonstandard
- int get _layerY => wrap_jso(JS("int", "#.layerY", this.raw));
-
- @JSName('pageX')
- @DomName('UIEvent.pageX')
- @DocsEditable()
- // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents
- @Experimental() // nonstandard
- int get _pageX => wrap_jso(JS("int", "#.pageX", this.raw));
-
- @JSName('pageY')
- @DomName('UIEvent.pageY')
- @DocsEditable()
- // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents
- @Experimental() // nonstandard
- int get _pageY => wrap_jso(JS("int", "#.pageY", this.raw));
-
- @DomName('UIEvent.view')
- @DocsEditable()
- WindowBase get view => _convertNativeToDart_Window(this._get_view);
- @JSName('view')
- @DomName('UIEvent.view')
- @DocsEditable()
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- dynamic get _get_view => wrap_jso(JS("dynamic", "#.view", this.raw));
-
- @DomName('UIEvent.which')
- @DocsEditable()
- @Unstable()
- int get which => wrap_jso(JS("int", "#.which", this.raw));
-
- @DomName('UIEvent.initUIEvent')
- @DocsEditable()
- void _initUIEvent(String type, bool canBubble, bool cancelable, Window view, int detail) {
- _initUIEvent_1(type, canBubble, cancelable, view, detail);
- return;
- }
- @JSName('initUIEvent')
- @DomName('UIEvent.initUIEvent')
- @DocsEditable()
- void _initUIEvent_1(type, canBubble, cancelable, Window view, detail) => wrap_jso(JS("void ", "#.raw.initUIEvent(#, #, #, #, #)", this, unwrap_jso(type), unwrap_jso(canBubble), unwrap_jso(cancelable), unwrap_jso(view), unwrap_jso(detail)));
-
-
- @DomName('UIEvent.layerX')
- @DomName('UIEvent.layerY')
- Point get layer => new Point(_layerX, _layerY);
-
- @DomName('UIEvent.pageX')
- @DomName('UIEvent.pageY')
- Point get page => new Point(_pageX, _pageY);
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('URLUtils')
-@Experimental() // untriaged
-abstract class UrlUtils extends DartHtmlDomObject {
- // To suppress missing implicit constructor warnings.
- factory UrlUtils._() { throw new UnsupportedError("Not supported"); }
-
- String get hash => wrap_jso(JS("String", "#.hash", this.raw));
- void set hash(String val) => JS("void", "#.hash = #", this.raw, unwrap_jso(val));
-
- String get host => wrap_jso(JS("String", "#.host", this.raw));
- void set host(String val) => JS("void", "#.host = #", this.raw, unwrap_jso(val));
-
- String get hostname => wrap_jso(JS("String", "#.hostname", this.raw));
- void set hostname(String val) => JS("void", "#.hostname = #", this.raw, unwrap_jso(val));
-
- String get href => wrap_jso(JS("String", "#.href", this.raw));
- void set href(String val) => JS("void", "#.href = #", this.raw, unwrap_jso(val));
-
- String get origin => wrap_jso(JS("String", "#.origin", this.raw));
-
- String get password => wrap_jso(JS("String", "#.password", this.raw));
- void set password(String val) => JS("void", "#.password = #", this.raw, unwrap_jso(val));
-
- String get pathname => wrap_jso(JS("String", "#.pathname", this.raw));
- void set pathname(String val) => JS("void", "#.pathname = #", this.raw, unwrap_jso(val));
-
- String get port => wrap_jso(JS("String", "#.port", this.raw));
- void set port(String val) => JS("void", "#.port = #", this.raw, unwrap_jso(val));
-
- String get protocol => wrap_jso(JS("String", "#.protocol", this.raw));
- void set protocol(String val) => JS("void", "#.protocol = #", this.raw, unwrap_jso(val));
-
- String get search => wrap_jso(JS("String", "#.search", this.raw));
- void set search(String val) => JS("void", "#.search = #", this.raw, unwrap_jso(val));
-
- String get username => wrap_jso(JS("String", "#.username", this.raw));
- void set username(String val) => JS("void", "#.username = #", this.raw, unwrap_jso(val));
-
- String toString() => wrap_jso(JS("String", "#.raw.toString()", this));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-/**
- * Top-level container for the current browser tab or window.
- *
- * In a web browser, each window has a [Window] object, but within the context
- * of a script, this object represents only the current window.
- * Each other window, tab, and iframe has its own [Window] object.
- *
- * Each window contains a [Document] object, which contains all of the window's
- * content.
- *
- * Use the top-level `window` object to access the current window.
- * For example:
- *
- * // Draw a scene when the window repaints.
- * drawScene(num delta) {...}
- * window.animationFrame.then(drawScene);.
- *
- * // Write to the console.
- * window.console.log('Jinkies!');
- * window.console.error('Jeepers!');
- *
- * **Note:** This class represents only the current window, while [WindowBase]
- * is a representation of any window, including other tabs, windows, and frames.
- *
- * ## See also
- *
- * * [WindowBase]
- *
- * ## Other resources
- *
- * * [DOM Window](https://developer.mozilla.org/en-US/docs/DOM/window) from MDN.
- * * [Window](http://www.w3.org/TR/Window/) from the W3C.
- */
-@DomName('Window')
-@Native("Window")
-class Window extends EventTarget implements WindowBase {
-
- /**
- * Returns a Future that completes just before the window is about to
- * repaint so the user can draw an animation frame.
- *
- * If you need to later cancel this animation, use [requestAnimationFrame]
- * instead.
- *
- * The [Future] completes to a timestamp that represents a floating
- * point value of the number of milliseconds that have elapsed since the page
- * started to load (which is also the timestamp at this call to
- * animationFrame).
- *
- * Note: The code that runs when the future completes should call
- * [animationFrame] again for the animation to continue.
- */
- Future<num> get animationFrame {
- var completer = new Completer<num>.sync();
- requestAnimationFrame((time) {
- completer.complete(time);
- });
- return completer.future;
- }
-
- /**
- * The newest document in this window.
- *
- * ## Other resources
- *
- * * [Loading web pages]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html)
- * from WHATWG.
- */
- Document get document => wrap_jso(JS('Document', '#.document', this.raw));
-
- WindowBase _open2(url, name) => wrap_jso(JS('Window', '#.open(#,#)', this.raw, url, name));
-
- WindowBase _open3(url, name, options) =>
- wrap_jso(JS('Window', '#.open(#,#,#)', this.raw, url, name, options));
-
- /**
- * Opens a new window.
- *
- * ## Other resources
- *
- * * [Window.open]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.open) from MDN.
- * * [Window open]
- * (http://docs.webplatform.org/wiki/dom/methods/open) from WebPlatform.org.
- */
- WindowBase open(String url, String name, [String options]) {
- if (options == null) {
- return _DOMWindowCrossFrame._createSafe(_open2(url, name));
- } else {
- return _DOMWindowCrossFrame._createSafe(_open3(url, name, options));
- }
- }
-
- // API level getter and setter for Location.
- // TODO: The cross domain safe wrapper can be inserted here.
- /**
- * The current location of this window.
- *
- * Location currentLocation = window.location;
- * print(currentLocation.href); // 'http://www.example.com:80/'
- */
- Location get location => _location;
-
- // TODO: consider forcing users to do: window.location.assign('string').
- /**
- * Sets the window's location, which causes the browser to navigate to the new
- * location. [value] may be a Location object or a String.
- */
- set location(value) {
- _location = value;
- }
-
- // Native getter and setter to access raw Location object.
- dynamic get _location => wrap_jso(JS('Location|Null', '#.location', this.raw));
- set _location(value) {
- JS('void', '#.location = #', this.raw, unwrap_jso(value));
- }
-
- /**
- * Called to draw an animation frame and then request the window to repaint
- * after [callback] has finished (creating the animation).
- *
- * Use this method only if you need to later call [cancelAnimationFrame]. If
- * not, the preferred Dart idiom is to set animation frames by calling
- * [animationFrame], which returns a Future.
- *
- * Returns a non-zero valued integer to represent the request id for this
- * request. This value only needs to be saved if you intend to call
- * [cancelAnimationFrame] so you can specify the particular animation to
- * cancel.
- *
- * Note: The supplied [callback] needs to call [requestAnimationFrame] again
- * for the animation to continue.
- */
- @DomName('Window.requestAnimationFrame')
- int requestAnimationFrame(RequestAnimationFrameCallback callback) {
- _ensureRequestAnimationFrame();
- return _requestAnimationFrame(_wrapZone(callback));
- }
-
- /**
- * Cancels an animation frame request.
- *
- * ## Other resources
- *
- * * [Window.cancelAnimationFrame]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.cancelAnimationFrame) from MDN.
- */
- void cancelAnimationFrame(int id) {
- _ensureRequestAnimationFrame();
- _cancelAnimationFrame(id);
- }
-
- @JSName('requestAnimationFrame')
- int _requestAnimationFrame(RequestAnimationFrameCallback callback)
- => JS('int', '#.requestAnimationFrame', this.raw);
-
- @JSName('cancelAnimationFrame')
- void _cancelAnimationFrame(int id)
- { JS('void', '#.cancelAnimationFrame(#)', this.raw, id); }
-
- _ensureRequestAnimationFrame() {
- if (JS('bool',
- '!!(#.requestAnimationFrame && #.cancelAnimationFrame)', this.raw, this.raw))
- return;
-
- JS('void',
- r"""
- (function($this) {
- var vendors = ['ms', 'moz', 'webkit', 'o'];
- for (var i = 0; i < vendors.length && !$this.requestAnimationFrame; ++i) {
- $this.requestAnimationFrame = $this[vendors[i] + 'RequestAnimationFrame'];
- $this.cancelAnimationFrame =
- $this[vendors[i]+'CancelAnimationFrame'] ||
- $this[vendors[i]+'CancelRequestAnimationFrame'];
- }
- if ($this.requestAnimationFrame && $this.cancelAnimationFrame) return;
- $this.requestAnimationFrame = function(callback) {
- return window.setTimeout(function() {
- callback(Date.now());
- }, 16 /* 16ms ~= 60fps */);
- };
- $this.cancelAnimationFrame = function(id) { clearTimeout(id); }
- })(#)""",
- this.raw);
- }
-
- /// The debugging console for this window.
- @DomName('Window.console')
- Console get console => Console._safeConsole;
-
- // To suppress missing implicit constructor warnings.
- factory Window._() { throw new UnsupportedError("Not supported"); }
-
- /**
- * Static factory designed to expose `contentloaded` events to event
- * handlers that are not necessarily instances of [Window].
- *
- * See [EventStreamProvider] for usage information.
- */
- @DomName('Window.DOMContentLoadedEvent')
- @DocsEditable()
- static const EventStreamProvider<Event> contentLoadedEvent = const EventStreamProvider<Event>('DOMContentLoaded');
-
-
- @Deprecated("Internal Use Only")
- static Window internalCreateWindow() {
- return new Window.internal_();
- }
-
- @Deprecated("Internal Use Only")
- Window.internal_() : super.internal_();
-
-
- /**
- * Indicates that file system data cannot be cleared unless given user
- * permission.
- *
- * ## Other resources
- *
- * * [Exploring the FileSystem APIs]
- * (http://www.html5rocks.com/en/tutorials/file/filesystem/) from HTML5Rocks.
- * * [File API]
- * (http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem) from W3C.
- */
- @DomName('Window.PERSISTENT')
- @DocsEditable()
- // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem
- @Experimental()
- static const int PERSISTENT = 1;
-
- /**
- * Indicates that file system data can be cleared at any time.
- *
- * ## Other resources
- *
- * * [Exploring the FileSystem APIs]
- * (http://www.html5rocks.com/en/tutorials/file/filesystem/) from HTML5Rocks.
- * * [File API]
- * (http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem) from W3C.
- */
- @DomName('Window.TEMPORARY')
- @DocsEditable()
- // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem
- @Experimental()
- static const int TEMPORARY = 0;
-
- @DomName('Window.closed')
- @DocsEditable()
- bool get closed => wrap_jso(JS("bool", "#.closed", this.raw));
-
- /// *Deprecated*.
- @DomName('Window.defaultStatus')
- @DocsEditable()
- @Experimental() // non-standard
- String get defaultStatus => wrap_jso(JS("String", "#.defaultStatus", this.raw));
- /// *Deprecated*.
- @DomName('Window.defaultStatus')
- @DocsEditable()
- @Experimental() // non-standard
- void set defaultStatus(String val) => JS("void", "#.defaultStatus = #", this.raw, unwrap_jso(val));
-
- /// *Deprecated*.
- @DomName('Window.defaultstatus')
- @DocsEditable()
- @Experimental() // non-standard
- String get defaultstatus => wrap_jso(JS("String", "#.defaultstatus", this.raw));
- /// *Deprecated*.
- @DomName('Window.defaultstatus')
- @DocsEditable()
- @Experimental() // non-standard
- void set defaultstatus(String val) => JS("void", "#.defaultstatus = #", this.raw, unwrap_jso(val));
-
- /**
- * The ratio between physical pixels and logical CSS pixels.
- *
- * ## Other resources
- *
- * * [devicePixelRatio]
- * (http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html) from
- * quirksmode.
- * * [More about devicePixelRatio]
- * (http://www.quirksmode.org/blog/archives/2012/07/more_about_devi.html) from
- * quirksmode.
- */
- @DomName('Window.devicePixelRatio')
- @DocsEditable()
- // http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html
- @Experimental() // non-standard
- double get devicePixelRatio => wrap_jso(JS("double", "#.devicePixelRatio", this.raw));
-
- /**
- * The current session history for this window's newest document.
- *
- * ## Other resources
- *
- * * [Loading web pages]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html)
- * from WHATWG.
- */
- @DomName('Window.history')
- @DocsEditable()
- History get history => wrap_jso(JS("History", "#.history", this.raw));
-
- /**
- * The height of the viewport including scrollbars.
- *
- * ## Other resources
- *
- * * [innerHeight]
- * (http://docs.webplatform.org/wiki/css/cssom/properties/innerHeight) from
- * WebPlatform.org.
- */
- @DomName('Window.innerHeight')
- @DocsEditable()
- int get innerHeight => wrap_jso(JS("int", "#.innerHeight", this.raw));
-
- /**
- * The width of the viewport including scrollbars.
- *
- * ## Other resources
- *
- * * [innerWidth]
- * (http://docs.webplatform.org/wiki/css/cssom/properties/innerWidth) from
- * WebPlatform.org.
- */
- @DomName('Window.innerWidth')
- @DocsEditable()
- int get innerWidth => wrap_jso(JS("int", "#.innerWidth", this.raw));
-
- /**
- * The name of this window.
- *
- * ## Other resources
- *
- * * [Window name]
- * (http://docs.webplatform.org/wiki/html/attributes/name_(window)) from
- * WebPlatform.org.
- */
- @DomName('Window.name')
- @DocsEditable()
- String get name => wrap_jso(JS("String", "#.name", this.raw));
- /**
- * The name of this window.
- *
- * ## Other resources
- *
- * * [Window name]
- * (http://docs.webplatform.org/wiki/html/attributes/name_(window)) from
- * WebPlatform.org.
- */
- @DomName('Window.name')
- @DocsEditable()
- void set name(String val) => JS("void", "#.name = #", this.raw, unwrap_jso(val));
-
- /**
- * The user agent accessing this window.
- *
- * ## Other resources
- *
- * * [The navigator object]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#the-navigator-object)
- * from WHATWG.
- */
- @DomName('Window.navigator')
- @DocsEditable()
- Navigator get navigator => wrap_jso(JS("Navigator", "#.navigator", this.raw));
-
- /**
- * Whether objects are drawn offscreen before being displayed.
- *
- * ## Other resources
- *
- * * [offscreenBuffering]
- * (http://docs.webplatform.org/wiki/dom/properties/offscreenBuffering) from
- * WebPlatform.org.
- */
- @DomName('Window.offscreenBuffering')
- @DocsEditable()
- @Experimental() // non-standard
- bool get offscreenBuffering => wrap_jso(JS("bool", "#.offscreenBuffering", this.raw));
-
- @DomName('Window.opener')
- @DocsEditable()
- WindowBase get opener => _convertNativeToDart_Window(this._get_opener);
- @JSName('opener')
- @DomName('Window.opener')
- @DocsEditable()
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- dynamic get _get_opener => wrap_jso(JS("dynamic", "#.opener", this.raw));
-
- set opener(Window value) {
- JS("void", "#.raw.opener = #", this, unwrap_jso(value));
- }
-
- @DomName('Window.orientation')
- @DocsEditable()
- @Experimental() // untriaged
- int get orientation => wrap_jso(JS("int", "#.orientation", this.raw));
-
- /**
- * The height of this window including all user interface elements.
- *
- * ## Other resources
- *
- * * [outerHeight]
- * (http://docs.webplatform.org/wiki/css/cssom/properties/outerHeight) from
- * WebPlatform.org.
- */
- @DomName('Window.outerHeight')
- @DocsEditable()
- int get outerHeight => wrap_jso(JS("int", "#.outerHeight", this.raw));
-
- /**
- * The width of the window including all user interface elements.
- *
- * ## Other resources
- *
- * * [outerWidth]
- * (http://docs.webplatform.org/wiki/css/cssom/properties/outerWidth) from
- * WebPlatform.org.
- */
- @DomName('Window.outerWidth')
- @DocsEditable()
- int get outerWidth => wrap_jso(JS("int", "#.outerWidth", this.raw));
-
- @JSName('pageXOffset')
- /**
- * The distance this window has been scrolled horizontally.
- *
- * This attribute is an alias for [scrollX].
- *
- * ## Other resources
- *
- * * [The Screen interface specification]
- * (http://www.w3.org/TR/cssom-view/#screen) from W3C.
- * * [scrollX and pageXOffset]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollX) from MDN.
- */
- @DomName('Window.pageXOffset')
- @DocsEditable()
- double get _pageXOffset => wrap_jso(JS("double", "#.pageXOffset", this.raw));
-
- @JSName('pageYOffset')
- /**
- * The distance this window has been scrolled vertically.
- *
- * This attribute is an alias for [scrollY].
- *
- * ## Other resources
- *
- * * [The Screen interface specification]
- * (http://www.w3.org/TR/cssom-view/#screen) from W3C.
- * * [scrollY and pageYOffset]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY) from MDN.
- */
- @DomName('Window.pageYOffset')
- @DocsEditable()
- double get _pageYOffset => wrap_jso(JS("double", "#.pageYOffset", this.raw));
-
- @DomName('Window.parent')
- @DocsEditable()
- WindowBase get parent => _convertNativeToDart_Window(this._get_parent);
- @JSName('parent')
- @DomName('Window.parent')
- @DocsEditable()
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- dynamic get _get_parent => wrap_jso(JS("dynamic", "#.parent", this.raw));
-
- /**
- * Information about the screen displaying this window.
- *
- * ## Other resources
- *
- * * [The Screen interface specification]
- * (http://www.w3.org/TR/cssom-view/#screen) from W3C.
- */
- @DomName('Window.screen')
- @DocsEditable()
- Screen get screen => wrap_jso(JS("Screen", "#.screen", this.raw));
-
- /**
- * The distance from the left side of the screen to the left side of this
- * window.
- *
- * ## Other resources
- *
- * * [The Screen interface specification]
- * (http://www.w3.org/TR/cssom-view/#screen) from W3C.
- */
- @DomName('Window.screenLeft')
- @DocsEditable()
- int get screenLeft => wrap_jso(JS("int", "#.screenLeft", this.raw));
-
- /**
- * The distance from the top of the screen to the top of this window.
- *
- * ## Other resources
- *
- * * [The Screen interface specification]
- * (http://www.w3.org/TR/cssom-view/#screen) from W3C.
- */
- @DomName('Window.screenTop')
- @DocsEditable()
- int get screenTop => wrap_jso(JS("int", "#.screenTop", this.raw));
-
- /**
- * The distance from the left side of the screen to the mouse pointer.
- *
- * ## Other resources
- *
- * * [The Screen interface specification]
- * (http://www.w3.org/TR/cssom-view/#screen) from W3C.
- */
- @DomName('Window.screenX')
- @DocsEditable()
- int get screenX => wrap_jso(JS("int", "#.screenX", this.raw));
-
- /**
- * The distance from the top of the screen to the mouse pointer.
- *
- * ## Other resources
- *
- * * [The Screen interface specification]
- * (http://www.w3.org/TR/cssom-view/#screen) from W3C.
- */
- @DomName('Window.screenY')
- @DocsEditable()
- int get screenY => wrap_jso(JS("int", "#.screenY", this.raw));
-
- /**
- * The current window.
- *
- * ## Other resources
- *
- * * [Window.self]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.self) from MDN.
- */
- @DomName('Window.self')
- @DocsEditable()
- WindowBase get self => _convertNativeToDart_Window(this._get_self);
- @JSName('self')
- /**
- * The current window.
- *
- * ## Other resources
- *
- * * [Window.self]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.self) from MDN.
- */
- @DomName('Window.self')
- @DocsEditable()
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- dynamic get _get_self => wrap_jso(JS("dynamic", "#.self", this.raw));
-
- /// *Deprecated*.
- @DomName('Window.status')
- @DocsEditable()
- String get status => wrap_jso(JS("String", "#.status", this.raw));
- /// *Deprecated*.
- @DomName('Window.status')
- @DocsEditable()
- void set status(String val) => JS("void", "#.status = #", this.raw, unwrap_jso(val));
-
- @DomName('Window.top')
- @DocsEditable()
- WindowBase get top => _convertNativeToDart_Window(this._get_top);
- @JSName('top')
- @DomName('Window.top')
- @DocsEditable()
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- dynamic get _get_top => wrap_jso(JS("dynamic", "#.top", this.raw));
-
- /**
- * The current window.
- *
- * ## Other resources
- *
- * * [Window.window]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.window) from MDN.
- */
- @DomName('Window.window')
- @DocsEditable()
- WindowBase get window => _convertNativeToDart_Window(this._get_window);
- @JSName('window')
- /**
- * The current window.
- *
- * ## Other resources
- *
- * * [Window.window]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.window) from MDN.
- */
- @DomName('Window.window')
- @DocsEditable()
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- dynamic get _get_window => wrap_jso(JS("dynamic", "#.window", this.raw));
-
- @DomName('Window.__getter__')
- @DocsEditable()
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- WindowBase __getter__(index_OR_name) {
- if ((index_OR_name is int)) {
- return _convertNativeToDart_Window(__getter___1(index_OR_name));
- }
- if ((index_OR_name is String)) {
- return _convertNativeToDart_Window(__getter___2(index_OR_name));
- }
- throw new ArgumentError("Incorrect number or type of arguments");
- }
- @JSName('__getter__')
- @DomName('Window.__getter__')
- @DocsEditable()
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- __getter___1(int index) => wrap_jso(JS("", "#.raw.__getter__(#)", this, unwrap_jso(index)));
- @JSName('__getter__')
- @DomName('Window.__getter__')
- @DocsEditable()
- @Creates('Window|=Object')
- @Returns('Window|=Object')
- __getter___2(String name) => wrap_jso(JS("", "#.raw.__getter__(#)", this, unwrap_jso(name)));
-
- /**
- * Displays a modal alert to the user.
- *
- * ## Other resources
- *
- * * [User prompts]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#user-prompts)
- * from WHATWG.
- */
- @DomName('Window.alert')
- @DocsEditable()
- void alert([String message]) {
- if (message != null) {
- _alert_1(message);
- return;
- }
- _alert_2();
- return;
- }
- @JSName('alert')
- /**
- * Displays a modal alert to the user.
- *
- * ## Other resources
- *
- * * [User prompts]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#user-prompts)
- * from WHATWG.
- */
- @DomName('Window.alert')
- @DocsEditable()
- void _alert_1(message) => wrap_jso(JS("void ", "#.raw.alert(#)", this, unwrap_jso(message)));
- @JSName('alert')
- /**
- * Displays a modal alert to the user.
- *
- * ## Other resources
- *
- * * [User prompts]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#user-prompts)
- * from WHATWG.
- */
- @DomName('Window.alert')
- @DocsEditable()
- void _alert_2() => wrap_jso(JS("void ", "#.raw.alert()", this));
-
- @DomName('Window.close')
- @DocsEditable()
- void close() {
- _close_1();
- return;
- }
- @JSName('close')
- @DomName('Window.close')
- @DocsEditable()
- void _close_1() => wrap_jso(JS("void ", "#.raw.close()", this));
-
- /**
- * Displays a modal OK/Cancel prompt to the user.
- *
- * ## Other resources
- *
- * * [User prompts]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#user-prompts)
- * from WHATWG.
- */
- @DomName('Window.confirm')
- @DocsEditable()
- bool confirm([String message]) {
- if (message != null) {
- return _confirm_1(message);
- }
- return _confirm_2();
- }
- @JSName('confirm')
- /**
- * Displays a modal OK/Cancel prompt to the user.
- *
- * ## Other resources
- *
- * * [User prompts]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#user-prompts)
- * from WHATWG.
- */
- @DomName('Window.confirm')
- @DocsEditable()
- bool _confirm_1(message) => wrap_jso(JS("bool ", "#.raw.confirm(#)", this, unwrap_jso(message)));
- @JSName('confirm')
- /**
- * Displays a modal OK/Cancel prompt to the user.
- *
- * ## Other resources
- *
- * * [User prompts]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#user-prompts)
- * from WHATWG.
- */
- @DomName('Window.confirm')
- @DocsEditable()
- bool _confirm_2() => wrap_jso(JS("bool ", "#.raw.confirm()", this));
-
- /**
- * Finds text in this window.
- *
- * ## Other resources
- *
- * * [Window.find]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.find) from MDN.
- */
- @DomName('Window.find')
- @DocsEditable()
- @Experimental() // non-standard
- bool find(String string, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) {
- return _find_1(string, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog);
- }
- @JSName('find')
- /**
- * Finds text in this window.
- *
- * ## Other resources
- *
- * * [Window.find]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.find) from MDN.
- */
- @DomName('Window.find')
- @DocsEditable()
- @Experimental() // non-standard
- bool _find_1(string, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog) => wrap_jso(JS("bool ", "#.raw.find(#, #, #, #, #, #, #)", this, unwrap_jso(string), unwrap_jso(caseSensitive), unwrap_jso(backwards), unwrap_jso(wrap), unwrap_jso(wholeWord), unwrap_jso(searchInFrames), unwrap_jso(showDialog)));
-
- @DomName('Window.getComputedStyle')
- @DocsEditable()
- CssStyleDeclaration _getComputedStyle(Element element, String pseudoElement) {
- return _getComputedStyle_1(element, pseudoElement);
- }
- @JSName('getComputedStyle')
- @DomName('Window.getComputedStyle')
- @DocsEditable()
- CssStyleDeclaration _getComputedStyle_1(Element element, pseudoElement) => wrap_jso(JS("CssStyleDeclaration ", "#.raw.getComputedStyle(#, #)", this, unwrap_jso(element), unwrap_jso(pseudoElement)));
-
- /**
- * Moves this window.
- *
- * x and y can be negative.
- *
- * ## Other resources
- *
- * * [Window.moveBy]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.moveBy) from MDN.
- * * [Window.moveBy]
- * (http://dev.w3.org/csswg/cssom-view/#dom-window-moveby) from W3C.
- */
- @DomName('Window.moveBy')
- @DocsEditable()
- void moveBy(num x, num y) {
- _moveBy_1(x, y);
- return;
- }
- @JSName('moveBy')
- /**
- * Moves this window.
- *
- * x and y can be negative.
- *
- * ## Other resources
- *
- * * [Window.moveBy]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.moveBy) from MDN.
- * * [Window.moveBy]
- * (http://dev.w3.org/csswg/cssom-view/#dom-window-moveby) from W3C.
- */
- @DomName('Window.moveBy')
- @DocsEditable()
- void _moveBy_1(x, y) => wrap_jso(JS("void ", "#.raw.moveBy(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
-
- @DomName('Window.moveTo')
- @DocsEditable()
- void _moveTo(num x, num y) {
- _moveTo_1(x, y);
- return;
- }
- @JSName('moveTo')
- @DomName('Window.moveTo')
- @DocsEditable()
- void _moveTo_1(x, y) => wrap_jso(JS("void ", "#.raw.moveTo(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
-
- /**
- * Opens the print dialog for this window.
- *
- * ## Other resources
- *
- * * [Window.print]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.print) from MDN.
- */
- @DomName('Window.print')
- @DocsEditable()
- void print() {
- _print_1();
- return;
- }
- @JSName('print')
- /**
- * Opens the print dialog for this window.
- *
- * ## Other resources
- *
- * * [Window.print]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.print) from MDN.
- */
- @DomName('Window.print')
- @DocsEditable()
- void _print_1() => wrap_jso(JS("void ", "#.raw.print()", this));
-
- /**
- * Resizes this window by an offset.
- *
- * ## Other resources
- *
- * * [Window resizeBy] (http://docs.webplatform.org/wiki/dom/methods/resizeBy)
- * from WebPlatform.org.
- */
- @DomName('Window.resizeBy')
- @DocsEditable()
- void resizeBy(num x, num y) {
- _resizeBy_1(x, y);
- return;
- }
- @JSName('resizeBy')
- /**
- * Resizes this window by an offset.
- *
- * ## Other resources
- *
- * * [Window resizeBy] (http://docs.webplatform.org/wiki/dom/methods/resizeBy)
- * from WebPlatform.org.
- */
- @DomName('Window.resizeBy')
- @DocsEditable()
- void _resizeBy_1(x, y) => wrap_jso(JS("void ", "#.raw.resizeBy(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
-
- /**
- * Resizes this window to a specific width and height.
- *
- * ## Other resources
- *
- * * [Window resizeTo] (http://docs.webplatform.org/wiki/dom/methods/resizeTo)
- * from WebPlatform.org.
- */
- @DomName('Window.resizeTo')
- @DocsEditable()
- void resizeTo(num width, num height) {
- _resizeTo_1(width, height);
- return;
- }
- @JSName('resizeTo')
- /**
- * Resizes this window to a specific width and height.
- *
- * ## Other resources
- *
- * * [Window resizeTo] (http://docs.webplatform.org/wiki/dom/methods/resizeTo)
- * from WebPlatform.org.
- */
- @DomName('Window.resizeTo')
- @DocsEditable()
- void _resizeTo_1(width, height) => wrap_jso(JS("void ", "#.raw.resizeTo(#, #)", this, unwrap_jso(width), unwrap_jso(height)));
-
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scrollTo].
- *
- * ## Other resources
- *
- * * [Window scroll] (http://docs.webplatform.org/wiki/dom/methods/scroll)
- * from WebPlatform.org.
- */
- @DomName('Window.scroll')
- @DocsEditable()
- void scroll(x, y, [Map scrollOptions]) {
- if ((y is num) && (x is num) && scrollOptions == null) {
- _scroll_1(x, y);
- return;
- }
- if (scrollOptions != null && (y is num) && (x is num)) {
- var scrollOptions_1 = convertDartToNative_Dictionary(scrollOptions);
- _scroll_2(x, y, scrollOptions_1);
- return;
- }
- if ((y is int) && (x is int) && scrollOptions == null) {
- _scroll_3(x, y);
- return;
- }
- if (scrollOptions != null && (y is int) && (x is int)) {
- var scrollOptions_1 = convertDartToNative_Dictionary(scrollOptions);
- _scroll_4(x, y, scrollOptions_1);
- return;
- }
- throw new ArgumentError("Incorrect number or type of arguments");
- }
- @JSName('scroll')
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scrollTo].
- *
- * ## Other resources
- *
- * * [Window scroll] (http://docs.webplatform.org/wiki/dom/methods/scroll)
- * from WebPlatform.org.
- */
- @DomName('Window.scroll')
- @DocsEditable()
- void _scroll_1(num x, num y) => wrap_jso(JS("void ", "#.raw.scroll(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
- @JSName('scroll')
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scrollTo].
- *
- * ## Other resources
- *
- * * [Window scroll] (http://docs.webplatform.org/wiki/dom/methods/scroll)
- * from WebPlatform.org.
- */
- @DomName('Window.scroll')
- @DocsEditable()
- void _scroll_2(num x, num y, scrollOptions) => wrap_jso(JS("void ", "#.raw.scroll(#, #, #)", this, unwrap_jso(x), unwrap_jso(y), unwrap_jso(scrollOptions)));
- @JSName('scroll')
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scrollTo].
- *
- * ## Other resources
- *
- * * [Window scroll] (http://docs.webplatform.org/wiki/dom/methods/scroll)
- * from WebPlatform.org.
- */
- @DomName('Window.scroll')
- @DocsEditable()
- void _scroll_3(int x, int y) => wrap_jso(JS("void ", "#.raw.scroll(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
- @JSName('scroll')
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scrollTo].
- *
- * ## Other resources
- *
- * * [Window scroll] (http://docs.webplatform.org/wiki/dom/methods/scroll)
- * from WebPlatform.org.
- */
- @DomName('Window.scroll')
- @DocsEditable()
- void _scroll_4(int x, int y, scrollOptions) => wrap_jso(JS("void ", "#.raw.scroll(#, #, #)", this, unwrap_jso(x), unwrap_jso(y), unwrap_jso(scrollOptions)));
-
- /**
- * Scrolls the page horizontally and vertically by an offset.
- *
- * ## Other resources
- *
- * * [Window scrollBy] (http://docs.webplatform.org/wiki/dom/methods/scrollBy)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollBy')
- @DocsEditable()
- void scrollBy(x, y, [Map scrollOptions]) {
- if ((y is num) && (x is num) && scrollOptions == null) {
- _scrollBy_1(x, y);
- return;
- }
- if (scrollOptions != null && (y is num) && (x is num)) {
- var scrollOptions_1 = convertDartToNative_Dictionary(scrollOptions);
- _scrollBy_2(x, y, scrollOptions_1);
- return;
- }
- if ((y is int) && (x is int) && scrollOptions == null) {
- _scrollBy_3(x, y);
- return;
- }
- if (scrollOptions != null && (y is int) && (x is int)) {
- var scrollOptions_1 = convertDartToNative_Dictionary(scrollOptions);
- _scrollBy_4(x, y, scrollOptions_1);
- return;
- }
- throw new ArgumentError("Incorrect number or type of arguments");
- }
- @JSName('scrollBy')
- /**
- * Scrolls the page horizontally and vertically by an offset.
- *
- * ## Other resources
- *
- * * [Window scrollBy] (http://docs.webplatform.org/wiki/dom/methods/scrollBy)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollBy')
- @DocsEditable()
- void _scrollBy_1(num x, num y) => wrap_jso(JS("void ", "#.raw.scrollBy(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
- @JSName('scrollBy')
- /**
- * Scrolls the page horizontally and vertically by an offset.
- *
- * ## Other resources
- *
- * * [Window scrollBy] (http://docs.webplatform.org/wiki/dom/methods/scrollBy)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollBy')
- @DocsEditable()
- void _scrollBy_2(num x, num y, scrollOptions) => wrap_jso(JS("void ", "#.raw.scrollBy(#, #, #)", this, unwrap_jso(x), unwrap_jso(y), unwrap_jso(scrollOptions)));
- @JSName('scrollBy')
- /**
- * Scrolls the page horizontally and vertically by an offset.
- *
- * ## Other resources
- *
- * * [Window scrollBy] (http://docs.webplatform.org/wiki/dom/methods/scrollBy)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollBy')
- @DocsEditable()
- void _scrollBy_3(int x, int y) => wrap_jso(JS("void ", "#.raw.scrollBy(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
- @JSName('scrollBy')
- /**
- * Scrolls the page horizontally and vertically by an offset.
- *
- * ## Other resources
- *
- * * [Window scrollBy] (http://docs.webplatform.org/wiki/dom/methods/scrollBy)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollBy')
- @DocsEditable()
- void _scrollBy_4(int x, int y, scrollOptions) => wrap_jso(JS("void ", "#.raw.scrollBy(#, #, #)", this, unwrap_jso(x), unwrap_jso(y), unwrap_jso(scrollOptions)));
-
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scroll].
- *
- * ## Other resources
- *
- * * [Window scrollTo] (http://docs.webplatform.org/wiki/dom/methods/scrollTo)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollTo')
- @DocsEditable()
- void scrollTo(x, y, [Map scrollOptions]) {
- if ((y is num) && (x is num) && scrollOptions == null) {
- _scrollTo_1(x, y);
- return;
- }
- if (scrollOptions != null && (y is num) && (x is num)) {
- var scrollOptions_1 = convertDartToNative_Dictionary(scrollOptions);
- _scrollTo_2(x, y, scrollOptions_1);
- return;
- }
- if ((y is int) && (x is int) && scrollOptions == null) {
- _scrollTo_3(x, y);
- return;
- }
- if (scrollOptions != null && (y is int) && (x is int)) {
- var scrollOptions_1 = convertDartToNative_Dictionary(scrollOptions);
- _scrollTo_4(x, y, scrollOptions_1);
- return;
- }
- throw new ArgumentError("Incorrect number or type of arguments");
- }
- @JSName('scrollTo')
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scroll].
- *
- * ## Other resources
- *
- * * [Window scrollTo] (http://docs.webplatform.org/wiki/dom/methods/scrollTo)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollTo')
- @DocsEditable()
- void _scrollTo_1(num x, num y) => wrap_jso(JS("void ", "#.raw.scrollTo(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
- @JSName('scrollTo')
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scroll].
- *
- * ## Other resources
- *
- * * [Window scrollTo] (http://docs.webplatform.org/wiki/dom/methods/scrollTo)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollTo')
- @DocsEditable()
- void _scrollTo_2(num x, num y, scrollOptions) => wrap_jso(JS("void ", "#.raw.scrollTo(#, #, #)", this, unwrap_jso(x), unwrap_jso(y), unwrap_jso(scrollOptions)));
- @JSName('scrollTo')
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scroll].
- *
- * ## Other resources
- *
- * * [Window scrollTo] (http://docs.webplatform.org/wiki/dom/methods/scrollTo)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollTo')
- @DocsEditable()
- void _scrollTo_3(int x, int y) => wrap_jso(JS("void ", "#.raw.scrollTo(#, #)", this, unwrap_jso(x), unwrap_jso(y)));
- @JSName('scrollTo')
- /**
- * Scrolls the page horizontally and vertically to a specific point.
- *
- * This method is identical to [scroll].
- *
- * ## Other resources
- *
- * * [Window scrollTo] (http://docs.webplatform.org/wiki/dom/methods/scrollTo)
- * from WebPlatform.org.
- */
- @DomName('Window.scrollTo')
- @DocsEditable()
- void _scrollTo_4(int x, int y, scrollOptions) => wrap_jso(JS("void ", "#.raw.scrollTo(#, #, #)", this, unwrap_jso(x), unwrap_jso(y), unwrap_jso(scrollOptions)));
-
- /**
- * Opens a new page as a modal dialog.
- *
- * ## Other resources
- *
- * * [Dialogs implemented using separate documents]
- * (http://www.w3.org/html/wg/drafts/html/master/webappapis.html#dialogs-implemented-using-separate-documents)
- * from W3C.
- */
- @DomName('Window.showModalDialog')
- @DocsEditable()
- @Creates('Null')
- Object showModalDialog(String url, [Object dialogArgs, String featureArgs]) {
- if (featureArgs != null) {
- return _showModalDialog_1(url, dialogArgs, featureArgs);
- }
- if (dialogArgs != null) {
- return _showModalDialog_2(url, dialogArgs);
- }
- return _showModalDialog_3(url);
- }
- @JSName('showModalDialog')
- /**
- * Opens a new page as a modal dialog.
- *
- * ## Other resources
- *
- * * [Dialogs implemented using separate documents]
- * (http://www.w3.org/html/wg/drafts/html/master/webappapis.html#dialogs-implemented-using-separate-documents)
- * from W3C.
- */
- @DomName('Window.showModalDialog')
- @DocsEditable()
- @Creates('Null')
- Object _showModalDialog_1(url, dialogArgs, featureArgs) => wrap_jso(JS("Object ", "#.raw.showModalDialog(#, #, #)", this, unwrap_jso(url), unwrap_jso(dialogArgs), unwrap_jso(featureArgs)));
- @JSName('showModalDialog')
- /**
- * Opens a new page as a modal dialog.
- *
- * ## Other resources
- *
- * * [Dialogs implemented using separate documents]
- * (http://www.w3.org/html/wg/drafts/html/master/webappapis.html#dialogs-implemented-using-separate-documents)
- * from W3C.
- */
- @DomName('Window.showModalDialog')
- @DocsEditable()
- @Creates('Null')
- Object _showModalDialog_2(url, dialogArgs) => wrap_jso(JS("Object ", "#.raw.showModalDialog(#, #)", this, unwrap_jso(url), unwrap_jso(dialogArgs)));
- @JSName('showModalDialog')
- /**
- * Opens a new page as a modal dialog.
- *
- * ## Other resources
- *
- * * [Dialogs implemented using separate documents]
- * (http://www.w3.org/html/wg/drafts/html/master/webappapis.html#dialogs-implemented-using-separate-documents)
- * from W3C.
- */
- @DomName('Window.showModalDialog')
- @DocsEditable()
- @Creates('Null')
- Object _showModalDialog_3(url) => wrap_jso(JS("Object ", "#.raw.showModalDialog(#)", this, unwrap_jso(url)));
-
- /**
- * Stops the window from loading.
- *
- * ## Other resources
- *
- * * [The Window object]
- * (http://www.w3.org/html/wg/drafts/html/master/browsers.html#the-window-object)
- * from W3C.
- */
- @DomName('Window.stop')
- @DocsEditable()
- void stop() {
- _stop_1();
- return;
- }
- @JSName('stop')
- /**
- * Stops the window from loading.
- *
- * ## Other resources
- *
- * * [The Window object]
- * (http://www.w3.org/html/wg/drafts/html/master/browsers.html#the-window-object)
- * from W3C.
- */
- @DomName('Window.stop')
- @DocsEditable()
- void _stop_1() => wrap_jso(JS("void ", "#.raw.stop()", this));
-
- /// Stream of `contentloaded` events handled by this [Window].
- @DomName('Window.onDOMContentLoaded')
- @DocsEditable()
- Stream<Event> get onContentLoaded => contentLoadedEvent.forTarget(this);
-
- /// Stream of `search` events handled by this [Window].
- @DomName('Window.onsearch')
- @DocsEditable()
- // http://www.w3.org/TR/html-markup/input.search.html
- @Experimental()
- Stream<Event> get onSearch => Element.searchEvent.forTarget(this);
-
-
-
- /**
- * Moves this window to a specific position.
- *
- * x and y can be negative.
- *
- * ## Other resources
- *
- * * [Window.moveTo]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.moveTo) from MDN.
- * * [Window.moveTo]
- * (http://dev.w3.org/csswg/cssom-view/#dom-window-moveto) from W3C.
- */
- void moveTo(Point p) {
- _moveTo(p.x, p.y);
- }
-
- @DomName('Window.pageXOffset')
- @DocsEditable()
- int get pageXOffset => JS('num', '#.pageXOffset', this.raw).round();
-
- @DomName('Window.pageYOffset')
- @DocsEditable()
- int get pageYOffset => JS('num', '#.pageYOffset', this.raw).round();
-
- /**
- * The distance this window has been scrolled horizontally.
- *
- * ## Other resources
- *
- * * [The Screen interface specification]
- * (http://www.w3.org/TR/cssom-view/#screen) from W3C.
- * * [scrollX]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollX) from MDN.
- */
- @DomName('Window.scrollX')
- @DocsEditable()
- int get scrollX => JS('bool', '("scrollX" in #)', this.raw) ?
- JS('num', '#.scrollX', this.raw).round() :
- document.documentElement.scrollLeft;
-
- /**
- * The distance this window has been scrolled vertically.
- *
- * ## Other resources
- *
- * * [The Screen interface specification]
- * (http://www.w3.org/TR/cssom-view/#screen) from W3C.
- * * [scrollY]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY) from MDN.
- */
- @DomName('Window.scrollY')
- @DocsEditable()
- int get scrollY => JS('bool', '("scrollY" in #)', this.raw) ?
- JS('num', '#.scrollY', this.raw).round() :
- document.documentElement.scrollTop;
-
- void postMessage(var message, String targetOrigin, [List messagePorts]) {
- if (messagePorts != null) {
- throw 'postMessage unsupported';
- }
- JS('void', '#.postMessage(#, #)', this.raw, message, targetOrigin);
- }
-}
-
-
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('Attr')
-@Native("Attr")
-class _Attr extends Node {
- // To suppress missing implicit constructor warnings.
- factory _Attr._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static _Attr internalCreate_Attr() {
- return new _Attr.internal_();
- }
-
- @Deprecated("Internal Use Only")
- _Attr.internal_() : super.internal_();
-
-
- // Use implementation from Node.
- // final String _localName;
-
- @DomName('Attr.name')
- @DocsEditable()
- String get name => wrap_jso(JS("String", "#.name", this.raw));
-
- // Use implementation from Node.
- // final String _namespaceUri;
-
- // Use implementation from Node.
- // final String nodeValue;
-
- // Shadowing definition.
- String get text => wrap_jso(JS("String", "#.raw.textContent", this));
-
- set text(String value) {
- JS("void", "#.raw.textContent = #", this, unwrap_jso(value));
- }
-
- @DomName('Attr.value')
- @DocsEditable()
- String get value => wrap_jso(JS("String", "#.value", this.raw));
- @DomName('Attr.value')
- @DocsEditable()
- void set value(String val) => JS("void", "#.value = #", this.raw, unwrap_jso(val));
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('ClientRect')
-@Native("ClientRect")
-class _ClientRect extends DartHtmlDomObject implements Rectangle {
-
- // NOTE! All code below should be common with RectangleBase.
- String toString() {
- return 'Rectangle ($left, $top) $width x $height';
- }
-
- bool operator ==(other) {
- if (other is !Rectangle) return false;
- return left == other.left && top == other.top && width == other.width &&
- height == other.height;
- }
-
- int get hashCode => _JenkinsSmiHash.hash4(left.hashCode, top.hashCode,
- width.hashCode, height.hashCode);
-
- /**
- * Computes the intersection of `this` and [other].
- *
- * The intersection of two axis-aligned rectangles, if any, is always another
- * axis-aligned rectangle.
- *
- * Returns the intersection of this and `other`, or null if they don't
- * intersect.
- */
- Rectangle intersection(Rectangle other) {
- var x0 = max(left, other.left);
- var x1 = min(left + width, other.left + other.width);
-
- if (x0 <= x1) {
- var y0 = max(top, other.top);
- var y1 = min(top + height, other.top + other.height);
-
- if (y0 <= y1) {
- return new Rectangle(x0, y0, x1 - x0, y1 - y0);
- }
- }
- return null;
- }
-
-
- /**
- * Returns true if `this` intersects [other].
- */
- bool intersects(Rectangle<num> other) {
- return (left <= other.left + other.width &&
- other.left <= left + width &&
- top <= other.top + other.height &&
- other.top <= top + height);
- }
-
- /**
- * Returns a new rectangle which completely contains `this` and [other].
- */
- Rectangle boundingBox(Rectangle other) {
- var right = max(this.left + this.width, other.left + other.width);
- var bottom = max(this.top + this.height, other.top + other.height);
-
- var left = min(this.left, other.left);
- var top = min(this.top, other.top);
-
- return new Rectangle(left, top, right - left, bottom - top);
- }
-
- /**
- * Tests whether `this` entirely contains [another].
- */
- bool containsRectangle(Rectangle<num> another) {
- return left <= another.left &&
- left + width >= another.left + another.width &&
- top <= another.top &&
- top + height >= another.top + another.height;
- }
-
- /**
- * Tests whether [another] is inside or along the edges of `this`.
- */
- bool containsPoint(Point<num> another) {
- return another.x >= left &&
- another.x <= left + width &&
- another.y >= top &&
- another.y <= top + height;
- }
-
- Point get topLeft => new Point(this.left, this.top);
- Point get topRight => new Point(this.left + this.width, this.top);
- Point get bottomRight => new Point(this.left + this.width,
- this.top + this.height);
- Point get bottomLeft => new Point(this.left,
- this.top + this.height);
-
- // To suppress missing implicit constructor warnings.
- factory _ClientRect._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static _ClientRect internalCreate_ClientRect() {
- return new _ClientRect.internal_();
- }
-
- @Deprecated("Internal Use Only")
- _ClientRect.internal_() { }
-
-
- @DomName('ClientRect.bottom')
- @DocsEditable()
- double get bottom => wrap_jso(JS("double", "#.bottom", this.raw));
-
- @DomName('ClientRect.height')
- @DocsEditable()
- double get height => wrap_jso(JS("double", "#.height", this.raw));
-
- @DomName('ClientRect.left')
- @DocsEditable()
- double get left => wrap_jso(JS("double", "#.left", this.raw));
-
- @DomName('ClientRect.right')
- @DocsEditable()
- double get right => wrap_jso(JS("double", "#.right", this.raw));
-
- @DomName('ClientRect.top')
- @DocsEditable()
- double get top => wrap_jso(JS("double", "#.top", this.raw));
-
- @DomName('ClientRect.width')
- @DocsEditable()
- double get width => wrap_jso(JS("double", "#.width", this.raw));
-}
-
-/**
- * This is the [Jenkins hash function][1] but using masking to keep
- * values in SMI range.
- *
- * [1]: http://en.wikipedia.org/wiki/Jenkins_hash_function
- *
- * Use:
- * Hash each value with the hash of the previous value, then get the final
- * hash by calling finish.
- *
- * var hash = 0;
- * for (var value in values) {
- * hash = JenkinsSmiHash.combine(hash, value.hashCode);
- * }
- * hash = JenkinsSmiHash.finish(hash);
- */
-class _JenkinsSmiHash {
- // TODO(11617): This class should be optimized and standardized elsewhere.
-
- static int combine(int hash, int value) {
- hash = 0x1fffffff & (hash + value);
- hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
- return hash ^ (hash >> 6);
- }
-
- static int finish(int hash) {
- hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
- hash = hash ^ (hash >> 11);
- return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
- }
-
- static int hash2(a, b) => finish(combine(combine(0, a), b));
-
- static int hash4(a, b, c, d) =>
- finish(combine(combine(combine(combine(0, a), b), c), d));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('NamedNodeMap')
-// http://dom.spec.whatwg.org/#namednodemap
-@deprecated // deprecated
-@Native("NamedNodeMap,MozNamedAttrMap")
-class _NamedNodeMap extends DartHtmlDomObject with ListMixin<Node>, ImmutableListMixin<Node> implements JavaScriptIndexingBehavior, List<Node> {
- // To suppress missing implicit constructor warnings.
- factory _NamedNodeMap._() { throw new UnsupportedError("Not supported"); }
-
- @Deprecated("Internal Use Only")
- static _NamedNodeMap internalCreate_NamedNodeMap() {
- return new _NamedNodeMap.internal_();
- }
-
- @Deprecated("Internal Use Only")
- _NamedNodeMap.internal_() { }
-
- bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
- int get hashCode => unwrap_jso(this).hashCode;
-
- @DomName('NamedNodeMap.length')
- @DocsEditable()
- int get length => wrap_jso(JS("int", "#.length", this.raw));
-
- Node operator[](int index) {
- if (JS("bool", "# >>> 0 !== # || # >= #", index,
- index, index, length))
- throw new RangeError.index(index, this);
- return wrap_jso(JS("Node", "#[#]", this.raw, index));
- }
- void operator[]=(int index, Node value) {
- throw new UnsupportedError("Cannot assign element of immutable List.");
- }
- // -- start List<Node> mixins.
- // Node is the element type.
-
-
- set length(int value) {
- throw new UnsupportedError("Cannot resize immutable List.");
- }
-
- Node get first {
- if (this.length > 0) {
- return wrap_jso(JS('Node', '#[0]', this.raw));
- }
- throw new StateError("No elements");
- }
-
- Node get last {
- int len = this.length;
- if (len > 0) {
- return wrap_jso(JS('Node', '#[#]', this.raw, len - 1));
- }
- throw new StateError("No elements");
- }
-
- Node get single {
- int len = this.length;
- if (len == 1) {
- return wrap_jso(JS('Node', '#[0]', this.raw));
- }
- if (len == 0) throw new StateError("No elements");
- throw new StateError("More than one element");
- }
-
- Node elementAt(int index) => this[index];
- // -- end List<Node> mixins.
-
- @DomName('NamedNodeMap.__getter__')
- @DocsEditable()
- Node __getter__(String name) {
- return __getter___1(name);
- }
- @JSName('__getter__')
- @DomName('NamedNodeMap.__getter__')
- @DocsEditable()
- Node __getter___1(name) => wrap_jso(JS("Node ", "#.raw.__getter__(#)", this, unwrap_jso(name)));
-
- @DomName('NamedNodeMap.getNamedItem')
- @DocsEditable()
- Node getNamedItem(String name) {
- return _getNamedItem_1(name);
- }
- @JSName('getNamedItem')
- @DomName('NamedNodeMap.getNamedItem')
- @DocsEditable()
- Node _getNamedItem_1(name) => wrap_jso(JS("Node ", "#.raw.getNamedItem(#)", this, unwrap_jso(name)));
-
- @DomName('NamedNodeMap.getNamedItemNS')
- @DocsEditable()
- Node getNamedItemNS(String namespaceURI, String localName) {
- return _getNamedItemNS_1(namespaceURI, localName);
- }
- @JSName('getNamedItemNS')
- @DomName('NamedNodeMap.getNamedItemNS')
- @DocsEditable()
- Node _getNamedItemNS_1(namespaceURI, localName) => wrap_jso(JS("Node ", "#.raw.getNamedItemNS(#, #)", this, unwrap_jso(namespaceURI), unwrap_jso(localName)));
-
- @DomName('NamedNodeMap.item')
- @DocsEditable()
- Node item(int index) {
- return _item_1(index);
- }
- @JSName('item')
- @DomName('NamedNodeMap.item')
- @DocsEditable()
- Node _item_1(index) => wrap_jso(JS("Node ", "#.raw.item(#)", this, unwrap_jso(index)));
-
- @DomName('NamedNodeMap.removeNamedItem')
- @DocsEditable()
- Node removeNamedItem(String name) {
- return _removeNamedItem_1(name);
- }
- @JSName('removeNamedItem')
- @DomName('NamedNodeMap.removeNamedItem')
- @DocsEditable()
- Node _removeNamedItem_1(name) => wrap_jso(JS("Node ", "#.raw.removeNamedItem(#)", this, unwrap_jso(name)));
-
- @DomName('NamedNodeMap.removeNamedItemNS')
- @DocsEditable()
- Node removeNamedItemNS(String namespaceURI, String localName) {
- return _removeNamedItemNS_1(namespaceURI, localName);
- }
- @JSName('removeNamedItemNS')
- @DomName('NamedNodeMap.removeNamedItemNS')
- @DocsEditable()
- Node _removeNamedItemNS_1(namespaceURI, localName) => wrap_jso(JS("Node ", "#.raw.removeNamedItemNS(#, #)", this, unwrap_jso(namespaceURI), unwrap_jso(localName)));
-
- @DomName('NamedNodeMap.setNamedItem')
- @DocsEditable()
- Node setNamedItem(Node node) {
- return _setNamedItem_1(node);
- }
- @JSName('setNamedItem')
- @DomName('NamedNodeMap.setNamedItem')
- @DocsEditable()
- Node _setNamedItem_1(Node node) => wrap_jso(JS("Node ", "#.raw.setNamedItem(#)", this, unwrap_jso(node)));
-
- @DomName('NamedNodeMap.setNamedItemNS')
- @DocsEditable()
- Node setNamedItemNS(Node node) {
- return _setNamedItemNS_1(node);
- }
- @JSName('setNamedItemNS')
- @DomName('NamedNodeMap.setNamedItemNS')
- @DocsEditable()
- Node _setNamedItemNS_1(Node node) => wrap_jso(JS("Node ", "#.raw.setNamedItemNS(#)", this, unwrap_jso(node)));
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-@DocsEditable()
-@DomName('XMLHttpRequestProgressEvent')
-@Experimental() // nonstandard
-@Native("XMLHttpRequestProgressEvent")
-class _XMLHttpRequestProgressEvent extends ProgressEvent {
- // To suppress missing implicit constructor warnings.
- factory _XMLHttpRequestProgressEvent._() { throw new UnsupportedError("Not supported"); }
-
-
- @Deprecated("Internal Use Only")
- static _XMLHttpRequestProgressEvent internalCreate_XMLHttpRequestProgressEvent() {
- return new _XMLHttpRequestProgressEvent.internal_();
- }
-
- @Deprecated("Internal Use Only")
- _XMLHttpRequestProgressEvent.internal_() : super.internal_();
-
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-abstract class _AttributeMap implements Map<String, String> {
- final Element _element;
-
- _AttributeMap(this._element);
-
- void addAll(Map<String, String> other) {
- other.forEach((k, v) { this[k] = v; });
- }
-
- bool containsValue(Object value) {
- for (var v in this.values) {
- if (value == v) {
- return true;
- }
- }
- return false;
- }
-
- String putIfAbsent(String key, String ifAbsent()) {
- if (!containsKey(key)) {
- this[key] = ifAbsent();
- }
- return this[key];
- }
-
- void clear() {
- for (var key in keys) {
- remove(key);
- }
- }
-
- void forEach(void f(String key, String value)) {
- for (var key in keys) {
- var value = this[key];
- f(key, value);
- }
- }
-
- Iterable<String> get keys {
- // TODO: generate a lazy collection instead.
- var attributes = _element._attributes;
- var keys = new List<String>();
- for (int i = 0, len = attributes.length; i < len; i++) {
- if (_matches(attributes[i])) {
- keys.add(attributes[i].name);
- }
- }
- return keys;
- }
-
- Iterable<String> get values {
- // TODO: generate a lazy collection instead.
- var attributes = _element._attributes;
- var values = new List<String>();
- for (int i = 0, len = attributes.length; i < len; i++) {
- if (_matches(attributes[i])) {
- values.add(attributes[i].value);
- }
- }
- return values;
- }
-
- /**
- * Returns true if there is no {key, value} pair in the map.
- */
- bool get isEmpty {
- return length == 0;
- }
-
- /**
- * Returns true if there is at least one {key, value} pair in the map.
- */
- bool get isNotEmpty => !isEmpty;
-
- /**
- * Checks to see if the node should be included in this map.
- */
- bool _matches(Node node);
-}
-
-/**
- * Wrapper to expose [Element.attributes] as a typed map.
- */
-class _ElementAttributeMap extends _AttributeMap {
-
- _ElementAttributeMap(Element element): super(element);
-
- bool containsKey(Object key) {
- return _element._hasAttribute(key);
- }
-
- String operator [](Object key) {
- return _element.getAttribute(key);
- }
-
- void operator []=(String key, String value) {
- _element.setAttribute(key, value);
- }
-
- String remove(Object key) {
- String value = _element.getAttribute(key);
- _element._removeAttribute(key);
- return value;
- }
-
- /**
- * The number of {key, value} pairs in the map.
- */
- int get length {
- return keys.length;
- }
-
- bool _matches(Node node) => node._namespaceUri == null;
-}
-
-/**
- * Wrapper to expose namespaced attributes as a typed map.
- */
-class _NamespacedAttributeMap extends _AttributeMap {
-
- final String _namespace;
-
- _NamespacedAttributeMap(Element element, this._namespace): super(element);
-
- bool containsKey(Object key) {
- return _element._hasAttributeNS(_namespace, key);
- }
-
- String operator [](Object key) {
- return _element.getAttributeNS(_namespace, key);
- }
-
- void operator []=(String key, String value) {
- _element.setAttributeNS(_namespace, key, value);
- }
-
- String remove(Object key) {
- String value = this[key];
- _element._removeAttributeNS(_namespace, key);
- return value;
- }
-
- /**
- * The number of {key, value} pairs in the map.
- */
- int get length {
- return keys.length;
- }
-
- bool _matches(Node node) => node._namespaceUri == _namespace;
-}
-
-
-/**
- * Provides a Map abstraction on top of data-* attributes, similar to the
- * dataSet in the old DOM.
- */
-class _DataAttributeMap implements Map<String, String> {
-
- final Map<String, String> _attributes;
-
- _DataAttributeMap(this._attributes);
-
- // interface Map
-
- void addAll(Map<String, String> other) {
- other.forEach((k, v) { this[k] = v; });
- }
-
- // TODO: Use lazy iterator when it is available on Map.
- bool containsValue(Object value) => values.any((v) => v == value);
-
- bool containsKey(Object key) => _attributes.containsKey(_attr(key));
-
- String operator [](Object key) => _attributes[_attr(key)];
-
- void operator []=(String key, String value) {
- _attributes[_attr(key)] = value;
- }
-
- String putIfAbsent(String key, String ifAbsent()) =>
- _attributes.putIfAbsent(_attr(key), ifAbsent);
-
- String remove(Object key) => _attributes.remove(_attr(key));
-
- void clear() {
- // Needs to operate on a snapshot since we are mutating the collection.
- for (String key in keys) {
- remove(key);
- }
- }
-
- void forEach(void f(String key, String value)) {
- _attributes.forEach((String key, String value) {
- if (_matches(key)) {
- f(_strip(key), value);
- }
- });
- }
-
- Iterable<String> get keys {
- final keys = new List<String>();
- _attributes.forEach((String key, String value) {
- if (_matches(key)) {
- keys.add(_strip(key));
- }
- });
- return keys;
- }
-
- Iterable<String> get values {
- final values = new List<String>();
- _attributes.forEach((String key, String value) {
- if (_matches(key)) {
- values.add(value);
- }
- });
- return values;
- }
-
- int get length => keys.length;
-
- // TODO: Use lazy iterator when it is available on Map.
- bool get isEmpty => length == 0;
-
- bool get isNotEmpty => !isEmpty;
-
- // Helpers.
- String _attr(String key) => 'data-${_toHyphenedName(key)}';
- bool _matches(String key) => key.startsWith('data-');
- String _strip(String key) => _toCamelCase(key.substring(5));
-
- /**
- * Converts a string name with hyphens into an identifier, by removing hyphens
- * and capitalizing the following letter. Optionally [startUppercase] to
- * captialize the first letter.
- */
- String _toCamelCase(String hyphenedName, {bool startUppercase: false}) {
- var segments = hyphenedName.split('-');
- int start = startUppercase ? 0 : 1;
- for (int i = start; i < segments.length; i++) {
- var segment = segments[i];
- if (segment.length > 0) {
- // Character between 'a'..'z' mapped to 'A'..'Z'
- segments[i] = '${segment[0].toUpperCase()}${segment.substring(1)}';
- }
- }
- return segments.join('');
- }
-
- /** Reverse of [toCamelCase]. */
- String _toHyphenedName(String word) {
- var sb = new StringBuffer();
- for (int i = 0; i < word.length; i++) {
- var lower = word[i].toLowerCase();
- if (word[i] != lower && i > 0) sb.write('-');
- sb.write(lower);
- }
- return sb.toString();
- }
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * An object that can be drawn to a 2D canvas rendering context.
- *
- * The image drawn to the canvas depends on the type of this object:
- *
- * * If this object is an [ImageElement], then this element's image is
- * drawn to the canvas. If this element is an animated image, then this
- * element's poster frame is drawn. If this element has no poster frame, then
- * the first frame of animation is drawn.
- *
- * * If this object is a [VideoElement], then the frame at this element's current
- * playback position is drawn to the canvas.
- *
- * * If this object is a [CanvasElement], then this element's bitmap is drawn to
- * the canvas.
- *
- * **Note:** Currently all versions of Internet Explorer do not support
- * drawing a video element to a canvas. You may also encounter problems drawing
- * a video to a canvas in Firefox if the source of the video is a data URL.
- *
- * ## See also
- *
- * * [CanvasRenderingContext2D.drawImage]
- * * [CanvasRenderingContext2D.drawImageToRect]
- * * [CanvasRenderingContext2D.drawImageScaled]
- * * [CanvasRenderingContext2D.drawImageScaledFromSource]
- *
- * ## Other resources
- *
- * * [Image sources for 2D rendering contexts]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#image-sources-for-2d-rendering-contexts)
- * from WHATWG.
- * * [Drawing images]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage)
- * from WHATWG.
- */
-abstract class CanvasImageSource {}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * Top-level container for a browser tab or window.
- *
- * In a web browser, a [WindowBase] object represents any browser window. This
- * object contains the window's state and its relation to other
- * windows, such as which window opened this window.
- *
- * **Note:** This class represents any window, while [Window] is
- * used to access the properties and content of the current window or tab.
- *
- * ## See also
- *
- * * [Window]
- *
- * ## Other resources
- *
- * * [DOM Window](https://developer.mozilla.org/en-US/docs/DOM/window) from MDN.
- * * [Window](http://www.w3.org/TR/Window/) from the W3C.
- */
-abstract class WindowBase implements EventTarget {
- // Fields.
-
- /**
- * The current location of this window.
- *
- * Location currentLocation = window.location;
- * print(currentLocation.href); // 'http://www.example.com:80/'
- */
- LocationBase get location;
-
- /**
- * The current session history for this window.
- *
- * ## Other resources
- *
- * * [Session history and navigation specification]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html)
- * from WHATWG.
- */
- HistoryBase get history;
-
- /**
- * Indicates whether this window has been closed.
- *
- * print(window.closed); // 'false'
- * window.close();
- * print(window.closed); // 'true'
- */
- bool get closed;
-
- /**
- * A reference to the window that opened this one.
- *
- * Window thisWindow = window;
- * WindowBase otherWindow = thisWindow.open('http://www.example.com/', 'foo');
- * print(otherWindow.opener == thisWindow); // 'true'
- */
- WindowBase get opener;
-
- /**
- * A reference to the parent of this window.
- *
- * If this [WindowBase] has no parent, [parent] will return a reference to
- * the [WindowBase] itself.
- *
- * IFrameElement myIFrame = new IFrameElement();
- * window.document.body.elements.add(myIFrame);
- * print(myIframe.contentWindow.parent == window) // 'true'
- *
- * print(window.parent == window) // 'true'
- */
- WindowBase get parent;
-
- /**
- * A reference to the topmost window in the window hierarchy.
- *
- * If this [WindowBase] is the topmost [WindowBase], [top] will return a
- * reference to the [WindowBase] itself.
- *
- * // Add an IFrame to the current window.
- * IFrameElement myIFrame = new IFrameElement();
- * window.document.body.elements.add(myIFrame);
- *
- * // Add an IFrame inside of the other IFrame.
- * IFrameElement innerIFrame = new IFrameElement();
- * myIFrame.elements.add(innerIFrame);
- *
- * print(myIframe.contentWindow.top == window) // 'true'
- * print(innerIFrame.contentWindow.top == window) // 'true'
- *
- * print(window.top == window) // 'true'
- */
- WindowBase get top;
-
- // Methods.
- /**
- * Closes the window.
- *
- * This method should only succeed if the [WindowBase] object is
- * **script-closeable** and the window calling [close] is allowed to navigate
- * the window.
- *
- * A window is script-closeable if it is either a window
- * that was opened by another window, or if it is a window with only one
- * document in its history.
- *
- * A window might not be allowed to navigate, and therefore close, another
- * window due to browser security features.
- *
- * var other = window.open('http://www.example.com', 'foo');
- * // Closes other window, as it is script-closeable.
- * other.close();
- * print(other.closed()); // 'true'
- *
- * window.location('http://www.mysite.com', 'foo');
- * // Does not close this window, as the history has changed.
- * window.close();
- * print(window.closed()); // 'false'
- *
- * See also:
- *
- * * [Window close discussion](http://www.w3.org/TR/html5/browsers.html#dom-window-close) from the W3C
- */
- void close();
-
- /**
- * Sends a cross-origin message.
- *
- * ## Other resources
- *
- * * [window.postMessage]
- * (https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage) from
- * MDN.
- * * [Cross-document messaging]
- * (http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html)
- * from WHATWG.
- */
- void postMessage(var message, String targetOrigin, [List messagePorts]);
-}
-
-abstract class LocationBase {
- void set href(String val);
-}
-
-abstract class HistoryBase {
- void back();
- void forward();
- void go(int distance);
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/** A Set that stores the CSS class names for an element. */
-abstract class CssClassSet implements Set<String> {
-
- /**
- * Adds the class [value] to the element if it is not on it, removes it if it
- * is.
- *
- * If [shouldAdd] is true, then we always add that [value] to the element. If
- * [shouldAdd] is false then we always remove [value] from the element.
- *
- * If this corresponds to one element, returns `true` if [value] is present
- * after the operation, and returns `false` if [value] is absent after the
- * operation.
- *
- * If this corresponds to many elements, `null` is always returned.
- *
- * [value] must be a valid 'token' representing a single class, i.e. a
- * non-empty string containing no whitespace. To toggle multiple classes, use
- * [toggleAll].
- */
- bool toggle(String value, [bool shouldAdd]);
-
- /**
- * Returns [:true:] if classes cannot be added or removed from this
- * [:CssClassSet:].
- */
- bool get frozen;
-
- /**
- * Determine if this element contains the class [value].
- *
- * This is the Dart equivalent of jQuery's
- * [hasClass](http://api.jquery.com/hasClass/).
- *
- * [value] must be a valid 'token' representing a single class, i.e. a
- * non-empty string containing no whitespace.
- */
- bool contains(Object value);
-
- /**
- * Add the class [value] to element.
- *
- * [add] and [addAll] are the Dart equivalent of jQuery's
- * [addClass](http://api.jquery.com/addClass/).
- *
- * If this CssClassSet corresponds to one element. Returns true if [value] was
- * added to the set, otherwise false.
- *
- * If this corresponds to many elements, `null` is always returned.
- *
- * [value] must be a valid 'token' representing a single class, i.e. a
- * non-empty string containing no whitespace. To add multiple classes use
- * [addAll].
- */
- bool add(String value);
-
- /**
- * Remove the class [value] from element, and return true on successful
- * removal.
- *
- * [remove] and [removeAll] are the Dart equivalent of jQuery's
- * [removeClass](http://api.jquery.com/removeClass/).
- *
- * [value] must be a valid 'token' representing a single class, i.e. a
- * non-empty string containing no whitespace. To remove multiple classes, use
- * [removeAll].
- */
- bool remove(Object value);
-
- /**
- * Add all classes specified in [iterable] to element.
- *
- * [add] and [addAll] are the Dart equivalent of jQuery's
- * [addClass](http://api.jquery.com/addClass/).
- *
- * Each element of [iterable] must be a valid 'token' representing a single
- * class, i.e. a non-empty string containing no whitespace.
- */
- void addAll(Iterable<String> iterable);
-
- /**
- * Remove all classes specified in [iterable] from element.
- *
- * [remove] and [removeAll] are the Dart equivalent of jQuery's
- * [removeClass](http://api.jquery.com/removeClass/).
- *
- * Each element of [iterable] must be a valid 'token' representing a single
- * class, i.e. a non-empty string containing no whitespace.
- */
- void removeAll(Iterable<Object> iterable);
-
- /**
- * Toggles all classes specified in [iterable] on element.
- *
- * Iterate through [iterable]'s items, and add it if it is not on it, or
- * remove it if it is. This is the Dart equivalent of jQuery's
- * [toggleClass](http://api.jquery.com/toggleClass/).
- * If [shouldAdd] is true, then we always add all the classes in [iterable]
- * element. If [shouldAdd] is false then we always remove all the classes in
- * [iterable] from the element.
- *
- * Each element of [iterable] must be a valid 'token' representing a single
- * class, i.e. a non-empty string containing no whitespace.
- */
- void toggleAll(Iterable<String> iterable, [bool shouldAdd]);
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * A rectangle representing all the content of the element in the
- * [box model](http://www.w3.org/TR/CSS2/box.html).
- */
-class _ContentCssRect extends CssRect {
-
- _ContentCssRect(element) : super(element);
-
- num get height => _element.offsetHeight +
- _addOrSubtractToBoxModel(_HEIGHT, _CONTENT);
-
- num get width => _element.offsetWidth +
- _addOrSubtractToBoxModel(_WIDTH, _CONTENT);
-
- /**
- * Set the height to `newHeight`.
- *
- * newHeight can be either a [num] representing the height in pixels or a
- * [Dimension] object. Values of newHeight that are less than zero are
- * converted to effectively setting the height to 0. This is equivalent to the
- * `height` function in jQuery and the calculated `height` CSS value,
- * converted to a num in pixels.
- */
- set height(Object newHeight) {
- if (newHeight is Dimension) {
- var result = (newHeight.value < 0) ? new Dimension.px(0) : newHeight;
- _element.style.height = result.toString();
- } else {
- var result = ((newHeight as int) < 0) ? 0 : newHeight;
- _element.style.height = '${result}px';
- }
- }
-
- /**
- * Set the current computed width in pixels of this element.
- *
- * newWidth can be either a [num] representing the width in pixels or a
- * [Dimension] object. This is equivalent to the `width` function in jQuery
- * and the calculated
- * `width` CSS value, converted to a dimensionless num in pixels.
- */
- set width(Object newWidth) {
- if (newWidth is Dimension) {
- var result = (newWidth.value < 0) ? new Dimension.px(0) : newWidth;
- _element.style.width = result.toString();
- } else {
- var result = ((newWidth as int) < 0) ? 0 : newWidth;
- _element.style.width = '${result}px';
- }
- }
-
- num get left => _element.getBoundingClientRect().left -
- _addOrSubtractToBoxModel(['left'], _CONTENT);
- num get top => _element.getBoundingClientRect().top -
- _addOrSubtractToBoxModel(['top'], _CONTENT);
-}
-
-/**
- * A list of element content rectangles in the
- * [box model](http://www.w3.org/TR/CSS2/box.html).
- */
-class _ContentCssListRect extends _ContentCssRect {
- List<Element> _elementList;
-
- _ContentCssListRect(elementList) : super(elementList.first) {
- _elementList = elementList;
- }
-
- /**
- * Set the height to `newHeight`.
- *
- * Values of newHeight that are less than zero are converted to effectively
- * setting the height to 0. This is equivalent to the `height`
- * function in jQuery and the calculated `height` CSS value, converted to a
- * num in pixels.
- */
- set height(newHeight) {
- _elementList.forEach((e) => e.contentEdge.height = newHeight);
- }
-
- /**
- * Set the current computed width in pixels of this element.
- *
- * This is equivalent to the `width` function in jQuery and the calculated
- * `width` CSS value, converted to a dimensionless num in pixels.
- */
- set width(newWidth) {
- _elementList.forEach((e) => e.contentEdge.width = newWidth);
- }
-}
-
-/**
- * A rectangle representing the dimensions of the space occupied by the
- * element's content + padding in the
- * [box model](http://www.w3.org/TR/CSS2/box.html).
- */
-class _PaddingCssRect extends CssRect {
- _PaddingCssRect(element) : super(element);
- num get height => _element.offsetHeight +
- _addOrSubtractToBoxModel(_HEIGHT, _PADDING);
- num get width => _element.offsetWidth +
- _addOrSubtractToBoxModel(_WIDTH, _PADDING);
-
- num get left => _element.getBoundingClientRect().left -
- _addOrSubtractToBoxModel(['left'], _PADDING);
- num get top => _element.getBoundingClientRect().top -
- _addOrSubtractToBoxModel(['top'], _PADDING);
-}
-
-/**
- * A rectangle representing the dimensions of the space occupied by the
- * element's content + padding + border in the
- * [box model](http://www.w3.org/TR/CSS2/box.html).
- */
-class _BorderCssRect extends CssRect {
- _BorderCssRect(element) : super(element);
- num get height => _element.offsetHeight;
- num get width => _element.offsetWidth;
-
- num get left => _element.getBoundingClientRect().left;
- num get top => _element.getBoundingClientRect().top;
-}
-
-/**
- * A rectangle representing the dimensions of the space occupied by the
- * element's content + padding + border + margin in the
- * [box model](http://www.w3.org/TR/CSS2/box.html).
- */
-class _MarginCssRect extends CssRect {
- _MarginCssRect(element) : super(element);
- num get height => _element.offsetHeight +
- _addOrSubtractToBoxModel(_HEIGHT, _MARGIN);
- num get width =>
- _element.offsetWidth + _addOrSubtractToBoxModel(_WIDTH, _MARGIN);
-
- num get left => _element.getBoundingClientRect().left -
- _addOrSubtractToBoxModel(['left'], _MARGIN);
- num get top => _element.getBoundingClientRect().top -
- _addOrSubtractToBoxModel(['top'], _MARGIN);
-}
-
-/**
- * A class for representing CSS dimensions.
- *
- * In contrast to the more general purpose [Rectangle] class, this class's
- * values are mutable, so one can change the height of an element
- * programmatically.
- *
- * _Important_ _note_: use of these methods will perform CSS calculations that
- * can trigger a browser reflow. Therefore, use of these properties _during_ an
- * animation frame is discouraged. See also:
- * [Browser Reflow](https://developers.google.com/speed/articles/reflow)
- */
-abstract class CssRect extends MutableRectangle<num> {
- Element _element;
-
- CssRect(this._element) : super(0, 0, 0, 0);
-
- num get left;
-
- num get top;
-
- /**
- * The height of this rectangle.
- *
- * This is equivalent to the `height` function in jQuery and the calculated
- * `height` CSS value, converted to a dimensionless num in pixels. Unlike
- * [getBoundingClientRect], `height` will return the same numerical width if
- * the element is hidden or not.
- */
- num get height;
-
- /**
- * The width of this rectangle.
- *
- * This is equivalent to the `width` function in jQuery and the calculated
- * `width` CSS value, converted to a dimensionless num in pixels. Unlike
- * [getBoundingClientRect], `width` will return the same numerical width if
- * the element is hidden or not.
- */
- num get width;
-
- /**
- * Set the height to `newHeight`.
- *
- * newHeight can be either a [num] representing the height in pixels or a
- * [Dimension] object. Values of newHeight that are less than zero are
- * converted to effectively setting the height to 0. This is equivalent to the
- * `height` function in jQuery and the calculated `height` CSS value,
- * converted to a num in pixels.
- *
- * Note that only the content height can actually be set via this method.
- */
- set height(newHeight) {
- throw new UnsupportedError("Can only set height for content rect.");
- }
-
- /**
- * Set the current computed width in pixels of this element.
- *
- * newWidth can be either a [num] representing the width in pixels or a
- * [Dimension] object. This is equivalent to the `width` function in jQuery
- * and the calculated
- * `width` CSS value, converted to a dimensionless num in pixels.
- *
- * Note that only the content width can be set via this method.
- */
- set width(newWidth) {
- throw new UnsupportedError("Can only set width for content rect.");
- }
-
- /**
- * Return a value that is used to modify the initial height or width
- * measurement of an element. Depending on the value (ideally an enum) passed
- * to augmentingMeasurement, we may need to add or subtract margin, padding,
- * or border values, depending on the measurement we're trying to obtain.
- */
- num _addOrSubtractToBoxModel(List<String> dimensions,
- String augmentingMeasurement) {
- // getComputedStyle always returns pixel values (hence, computed), so we're
- // always dealing with pixels in this method.
- var styles = _element.getComputedStyle();
-
- var val = 0;
-
- for (String measurement in dimensions) {
- // The border-box and default box model both exclude margin in the regular
- // height/width calculation, so add it if we want it for this measurement.
- if (augmentingMeasurement == _MARGIN) {
- val += new Dimension.css(styles.getPropertyValue(
- '$augmentingMeasurement-$measurement')).value;
- }
-
- // The border-box includes padding and border, so remove it if we want
- // just the content itself.
- if (augmentingMeasurement == _CONTENT) {
- val -= new Dimension.css(
- styles.getPropertyValue('${_PADDING}-$measurement')).value;
- }
-
- // At this point, we don't wan't to augment with border or margin,
- // so remove border.
- if (augmentingMeasurement != _MARGIN) {
- val -= new Dimension.css(styles.getPropertyValue(
- 'border-${measurement}-width')).value;
- }
- }
- return val;
- }
-}
-
-final _HEIGHT = ['top', 'bottom'];
-final _WIDTH = ['right', 'left'];
-final _CONTENT = 'content';
-final _PADDING = 'padding';
-final _MARGIN = 'margin';
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * A set (union) of the CSS classes that are present in a set of elements.
- * Implemented separately from _ElementCssClassSet for performance.
- */
-class _MultiElementCssClassSet extends CssClassSetImpl {
- final Iterable<Element> _elementIterable;
-
- // TODO(sra): Perhaps we should store the DomTokenList instead.
- final List<CssClassSetImpl> _sets;
-
- factory _MultiElementCssClassSet(Iterable<Element> elements) {
- return new _MultiElementCssClassSet._(elements,
- elements.map((Element e) => e.classes).toList());
- }
-
- _MultiElementCssClassSet._(this._elementIterable, this._sets);
-
- Set<String> readClasses() {
- var s = new LinkedHashSet<String>();
- _sets.forEach((CssClassSetImpl e) => s.addAll(e.readClasses()));
- return s;
- }
-
- void writeClasses(Set<String> s) {
- var classes = s.join(' ');
- for (Element e in _elementIterable) {
- e.className = classes;
- }
- }
-
- /**
- * Helper method used to modify the set of css classes on this element.
- *
- * f - callback with:
- * s - a Set of all the css class name currently on this element.
- *
- * After f returns, the modified set is written to the
- * className property of this element.
- */
- modify( f(Set<String> s)) {
- _sets.forEach((CssClassSetImpl e) => e.modify(f));
- }
-
- /**
- * Adds the class [value] to the element if it is not on it, removes it if it
- * is.
- *
- * TODO(sra): It seems wrong to collect a 'changed' flag like this when the
- * underlying toggle returns an 'is set' flag.
- */
- bool toggle(String value, [bool shouldAdd]) =>
- _sets.fold(false,
- (bool changed, CssClassSetImpl e) =>
- e.toggle(value, shouldAdd) || changed);
-
- /**
- * Remove the class [value] from element, and return true on successful
- * removal.
- *
- * This is the Dart equivalent of jQuery's
- * [removeClass](http://api.jquery.com/removeClass/).
- */
- bool remove(Object value) => _sets.fold(false,
- (bool changed, CssClassSetImpl e) => e.remove(value) || changed);
-}
-
-class _ElementCssClassSet extends CssClassSetImpl {
- final Element _element;
-
- _ElementCssClassSet(this._element);
-
- Set<String> readClasses() {
- var s = new LinkedHashSet<String>();
- var classname = _element.className;
-
- for (String name in classname.split(' ')) {
- String trimmed = name.trim();
- if (!trimmed.isEmpty) {
- s.add(trimmed);
- }
- }
- return s;
- }
-
- void writeClasses(Set<String> s) {
- _element.className = s.join(' ');
- }
-
- int get length => _classListLength(_classListOf(_element));
- bool get isEmpty => length == 0;
- bool get isNotEmpty => length != 0;
-
- void clear() {
- _element.className = '';
- }
-
- bool contains(Object value) {
- return _contains(_element, value);
- }
-
- bool add(String value) {
- return _add(_element, value);
- }
-
- bool remove(Object value) {
- return value is String && _remove(_element, value);
- }
-
- bool toggle(String value, [bool shouldAdd]) {
- return _toggle(_element, value, shouldAdd);
- }
-
- void addAll(Iterable<String> iterable) {
- _addAll(_element, iterable);
- }
-
- void removeAll(Iterable<Object> iterable) {
- _removeAll(_element, iterable);
- }
-
- void retainAll(Iterable<Object> iterable) {
- _removeWhere(_element, iterable.toSet().contains, false);
- }
-
- void removeWhere(bool test(String name)) {
- _removeWhere(_element, test, true);
- }
-
- void retainWhere(bool test(String name)) {
- _removeWhere(_element, test, false);
- }
-
- static bool _contains(Element _element, Object value) {
- return value is String && _classListContains(_classListOf(_element), value);
- }
-
- static bool _add(Element _element, String value) {
- DomTokenList list = _classListOf(_element);
- // Compute returned result independently of action upon the set.
- bool added = !_classListContainsBeforeAddOrRemove(list, value);
- _classListAdd(list, value);
- return added;
- }
-
- static bool _remove(Element _element, String value) {
- DomTokenList list = _classListOf(_element);
- bool removed = _classListContainsBeforeAddOrRemove(list, value);
- _classListRemove(list, value);
- return removed;
- }
-
- static bool _toggle(Element _element, String value, bool shouldAdd) {
- // There is no value that can be passed as the second argument of
- // DomTokenList.toggle that behaves the same as passing one argument.
- // `null` is seen as false, meaning 'remove'.
- return shouldAdd == null
- ? _toggleDefault(_element, value)
- : _toggleOnOff(_element, value, shouldAdd);
- }
-
- static bool _toggleDefault(Element _element, String value) {
- DomTokenList list = _classListOf(_element);
- return _classListToggle1(list, value);
- }
-
- static bool _toggleOnOff(Element _element, String value, bool shouldAdd) {
- DomTokenList list = _classListOf(_element);
- // IE's toggle does not take a second parameter. We would prefer:
- //
- // return _classListToggle2(list, value, shouldAdd);
- //
- if (shouldAdd) {
- _classListAdd(list, value);
- return true;
- } else {
- _classListRemove(list, value);
- return false;
- }
- }
-
- static void _addAll(Element _element, Iterable<String> iterable) {
- DomTokenList list = _classListOf(_element);
- for (String value in iterable) {
- _classListAdd(list, value);
- }
- }
-
- static void _removeAll(Element _element, Iterable<String> iterable) {
- DomTokenList list = _classListOf(_element);
- for (var value in iterable) {
- _classListRemove(list, value);
- }
- }
-
- static void _removeWhere(
- Element _element, bool test(String name), bool doRemove) {
- DomTokenList list = _classListOf(_element);
- int i = 0;
- while (i < _classListLength(list)) {
- String item = list.item(i);
- if (doRemove == test(item)) {
- _classListRemove(list, item);
- } else {
- ++i;
- }
- }
- }
-
- // A collection of static methods for DomTokenList. These methods are a
- // work-around for the lack of annotations to express the full behaviour of
- // the DomTokenList methods.
-
- static DomTokenList _classListOf(Element e) =>
- wrap_jso(JS('returns:DomTokenList;creates:DomTokenList;effects:none;depends:all;',
- '#.classList', e.raw));
-
- static int _classListLength(DomTokenList list) =>
- JS('returns:JSUInt31;effects:none;depends:all;', '#.length', list.raw);
-
- static bool _classListContains(DomTokenList list, String value) =>
- JS('returns:bool;effects:none;depends:all',
- '#.contains(#)', list.raw, value);
-
- static bool _classListContainsBeforeAddOrRemove(
- DomTokenList list, String value) =>
- // 'throws:never' is a lie, since 'contains' will throw on an illegal
- // token. However, we always call this function immediately prior to
- // add/remove/toggle with the same token. Often the result of 'contains'
- // is unused and the lie makes it possible for the 'contains' instruction
- // to be removed.
- JS('returns:bool;effects:none;depends:all;throws:null(1)',
- '#.contains(#)', list.raw, value);
-
- static void _classListAdd(DomTokenList list, String value) {
- // list.add(value);
- JS('', '#.add(#)', list.raw, value);
- }
-
- static void _classListRemove(DomTokenList list, String value) {
- // list.remove(value);
- JS('', '#.remove(#)', list.raw, value);
- }
-
- static bool _classListToggle1(DomTokenList list, String value) {
- return JS('bool', '#.toggle(#)', list.raw, value);
- }
-
- static bool _classListToggle2(
- DomTokenList list, String value, bool shouldAdd) {
- return JS('bool', '#.toggle(#, #)', list.raw, value, shouldAdd);
- }
-}
-
-/**
- * Class representing a
- * [length measurement](https://developer.mozilla.org/en-US/docs/Web/CSS/length)
- * in CSS.
- */
-@Experimental()
-class Dimension {
- num _value;
- String _unit;
-
- /** Set this CSS Dimension to a percentage `value`. */
- Dimension.percent(this._value) : _unit = '%';
-
- /** Set this CSS Dimension to a pixel `value`. */
- Dimension.px(this._value) : _unit = 'px';
-
- /** Set this CSS Dimension to a pica `value`. */
- Dimension.pc(this._value) : _unit = 'pc';
-
- /** Set this CSS Dimension to a point `value`. */
- Dimension.pt(this._value) : _unit = 'pt';
-
- /** Set this CSS Dimension to an inch `value`. */
- Dimension.inch(this._value) : _unit = 'in';
-
- /** Set this CSS Dimension to a centimeter `value`. */
- Dimension.cm(this._value) : _unit = 'cm';
-
- /** Set this CSS Dimension to a millimeter `value`. */
- Dimension.mm(this._value) : _unit = 'mm';
-
- /**
- * Set this CSS Dimension to the specified number of ems.
- *
- * 1em is equal to the current font size. (So 2ems is equal to double the font
- * size). This is useful for producing website layouts that scale nicely with
- * the user's desired font size.
- */
- Dimension.em(this._value) : _unit = 'em';
-
- /**
- * Set this CSS Dimension to the specified number of x-heights.
- *
- * One ex is equal to the the x-height of a font's baseline to its mean line,
- * generally the height of the letter "x" in the font, which is usually about
- * half the font-size.
- */
- Dimension.ex(this._value) : _unit = 'ex';
-
- /**
- * Construct a Dimension object from the valid, simple CSS string `cssValue`
- * that represents a distance measurement.
- *
- * This constructor is intended as a convenience method for working with
- * simplistic CSS length measurements. Non-numeric values such as `auto` or
- * `inherit` or invalid CSS will cause this constructor to throw a
- * FormatError.
- */
- Dimension.css(String cssValue) {
- if (cssValue == '') cssValue = '0px';
- if (cssValue.endsWith('%')) {
- _unit = '%';
- } else {
- _unit = cssValue.substring(cssValue.length - 2);
- }
- if (cssValue.contains('.')) {
- _value = double.parse(cssValue.substring(0,
- cssValue.length - _unit.length));
- } else {
- _value = int.parse(cssValue.substring(0, cssValue.length - _unit.length));
- }
- }
-
- /** Print out the CSS String representation of this value. */
- String toString() {
- return '${_value}${_unit}';
- }
-
- /** Return a unitless, numerical value of this CSS value. */
- num get value => this._value;
-}
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-typedef EventListener(Event event);
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * A factory to expose DOM events as Streams.
- */
-class EventStreamProvider<T extends Event> {
- final String _eventType;
-
- const EventStreamProvider(this._eventType);
-
- /**
- * Gets a [Stream] for this event type, on the specified target.
- *
- * This will always return a broadcast stream so multiple listeners can be
- * used simultaneously.
- *
- * This may be used to capture DOM events:
- *
- * Element.keyDownEvent.forTarget(element, useCapture: true).listen(...);
- *
- * // Alternate method:
- * Element.keyDownEvent.forTarget(element).capture(...);
- *
- * Or for listening to an event which will bubble through the DOM tree:
- *
- * MediaElement.pauseEvent.forTarget(document.body).listen(...);
- *
- * See also:
- *
- * [addEventListener](http://docs.webplatform.org/wiki/dom/methods/addEventListener)
- */
- Stream<T> forTarget(EventTarget e, {bool useCapture: false}) =>
- new _EventStream(e, _eventType, useCapture);
-
- /**
- * Gets an [ElementEventStream] for this event type, on the specified element.
- *
- * This will always return a broadcast stream so multiple listeners can be
- * used simultaneously.
- *
- * This may be used to capture DOM events:
- *
- * Element.keyDownEvent.forElement(element, useCapture: true).listen(...);
- *
- * // Alternate method:
- * Element.keyDownEvent.forElement(element).capture(...);
- *
- * Or for listening to an event which will bubble through the DOM tree:
- *
- * MediaElement.pauseEvent.forElement(document.body).listen(...);
- *
- * See also:
- *
- * [addEventListener](http://docs.webplatform.org/wiki/dom/methods/addEventListener)
- */
- ElementStream<T> forElement(Element e, {bool useCapture: false}) {
- return new _ElementEventStreamImpl(e, _eventType, useCapture);
- }
-
- /**
- * Gets an [ElementEventStream] for this event type, on the list of elements.
- *
- * This will always return a broadcast stream so multiple listeners can be
- * used simultaneously.
- *
- * This may be used to capture DOM events:
- *
- * Element.keyDownEvent._forElementList(element, useCapture: true).listen(...);
- *
- * See also:
- *
- * [addEventListener](http://docs.webplatform.org/wiki/dom/methods/addEventListener)
- */
- ElementStream<T> _forElementList(ElementList e, {bool useCapture: false}) {
- return new _ElementListEventStreamImpl(e, _eventType, useCapture);
- }
-
- /**
- * Gets the type of the event which this would listen for on the specified
- * event target.
- *
- * The target is necessary because some browsers may use different event names
- * for the same purpose and the target allows differentiating browser support.
- */
- String getEventType(EventTarget target) {
- return _eventType;
- }
-}
-
-/** A specialized Stream available to [Element]s to enable event delegation. */
-abstract class ElementStream<T extends Event> implements Stream<T> {
- /**
- * Return a stream that only fires when the particular event fires for
- * elements matching the specified CSS selector.
- *
- * This is the Dart equivalent to jQuery's
- * [delegate](http://api.jquery.com/delegate/).
- */
- Stream<T> matches(String selector);
-
- /**
- * Adds a capturing subscription to this stream.
- *
- * If the target of the event is a descendant of the element from which this
- * stream derives then [onData] is called before the event propagates down to
- * the target. This is the opposite of bubbling behavior, where the event
- * is first processed for the event target and then bubbles upward.
- *
- * ## Other resources
- *
- * * [Event Capture]
- * (http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-capture)
- * from the W3C DOM Events specification.
- */
- StreamSubscription<T> capture(void onData(T event));
-}
-
-/**
- * Adapter for exposing DOM events as Dart streams.
- */
-class _EventStream<T extends Event> extends Stream<T> {
- final EventTarget _target;
- final String _eventType;
- final bool _useCapture;
-
- _EventStream(this._target, this._eventType, this._useCapture);
-
- // DOM events are inherently multi-subscribers.
- Stream<T> asBroadcastStream({void onListen(StreamSubscription<T> subscription),
- void onCancel(StreamSubscription<T> subscription)})
- => this;
- bool get isBroadcast => true;
-
- StreamSubscription<T> listen(void onData(T event),
- { Function onError,
- void onDone(),
- bool cancelOnError}) {
-
- return new _EventStreamSubscription<T>(
- this._target, this._eventType, onData, this._useCapture);
- }
-}
-
-/**
- * Adapter for exposing DOM Element events as streams, while also allowing
- * event delegation.
- */
-class _ElementEventStreamImpl<T extends Event> extends _EventStream<T>
- implements ElementStream<T> {
- _ElementEventStreamImpl(target, eventType, useCapture) :
- super(target, eventType, useCapture);
-
- Stream<T> matches(String selector) => this.where(
- (event) => event.target.matchesWithAncestors(selector)).map((e) {
- e._selector = selector;
- return e;
- });
-
- StreamSubscription<T> capture(void onData(T event)) =>
- new _EventStreamSubscription<T>(
- this._target, this._eventType, onData, true);
-}
-
-/**
- * Adapter for exposing events on a collection of DOM Elements as streams,
- * while also allowing event delegation.
- */
-class _ElementListEventStreamImpl<T extends Event> extends Stream<T>
- implements ElementStream<T> {
- final Iterable<Element> _targetList;
- final bool _useCapture;
- final String _eventType;
-
- _ElementListEventStreamImpl(
- this._targetList, this._eventType, this._useCapture);
-
- Stream<T> matches(String selector) => this.where(
- (event) => event.target.matchesWithAncestors(selector)).map((e) {
- e._selector = selector;
- return e;
- });
-
- // Delegate all regular Stream behavior to a wrapped Stream.
- StreamSubscription<T> listen(void onData(T event),
- { Function onError,
- void onDone(),
- bool cancelOnError}) {
- var pool = new _StreamPool.broadcast();
- for (var target in _targetList) {
- pool.add(new _EventStream(target, _eventType, _useCapture));
- }
- return pool.stream.listen(onData, onError: onError, onDone: onDone,
- cancelOnError: cancelOnError);
- }
-
- StreamSubscription<T> capture(void onData(T event)) {
- var pool = new _StreamPool.broadcast();
- for (var target in _targetList) {
- pool.add(new _EventStream(target, _eventType, true));
- }
- return pool.stream.listen(onData);
- }
-
- Stream<T> asBroadcastStream({void onListen(StreamSubscription<T> subscription),
- void onCancel(StreamSubscription<T> subscription)})
- => this;
- bool get isBroadcast => true;
-}
-
-class _EventStreamSubscription<T extends Event> extends StreamSubscription<T> {
- int _pauseCount = 0;
- EventTarget _target;
- final String _eventType;
- var _onData;
- final bool _useCapture;
-
- _EventStreamSubscription(this._target, this._eventType, onData,
- this._useCapture) : _onData = _wrapZone(onData) {
- _tryResume();
- }
-
- Future cancel() {
- if (_canceled) return null;
-
- _unlisten();
- // Clear out the target to indicate this is complete.
- _target = null;
- _onData = null;
- return null;
- }
-
- bool get _canceled => _target == null;
-
- void onData(void handleData(T event)) {
- if (_canceled) {
- throw new StateError("Subscription has been canceled.");
- }
- // Remove current event listener.
- _unlisten();
-
- _onData = _wrapZone(handleData);
- _tryResume();
- }
-
- /// Has no effect.
- void onError(Function handleError) {}
-
- /// Has no effect.
- void onDone(void handleDone()) {}
-
- void pause([Future resumeSignal]) {
- if (_canceled) return;
- ++_pauseCount;
- _unlisten();
-
- if (resumeSignal != null) {
- resumeSignal.whenComplete(resume);
- }
- }
-
- bool get isPaused => _pauseCount > 0;
-
- void resume() {
- if (_canceled || !isPaused) return;
- --_pauseCount;
- _tryResume();
- }
-
- void _tryResume() {
- if (_onData != null && !isPaused) {
- _target.addEventListener(_eventType, _onData, _useCapture);
- }
- }
-
- void _unlisten() {
- if (_onData != null) {
- _target.removeEventListener(_eventType, _onData, _useCapture);
- }
- }
-
- Future asFuture([var futureValue]) {
- // We just need a future that will never succeed or fail.
- Completer completer = new Completer();
- return completer.future;
- }
-}
-
-/**
- * A stream of custom events, which enables the user to "fire" (add) their own
- * custom events to a stream.
- */
-abstract class CustomStream<T extends Event> implements Stream<T> {
- /**
- * Add the following custom event to the stream for dispatching to interested
- * listeners.
- */
- void add(T event);
-}
-
-class _CustomEventStreamImpl<T extends Event> extends Stream<T>
- implements CustomStream<T> {
- StreamController<T> _streamController;
- /** The type of event this stream is providing (e.g. "keydown"). */
- String _type;
-
- _CustomEventStreamImpl(String type) {
- _type = type;
- _streamController = new StreamController.broadcast(sync: true);
- }
-
- // Delegate all regular Stream behavior to our wrapped Stream.
- StreamSubscription<T> listen(void onData(T event),
- { Function onError,
- void onDone(),
- bool cancelOnError}) {
- return _streamController.stream.listen(onData, onError: onError,
- onDone: onDone, cancelOnError: cancelOnError);
- }
-
- Stream<T> asBroadcastStream({void onListen(StreamSubscription<T> subscription),
- void onCancel(StreamSubscription<T> subscription)})
- => _streamController.stream;
-
- bool get isBroadcast => true;
-
- void add(T event) {
- if (event.type == _type) _streamController.add(event);
- }
-}
-
-class _CustomKeyEventStreamImpl extends _CustomEventStreamImpl<KeyEvent>
- implements CustomStream<KeyEvent> {
- _CustomKeyEventStreamImpl(String type) : super(type);
-
- void add(KeyEvent event) {
- if (event.type == _type) {
- event.currentTarget.dispatchEvent(event._parent);
- _streamController.add(event);
- }
- }
-}
-
-/**
- * A pool of streams whose events are unified and emitted through a central
- * stream.
- */
-// TODO (efortuna): Remove this when Issue 12218 is addressed.
-class _StreamPool<T> {
- StreamController<T> _controller;
-
- /// Subscriptions to the streams that make up the pool.
- var _subscriptions = new Map<Stream<T>, StreamSubscription<T>>();
-
- /**
- * Creates a new stream pool where [stream] can be listened to more than
- * once.
- *
- * Any events from buffered streams in the pool will be emitted immediately,
- * regardless of whether [stream] has any subscribers.
- */
- _StreamPool.broadcast() {
- _controller = new StreamController<T>.broadcast(sync: true,
- onCancel: close);
- }
-
- /**
- * The stream through which all events from streams in the pool are emitted.
- */
- Stream<T> get stream => _controller.stream;
-
- /**
- * Adds [stream] as a member of this pool.
- *
- * Any events from [stream] will be emitted through [this.stream]. If
- * [stream] is sync, they'll be emitted synchronously; if [stream] is async,
- * they'll be emitted asynchronously.
- */
- void add(Stream<T> stream) {
- if (_subscriptions.containsKey(stream)) return;
- _subscriptions[stream] = stream.listen(_controller.add,
- onError: _controller.addError,
- onDone: () => remove(stream));
- }
-
- /** Removes [stream] as a member of this pool. */
- void remove(Stream<T> stream) {
- var subscription = _subscriptions.remove(stream);
- if (subscription != null) subscription.cancel();
- }
-
- /** Removes all streams from this pool and closes [stream]. */
- void close() {
- for (var subscription in _subscriptions.values) {
- subscription.cancel();
- }
- _subscriptions.clear();
- _controller.close();
- }
-}
-
-/**
- * A factory to expose DOM events as streams, where the DOM event name has to
- * be determined on the fly (for example, mouse wheel events).
- */
-class _CustomEventStreamProvider<T extends Event>
- implements EventStreamProvider<T> {
-
- final _eventTypeGetter;
- const _CustomEventStreamProvider(this._eventTypeGetter);
-
- Stream<T> forTarget(EventTarget e, {bool useCapture: false}) {
- return new _EventStream(e, _eventTypeGetter(e), useCapture);
- }
-
- ElementStream<T> forElement(Element e, {bool useCapture: false}) {
- return new _ElementEventStreamImpl(e, _eventTypeGetter(e), useCapture);
- }
-
- ElementStream<T> _forElementList(ElementList e,
- {bool useCapture: false}) {
- return new _ElementListEventStreamImpl(e, _eventTypeGetter(e), useCapture);
- }
-
- String getEventType(EventTarget target) {
- return _eventTypeGetter(target);
- }
-
- String get _eventType =>
- throw new UnsupportedError('Access type through getEventType method.');
-}
-// DO NOT EDIT- this file is generated from running tool/generator.sh.
-
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * A Dart DOM validator generated from Caja whitelists.
- *
- * This contains a whitelist of known HTML tagNames and attributes and will only
- * accept known good values.
- *
- * See also:
- *
- * * <https://code.google.com/p/google-caja/wiki/CajaWhitelists>
- */
-class _Html5NodeValidator implements NodeValidator {
-
- static final Set<String> _allowedElements = new Set.from([
- 'A',
- 'ABBR',
- 'ACRONYM',
- 'ADDRESS',
- 'AREA',
- 'ARTICLE',
- 'ASIDE',
- 'AUDIO',
- 'B',
- 'BDI',
- 'BDO',
- 'BIG',
- 'BLOCKQUOTE',
- 'BR',
- 'BUTTON',
- 'CANVAS',
- 'CAPTION',
- 'CENTER',
- 'CITE',
- 'CODE',
- 'COL',
- 'COLGROUP',
- 'COMMAND',
- 'DATA',
- 'DATALIST',
- 'DD',
- 'DEL',
- 'DETAILS',
- 'DFN',
- 'DIR',
- 'DIV',
- 'DL',
- 'DT',
- 'EM',
- 'FIELDSET',
- 'FIGCAPTION',
- 'FIGURE',
- 'FONT',
- 'FOOTER',
- 'FORM',
- 'H1',
- 'H2',
- 'H3',
- 'H4',
- 'H5',
- 'H6',
- 'HEADER',
- 'HGROUP',
- 'HR',
- 'I',
- 'IFRAME',
- 'IMG',
- 'INPUT',
- 'INS',
- 'KBD',
- 'LABEL',
- 'LEGEND',
- 'LI',
- 'MAP',
- 'MARK',
- 'MENU',
- 'METER',
- 'NAV',
- 'NOBR',
- 'OL',
- 'OPTGROUP',
- 'OPTION',
- 'OUTPUT',
- 'P',
- 'PRE',
- 'PROGRESS',
- 'Q',
- 'S',
- 'SAMP',
- 'SECTION',
- 'SELECT',
- 'SMALL',
- 'SOURCE',
- 'SPAN',
- 'STRIKE',
- 'STRONG',
- 'SUB',
- 'SUMMARY',
- 'SUP',
- 'TABLE',
- 'TBODY',
- 'TD',
- 'TEXTAREA',
- 'TFOOT',
- 'TH',
- 'THEAD',
- 'TIME',
- 'TR',
- 'TRACK',
- 'TT',
- 'U',
- 'UL',
- 'VAR',
- 'VIDEO',
- 'WBR',
- ]);
-
- static const _standardAttributes = const <String>[
- '*::class',
- '*::dir',
- '*::draggable',
- '*::hidden',
- '*::id',
- '*::inert',
- '*::itemprop',
- '*::itemref',
- '*::itemscope',
- '*::lang',
- '*::spellcheck',
- '*::title',
- '*::translate',
- 'A::accesskey',
- 'A::coords',
- 'A::hreflang',
- 'A::name',
- 'A::shape',
- 'A::tabindex',
- 'A::target',
- 'A::type',
- 'AREA::accesskey',
- 'AREA::alt',
- 'AREA::coords',
- 'AREA::nohref',
- 'AREA::shape',
- 'AREA::tabindex',
- 'AREA::target',
- 'AUDIO::controls',
- 'AUDIO::loop',
- 'AUDIO::mediagroup',
- 'AUDIO::muted',
- 'AUDIO::preload',
- 'BDO::dir',
- 'BODY::alink',
- 'BODY::bgcolor',
- 'BODY::link',
- 'BODY::text',
- 'BODY::vlink',
- 'BR::clear',
- 'BUTTON::accesskey',
- 'BUTTON::disabled',
- 'BUTTON::name',
- 'BUTTON::tabindex',
- 'BUTTON::type',
- 'BUTTON::value',
- 'CANVAS::height',
- 'CANVAS::width',
- 'CAPTION::align',
- 'COL::align',
- 'COL::char',
- 'COL::charoff',
- 'COL::span',
- 'COL::valign',
- 'COL::width',
- 'COLGROUP::align',
- 'COLGROUP::char',
- 'COLGROUP::charoff',
- 'COLGROUP::span',
- 'COLGROUP::valign',
- 'COLGROUP::width',
- 'COMMAND::checked',
- 'COMMAND::command',
- 'COMMAND::disabled',
- 'COMMAND::label',
- 'COMMAND::radiogroup',
- 'COMMAND::type',
- 'DATA::value',
- 'DEL::datetime',
- 'DETAILS::open',
- 'DIR::compact',
- 'DIV::align',
- 'DL::compact',
- 'FIELDSET::disabled',
- 'FONT::color',
- 'FONT::face',
- 'FONT::size',
- 'FORM::accept',
- 'FORM::autocomplete',
- 'FORM::enctype',
- 'FORM::method',
- 'FORM::name',
- 'FORM::novalidate',
- 'FORM::target',
- 'FRAME::name',
- 'H1::align',
- 'H2::align',
- 'H3::align',
- 'H4::align',
- 'H5::align',
- 'H6::align',
- 'HR::align',
- 'HR::noshade',
- 'HR::size',
- 'HR::width',
- 'HTML::version',
- 'IFRAME::align',
- 'IFRAME::frameborder',
- 'IFRAME::height',
- 'IFRAME::marginheight',
- 'IFRAME::marginwidth',
- 'IFRAME::width',
- 'IMG::align',
- 'IMG::alt',
- 'IMG::border',
- 'IMG::height',
- 'IMG::hspace',
- 'IMG::ismap',
- 'IMG::name',
- 'IMG::usemap',
- 'IMG::vspace',
- 'IMG::width',
- 'INPUT::accept',
- 'INPUT::accesskey',
- 'INPUT::align',
- 'INPUT::alt',
- 'INPUT::autocomplete',
- 'INPUT::checked',
- 'INPUT::disabled',
- 'INPUT::inputmode',
- 'INPUT::ismap',
- 'INPUT::list',
- 'INPUT::max',
- 'INPUT::maxlength',
- 'INPUT::min',
- 'INPUT::multiple',
- 'INPUT::name',
- 'INPUT::placeholder',
- 'INPUT::readonly',
- 'INPUT::required',
- 'INPUT::size',
- 'INPUT::step',
- 'INPUT::tabindex',
- 'INPUT::type',
- 'INPUT::usemap',
- 'INPUT::value',
- 'INS::datetime',
- 'KEYGEN::disabled',
- 'KEYGEN::keytype',
- 'KEYGEN::name',
- 'LABEL::accesskey',
- 'LABEL::for',
- 'LEGEND::accesskey',
- 'LEGEND::align',
- 'LI::type',
- 'LI::value',
- 'LINK::sizes',
- 'MAP::name',
- 'MENU::compact',
- 'MENU::label',
- 'MENU::type',
- 'METER::high',
- 'METER::low',
- 'METER::max',
- 'METER::min',
- 'METER::value',
- 'OBJECT::typemustmatch',
- 'OL::compact',
- 'OL::reversed',
- 'OL::start',
- 'OL::type',
- 'OPTGROUP::disabled',
- 'OPTGROUP::label',
- 'OPTION::disabled',
- 'OPTION::label',
- 'OPTION::selected',
- 'OPTION::value',
- 'OUTPUT::for',
- 'OUTPUT::name',
- 'P::align',
- 'PRE::width',
- 'PROGRESS::max',
- 'PROGRESS::min',
- 'PROGRESS::value',
- 'SELECT::autocomplete',
- 'SELECT::disabled',
- 'SELECT::multiple',
- 'SELECT::name',
- 'SELECT::required',
- 'SELECT::size',
- 'SELECT::tabindex',
- 'SOURCE::type',
- 'TABLE::align',
- 'TABLE::bgcolor',
- 'TABLE::border',
- 'TABLE::cellpadding',
- 'TABLE::cellspacing',
- 'TABLE::frame',
- 'TABLE::rules',
- 'TABLE::summary',
- 'TABLE::width',
- 'TBODY::align',
- 'TBODY::char',
- 'TBODY::charoff',
- 'TBODY::valign',
- 'TD::abbr',
- 'TD::align',
- 'TD::axis',
- 'TD::bgcolor',
- 'TD::char',
- 'TD::charoff',
- 'TD::colspan',
- 'TD::headers',
- 'TD::height',
- 'TD::nowrap',
- 'TD::rowspan',
- 'TD::scope',
- 'TD::valign',
- 'TD::width',
- 'TEXTAREA::accesskey',
- 'TEXTAREA::autocomplete',
- 'TEXTAREA::cols',
- 'TEXTAREA::disabled',
- 'TEXTAREA::inputmode',
- 'TEXTAREA::name',
- 'TEXTAREA::placeholder',
- 'TEXTAREA::readonly',
- 'TEXTAREA::required',
- 'TEXTAREA::rows',
- 'TEXTAREA::tabindex',
- 'TEXTAREA::wrap',
- 'TFOOT::align',
- 'TFOOT::char',
- 'TFOOT::charoff',
- 'TFOOT::valign',
- 'TH::abbr',
- 'TH::align',
- 'TH::axis',
- 'TH::bgcolor',
- 'TH::char',
- 'TH::charoff',
- 'TH::colspan',
- 'TH::headers',
- 'TH::height',
- 'TH::nowrap',
- 'TH::rowspan',
- 'TH::scope',
- 'TH::valign',
- 'TH::width',
- 'THEAD::align',
- 'THEAD::char',
- 'THEAD::charoff',
- 'THEAD::valign',
- 'TR::align',
- 'TR::bgcolor',
- 'TR::char',
- 'TR::charoff',
- 'TR::valign',
- 'TRACK::default',
- 'TRACK::kind',
- 'TRACK::label',
- 'TRACK::srclang',
- 'UL::compact',
- 'UL::type',
- 'VIDEO::controls',
- 'VIDEO::height',
- 'VIDEO::loop',
- 'VIDEO::mediagroup',
- 'VIDEO::muted',
- 'VIDEO::preload',
- 'VIDEO::width',
- ];
-
- static const _uriAttributes = const <String>[
- 'A::href',
- 'AREA::href',
- 'BLOCKQUOTE::cite',
- 'BODY::background',
- 'COMMAND::icon',
- 'DEL::cite',
- 'FORM::action',
- 'IMG::src',
- 'INPUT::src',
- 'INS::cite',
- 'Q::cite',
- 'VIDEO::poster',
- ];
-
- final UriPolicy uriPolicy;
-
- static final Map<String, Function> _attributeValidators = {};
-
- /**
- * All known URI attributes will be validated against the UriPolicy, if
- * [uriPolicy] is null then a default UriPolicy will be used.
- */
- _Html5NodeValidator({UriPolicy uriPolicy})
- :uriPolicy = uriPolicy != null ? uriPolicy : new UriPolicy() {
-
- if (_attributeValidators.isEmpty) {
- for (var attr in _standardAttributes) {
- _attributeValidators[attr] = _standardAttributeValidator;
- }
-
- for (var attr in _uriAttributes) {
- _attributeValidators[attr] = _uriAttributeValidator;
- }
- }
- }
-
- bool allowsElement(Element element) {
- return _allowedElements.contains(Element._safeTagName(element));
- }
-
- bool allowsAttribute(Element element, String attributeName, String value) {
- var tagName = Element._safeTagName(element);
- var validator = _attributeValidators['$tagName::$attributeName'];
- if (validator == null) {
- validator = _attributeValidators['*::$attributeName'];
- }
- if (validator == null) {
- return false;
- }
- return validator(element, attributeName, value, this);
- }
-
- static bool _standardAttributeValidator(Element element, String attributeName,
- String value, _Html5NodeValidator context) {
- return true;
- }
-
- static bool _uriAttributeValidator(Element element, String attributeName,
- String value, _Html5NodeValidator context) {
- return context.uriPolicy.allowsUri(value);
- }
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-abstract class ImmutableListMixin<E> implements List<E> {
- // From Iterable<$E>:
- Iterator<E> get iterator {
- // Note: NodeLists are not fixed size. And most probably length shouldn't
- // be cached in both iterator _and_ forEach method. For now caching it
- // for consistency.
- return new FixedSizeListIterator<E>(this);
- }
-
- // From Collection<E>:
- void add(E value) {
- throw new UnsupportedError("Cannot add to immutable List.");
- }
-
- void addAll(Iterable<E> iterable) {
- throw new UnsupportedError("Cannot add to immutable List.");
- }
-
- // From List<E>:
- void sort([int compare(E a, E b)]) {
- throw new UnsupportedError("Cannot sort immutable List.");
- }
-
- void shuffle([Random random]) {
- throw new UnsupportedError("Cannot shuffle immutable List.");
- }
-
- void insert(int index, E element) {
- throw new UnsupportedError("Cannot add to immutable List.");
- }
-
- void insertAll(int index, Iterable<E> iterable) {
- throw new UnsupportedError("Cannot add to immutable List.");
- }
-
- void setAll(int index, Iterable<E> iterable) {
- throw new UnsupportedError("Cannot modify an immutable List.");
- }
-
- E removeAt(int pos) {
- throw new UnsupportedError("Cannot remove from immutable List.");
- }
-
- E removeLast() {
- throw new UnsupportedError("Cannot remove from immutable List.");
- }
-
- bool remove(Object object) {
- throw new UnsupportedError("Cannot remove from immutable List.");
- }
-
- void removeWhere(bool test(E element)) {
- throw new UnsupportedError("Cannot remove from immutable List.");
- }
-
- void retainWhere(bool test(E element)) {
- throw new UnsupportedError("Cannot remove from immutable List.");
- }
-
- void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
- throw new UnsupportedError("Cannot setRange on immutable List.");
- }
-
- void removeRange(int start, int end) {
- throw new UnsupportedError("Cannot removeRange on immutable List.");
- }
-
- void replaceRange(int start, int end, Iterable<E> iterable) {
- throw new UnsupportedError("Cannot modify an immutable List.");
- }
-
- void fillRange(int start, int end, [E fillValue]) {
- throw new UnsupportedError("Cannot modify an immutable List.");
- }
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * Defines the keycode values for keys that are returned by
- * KeyboardEvent.keyCode.
- *
- * Important note: There is substantial divergence in how different browsers
- * handle keycodes and their variants in different locales/keyboard layouts. We
- * provide these constants to help make code processing keys more readable.
- */
-abstract class KeyCode {
- // These constant names were borrowed from Closure's Keycode enumeration
- // class.
- // http://closure-library.googlecode.com/svn/docs/closure_goog_events_keycodes.js.source.html
- static const int WIN_KEY_FF_LINUX = 0;
- static const int MAC_ENTER = 3;
- static const int BACKSPACE = 8;
- static const int TAB = 9;
- /** NUM_CENTER is also NUMLOCK for FF and Safari on Mac. */
- static const int NUM_CENTER = 12;
- static const int ENTER = 13;
- static const int SHIFT = 16;
- static const int CTRL = 17;
- static const int ALT = 18;
- static const int PAUSE = 19;
- static const int CAPS_LOCK = 20;
- static const int ESC = 27;
- static const int SPACE = 32;
- static const int PAGE_UP = 33;
- static const int PAGE_DOWN = 34;
- static const int END = 35;
- static const int HOME = 36;
- static const int LEFT = 37;
- static const int UP = 38;
- static const int RIGHT = 39;
- static const int DOWN = 40;
- static const int NUM_NORTH_EAST = 33;
- static const int NUM_SOUTH_EAST = 34;
- static const int NUM_SOUTH_WEST = 35;
- static const int NUM_NORTH_WEST = 36;
- static const int NUM_WEST = 37;
- static const int NUM_NORTH = 38;
- static const int NUM_EAST = 39;
- static const int NUM_SOUTH = 40;
- static const int PRINT_SCREEN = 44;
- static const int INSERT = 45;
- static const int NUM_INSERT = 45;
- static const int DELETE = 46;
- static const int NUM_DELETE = 46;
- static const int ZERO = 48;
- static const int ONE = 49;
- static const int TWO = 50;
- static const int THREE = 51;
- static const int FOUR = 52;
- static const int FIVE = 53;
- static const int SIX = 54;
- static const int SEVEN = 55;
- static const int EIGHT = 56;
- static const int NINE = 57;
- static const int FF_SEMICOLON = 59;
- static const int FF_EQUALS = 61;
- /**
- * CAUTION: The question mark is for US-keyboard layouts. It varies
- * for other locales and keyboard layouts.
- */
- static const int QUESTION_MARK = 63;
- static const int A = 65;
- static const int B = 66;
- static const int C = 67;
- static const int D = 68;
- static const int E = 69;
- static const int F = 70;
- static const int G = 71;
- static const int H = 72;
- static const int I = 73;
- static const int J = 74;
- static const int K = 75;
- static const int L = 76;
- static const int M = 77;
- static const int N = 78;
- static const int O = 79;
- static const int P = 80;
- static const int Q = 81;
- static const int R = 82;
- static const int S = 83;
- static const int T = 84;
- static const int U = 85;
- static const int V = 86;
- static const int W = 87;
- static const int X = 88;
- static const int Y = 89;
- static const int Z = 90;
- static const int META = 91;
- static const int WIN_KEY_LEFT = 91;
- static const int WIN_KEY_RIGHT = 92;
- static const int CONTEXT_MENU = 93;
- static const int NUM_ZERO = 96;
- static const int NUM_ONE = 97;
- static const int NUM_TWO = 98;
- static const int NUM_THREE = 99;
- static const int NUM_FOUR = 100;
- static const int NUM_FIVE = 101;
- static const int NUM_SIX = 102;
- static const int NUM_SEVEN = 103;
- static const int NUM_EIGHT = 104;
- static const int NUM_NINE = 105;
- static const int NUM_MULTIPLY = 106;
- static const int NUM_PLUS = 107;
- static const int NUM_MINUS = 109;
- static const int NUM_PERIOD = 110;
- static const int NUM_DIVISION = 111;
- static const int F1 = 112;
- static const int F2 = 113;
- static const int F3 = 114;
- static const int F4 = 115;
- static const int F5 = 116;
- static const int F6 = 117;
- static const int F7 = 118;
- static const int F8 = 119;
- static const int F9 = 120;
- static const int F10 = 121;
- static const int F11 = 122;
- static const int F12 = 123;
- static const int NUMLOCK = 144;
- static const int SCROLL_LOCK = 145;
-
- // OS-specific media keys like volume controls and browser controls.
- static const int FIRST_MEDIA_KEY = 166;
- static const int LAST_MEDIA_KEY = 183;
-
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int SEMICOLON = 186;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int DASH = 189;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int EQUALS = 187;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int COMMA = 188;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int PERIOD = 190;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int SLASH = 191;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int APOSTROPHE = 192;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int TILDE = 192;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int SINGLE_QUOTE = 222;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int OPEN_SQUARE_BRACKET = 219;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int BACKSLASH = 220;
- /**
- * CAUTION: This constant requires localization for other locales and keyboard
- * layouts.
- */
- static const int CLOSE_SQUARE_BRACKET = 221;
- static const int WIN_KEY = 224;
- static const int MAC_FF_META = 224;
- static const int WIN_IME = 229;
-
- /** A sentinel value if the keycode could not be determined. */
- static const int UNKNOWN = -1;
-
- /**
- * Returns true if the keyCode produces a (US keyboard) character.
- * Note: This does not (yet) cover characters on non-US keyboards (Russian,
- * Hebrew, etc.).
- */
- static bool isCharacterKey(int keyCode) {
- if ((keyCode >= ZERO && keyCode <= NINE) ||
- (keyCode >= NUM_ZERO && keyCode <= NUM_MULTIPLY) ||
- (keyCode >= A && keyCode <= Z)) {
- return true;
- }
-
- // Safari sends zero key code for non-latin characters.
- if (Device.isWebKit && keyCode == 0) {
- return true;
- }
-
- return (keyCode == SPACE || keyCode == QUESTION_MARK || keyCode == NUM_PLUS
- || keyCode == NUM_MINUS || keyCode == NUM_PERIOD ||
- keyCode == NUM_DIVISION || keyCode == SEMICOLON ||
- keyCode == FF_SEMICOLON || keyCode == DASH || keyCode == EQUALS ||
- keyCode == FF_EQUALS || keyCode == COMMA || keyCode == PERIOD ||
- keyCode == SLASH || keyCode == APOSTROPHE || keyCode == SINGLE_QUOTE ||
- keyCode == OPEN_SQUARE_BRACKET || keyCode == BACKSLASH ||
- keyCode == CLOSE_SQUARE_BRACKET);
- }
-
- /**
- * Experimental helper function for converting keyCodes to keyNames for the
- * keyIdentifier attribute still used in browsers not updated with current
- * spec. This is an imperfect conversion! It will need to be refined, but
- * hopefully it can just completely go away once all the browsers update to
- * follow the DOM3 spec.
- */
- static String _convertKeyCodeToKeyName(int keyCode) {
- switch(keyCode) {
- case KeyCode.ALT: return _KeyName.ALT;
- case KeyCode.BACKSPACE: return _KeyName.BACKSPACE;
- case KeyCode.CAPS_LOCK: return _KeyName.CAPS_LOCK;
- case KeyCode.CTRL: return _KeyName.CONTROL;
- case KeyCode.DELETE: return _KeyName.DEL;
- case KeyCode.DOWN: return _KeyName.DOWN;
- case KeyCode.END: return _KeyName.END;
- case KeyCode.ENTER: return _KeyName.ENTER;
- case KeyCode.ESC: return _KeyName.ESC;
- case KeyCode.F1: return _KeyName.F1;
- case KeyCode.F2: return _KeyName.F2;
- case KeyCode.F3: return _KeyName.F3;
- case KeyCode.F4: return _KeyName.F4;
- case KeyCode.F5: return _KeyName.F5;
- case KeyCode.F6: return _KeyName.F6;
- case KeyCode.F7: return _KeyName.F7;
- case KeyCode.F8: return _KeyName.F8;
- case KeyCode.F9: return _KeyName.F9;
- case KeyCode.F10: return _KeyName.F10;
- case KeyCode.F11: return _KeyName.F11;
- case KeyCode.F12: return _KeyName.F12;
- case KeyCode.HOME: return _KeyName.HOME;
- case KeyCode.INSERT: return _KeyName.INSERT;
- case KeyCode.LEFT: return _KeyName.LEFT;
- case KeyCode.META: return _KeyName.META;
- case KeyCode.NUMLOCK: return _KeyName.NUM_LOCK;
- case KeyCode.PAGE_DOWN: return _KeyName.PAGE_DOWN;
- case KeyCode.PAGE_UP: return _KeyName.PAGE_UP;
- case KeyCode.PAUSE: return _KeyName.PAUSE;
- case KeyCode.PRINT_SCREEN: return _KeyName.PRINT_SCREEN;
- case KeyCode.RIGHT: return _KeyName.RIGHT;
- case KeyCode.SCROLL_LOCK: return _KeyName.SCROLL;
- case KeyCode.SHIFT: return _KeyName.SHIFT;
- case KeyCode.SPACE: return _KeyName.SPACEBAR;
- case KeyCode.TAB: return _KeyName.TAB;
- case KeyCode.UP: return _KeyName.UP;
- case KeyCode.WIN_IME:
- case KeyCode.WIN_KEY:
- case KeyCode.WIN_KEY_LEFT:
- case KeyCode.WIN_KEY_RIGHT:
- return _KeyName.WIN;
- default: return _KeyName.UNIDENTIFIED;
- }
- return _KeyName.UNIDENTIFIED;
- }
-}
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * Defines the standard key locations returned by
- * KeyboardEvent.getKeyLocation.
- */
-abstract class KeyLocation {
-
- /**
- * The event key is not distinguished as the left or right version
- * of the key, and did not originate from the numeric keypad (or did not
- * originate with a virtual key corresponding to the numeric keypad).
- */
- static const int STANDARD = 0;
-
- /**
- * The event key is in the left key location.
- */
- static const int LEFT = 1;
-
- /**
- * The event key is in the right key location.
- */
- static const int RIGHT = 2;
-
- /**
- * The event key originated on the numeric keypad or with a virtual key
- * corresponding to the numeric keypad.
- */
- static const int NUMPAD = 3;
-
- /**
- * The event key originated on a mobile device, either on a physical
- * keypad or a virtual keyboard.
- */
- static const int MOBILE = 4;
-
- /**
- * The event key originated on a game controller or a joystick on a mobile
- * device.
- */
- static const int JOYSTICK = 5;
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * Defines the standard keyboard identifier names for keys that are returned
- * by KeyboardEvent.getKeyboardIdentifier when the key does not have a direct
- * unicode mapping.
- */
-abstract class _KeyName {
-
- /** The Accept (Commit, OK) key */
- static const String ACCEPT = "Accept";
-
- /** The Add key */
- static const String ADD = "Add";
-
- /** The Again key */
- static const String AGAIN = "Again";
-
- /** The All Candidates key */
- static const String ALL_CANDIDATES = "AllCandidates";
-
- /** The Alphanumeric key */
- static const String ALPHANUMERIC = "Alphanumeric";
-
- /** The Alt (Menu) key */
- static const String ALT = "Alt";
-
- /** The Alt-Graph key */
- static const String ALT_GRAPH = "AltGraph";
-
- /** The Application key */
- static const String APPS = "Apps";
-
- /** The ATTN key */
- static const String ATTN = "Attn";
-
- /** The Browser Back key */
- static const String BROWSER_BACK = "BrowserBack";
-
- /** The Browser Favorites key */
- static const String BROWSER_FAVORTIES = "BrowserFavorites";
-
- /** The Browser Forward key */
- static const String BROWSER_FORWARD = "BrowserForward";
-
- /** The Browser Home key */
- static const String BROWSER_NAME = "BrowserHome";
-
- /** The Browser Refresh key */
- static const String BROWSER_REFRESH = "BrowserRefresh";
-
- /** The Browser Search key */
- static const String BROWSER_SEARCH = "BrowserSearch";
-
- /** The Browser Stop key */
- static const String BROWSER_STOP = "BrowserStop";
-
- /** The Camera key */
- static const String CAMERA = "Camera";
-
- /** The Caps Lock (Capital) key */
- static const String CAPS_LOCK = "CapsLock";
-
- /** The Clear key */
- static const String CLEAR = "Clear";
-
- /** The Code Input key */
- static const String CODE_INPUT = "CodeInput";
-
- /** The Compose key */
- static const String COMPOSE = "Compose";
-
- /** The Control (Ctrl) key */
- static const String CONTROL = "Control";
-
- /** The Crsel key */
- static const String CRSEL = "Crsel";
-
- /** The Convert key */
- static const String CONVERT = "Convert";
-
- /** The Copy key */
- static const String COPY = "Copy";
-
- /** The Cut key */
- static const String CUT = "Cut";
-
- /** The Decimal key */
- static const String DECIMAL = "Decimal";
-
- /** The Divide key */
- static const String DIVIDE = "Divide";
-
- /** The Down Arrow key */
- static const String DOWN = "Down";
-
- /** The diagonal Down-Left Arrow key */
- static const String DOWN_LEFT = "DownLeft";
-
- /** The diagonal Down-Right Arrow key */
- static const String DOWN_RIGHT = "DownRight";
-
- /** The Eject key */
- static const String EJECT = "Eject";
-
- /** The End key */
- static const String END = "End";
-
- /**
- * The Enter key. Note: This key value must also be used for the Return
- * (Macintosh numpad) key
- */
- static const String ENTER = "Enter";
-
- /** The Erase EOF key */
- static const String ERASE_EOF= "EraseEof";
-
- /** The Execute key */
- static const String EXECUTE = "Execute";
-
- /** The Exsel key */
- static const String EXSEL = "Exsel";
-
- /** The Function switch key */
- static const String FN = "Fn";
-
- /** The F1 key */
- static const String F1 = "F1";
-
- /** The F2 key */
- static const String F2 = "F2";
-
- /** The F3 key */
- static const String F3 = "F3";
-
- /** The F4 key */
- static const String F4 = "F4";
-
- /** The F5 key */
- static const String F5 = "F5";
-
- /** The F6 key */
- static const String F6 = "F6";
-
- /** The F7 key */
- static const String F7 = "F7";
-
- /** The F8 key */
- static const String F8 = "F8";
-
- /** The F9 key */
- static const String F9 = "F9";
-
- /** The F10 key */
- static const String F10 = "F10";
-
- /** The F11 key */
- static const String F11 = "F11";
-
- /** The F12 key */
- static const String F12 = "F12";
-
- /** The F13 key */
- static const String F13 = "F13";
-
- /** The F14 key */
- static const String F14 = "F14";
-
- /** The F15 key */
- static const String F15 = "F15";
-
- /** The F16 key */
- static const String F16 = "F16";
-
- /** The F17 key */
- static const String F17 = "F17";
-
- /** The F18 key */
- static const String F18 = "F18";
-
- /** The F19 key */
- static const String F19 = "F19";
-
- /** The F20 key */
- static const String F20 = "F20";
-
- /** The F21 key */
- static const String F21 = "F21";
-
- /** The F22 key */
- static const String F22 = "F22";
-
- /** The F23 key */
- static const String F23 = "F23";
-
- /** The F24 key */
- static const String F24 = "F24";
-
- /** The Final Mode (Final) key used on some asian keyboards */
- static const String FINAL_MODE = "FinalMode";
-
- /** The Find key */
- static const String FIND = "Find";
-
- /** The Full-Width Characters key */
- static const String FULL_WIDTH = "FullWidth";
-
- /** The Half-Width Characters key */
- static const String HALF_WIDTH = "HalfWidth";
-
- /** The Hangul (Korean characters) Mode key */
- static const String HANGUL_MODE = "HangulMode";
-
- /** The Hanja (Korean characters) Mode key */
- static const String HANJA_MODE = "HanjaMode";
-
- /** The Help key */
- static const String HELP = "Help";
-
- /** The Hiragana (Japanese Kana characters) key */
- static const String HIRAGANA = "Hiragana";
-
- /** The Home key */
- static const String HOME = "Home";
-
- /** The Insert (Ins) key */
- static const String INSERT = "Insert";
-
- /** The Japanese-Hiragana key */
- static const String JAPANESE_HIRAGANA = "JapaneseHiragana";
-
- /** The Japanese-Katakana key */
- static const String JAPANESE_KATAKANA = "JapaneseKatakana";
-
- /** The Japanese-Romaji key */
- static const String JAPANESE_ROMAJI = "JapaneseRomaji";
-
- /** The Junja Mode key */
- static const String JUNJA_MODE = "JunjaMode";
-
- /** The Kana Mode (Kana Lock) key */
- static const String KANA_MODE = "KanaMode";
-
- /**
- * The Kanji (Japanese name for ideographic characters of Chinese origin)
- * Mode key
- */
- static const String KANJI_MODE = "KanjiMode";
-
- /** The Katakana (Japanese Kana characters) key */
- static const String KATAKANA = "Katakana";
-
- /** The Start Application One key */
- static const String LAUNCH_APPLICATION_1 = "LaunchApplication1";
-
- /** The Start Application Two key */
- static const String LAUNCH_APPLICATION_2 = "LaunchApplication2";
-
- /** The Start Mail key */
- static const String LAUNCH_MAIL = "LaunchMail";
-
- /** The Left Arrow key */
- static const String LEFT = "Left";
-
- /** The Menu key */
- static const String MENU = "Menu";
-
- /**
- * The Meta key. Note: This key value shall be also used for the Apple
- * Command key
- */
- static const String META = "Meta";
-
- /** The Media Next Track key */
- static const String MEDIA_NEXT_TRACK = "MediaNextTrack";
-
- /** The Media Play Pause key */
- static const String MEDIA_PAUSE_PLAY = "MediaPlayPause";
-
- /** The Media Previous Track key */
- static const String MEDIA_PREVIOUS_TRACK = "MediaPreviousTrack";
-
- /** The Media Stop key */
- static const String MEDIA_STOP = "MediaStop";
-
- /** The Mode Change key */
- static const String MODE_CHANGE = "ModeChange";
-
- /** The Next Candidate function key */
- static const String NEXT_CANDIDATE = "NextCandidate";
-
- /** The Nonconvert (Don't Convert) key */
- static const String NON_CONVERT = "Nonconvert";
-
- /** The Number Lock key */
- static const String NUM_LOCK = "NumLock";
-
- /** The Page Down (Next) key */
- static const String PAGE_DOWN = "PageDown";
-
- /** The Page Up key */
- static const String PAGE_UP = "PageUp";
-
- /** The Paste key */
- static const String PASTE = "Paste";
-
- /** The Pause key */
- static const String PAUSE = "Pause";
-
- /** The Play key */
- static const String PLAY = "Play";
-
- /**
- * The Power key. Note: Some devices may not expose this key to the
- * operating environment
- */
- static const String POWER = "Power";
-
- /** The Previous Candidate function key */
- static const String PREVIOUS_CANDIDATE = "PreviousCandidate";
-
- /** The Print Screen (PrintScrn, SnapShot) key */
- static const String PRINT_SCREEN = "PrintScreen";
-
- /** The Process key */
- static const String PROCESS = "Process";
-
- /** The Props key */
- static const String PROPS = "Props";
-
- /** The Right Arrow key */
- static const String RIGHT = "Right";
-
- /** The Roman Characters function key */
- static const String ROMAN_CHARACTERS = "RomanCharacters";
-
- /** The Scroll Lock key */
- static const String SCROLL = "Scroll";
-
- /** The Select key */
- static const String SELECT = "Select";
-
- /** The Select Media key */
- static const String SELECT_MEDIA = "SelectMedia";
-
- /** The Separator key */
- static const String SEPARATOR = "Separator";
-
- /** The Shift key */
- static const String SHIFT = "Shift";
-
- /** The Soft1 key */
- static const String SOFT_1 = "Soft1";
-
- /** The Soft2 key */
- static const String SOFT_2 = "Soft2";
-
- /** The Soft3 key */
- static const String SOFT_3 = "Soft3";
-
- /** The Soft4 key */
- static const String SOFT_4 = "Soft4";
-
- /** The Stop key */
- static const String STOP = "Stop";
-
- /** The Subtract key */
- static const String SUBTRACT = "Subtract";
-
- /** The Symbol Lock key */
- static const String SYMBOL_LOCK = "SymbolLock";
-
- /** The Up Arrow key */
- static const String UP = "Up";
-
- /** The diagonal Up-Left Arrow key */
- static const String UP_LEFT = "UpLeft";
-
- /** The diagonal Up-Right Arrow key */
- static const String UP_RIGHT = "UpRight";
-
- /** The Undo key */
- static const String UNDO = "Undo";
-
- /** The Volume Down key */
- static const String VOLUME_DOWN = "VolumeDown";
-
- /** The Volume Mute key */
- static const String VOLUMN_MUTE = "VolumeMute";
-
- /** The Volume Up key */
- static const String VOLUMN_UP = "VolumeUp";
-
- /** The Windows Logo key */
- static const String WIN = "Win";
-
- /** The Zoom key */
- static const String ZOOM = "Zoom";
-
- /**
- * The Backspace (Back) key. Note: This key value shall be also used for the
- * key labeled 'delete' MacOS keyboards when not modified by the 'Fn' key
- */
- static const String BACKSPACE = "Backspace";
-
- /** The Horizontal Tabulation (Tab) key */
- static const String TAB = "Tab";
-
- /** The Cancel key */
- static const String CANCEL = "Cancel";
-
- /** The Escape (Esc) key */
- static const String ESC = "Esc";
-
- /** The Space (Spacebar) key: */
- static const String SPACEBAR = "Spacebar";
-
- /**
- * The Delete (Del) Key. Note: This key value shall be also used for the key
- * labeled 'delete' MacOS keyboards when modified by the 'Fn' key
- */
- static const String DEL = "Del";
-
- /** The Combining Grave Accent (Greek Varia, Dead Grave) key */
- static const String DEAD_GRAVE = "DeadGrave";
-
- /**
- * The Combining Acute Accent (Stress Mark, Greek Oxia, Tonos, Dead Eacute)
- * key
- */
- static const String DEAD_EACUTE = "DeadEacute";
-
- /** The Combining Circumflex Accent (Hat, Dead Circumflex) key */
- static const String DEAD_CIRCUMFLEX = "DeadCircumflex";
-
- /** The Combining Tilde (Dead Tilde) key */
- static const String DEAD_TILDE = "DeadTilde";
-
- /** The Combining Macron (Long, Dead Macron) key */
- static const String DEAD_MACRON = "DeadMacron";
-
- /** The Combining Breve (Short, Dead Breve) key */
- static const String DEAD_BREVE = "DeadBreve";
-
- /** The Combining Dot Above (Derivative, Dead Above Dot) key */
- static const String DEAD_ABOVE_DOT = "DeadAboveDot";
-
- /**
- * The Combining Diaeresis (Double Dot Abode, Umlaut, Greek Dialytika,
- * Double Derivative, Dead Diaeresis) key
- */
- static const String DEAD_UMLAUT = "DeadUmlaut";
-
- /** The Combining Ring Above (Dead Above Ring) key */
- static const String DEAD_ABOVE_RING = "DeadAboveRing";
-
- /** The Combining Double Acute Accent (Dead Doubleacute) key */
- static const String DEAD_DOUBLEACUTE = "DeadDoubleacute";
-
- /** The Combining Caron (Hacek, V Above, Dead Caron) key */
- static const String DEAD_CARON = "DeadCaron";
-
- /** The Combining Cedilla (Dead Cedilla) key */
- static const String DEAD_CEDILLA = "DeadCedilla";
-
- /** The Combining Ogonek (Nasal Hook, Dead Ogonek) key */
- static const String DEAD_OGONEK = "DeadOgonek";
-
- /**
- * The Combining Greek Ypogegrammeni (Greek Non-Spacing Iota Below, Iota
- * Subscript, Dead Iota) key
- */
- static const String DEAD_IOTA = "DeadIota";
-
- /**
- * The Combining Katakana-Hiragana Voiced Sound Mark (Dead Voiced Sound) key
- */
- static const String DEAD_VOICED_SOUND = "DeadVoicedSound";
-
- /**
- * The Combining Katakana-Hiragana Semi-Voiced Sound Mark (Dead Semivoiced
- * Sound) key
- */
- static const String DEC_SEMIVOICED_SOUND= "DeadSemivoicedSound";
-
- /**
- * Key value used when an implementation is unable to identify another key
- * value, due to either hardware, platform, or software constraints
- */
- static const String UNIDENTIFIED = "Unidentified";
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * Internal class that does the actual calculations to determine keyCode and
- * charCode for keydown, keypress, and keyup events for all browsers.
- */
-class _KeyboardEventHandler extends EventStreamProvider<KeyEvent> {
- // This code inspired by Closure's KeyHandling library.
- // http://closure-library.googlecode.com/svn/docs/closure_goog_events_keyhandler.js.source.html
-
- /**
- * The set of keys that have been pressed down without seeing their
- * corresponding keyup event.
- */
- final List<KeyEvent> _keyDownList = <KeyEvent>[];
-
- /** The type of KeyEvent we are tracking (keyup, keydown, keypress). */
- final String _type;
-
- /** The element we are watching for events to happen on. */
- final EventTarget _target;
-
- // The distance to shift from upper case alphabet Roman letters to lower case.
- static final int _ROMAN_ALPHABET_OFFSET = "a".codeUnits[0] - "A".codeUnits[0];
-
- /** Custom Stream (Controller) to produce KeyEvents for the stream. */
- _CustomKeyEventStreamImpl _stream;
-
- static const _EVENT_TYPE = 'KeyEvent';
-
- /**
- * An enumeration of key identifiers currently part of the W3C draft for DOM3
- * and their mappings to keyCodes.
- * http://www.w3.org/TR/DOM-Level-3-Events/keyset.html#KeySet-Set
- */
- static const Map<String, int> _keyIdentifier = const {
- 'Up': KeyCode.UP,
- 'Down': KeyCode.DOWN,
- 'Left': KeyCode.LEFT,
- 'Right': KeyCode.RIGHT,
- 'Enter': KeyCode.ENTER,
- 'F1': KeyCode.F1,
- 'F2': KeyCode.F2,
- 'F3': KeyCode.F3,
- 'F4': KeyCode.F4,
- 'F5': KeyCode.F5,
- 'F6': KeyCode.F6,
- 'F7': KeyCode.F7,
- 'F8': KeyCode.F8,
- 'F9': KeyCode.F9,
- 'F10': KeyCode.F10,
- 'F11': KeyCode.F11,
- 'F12': KeyCode.F12,
- 'U+007F': KeyCode.DELETE,
- 'Home': KeyCode.HOME,
- 'End': KeyCode.END,
- 'PageUp': KeyCode.PAGE_UP,
- 'PageDown': KeyCode.PAGE_DOWN,
- 'Insert': KeyCode.INSERT
- };
-
- /** Return a stream for KeyEvents for the specified target. */
- // Note: this actually functions like a factory constructor.
- CustomStream<KeyEvent> forTarget(EventTarget e, {bool useCapture: false}) {
- var handler = new _KeyboardEventHandler.initializeAllEventListeners(
- _type, e);
- return handler._stream;
- }
-
- /**
- * General constructor, performs basic initialization for our improved
- * KeyboardEvent controller.
- */
- _KeyboardEventHandler(this._type):
- _stream = new _CustomKeyEventStreamImpl('event'), _target = null,
- super(_EVENT_TYPE);
-
- /**
- * Hook up all event listeners under the covers so we can estimate keycodes
- * and charcodes when they are not provided.
- */
- _KeyboardEventHandler.initializeAllEventListeners(this._type, this._target) :
- super(_EVENT_TYPE) {
- throw 'Key event handling not supported in DDC';
- /*
- Element.keyDownEvent.forTarget(_target, useCapture: true).listen(
- processKeyDown);
- Element.keyPressEvent.forTarget(_target, useCapture: true).listen(
- processKeyPress);
- Element.keyUpEvent.forTarget(_target, useCapture: true).listen(
- processKeyUp);
- _stream = new _CustomKeyEventStreamImpl(_type);
- */
- }
-
- /** Determine if caps lock is one of the currently depressed keys. */
- bool get _capsLockOn =>
- _keyDownList.any((var element) => element.keyCode == KeyCode.CAPS_LOCK);
-
- /**
- * Given the previously recorded keydown key codes, see if we can determine
- * the keycode of this keypress [event]. (Generally browsers only provide
- * charCode information for keypress events, but with a little
- * reverse-engineering, we can also determine the keyCode.) Returns
- * KeyCode.UNKNOWN if the keycode could not be determined.
- */
- int _determineKeyCodeForKeypress(KeyboardEvent event) {
- // Note: This function is a work in progress. We'll expand this function
- // once we get more information about other keyboards.
- for (var prevEvent in _keyDownList) {
- if (prevEvent._shadowCharCode == event.charCode) {
- return prevEvent.keyCode;
- }
- if ((event.shiftKey || _capsLockOn) && event.charCode >= "A".codeUnits[0]
- && event.charCode <= "Z".codeUnits[0] && event.charCode +
- _ROMAN_ALPHABET_OFFSET == prevEvent._shadowCharCode) {
- return prevEvent.keyCode;
- }
- }
- return KeyCode.UNKNOWN;
- }
-
- /**
- * Given the charater code returned from a keyDown [event], try to ascertain
- * and return the corresponding charCode for the character that was pressed.
- * This information is not shown to the user, but used to help polyfill
- * keypress events.
- */
- int _findCharCodeKeyDown(KeyboardEvent event) {
- if (event.keyLocation == 3) { // Numpad keys.
- switch (event.keyCode) {
- case KeyCode.NUM_ZERO:
- // Even though this function returns _charCodes_, for some cases the
- // KeyCode == the charCode we want, in which case we use the keycode
- // constant for readability.
- return KeyCode.ZERO;
- case KeyCode.NUM_ONE:
- return KeyCode.ONE;
- case KeyCode.NUM_TWO:
- return KeyCode.TWO;
- case KeyCode.NUM_THREE:
- return KeyCode.THREE;
- case KeyCode.NUM_FOUR:
- return KeyCode.FOUR;
- case KeyCode.NUM_FIVE:
- return KeyCode.FIVE;
- case KeyCode.NUM_SIX:
- return KeyCode.SIX;
- case KeyCode.NUM_SEVEN:
- return KeyCode.SEVEN;
- case KeyCode.NUM_EIGHT:
- return KeyCode.EIGHT;
- case KeyCode.NUM_NINE:
- return KeyCode.NINE;
- case KeyCode.NUM_MULTIPLY:
- return 42; // Char code for *
- case KeyCode.NUM_PLUS:
- return 43; // +
- case KeyCode.NUM_MINUS:
- return 45; // -
- case KeyCode.NUM_PERIOD:
- return 46; // .
- case KeyCode.NUM_DIVISION:
- return 47; // /
- }
- } else if (event.keyCode >= 65 && event.keyCode <= 90) {
- // Set the "char code" for key down as the lower case letter. Again, this
- // will not show up for the user, but will be helpful in estimating
- // keyCode locations and other information during the keyPress event.
- return event.keyCode + _ROMAN_ALPHABET_OFFSET;
- }
- switch(event.keyCode) {
- case KeyCode.SEMICOLON:
- return KeyCode.FF_SEMICOLON;
- case KeyCode.EQUALS:
- return KeyCode.FF_EQUALS;
- case KeyCode.COMMA:
- return 44; // Ascii value for ,
- case KeyCode.DASH:
- return 45; // -
- case KeyCode.PERIOD:
- return 46; // .
- case KeyCode.SLASH:
- return 47; // /
- case KeyCode.APOSTROPHE:
- return 96; // `
- case KeyCode.OPEN_SQUARE_BRACKET:
- return 91; // [
- case KeyCode.BACKSLASH:
- return 92; // \
- case KeyCode.CLOSE_SQUARE_BRACKET:
- return 93; // ]
- case KeyCode.SINGLE_QUOTE:
- return 39; // '
- }
- return event.keyCode;
- }
-
- /**
- * Returns true if the key fires a keypress event in the current browser.
- */
- bool _firesKeyPressEvent(KeyEvent event) {
- if (!Device.isIE && !Device.isWebKit) {
- return true;
- }
-
- if (Device.userAgent.contains('Mac') && event.altKey) {
- return KeyCode.isCharacterKey(event.keyCode);
- }
-
- // Alt but not AltGr which is represented as Alt+Ctrl.
- if (event.altKey && !event.ctrlKey) {
- return false;
- }
-
- // Saves Ctrl or Alt + key for IE and WebKit, which won't fire keypress.
- if (!event.shiftKey &&
- (_keyDownList.last.keyCode == KeyCode.CTRL ||
- _keyDownList.last.keyCode == KeyCode.ALT ||
- Device.userAgent.contains('Mac') &&
- _keyDownList.last.keyCode == KeyCode.META)) {
- return false;
- }
-
- // Some keys with Ctrl/Shift do not issue keypress in WebKit.
- if (Device.isWebKit && event.ctrlKey && event.shiftKey && (
- event.keyCode == KeyCode.BACKSLASH ||
- event.keyCode == KeyCode.OPEN_SQUARE_BRACKET ||
- event.keyCode == KeyCode.CLOSE_SQUARE_BRACKET ||
- event.keyCode == KeyCode.TILDE ||
- event.keyCode == KeyCode.SEMICOLON || event.keyCode == KeyCode.DASH ||
- event.keyCode == KeyCode.EQUALS || event.keyCode == KeyCode.COMMA ||
- event.keyCode == KeyCode.PERIOD || event.keyCode == KeyCode.SLASH ||
- event.keyCode == KeyCode.APOSTROPHE ||
- event.keyCode == KeyCode.SINGLE_QUOTE)) {
- return false;
- }
-
- switch (event.keyCode) {
- case KeyCode.ENTER:
- // IE9 does not fire keypress on ENTER.
- return !Device.isIE;
- case KeyCode.ESC:
- return !Device.isWebKit;
- }
-
- return KeyCode.isCharacterKey(event.keyCode);
- }
-
- /**
- * Normalize the keycodes to the IE KeyCodes (this is what Chrome, IE, and
- * Opera all use).
- */
- int _normalizeKeyCodes(KeyboardEvent event) {
- // Note: This may change once we get input about non-US keyboards.
- if (Device.isFirefox) {
- switch(event.keyCode) {
- case KeyCode.FF_EQUALS:
- return KeyCode.EQUALS;
- case KeyCode.FF_SEMICOLON:
- return KeyCode.SEMICOLON;
- case KeyCode.MAC_FF_META:
- return KeyCode.META;
- case KeyCode.WIN_KEY_FF_LINUX:
- return KeyCode.WIN_KEY;
- }
- }
- return event.keyCode;
- }
-
- /** Handle keydown events. */
- void processKeyDown(KeyboardEvent e) {
- // Ctrl-Tab and Alt-Tab can cause the focus to be moved to another window
- // before we've caught a key-up event. If the last-key was one of these
- // we reset the state.
- if (_keyDownList.length > 0 &&
- (_keyDownList.last.keyCode == KeyCode.CTRL && !e.ctrlKey ||
- _keyDownList.last.keyCode == KeyCode.ALT && !e.altKey ||
- Device.userAgent.contains('Mac') &&
- _keyDownList.last.keyCode == KeyCode.META && !e.metaKey)) {
- _keyDownList.clear();
- }
-
- var event = new KeyEvent.wrap(e);
- event._shadowKeyCode = _normalizeKeyCodes(event);
- // Technically a "keydown" event doesn't have a charCode. This is
- // calculated nonetheless to provide us with more information in giving
- // as much information as possible on keypress about keycode and also
- // charCode.
- event._shadowCharCode = _findCharCodeKeyDown(event);
- if (_keyDownList.length > 0 && event.keyCode != _keyDownList.last.keyCode &&
- !_firesKeyPressEvent(event)) {
- // Some browsers have quirks not firing keypress events where all other
- // browsers do. This makes them more consistent.
- processKeyPress(e);
- }
- _keyDownList.add(event);
- _stream.add(event);
- }
-
- /** Handle keypress events. */
- void processKeyPress(KeyboardEvent event) {
- var e = new KeyEvent.wrap(event);
- // IE reports the character code in the keyCode field for keypress events.
- // There are two exceptions however, Enter and Escape.
- if (Device.isIE) {
- if (e.keyCode == KeyCode.ENTER || e.keyCode == KeyCode.ESC) {
- e._shadowCharCode = 0;
- } else {
- e._shadowCharCode = e.keyCode;
- }
- } else if (Device.isOpera) {
- // Opera reports the character code in the keyCode field.
- e._shadowCharCode = KeyCode.isCharacterKey(e.keyCode) ? e.keyCode : 0;
- }
- // Now we guestimate about what the keycode is that was actually
- // pressed, given previous keydown information.
- e._shadowKeyCode = _determineKeyCodeForKeypress(e);
-
- // Correct the key value for certain browser-specific quirks.
- if (e._shadowKeyIdentifier != null &&
- _keyIdentifier.containsKey(e._shadowKeyIdentifier)) {
- // This is needed for Safari Windows because it currently doesn't give a
- // keyCode/which for non printable keys.
- e._shadowKeyCode = _keyIdentifier[e._shadowKeyIdentifier];
- }
- e._shadowAltKey = _keyDownList.any((var element) => element.altKey);
- _stream.add(e);
- }
-
- /** Handle keyup events. */
- void processKeyUp(KeyboardEvent event) {
- var e = new KeyEvent.wrap(event);
- KeyboardEvent toRemove = null;
- for (var key in _keyDownList) {
- if (key.keyCode == e.keyCode) {
- toRemove = key;
- }
- }
- if (toRemove != null) {
- _keyDownList.removeWhere((element) => element == toRemove);
- } else if (_keyDownList.length > 0) {
- // This happens when we've reached some international keyboard case we
- // haven't accounted for or we haven't correctly eliminated all browser
- // inconsistencies. Filing bugs on when this is reached is welcome!
- _keyDownList.removeLast();
- }
- _stream.add(e);
- }
-}
-
-
-/**
- * Records KeyboardEvents that occur on a particular element, and provides a
- * stream of outgoing KeyEvents with cross-browser consistent keyCode and
- * charCode values despite the fact that a multitude of browsers that have
- * varying keyboard default behavior.
- *
- * Example usage:
- *
- * KeyboardEventStream.onKeyDown(document.body).listen(
- * keydownHandlerTest);
- *
- * This class is very much a work in progress, and we'd love to get information
- * on how we can make this class work with as many international keyboards as
- * possible. Bugs welcome!
- */
-class KeyboardEventStream {
-
- /** Named constructor to produce a stream for onKeyPress events. */
- static CustomStream<KeyEvent> onKeyPress(EventTarget target) =>
- new _KeyboardEventHandler('keypress').forTarget(target);
-
- /** Named constructor to produce a stream for onKeyUp events. */
- static CustomStream<KeyEvent> onKeyUp(EventTarget target) =>
- new _KeyboardEventHandler('keyup').forTarget(target);
-
- /** Named constructor to produce a stream for onKeyDown events. */
- static CustomStream<KeyEvent> onKeyDown(EventTarget target) =>
- new _KeyboardEventHandler('keydown').forTarget(target);
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-
-/**
- * Class which helps construct standard node validation policies.
- *
- * By default this will not accept anything, but the 'allow*' functions can be
- * used to expand what types of elements or attributes are allowed.
- *
- * All allow functions are additive- elements will be accepted if they are
- * accepted by any specific rule.
- *
- * It is important to remember that sanitization is not just intended to prevent
- * cross-site scripting attacks, but also to prevent information from being
- * displayed in unexpected ways. For example something displaying basic
- * formatted text may not expect `<video>` tags to appear. In this case an
- * empty NodeValidatorBuilder with just [allowTextElements] might be
- * appropriate.
- */
-class NodeValidatorBuilder implements NodeValidator {
-
- final List<NodeValidator> _validators = <NodeValidator>[];
-
- NodeValidatorBuilder() {
- }
-
- /**
- * Creates a new NodeValidatorBuilder which accepts common constructs.
- *
- * By default this will accept HTML5 elements and attributes with the default
- * [UriPolicy] and templating elements.
- *
- * Notable syntax which is filtered:
- *
- * * Only known-good HTML5 elements and attributes are allowed.
- * * All URLs must be same-origin, use [allowNavigation] and [allowImages] to
- * specify additional URI policies.
- * * Inline-styles are not allowed.
- * * Custom element tags are disallowed, use [allowCustomElement].
- * * Custom tags extensions are disallowed, use [allowTagExtension].
- * * SVG Elements are not allowed, use [allowSvg].
- *
- * For scenarios where the HTML should only contain formatted text
- * [allowTextElements] is more appropriate.
- *
- * Use [allowSvg] to allow SVG elements.
- */
- NodeValidatorBuilder.common() {
- allowHtml5();
- allowTemplating();
- }
-
- /**
- * Allows navigation elements- Form and Anchor tags, along with common
- * attributes.
- *
- * The UriPolicy can be used to restrict the locations the navigation elements
- * are allowed to direct to. By default this will use the default [UriPolicy].
- */
- void allowNavigation([UriPolicy uriPolicy]) {
- if (uriPolicy == null) {
- uriPolicy = new UriPolicy();
- }
- add(new _SimpleNodeValidator.allowNavigation(uriPolicy));
- }
-
- /**
- * Allows image elements.
- *
- * The UriPolicy can be used to restrict the locations the images may be
- * loaded from. By default this will use the default [UriPolicy].
- */
- void allowImages([UriPolicy uriPolicy]) {
- if (uriPolicy == null) {
- uriPolicy = new UriPolicy();
- }
- add(new _SimpleNodeValidator.allowImages(uriPolicy));
- }
-
- /**
- * Allow basic text elements.
- *
- * This allows a subset of HTML5 elements, specifically just these tags and
- * no attributes.
- *
- * * B
- * * BLOCKQUOTE
- * * BR
- * * EM
- * * H1
- * * H2
- * * H3
- * * H4
- * * H5
- * * H6
- * * HR
- * * I
- * * LI
- * * OL
- * * P
- * * SPAN
- * * UL
- */
- void allowTextElements() {
- add(new _SimpleNodeValidator.allowTextElements());
- }
-
- /**
- * Allow inline styles on elements.
- *
- * If [tagName] is not specified then this allows inline styles on all
- * elements. Otherwise tagName limits the styles to the specified elements.
- */
- void allowInlineStyles({String tagName}) {
- if (tagName == null) {
- tagName = '*';
- } else {
- tagName = tagName.toUpperCase();
- }
- add(new _SimpleNodeValidator(null, allowedAttributes: ['$tagName::style']));
- }
-
- /**
- * Allow common safe HTML5 elements and attributes.
- *
- * This list is based off of the Caja whitelists at:
- * https://code.google.com/p/google-caja/wiki/CajaWhitelists.
- *
- * Common things which are not allowed are script elements, style attributes
- * and any script handlers.
- */
- void allowHtml5({UriPolicy uriPolicy}) {
- add(new _Html5NodeValidator(uriPolicy: uriPolicy));
- }
-
- /**
- * Allow SVG elements and attributes except for known bad ones.
- */
- void allowSvg() {
- throw 'SVG not supported with DDC';
- // add(new _SvgNodeValidator());
- }
-
- /**
- * Allow custom elements with the specified tag name and specified attributes.
- *
- * This will allow the elements as custom tags (such as <x-foo></x-foo>),
- * but will not allow tag extensions. Use [allowTagExtension] to allow
- * tag extensions.
- */
- void allowCustomElement(String tagName,
- {UriPolicy uriPolicy,
- Iterable<String> attributes,
- Iterable<String> uriAttributes}) {
-
- var tagNameUpper = tagName.toUpperCase();
- var attrs;
- if (attributes != null) {
- attrs =
- attributes.map((name) => '$tagNameUpper::${name.toLowerCase()}');
- }
- var uriAttrs;
- if (uriAttributes != null) {
- uriAttrs =
- uriAttributes.map((name) => '$tagNameUpper::${name.toLowerCase()}');
- }
- if (uriPolicy == null) {
- uriPolicy = new UriPolicy();
- }
-
- add(new _CustomElementNodeValidator(
- uriPolicy,
- [tagNameUpper],
- attrs,
- uriAttrs,
- false,
- true));
- }
-
- /**
- * Allow custom tag extensions with the specified type name and specified
- * attributes.
- *
- * This will allow tag extensions (such as <div is="x-foo"></div>),
- * but will not allow custom tags. Use [allowCustomElement] to allow
- * custom tags.
- */
- void allowTagExtension(String tagName, String baseName,
- {UriPolicy uriPolicy,
- Iterable<String> attributes,
- Iterable<String> uriAttributes}) {
-
- var baseNameUpper = baseName.toUpperCase();
- var tagNameUpper = tagName.toUpperCase();
- var attrs;
- if (attributes != null) {
- attrs =
- attributes.map((name) => '$baseNameUpper::${name.toLowerCase()}');
- }
- var uriAttrs;
- if (uriAttributes != null) {
- uriAttrs =
- uriAttributes.map((name) => '$baseNameUpper::${name.toLowerCase()}');
- }
- if (uriPolicy == null) {
- uriPolicy = new UriPolicy();
- }
-
- add(new _CustomElementNodeValidator(
- uriPolicy,
- [tagNameUpper, baseNameUpper],
- attrs,
- uriAttrs,
- true,
- false));
- }
-
- void allowElement(String tagName, {UriPolicy uriPolicy,
- Iterable<String> attributes,
- Iterable<String> uriAttributes}) {
-
- allowCustomElement(tagName, uriPolicy: uriPolicy,
- attributes: attributes,
- uriAttributes: uriAttributes);
- }
-
- /**
- * Allow templating elements (such as <template> and template-related
- * attributes.
- *
- * This still requires other validators to allow regular attributes to be
- * bound (such as [allowHtml5]).
- */
- void allowTemplating() {
- add(new _TemplatingNodeValidator());
- }
-
- /**
- * Add an additional validator to the current list of validators.
- *
- * Elements and attributes will be accepted if they are accepted by any
- * validators.
- */
- void add(NodeValidator validator) {
- _validators.add(validator);
- }
-
- bool allowsElement(Element element) {
- return _validators.any((v) => v.allowsElement(element));
- }
-
- bool allowsAttribute(Element element, String attributeName, String value) {
- return _validators.any(
- (v) => v.allowsAttribute(element, attributeName, value));
- }
-}
-
-class _SimpleNodeValidator implements NodeValidator {
- final Set<String> allowedElements = new Set<String>();
- final Set<String> allowedAttributes = new Set<String>();
- final Set<String> allowedUriAttributes = new Set<String>();
- final UriPolicy uriPolicy;
-
- factory _SimpleNodeValidator.allowNavigation(UriPolicy uriPolicy) {
- return new _SimpleNodeValidator(uriPolicy,
- allowedElements: const [
- 'A',
- 'FORM'],
- allowedAttributes: const [
- 'A::accesskey',
- 'A::coords',
- 'A::hreflang',
- 'A::name',
- 'A::shape',
- 'A::tabindex',
- 'A::target',
- 'A::type',
- 'FORM::accept',
- 'FORM::autocomplete',
- 'FORM::enctype',
- 'FORM::method',
- 'FORM::name',
- 'FORM::novalidate',
- 'FORM::target',
- ],
- allowedUriAttributes: const [
- 'A::href',
- 'FORM::action',
- ]);
- }
-
- factory _SimpleNodeValidator.allowImages(UriPolicy uriPolicy) {
- return new _SimpleNodeValidator(uriPolicy,
- allowedElements: const [
- 'IMG'
- ],
- allowedAttributes: const [
- 'IMG::align',
- 'IMG::alt',
- 'IMG::border',
- 'IMG::height',
- 'IMG::hspace',
- 'IMG::ismap',
- 'IMG::name',
- 'IMG::usemap',
- 'IMG::vspace',
- 'IMG::width',
- ],
- allowedUriAttributes: const [
- 'IMG::src',
- ]);
- }
-
- factory _SimpleNodeValidator.allowTextElements() {
- return new _SimpleNodeValidator(null,
- allowedElements: const [
- 'B',
- 'BLOCKQUOTE',
- 'BR',
- 'EM',
- 'H1',
- 'H2',
- 'H3',
- 'H4',
- 'H5',
- 'H6',
- 'HR',
- 'I',
- 'LI',
- 'OL',
- 'P',
- 'SPAN',
- 'UL',
- ]);
- }
-
- /**
- * Elements must be uppercased tag names. For example `'IMG'`.
- * Attributes must be uppercased tag name followed by :: followed by
- * lowercase attribute name. For example `'IMG:src'`.
- */
- _SimpleNodeValidator(this.uriPolicy,
- {Iterable<String> allowedElements, Iterable<String> allowedAttributes,
- Iterable<String> allowedUriAttributes}) {
- this.allowedElements.addAll(allowedElements ?? const []);
- allowedAttributes = allowedAttributes ?? const [];
- allowedUriAttributes = allowedUriAttributes ?? const [];
- var legalAttributes = allowedAttributes.where(
- (x) => !_Html5NodeValidator._uriAttributes.contains(x));
- var extraUriAttributes = allowedAttributes.where(
- (x) => _Html5NodeValidator._uriAttributes.contains(x));
- this.allowedAttributes.addAll(legalAttributes);
- this.allowedUriAttributes.addAll(allowedUriAttributes);
- this.allowedUriAttributes.addAll(extraUriAttributes);
- }
-
- bool allowsElement(Element element) {
- return allowedElements.contains(Element._safeTagName(element));
- }
-
- bool allowsAttribute(Element element, String attributeName, String value) {
- var tagName = Element._safeTagName(element);
- if (allowedUriAttributes.contains('$tagName::$attributeName')) {
- return uriPolicy.allowsUri(value);
- } else if (allowedUriAttributes.contains('*::$attributeName')) {
- return uriPolicy.allowsUri(value);
- } else if (allowedAttributes.contains('$tagName::$attributeName')) {
- return true;
- } else if (allowedAttributes.contains('*::$attributeName')) {
- return true;
- } else if (allowedAttributes.contains('$tagName::*')) {
- return true;
- } else if (allowedAttributes.contains('*::*')) {
- return true;
- }
- return false;
- }
-}
-
-class _CustomElementNodeValidator extends _SimpleNodeValidator {
- final bool allowTypeExtension;
- final bool allowCustomTag;
-
- _CustomElementNodeValidator(UriPolicy uriPolicy,
- Iterable<String> allowedElements,
- Iterable<String> allowedAttributes,
- Iterable<String> allowedUriAttributes,
- bool allowTypeExtension,
- bool allowCustomTag):
-
- this.allowTypeExtension = allowTypeExtension == true,
- this.allowCustomTag = allowCustomTag == true,
- super(uriPolicy,
- allowedElements: allowedElements,
- allowedAttributes: allowedAttributes,
- allowedUriAttributes: allowedUriAttributes);
-
- bool allowsElement(Element element) {
- if (allowTypeExtension) {
- var isAttr = element.attributes['is'];
- if (isAttr != null) {
- return allowedElements.contains(isAttr.toUpperCase()) &&
- allowedElements.contains(Element._safeTagName(element));
- }
- }
- return allowCustomTag && allowedElements.contains(Element._safeTagName(element));
- }
-
- bool allowsAttribute(Element element, String attributeName, String value) {
- if (allowsElement(element)) {
- if (allowTypeExtension && attributeName == 'is' &&
- allowedElements.contains(value.toUpperCase())) {
- return true;
- }
- return super.allowsAttribute(element, attributeName, value);
- }
- return false;
- }
-}
-
-class _TemplatingNodeValidator extends _SimpleNodeValidator {
- static const _TEMPLATE_ATTRS =
- const <String>['bind', 'if', 'ref', 'repeat', 'syntax'];
-
- final Set<String> _templateAttrs;
-
- _TemplatingNodeValidator():
- _templateAttrs = new Set<String>.from(_TEMPLATE_ATTRS),
- super(null,
- allowedElements: [
- 'TEMPLATE'
- ],
- allowedAttributes: _TEMPLATE_ATTRS.map((attr) => 'TEMPLATE::$attr'));
-
- bool allowsAttribute(Element element, String attributeName, String value) {
- if (super.allowsAttribute(element, attributeName, value)) {
- return true;
- }
-
- if (attributeName == 'template' && value == "") {
- return true;
- }
-
- if (element.attributes['template'] == "" ) {
- return _templateAttrs.contains(attributeName);
- }
- return false;
- }
-}
-
-/*
-class _SvgNodeValidator implements NodeValidator {
- bool allowsElement(Element element) {
- if (element is svg.ScriptElement) {
- return false;
- }
- // Firefox 37 has issues with creating foreign elements inside a
- // foreignobject tag as SvgElement. We don't want foreignobject contents
- // anyway, so just remove the whole tree outright. And we can't rely
- // on IE recognizing the SvgForeignObject type, so go by tagName. Bug 23144
- if (element is svg.SvgElement && Element._safeTagName(element) == 'foreignObject') {
- return false;
- }
- if (element is svg.SvgElement) {
- return true;
- }
- return false;
- }
-
- bool allowsAttribute(Element element, String attributeName, String value) {
- if (attributeName == 'is' || attributeName.startsWith('on')) {
- return false;
- }
- return allowsElement(element);
- }
-}
-*/// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * Contains the set of standard values returned by HTMLDocument.getReadyState.
- */
-abstract class ReadyState {
- /**
- * Indicates the document is still loading and parsing.
- */
- static const String LOADING = "loading";
-
- /**
- * Indicates the document is finished parsing but is still loading
- * subresources.
- */
- static const String INTERACTIVE = "interactive";
-
- /**
- * Indicates the document and all subresources have been loaded.
- */
- static const String COMPLETE = "complete";
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * A list which just wraps another list, for either intercepting list calls or
- * retyping the list (for example, from List<A> to List<B> where B extends A).
- */
-class _WrappedList<E extends Node> extends ListBase<E>
- implements NodeListWrapper {
- final List _list;
-
- _WrappedList(this._list);
-
- // Iterable APIs
-
- Iterator<E> get iterator => new _WrappedIterator(_list.iterator);
-
- int get length => _list.length;
-
- // Collection APIs
-
- void add(E element) { _list.add(element); }
-
- bool remove(Object element) => _list.remove(element);
-
- void clear() { _list.clear(); }
-
- // List APIs
-
- E operator [](int index) => _list[index];
-
- void operator []=(int index, E value) { _list[index] = value; }
-
- set length(int newLength) { _list.length = newLength; }
-
- void sort([int compare(E a, E b)]) { _list.sort(compare); }
-
- int indexOf(Object element, [int start = 0]) => _list.indexOf(element, start);
-
- int lastIndexOf(Object element, [int start]) => _list.lastIndexOf(element, start);
-
- void insert(int index, E element) => _list.insert(index, element);
-
- E removeAt(int index) => _list.removeAt(index);
-
- void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
- _list.setRange(start, end, iterable, skipCount);
- }
-
- void removeRange(int start, int end) { _list.removeRange(start, end); }
-
- void replaceRange(int start, int end, Iterable<E> iterable) {
- _list.replaceRange(start, end, iterable);
- }
-
- void fillRange(int start, int end, [E fillValue]) {
- _list.fillRange(start, end, fillValue);
- }
-
- List<Node> get rawList => _list;
-}
-
-/**
- * Iterator wrapper for _WrappedList.
- */
-class _WrappedIterator<E> implements Iterator<E> {
- Iterator _iterator;
-
- _WrappedIterator(this._iterator);
-
- bool moveNext() {
- return _iterator.moveNext();
- }
-
- E get current => _iterator.current;
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-class _HttpRequestUtils {
-
- // Helper for factory HttpRequest.get
- static HttpRequest get(String url,
- onComplete(HttpRequest request),
- bool withCredentials) {
- final request = new HttpRequest();
- request.open('GET', url, async: true);
-
- request.withCredentials = withCredentials;
-
- request.onReadyStateChange.listen((e) {
- if (request.readyState == HttpRequest.DONE) {
- onComplete(request);
- }
- });
-
- request.send();
-
- return request;
- }
-}
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-// Iterator for arrays with fixed size.
-class FixedSizeListIterator<T> implements Iterator<T> {
- final List<T> _array;
- final int _length; // Cache array length for faster access.
- int _position;
- T _current;
-
- FixedSizeListIterator(List<T> array)
- : _array = array,
- _position = -1,
- _length = array.length;
-
- bool moveNext() {
- int nextPosition = _position + 1;
- if (nextPosition < _length) {
- _current = _array[nextPosition];
- _position = nextPosition;
- return true;
- }
- _current = null;
- _position = _length;
- return false;
- }
-
- T get current => _current;
-}
-
-// Iterator for arrays with variable size.
-class _VariableSizeListIterator<T> implements Iterator<T> {
- final List<T> _array;
- int _position;
- T _current;
-
- _VariableSizeListIterator(List<T> array)
- : _array = array,
- _position = -1;
-
- bool moveNext() {
- int nextPosition = _position + 1;
- if (nextPosition < _array.length) {
- _current = _array[nextPosition];
- _position = nextPosition;
- return true;
- }
- _current = null;
- _position = _array.length;
- return false;
- }
-
- T get current => _current;
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-// Conversions for Window. These check if the window is the local
-// window, and if it's not, wraps or unwraps it with a secure wrapper.
-// We need to test for EventTarget here as well as it's a base type.
-// We omit an unwrapper for Window as no methods take a non-local
-// window as a parameter.
-
-
-WindowBase _convertNativeToDart_Window(win) {
- if (win == null) return null;
- return _DOMWindowCrossFrame._createSafe(win);
-}
-
-EventTarget _convertNativeToDart_EventTarget(e) {
- if (e == null) {
- return null;
- }
- // Assume it's a Window if it contains the postMessage property. It may be
- // from a different frame - without a patched prototype - so we cannot
- // rely on Dart type checking.
- if (JS('bool', r'"postMessage" in #', e)) {
- var window = _DOMWindowCrossFrame._createSafe(e);
- // If it's a native window.
- if (window is EventTarget) {
- return window;
- }
- return null;
- }
- else
- return e;
-}
-
-EventTarget _convertDartToNative_EventTarget(e) {
- if (e is _DOMWindowCrossFrame) {
- return e._window;
- } else {
- return e;
- }
-}
-
-_convertNativeToDart_XHR_Response(o) {
- if (o is Document) {
- return o;
- }
- return convertNativeToDart_SerializedScriptValue(o);
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-// TODO(vsm): Unify with Dartium version.
-class _DOMWindowCrossFrame implements WindowBase {
- // Private window. Note, this is a window in another frame, so it
- // cannot be typed as "Window" as its prototype is not patched
- // properly. Its fields and methods can only be accessed via JavaScript.
- final _window;
-
- // Fields.
- HistoryBase get history =>
- _HistoryCrossFrame._createSafe(JS('HistoryBase', '#.history', _window));
- LocationBase get location =>
- _LocationCrossFrame._createSafe(JS('LocationBase', '#.location', _window));
-
- // TODO(vsm): Add frames to navigate subframes. See 2312.
-
- bool get closed => JS('bool', '#.closed', _window);
-
- WindowBase get opener => _createSafe(JS('WindowBase', '#.opener', _window));
-
- WindowBase get parent => _createSafe(JS('WindowBase', '#.parent', _window));
-
- WindowBase get top => _createSafe(JS('WindowBase', '#.top', _window));
-
- // Methods.
- void close() => JS('void', '#.close()', _window);
-
- void postMessage(var message, String targetOrigin, [List messagePorts = null]) {
- if (messagePorts == null) {
- JS('void', '#.postMessage(#,#)', _window,
- convertDartToNative_SerializedScriptValue(message), targetOrigin);
- } else {
- JS('void', '#.postMessage(#,#,#)', _window,
- convertDartToNative_SerializedScriptValue(message), targetOrigin,
- messagePorts);
- }
- }
-
- // Implementation support.
- _DOMWindowCrossFrame(this._window);
-
- static WindowBase _createSafe(w) {
- if (identical(w, window)) {
- return w;
- } else {
- // TODO(vsm): Cache or implement equality.
- return new _DOMWindowCrossFrame(w);
- }
- }
-
- // TODO(efortuna): Remove this method. dartbug.com/16814
- Events get on => throw new UnsupportedError(
- 'You can only attach EventListeners to your own window.');
- // TODO(efortuna): Remove this method. dartbug.com/16814
- void _addEventListener([String type, EventListener listener, bool useCapture])
- => throw new UnsupportedError(
- 'You can only attach EventListeners to your own window.');
- // TODO(efortuna): Remove this method. dartbug.com/16814
- void addEventListener(String type, EventListener listener, [bool useCapture])
- => throw new UnsupportedError(
- 'You can only attach EventListeners to your own window.');
- // TODO(efortuna): Remove this method. dartbug.com/16814
- bool dispatchEvent(Event event) => throw new UnsupportedError(
- 'You can only attach EventListeners to your own window.');
- // TODO(efortuna): Remove this method. dartbug.com/16814
- void _removeEventListener([String type, EventListener listener,
- bool useCapture]) => throw new UnsupportedError(
- 'You can only attach EventListeners to your own window.');
- // TODO(efortuna): Remove this method. dartbug.com/16814
- void removeEventListener(String type, EventListener listener,
- [bool useCapture]) => throw new UnsupportedError(
- 'You can only attach EventListeners to your own window.');
-}
-
-class _LocationCrossFrame implements LocationBase {
- // Private location. Note, this is a location object in another frame, so it
- // cannot be typed as "Location" as its prototype is not patched
- // properly. Its fields and methods can only be accessed via JavaScript.
- var _location;
-
- set href(String val) => _setHref(_location, val);
- static void _setHref(location, val) {
- JS('void', '#.href = #', location, val);
- }
-
- // Implementation support.
- _LocationCrossFrame(this._location);
-
- static LocationBase _createSafe(location) {
- if (identical(location, window.location)) {
- return location;
- } else {
- // TODO(vsm): Cache or implement equality.
- return new _LocationCrossFrame(location);
- }
- }
-}
-
-class _HistoryCrossFrame implements HistoryBase {
- // Private history. Note, this is a history object in another frame, so it
- // cannot be typed as "History" as its prototype is not patched
- // properly. Its fields and methods can only be accessed via JavaScript.
- var _history;
-
- void back() => JS('void', '#.back()', _history);
-
- void forward() => JS('void', '#.forward()', _history);
-
- void go(int distance) => JS('void', '#.go(#)', _history, distance);
-
- // Implementation support.
- _HistoryCrossFrame(this._history);
-
- static HistoryBase _createSafe(h) {
- if (identical(h, window.history)) {
- return h;
- } else {
- // TODO(vsm): Cache or implement equality.
- return new _HistoryCrossFrame(h);
- }
- }
-}
-/**
- * A custom KeyboardEvent that attempts to eliminate cross-browser
- * inconsistencies, and also provide both keyCode and charCode information
- * for all key events (when such information can be determined).
- *
- * KeyEvent tries to provide a higher level, more polished keyboard event
- * information on top of the "raw" [KeyboardEvent].
- *
- * The mechanics of using KeyEvents is a little different from the underlying
- * [KeyboardEvent]. To use KeyEvents, you need to create a stream and then add
- * KeyEvents to the stream, rather than using the [EventTarget.dispatchEvent].
- * Here's an example usage:
- *
- * // Initialize a stream for the KeyEvents:
- * var stream = KeyEvent.keyPressEvent.forTarget(document.body);
- * // Start listening to the stream of KeyEvents.
- * stream.listen((keyEvent) =>
- * window.console.log('KeyPress event detected ${keyEvent.charCode}'));
- * ...
- * // Add a new KeyEvent of someone pressing the 'A' key to the stream so
- * // listeners can know a KeyEvent happened.
- * stream.add(new KeyEvent('keypress', keyCode: 65, charCode: 97));
- *
- * This class is very much a work in progress, and we'd love to get information
- * on how we can make this class work with as many international keyboards as
- * possible. Bugs welcome!
- */
-@Experimental()
-class KeyEvent extends _WrappedEvent implements KeyboardEvent {
- /** The parent KeyboardEvent that this KeyEvent is wrapping and "fixing". */
- KeyboardEvent _parent;
-
- /** The "fixed" value of whether the alt key is being pressed. */
- bool _shadowAltKey;
-
- /** Caculated value of what the estimated charCode is for this event. */
- int _shadowCharCode;
-
- /** Caculated value of what the estimated keyCode is for this event. */
- int _shadowKeyCode;
-
- /** Caculated value of what the estimated keyCode is for this event. */
- int get keyCode => _shadowKeyCode;
-
- /** Caculated value of what the estimated charCode is for this event. */
- int get charCode => this.type == 'keypress' ? _shadowCharCode : 0;
-
- /** Caculated value of whether the alt key is pressed is for this event. */
- bool get altKey => _shadowAltKey;
-
- /** Caculated value of what the estimated keyCode is for this event. */
- int get which => keyCode;
-
- /** Accessor to the underlying keyCode value is the parent event. */
- int get _realKeyCode => JS('int', '#.keyCode', _parent);
-
- /** Accessor to the underlying charCode value is the parent event. */
- int get _realCharCode => JS('int', '#.charCode', _parent);
-
- /** Accessor to the underlying altKey value is the parent event. */
- bool get _realAltKey => JS('bool', '#.altKey', _parent);
-
- /** Shadows on top of the parent's currentTarget. */
- EventTarget _currentTarget;
-
- /**
- * The value we want to use for this object's dispatch. Created here so it is
- * only invoked once.
- */
- static final _keyboardEventDispatchRecord = _makeRecord();
-
- /** Helper to statically create the dispatch record. */
- static _makeRecord() {
- var interceptor = JS_INTERCEPTOR_CONSTANT(KeyboardEvent);
- return makeLeafDispatchRecord(interceptor);
- }
-
- /** Construct a KeyEvent with [parent] as the event we're emulating. */
- KeyEvent.wrap(KeyboardEvent parent): super(parent) {
- _parent = parent;
- _shadowAltKey = _realAltKey;
- _shadowCharCode = _realCharCode;
- _shadowKeyCode = _realKeyCode;
- _currentTarget = _parent.currentTarget;
- }
-
- /** Programmatically create a new KeyEvent (and KeyboardEvent). */
- factory KeyEvent(String type,
- {Window view, bool canBubble: true, bool cancelable: true, int keyCode: 0,
- int charCode: 0, int keyLocation: 1, bool ctrlKey: false,
- bool altKey: false, bool shiftKey: false, bool metaKey: false,
- EventTarget currentTarget}) {
- if (view == null) {
- view = window;
- }
-
- var eventObj;
- // In these two branches we create an underlying native KeyboardEvent, but
- // we set it with our specified values. Because we are doing custom setting
- // of certain values (charCode/keyCode, etc) only in this class (as opposed
- // to KeyboardEvent) and the way we set these custom values depends on the
- // type of underlying JS object, we do all the contruction for the
- // underlying KeyboardEvent here.
- if (canUseDispatchEvent) {
- // Currently works in everything but Internet Explorer.
- eventObj = new Event.eventType('Event', type,
- canBubble: canBubble, cancelable: cancelable);
-
- JS('void', '#.keyCode = #', eventObj, keyCode);
- JS('void', '#.which = #', eventObj, keyCode);
- JS('void', '#.charCode = #', eventObj, charCode);
-
- JS('void', '#.keyLocation = #', eventObj, keyLocation);
- JS('void', '#.ctrlKey = #', eventObj, ctrlKey);
- JS('void', '#.altKey = #', eventObj, altKey);
- JS('void', '#.shiftKey = #', eventObj, shiftKey);
- JS('void', '#.metaKey = #', eventObj, metaKey);
- } else {
- // Currently this works on everything but Safari. Safari throws an
- // "Attempting to change access mechanism for an unconfigurable property"
- // TypeError when trying to do the Object.defineProperty hack, so we avoid
- // this branch if possible.
- // Also, if we want this branch to work in FF, we also need to modify
- // _initKeyboardEvent to also take charCode and keyCode values to
- // initialize initKeyEvent.
-
- eventObj = new Event.eventType('KeyboardEvent', type,
- canBubble: canBubble, cancelable: cancelable);
-
- // Chromium Hack
- JS('void', "Object.defineProperty(#, 'keyCode', {"
- " get : function() { return this.keyCodeVal; } })", eventObj);
- JS('void', "Object.defineProperty(#, 'which', {"
- " get : function() { return this.keyCodeVal; } })", eventObj);
- JS('void', "Object.defineProperty(#, 'charCode', {"
- " get : function() { return this.charCodeVal; } })", eventObj);
-
- var keyIdentifier = _convertToHexString(charCode, keyCode);
- eventObj._initKeyboardEvent(type, canBubble, cancelable, view,
- keyIdentifier, keyLocation, ctrlKey, altKey, shiftKey, metaKey);
- JS('void', '#.keyCodeVal = #', eventObj, keyCode);
- JS('void', '#.charCodeVal = #', eventObj, charCode);
- }
- // Tell dart2js that it smells like a KeyboardEvent!
- setDispatchProperty(eventObj, _keyboardEventDispatchRecord);
-
- var keyEvent = new KeyEvent.wrap(eventObj);
- if (keyEvent._currentTarget == null) {
- keyEvent._currentTarget = currentTarget == null ? window : currentTarget;
- }
- return keyEvent;
- }
-
- // Currently known to work on all browsers but IE.
- static bool get canUseDispatchEvent =>
- JS('bool',
- '(typeof document.body.dispatchEvent == "function")'
- '&& document.body.dispatchEvent.length > 0');
-
- /** The currently registered target for this event. */
- EventTarget get currentTarget => _currentTarget;
-
- // This is an experimental method to be sure.
- static String _convertToHexString(int charCode, int keyCode) {
- if (charCode != -1) {
- var hex = charCode.toRadixString(16); // Convert to hexadecimal.
- StringBuffer sb = new StringBuffer('U+');
- for (int i = 0; i < 4 - hex.length; i++) sb.write('0');
- sb.write(hex);
- return sb.toString();
- } else {
- return KeyCode._convertKeyCodeToKeyName(keyCode);
- }
- }
-
- // TODO(efortuna): If KeyEvent is sufficiently successful that we want to make
- // it the default keyboard event handling, move these methods over to Element.
- /** Accessor to provide a stream of KeyEvents on the desired target. */
- static EventStreamProvider<KeyEvent> keyDownEvent =
- new _KeyboardEventHandler('keydown');
- /** Accessor to provide a stream of KeyEvents on the desired target. */
- static EventStreamProvider<KeyEvent> keyUpEvent =
- new _KeyboardEventHandler('keyup');
- /** Accessor to provide a stream of KeyEvents on the desired target. */
- static EventStreamProvider<KeyEvent> keyPressEvent =
- new _KeyboardEventHandler('keypress');
-
- /** Accessor to the clipboardData available for this event. */
- DataTransfer get clipboardData => _parent.clipboardData;
- /** True if the ctrl key is pressed during this event. */
- bool get ctrlKey => _parent.ctrlKey;
- int get detail => _parent.detail;
- /**
- * Accessor to the part of the keyboard that the key was pressed from (one of
- * KeyLocation.STANDARD, KeyLocation.RIGHT, KeyLocation.LEFT,
- * KeyLocation.NUMPAD, KeyLocation.MOBILE, KeyLocation.JOYSTICK).
- */
- int get keyLocation => _parent.keyLocation;
- Point get layer => _parent.layer;
- /** True if the Meta (or Mac command) key is pressed during this event. */
- bool get metaKey => _parent.metaKey;
- Point get page => _parent.page;
- /** True if the shift key was pressed during this event. */
- bool get shiftKey => _parent.shiftKey;
- Window get view => _parent.view;
- void _initUIEvent(String type, bool canBubble, bool cancelable,
- Window view, int detail) {
- throw new UnsupportedError("Cannot initialize a UI Event from a KeyEvent.");
- }
- String get _shadowKeyIdentifier => JS('String', '#.keyIdentifier', _parent);
-
- int get _charCode => charCode;
- int get _keyCode => keyCode;
- String get _keyIdentifier {
- throw new UnsupportedError("keyIdentifier is unsupported.");
- }
- void _initKeyboardEvent(String type, bool canBubble, bool cancelable,
- Window view, String keyIdentifier, int keyLocation, bool ctrlKey,
- bool altKey, bool shiftKey, bool metaKey) {
- throw new UnsupportedError(
- "Cannot initialize a KeyboardEvent from a KeyEvent.");
- }
- int get _layerX => throw new UnsupportedError('Not applicable to KeyEvent');
- int get _layerY => throw new UnsupportedError('Not applicable to KeyEvent');
- int get _pageX => throw new UnsupportedError('Not applicable to KeyEvent');
- int get _pageY => throw new UnsupportedError('Not applicable to KeyEvent');
- @Experimental() // untriaged
- bool getModifierState(String keyArgument) => throw new UnimplementedError();
- @Experimental() // untriaged
- int get location => throw new UnimplementedError();
- @Experimental() // untriaged
- bool get repeat => throw new UnimplementedError();
- dynamic get _get_view => throw new UnimplementedError();
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-class Platform {
- /**
- * Returns true if dart:typed_data types are supported on this
- * browser. If false, using these types will generate a runtime
- * error.
- */
- static final supportsTypedData = JS('bool', '!!($global_.ArrayBuffer)');
-
- /**
- * Returns true if SIMD types in dart:typed_data types are supported
- * on this browser. If false, using these types will generate a runtime
- * error.
- */
- static final supportsSimd = false;
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-/**
- * Helper class to implement custom events which wrap DOM events.
- */
-class _WrappedEvent implements Event {
- final Event wrapped;
-
- /** The CSS selector involved with event delegation. */
- String _selector;
-
- _WrappedEvent(this.wrapped);
-
- bool get bubbles => wrapped.bubbles;
-
- bool get cancelable => wrapped.cancelable;
-
- DataTransfer get clipboardData => wrapped.clipboardData;
-
- EventTarget get currentTarget => wrapped.currentTarget;
-
- bool get defaultPrevented => wrapped.defaultPrevented;
-
- int get eventPhase => wrapped.eventPhase;
-
- EventTarget get target => wrapped.target;
-
- int get timeStamp => wrapped.timeStamp;
-
- String get type => wrapped.type;
-
- void _initEvent(String eventTypeArg, bool canBubbleArg,
- bool cancelableArg) {
- throw new UnsupportedError(
- 'Cannot initialize this Event.');
- }
-
- void preventDefault() {
- wrapped.preventDefault();
- }
-
- void stopImmediatePropagation() {
- wrapped.stopImmediatePropagation();
- }
-
- void stopPropagation() {
- wrapped.stopPropagation();
- }
-
- /**
- * A pointer to the element whose CSS selector matched within which an event
- * was fired. If this Event was not associated with any Event delegation,
- * accessing this value will throw an [UnsupportedError].
- */
- Element get matchingTarget {
- if (_selector == null) {
- throw new UnsupportedError('Cannot call matchingTarget if this Event did'
- ' not arise as a result of event delegation.');
- }
- var currentTarget = this.currentTarget;
- var target = this.target;
- var matchedTarget;
- do {
- if (target.matches(_selector)) return target;
- target = target.parent;
- } while (target != null && target != currentTarget.parent);
- throw new StateError('No selector matched for populating matchedTarget.');
- }
-
- /**
- * This event's path, taking into account shadow DOM.
- *
- * ## Other resources
- *
- * * [Shadow DOM extensions to Event]
- * (http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-event) from
- * W3C.
- */
- // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#extensions-to-event
- @Experimental()
- List<Node> get path => wrapped.path;
-
- dynamic get _get_currentTarget => wrapped._get_currentTarget;
-
- dynamic get _get_target => wrapped._get_target;
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-_wrapZone(callback(arg)) {
- // For performance reasons avoid wrapping if we are in the root zone.
- if (Zone.current == Zone.ROOT) return callback;
- if (callback == null) return null;
- return Zone.current.bindUnaryCallback(callback, runGuarded: true);
-}
-
-_wrapBinaryZone(callback(arg1, arg2)) {
- if (Zone.current == Zone.ROOT) return callback;
- if (callback == null) return null;
- return Zone.current.bindBinaryCallback(callback, runGuarded: true);
-}
-
-/**
- * Alias for [querySelector]. Note this function is deprecated because its
- * semantics will be changing in the future.
- */
-@deprecated
-@Experimental()
-Element query(String relativeSelectors) => document.query(relativeSelectors);
-/**
- * Alias for [querySelectorAll]. Note this function is deprecated because its
- * semantics will be changing in the future.
- */
-@deprecated
-@Experimental()
-ElementList<Element> queryAll(String relativeSelectors) => document.queryAll(relativeSelectors);
-
-/**
- * Finds the first descendant element of this document that matches the
- * specified group of selectors.
- *
- * Unless your webpage contains multiple documents, the top-level
- * [querySelector]
- * method behaves the same as this method, so you should use it instead to
- * save typing a few characters.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * var element1 = document.querySelector('.className');
- * var element2 = document.querySelector('#id');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
-Element querySelector(String selectors) => document.querySelector(selectors);
-
-/**
- * Finds all descendant elements of this document that match the specified
- * group of selectors.
- *
- * Unless your webpage contains multiple documents, the top-level
- * [querySelectorAll]
- * method behaves the same as this method, so you should use it instead to
- * save typing a few characters.
- *
- * [selectors] should be a string using CSS selector syntax.
- *
- * var items = document.querySelectorAll('.itemClassName');
- *
- * For details about CSS selector syntax, see the
- * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
- */
-ElementList<Element> querySelectorAll(String selectors) => document.querySelectorAll(selectors);
-
-/// A utility for changing the Dart wrapper type for elements.
-abstract class ElementUpgrader {
- /// Upgrade the specified element to be of the Dart type this was created for.
- ///
- /// After upgrading the element passed in is invalid and the returned value
- /// should be used instead.
- Element upgrade(Element element);
-}
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-
-/**
- * Interface used to validate that only accepted elements and attributes are
- * allowed while parsing HTML strings into DOM nodes.
- *
- * In general, customization of validation behavior should be done via the
- * [NodeValidatorBuilder] class to mitigate the chances of incorrectly
- * implementing validation rules.
- */
-abstract class NodeValidator {
-
- /**
- * Construct a default NodeValidator which only accepts whitelisted HTML5
- * elements and attributes.
- *
- * If a uriPolicy is not specified then the default uriPolicy will be used.
- */
- factory NodeValidator({UriPolicy uriPolicy}) =>
- new _Html5NodeValidator(uriPolicy: uriPolicy);
-
- factory NodeValidator.throws(NodeValidator base) =>
- new _ThrowsNodeValidator(base);
-
- /**
- * Returns true if the tagName is an accepted type.
- */
- bool allowsElement(Element element);
-
- /**
- * Returns true if the attribute is allowed.
- *
- * The attributeName parameter will always be in lowercase.
- *
- * See [allowsElement] for format of tagName.
- */
- bool allowsAttribute(Element element, String attributeName, String value);
-}
-
-/**
- * Performs sanitization of a node tree after construction to ensure that it
- * does not contain any disallowed elements or attributes.
- *
- * In general custom implementations of this class should not be necessary and
- * all validation customization should be done in custom NodeValidators, but
- * custom implementations of this class can be created to perform more complex
- * tree sanitization.
- */
-abstract class NodeTreeSanitizer {
-
- /**
- * Constructs a default tree sanitizer which will remove all elements and
- * attributes which are not allowed by the provided validator.
- */
- factory NodeTreeSanitizer(NodeValidator validator) =>
- new _ValidatingTreeSanitizer(validator);
-
- /**
- * Called with the root of the tree which is to be sanitized.
- *
- * This method needs to walk the entire tree and either remove elements and
- * attributes which are not recognized as safe or throw an exception which
- * will mark the entire tree as unsafe.
- */
- void sanitizeTree(Node node);
-
- /**
- * A sanitizer for trees that we trust. It does no validation and allows
- * any elements. It is also more efficient, since it can pass the text
- * directly through to the underlying APIs without creating a document
- * fragment to be sanitized.
- */
- static const trusted = const _TrustedHtmlTreeSanitizer();
-}
-
-/**
- * A sanitizer for trees that we trust. It does no validation and allows
- * any elements.
- */
-class _TrustedHtmlTreeSanitizer implements NodeTreeSanitizer {
- const _TrustedHtmlTreeSanitizer();
-
- sanitizeTree(Node node) {}
-}
-
-/**
- * Defines the policy for what types of uris are allowed for particular
- * attribute values.
- *
- * This can be used to provide custom rules such as allowing all http:// URIs
- * for image attributes but only same-origin URIs for anchor tags.
- */
-abstract class UriPolicy {
- /**
- * Constructs the default UriPolicy which is to only allow Uris to the same
- * origin as the application was launched from.
- *
- * This will block all ftp: mailto: URIs. It will also block accessing
- * https://example.com if the app is running from http://example.com.
- */
- factory UriPolicy() => new _SameOriginUriPolicy();
-
- /**
- * Checks if the uri is allowed on the specified attribute.
- *
- * The uri provided may or may not be a relative path.
- */
- bool allowsUri(String uri);
-}
-
-/**
- * Allows URIs to the same origin as the current application was loaded from
- * (such as https://example.com:80).
- */
-class _SameOriginUriPolicy implements UriPolicy {
- final AnchorElement _hiddenAnchor = new AnchorElement();
- final Location _loc = window.location;
-
- bool allowsUri(String uri) {
- _hiddenAnchor.href = uri;
- // IE leaves an empty hostname for same-origin URIs.
- return (_hiddenAnchor.hostname == _loc.hostname &&
- _hiddenAnchor.port == _loc.port &&
- _hiddenAnchor.protocol == _loc.protocol) ||
- (_hiddenAnchor.hostname == '' &&
- _hiddenAnchor.port == '' &&
- (_hiddenAnchor.protocol == ':' || _hiddenAnchor.protocol == ''));
- }
-}
-
-
-class _ThrowsNodeValidator implements NodeValidator {
- final NodeValidator validator;
-
- _ThrowsNodeValidator(this.validator) {}
-
- bool allowsElement(Element element) {
- if (!validator.allowsElement(element)) {
- throw new ArgumentError(Element._safeTagName(element));
- }
- return true;
- }
-
- bool allowsAttribute(Element element, String attributeName, String value) {
- if (!validator.allowsAttribute(element, attributeName, value)) {
- throw new ArgumentError('${Element._safeTagName(element)}[$attributeName="$value"]');
- }
- }
-}
-
-
-/**
- * Standard tree sanitizer which validates a node tree against the provided
- * validator and removes any nodes or attributes which are not allowed.
- */
-class _ValidatingTreeSanitizer implements NodeTreeSanitizer {
- NodeValidator validator;
- _ValidatingTreeSanitizer(this.validator) {}
-
- void sanitizeTree(Node node) {
- void walk(Node node, Node parent) {
- sanitizeNode(node, parent);
-
- var child = node.lastChild;
- while (child != null) {
- // Child may be removed during the walk.
- var nextChild = child.previousNode;
- walk(child, node);
- child = nextChild;
- }
- }
- walk(node, null);
- }
-
- /// Aggressively try to remove node.
- void _removeNode(Node node, Node parent) {
- // If we have the parent, it's presumably already passed more sanitization
- // or is the fragment, so ask it to remove the child. And if that fails
- // try to set the outer html.
- if (parent == null) {
- node.remove();
- } else {
- parent._removeChild(node);
- }
- }
-
- /// Sanitize the element, assuming we can't trust anything about it.
- void _sanitizeUntrustedElement(/* Element */ element, Node parent) {
- // If the _hasCorruptedAttributes does not successfully return false,
- // then we consider it corrupted and remove.
- // TODO(alanknight): This is a workaround because on Firefox
- // embed/object
- // tags typeof is "function", not "object". We don't recognize them, and
- // can't call methods. This does mean that you can't explicitly allow an
- // embed tag. The only thing that will let it through is a null
- // sanitizer that doesn't traverse the tree at all. But sanitizing while
- // allowing embeds seems quite unlikely. This is also the reason that we
- // can't declare the type of element, as an embed won't pass any type
- // check in dart2js.
- var corrupted = true;
- var attrs;
- var isAttr;
- try {
- // If getting/indexing attributes throws, count that as corrupt.
- attrs = element.attributes;
- isAttr = attrs['is'];
- var corruptedTest1 = Element._hasCorruptedAttributes(element);
-
- // On IE, erratically, the hasCorruptedAttributes test can return false,
- // even though it clearly is corrupted. A separate copy of the test
- // inlining just the basic check seems to help.
- corrupted = corruptedTest1 ? true : Element._hasCorruptedAttributesAdditionalCheck(element);
- } catch(e) {}
- var elementText = 'element unprintable';
- try {
- elementText = element.toString();
- } catch(e) {}
- try {
- var elementTagName = Element._safeTagName(element);
- _sanitizeElement(element, parent, corrupted, elementText, elementTagName,
- attrs, isAttr);
- } on ArgumentError { // Thrown by _ThrowsNodeValidator
- rethrow;
- } catch(e) { // Unexpected exception sanitizing -> remove
- _removeNode(element, parent);
- window.console.warn('Removing corrupted element $elementText');
- }
- }
-
- /// Having done basic sanity checking on the element, and computed the
- /// important attributes we want to check, remove it if it's not valid
- /// or not allowed, either as a whole or particular attributes.
- void _sanitizeElement(Element element, Node parent, bool corrupted,
- String text, String tag, Map attrs, String isAttr) {
- if (false != corrupted) {
- _removeNode(element, parent);
- window.console.warn(
- 'Removing element due to corrupted attributes on <$text>');
- return;
- }
- if (!validator.allowsElement(element)) {
- _removeNode(element, parent);
- window.console.warn(
- 'Removing disallowed element <$tag> from $parent');
- return;
- }
-
- if (isAttr != null) {
- if (!validator.allowsAttribute(element, 'is', isAttr)) {
- _removeNode(element, parent);
- window.console.warn('Removing disallowed type extension '
- '<$tag is="$isAttr">');
- return;
- }
- }
-
- // TODO(blois): Need to be able to get all attributes, irrespective of
- // XMLNS.
- var keys = attrs.keys.toList();
- for (var i = attrs.length - 1; i >= 0; --i) {
- var name = keys[i];
- if (!validator.allowsAttribute(element, name.toLowerCase(),
- attrs[name])) {
- window.console.warn('Removing disallowed attribute '
- '<$tag $name="${attrs[name]}">');
- attrs.remove(name);
- }
- }
-
- if (element is TemplateElement) {
- TemplateElement template = element;
- sanitizeTree(template.content);
- }
- }
-
- /// Sanitize the node and its children recursively.
- void sanitizeNode(Node node, Node parent) {
- switch (node.nodeType) {
- case Node.ELEMENT_NODE:
- _sanitizeUntrustedElement(node, parent);
- break;
- case Node.COMMENT_NODE:
- case Node.DOCUMENT_FRAGMENT_NODE:
- case Node.TEXT_NODE:
- case Node.CDATA_SECTION_NODE:
- break;
- default:
- _removeNode(node, parent);
- }
- }
-}
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// DO NOT EDIT - unless you are editing documentation as per:
-// https://code.google.com/p/dart/wiki/ContributingHTMLDocumentation
-// Auto-generated dart:html library.
-
-
-import 'dart:_js_helper' show
- convertDartClosureToJS, Creates, JavaScriptIndexingBehavior,
- JSName, Native, Returns, ForceInline,
- findDispatchTagForInterceptorClass, setNativeSubclassDispatchRecord,
- makeLeafDispatchRecord;
-import 'dart:_interceptors' show
- Interceptor, JSExtendableArray, JSUInt31,
- findInterceptorConstructorForType,
- findConstructorForNativeSubclassType,
- getNativeInterceptor,
- setDispatchProperty;
-
-export 'dart:math' show Rectangle, Point;
-
-
-
-//part '../../../dom/src/dart2js_CustomElementSupport.dart';
-
-
-/**
- * Top-level container for a web page, which is usually a browser tab or window.
- *
- * Each web page loaded in the browser has its own [Window], which is a
- * container for the web page.
- *
- * If the web page has any `<iframe>` elements, then each `<iframe>` has its own
- * [Window] object, which is accessible only to that `<iframe>`.
- *
- * See also:
- *
- * * [Window](https://developer.mozilla.org/en-US/docs/Web/API/window) from MDN.
- */
-
-final Window window = wrap_jso(JS('', '$global_'));
-
-/**
- * Root node for all content in a web page.
- */
-HtmlDocument get document => wrap_jso(JS('HtmlDocument', 'document'));
-
-// Workaround for tags like <cite> that lack their own Element subclass --
-// Dart issue 1990.
-@Native("HTMLElement")
-class HtmlElement extends Element {
- factory HtmlElement() { throw new UnsupportedError("Not supported"); }
-
- /**
- * Constructor instantiated by the DOM when a custom element has been created.
- *
- * This can only be called by subclasses from their created constructor.
- */
- HtmlElement.created() : super.created();
- HtmlElement.internal_() : super.internal_();
-
- static HtmlElement internalCreateHtmlElement() {
- return new HtmlElement._internalWrap();
- }
-
- factory HtmlElement._internalWrap() {
- return new HtmlElement.internal_();
- }
-}
-
-// EntryArray type was removed, so explicitly adding it to allow support for
-// older Chrome versions.
-// Issue #12573.
-@Native("EntryArray")
-abstract class _EntryArray implements List<Entry> {}
-
-/**
- * Spawn a DOM isolate using the given URI in the same window.
- * This isolate is not concurrent. It runs on the browser thread
- * with full access to the DOM.
- * Note: this API is still evolving and may move to dart:isolate.
- */
-@Experimental()
-Future<Isolate> spawnDomUri(Uri uri, List<String> args, message) {
- // TODO(17738): Implement this.
- throw new UnimplementedError();
-}
-
-
-class DartHtmlDomObject {
- // FIXME(vsm): Make this final at least. Private?
- dynamic raw;
-
- DartHtmlDomObject();
- DartHtmlDomObject.internal_();
-}
-
-typedef _F1(x);
-
-final _wrapper = JS('', 'Symbol("dart_wrapper")');
-
-/// Dartium functions that are a NOOP in dart2js.
-unwrap_jso(wrapped) {
- if (wrapped is DartHtmlDomObject) {
- return wrapped.raw;
- }
- if (wrapped is _F1) {
- if (JS('bool', '#.hasOwnProperty(#)', wrapped, _wrapper)) {
- return JS('', '#[#]', wrapped, _wrapper);
- }
- var f = (e) => wrapped(wrap_jso(e));
- JS('', '#[#] = #', wrapped, _wrapper, f);
- return f;
- }
- return wrapped;
-}
-
-
-wrap_jso(jso) {
- if (jso == null || jso is bool || jso is num || jso is String) {
- return jso;
- }
- if (JS('bool', '#.hasOwnProperty(#)', jso, _wrapper)) {
- return JS('', '#[#]', jso, _wrapper);
- }
- var constructor = JS('', '#.constructor', jso)
- var f = null;
- String name;
- String skip = null;
- while (f == null) {
- name = JS('String', '#.name', constructor);
- f = getHtmlCreateFunction(name);
- if (f == null) {
- if (skip == null) {
- skip = name;
- }
- constructor = JS('', '#.__proto__', constructor);
- }
- }
- if (skip != null) {
- console.warn('Instantiated $name instead of $skip');
- }
- var wrapped = f();
- wrapped.raw = jso;
- JS('', '#[#] = #', jso, _wrapper, wrapped);
- return wrapped;
-}
-
-createCustomUpgrader(Type customElementClass, $this) => $this;
-
-// FIXME: Can we make this private?
-final htmlBlinkMap = {
- '_HistoryCrossFrame': () => _HistoryCrossFrame,
- '_LocationCrossFrame': () => _LocationCrossFrame,
- '_DOMWindowCrossFrame': () => _DOMWindowCrossFrame,
- // FIXME: Move these to better locations.
- 'DateTime': () => DateTime,
- 'JsObject': () => js.JsObjectImpl,
- 'JsFunction': () => js.JsFunctionImpl,
- 'JsArray': () => js.JsArrayImpl,
- 'Attr': () => _Attr,
- 'CSSStyleDeclaration': () => CssStyleDeclaration,
- 'CharacterData': () => CharacterData,
- 'ChildNode': () => ChildNode,
- 'ClientRect': () => _ClientRect,
- 'Comment': () => Comment,
- 'Console': () => Console,
- 'ConsoleBase': () => ConsoleBase,
- 'CustomEvent': () => CustomEvent,
- 'DOMImplementation': () => DomImplementation,
- 'DOMTokenList': () => DomTokenList,
- 'Document': () => Document,
- 'DocumentFragment': () => DocumentFragment,
- 'Element': () => Element,
- 'Event': () => Event,
- 'EventTarget': () => EventTarget,
- 'HTMLAnchorElement': () => AnchorElement,
- 'HTMLBaseElement': () => BaseElement,
- 'HTMLBodyElement': () => BodyElement,
- 'HTMLCollection': () => HtmlCollection,
- 'HTMLDivElement': () => DivElement,
- 'HTMLDocument': () => HtmlDocument,
- 'HTMLElement': () => HtmlElement,
- 'HTMLHeadElement': () => HeadElement,
- 'HTMLHtmlElement': () => HtmlHtmlElement,
- 'HTMLInputElement': () => InputElement,
- 'HTMLStyleElement': () => StyleElement,
- 'HTMLTemplateElement': () => TemplateElement,
- 'History': () => History,
- 'KeyboardEvent': () => KeyboardEvent,
- 'Location': () => Location,
- 'MouseEvent': () => MouseEvent,
- 'NamedNodeMap': () => _NamedNodeMap,
- 'Navigator': () => Navigator,
- 'NavigatorCPU': () => NavigatorCpu,
- 'Node': () => Node,
- 'NodeList': () => NodeList,
- 'ParentNode': () => ParentNode,
- 'ProgressEvent': () => ProgressEvent,
- 'Range': () => Range,
- 'Screen': () => Screen,
- 'ShadowRoot': () => ShadowRoot,
- 'Text': () => Text,
- 'UIEvent': () => UIEvent,
- 'URLUtils': () => UrlUtils,
- 'Window': () => Window,
- 'XMLHttpRequest': () => HttpRequest,
- 'XMLHttpRequestEventTarget': () => HttpRequestEventTarget,
- 'XMLHttpRequestProgressEvent': () => _XMLHttpRequestProgressEvent,
-
-};
-
-// FIXME: Can we make this private?
-final htmlBlinkFunctionMap = {
- 'Attr': () => _Attr.internalCreate_Attr,
- 'CSSStyleDeclaration': () => CssStyleDeclaration.internalCreateCssStyleDeclaration,
- 'CharacterData': () => CharacterData.internalCreateCharacterData,
- 'ClientRect': () => _ClientRect.internalCreate_ClientRect,
- 'Comment': () => Comment.internalCreateComment,
- 'Console': () => Console.internalCreateConsole,
- 'ConsoleBase': () => ConsoleBase.internalCreateConsoleBase,
- 'CustomEvent': () => CustomEvent.internalCreateCustomEvent,
- 'DOMImplementation': () => DomImplementation.internalCreateDomImplementation,
- 'DOMTokenList': () => DomTokenList.internalCreateDomTokenList,
- 'Document': () => Document.internalCreateDocument,
- 'DocumentFragment': () => DocumentFragment.internalCreateDocumentFragment,
- 'Element': () => Element.internalCreateElement,
- 'Event': () => Event.internalCreateEvent,
- 'EventTarget': () => EventTarget.internalCreateEventTarget,
- 'HTMLAnchorElement': () => AnchorElement.internalCreateAnchorElement,
- 'HTMLBaseElement': () => BaseElement.internalCreateBaseElement,
- 'HTMLBodyElement': () => BodyElement.internalCreateBodyElement,
- 'HTMLCollection': () => HtmlCollection.internalCreateHtmlCollection,
- 'HTMLDivElement': () => DivElement.internalCreateDivElement,
- 'HTMLDocument': () => HtmlDocument.internalCreateHtmlDocument,
- 'HTMLElement': () => HtmlElement.internalCreateHtmlElement,
- 'HTMLHeadElement': () => HeadElement.internalCreateHeadElement,
- 'HTMLHtmlElement': () => HtmlHtmlElement.internalCreateHtmlHtmlElement,
- 'HTMLInputElement': () => InputElement.internalCreateInputElement,
- 'HTMLStyleElement': () => StyleElement.internalCreateStyleElement,
- 'HTMLTemplateElement': () => TemplateElement.internalCreateTemplateElement,
- 'History': () => History.internalCreateHistory,
- 'KeyboardEvent': () => KeyboardEvent.internalCreateKeyboardEvent,
- 'Location': () => Location.internalCreateLocation,
- 'MouseEvent': () => MouseEvent.internalCreateMouseEvent,
- 'NamedNodeMap': () => _NamedNodeMap.internalCreate_NamedNodeMap,
- 'Navigator': () => Navigator.internalCreateNavigator,
- 'Node': () => Node.internalCreateNode,
- 'NodeList': () => NodeList.internalCreateNodeList,
- 'ProgressEvent': () => ProgressEvent.internalCreateProgressEvent,
- 'Range': () => Range.internalCreateRange,
- 'Screen': () => Screen.internalCreateScreen,
- 'ShadowRoot': () => ShadowRoot.internalCreateShadowRoot,
- 'Text': () => Text.internalCreateText,
- 'UIEvent': () => UIEvent.internalCreateUIEvent,
- 'Window': () => Window.internalCreateWindow,
- 'XMLHttpRequest': () => HttpRequest.internalCreateHttpRequest,
- 'XMLHttpRequestEventTarget': () => HttpRequestEventTarget.internalCreateHttpRequestEventTarget,
- 'XMLHttpRequestProgressEvent': () => _XMLHttpRequestProgressEvent.internalCreate_XMLHttpRequestProgressEvent,
-
-};
-
-// TODO(terry): We may want to move this elsewhere if html becomes
-// a package to avoid dartium depending on pkg:html.
-getHtmlCreateFunction(String key) {
- var result;
-
- // TODO(vsm): Add Cross Frame and JS types here as well.
-
- // Check the html library.
- result = _getHtmlFunction(key);
- if (result != null) {
- return result;
- }
- return null;
-}
-
-Function _getHtmlFunction(String key) {
- if (htmlBlinkFunctionMap.containsKey(key)) {
- return htmlBlinkFunctionMap[key]();
- }
- return null;
-}
« no previous file with comments | « tool/input_sdk/lib/_internal/libraries.dart ('k') | tool/input_sdk/lib/html/html_common/conversions_dart2js.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698