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

Unified Diff: lib/runtime/dart/html_common.js

Issue 1528613004: First cut of mini dart:html. (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Fix build_sdk Created 5 years 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
« no previous file with comments | « lib/runtime/dart/html.js ('k') | lib/runtime/dart/js.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/runtime/dart/html_common.js
diff --git a/lib/runtime/dart/html_common.js b/lib/runtime/dart/html_common.js
new file mode 100644
index 0000000000000000000000000000000000000000..30ef8f114df0937b2da67fca9a1512d58c061519
--- /dev/null
+++ b/lib/runtime/dart/html_common.js
@@ -0,0 +1,969 @@
+dart_library.library('dart/html_common', null, /* Imports */[
+ "dart/_runtime",
+ 'dart/_metadata',
+ 'dart/core',
+ 'dart/html',
+ 'dart/typed_data',
+ 'dart/_js_helper',
+ 'dart/_native_typed_data',
+ 'dart/async',
+ 'dart/collection',
+ 'dart/_internal'
+], /* Lazy imports */[
+], function(exports, dart, _metadata, core, html, typed_data, _js_helper, _native_typed_data, async, collection, _internal) {
+ 'use strict';
+ let dartx = dart.dartx;
+ dart.export_(exports, _metadata);
+ const _validateToken = Symbol('_validateToken');
+ class CssClassSetImpl extends core.Object {
+ [_validateToken](value) {
+ if (dart.notNull(CssClassSetImpl._validTokenRE.hasMatch(value)))
+ return value;
+ dart.throw(new core.ArgumentError.value(value, 'value', 'Not a valid class token'));
+ }
+ toString() {
+ return this.readClasses().join(' ');
+ }
+ toggle(value, shouldAdd) {
+ if (shouldAdd === void 0)
+ shouldAdd = null;
+ this[_validateToken](value);
+ let s = this.readClasses();
+ let result = false;
+ if (shouldAdd == null)
+ shouldAdd = !dart.notNull(s.contains(value));
+ if (dart.notNull(shouldAdd)) {
+ s.add(value);
+ result = true;
+ } else {
+ s.remove(value);
+ }
+ this.writeClasses(s);
+ return result;
+ }
+ get frozen() {
+ return false;
+ }
+ get iterator() {
+ return this.readClasses().iterator;
+ }
+ [Symbol.iterator]() {
+ return new dart.JsIterator(this.iterator);
+ }
+ forEach(f) {
+ this.readClasses().forEach(f);
+ }
+ join(separator) {
+ if (separator === void 0)
+ separator = "";
+ return this.readClasses().join(separator);
+ }
+ map(f) {
+ return this.readClasses().map(f);
+ }
+ where(f) {
+ return this.readClasses().where(f);
+ }
+ expand(f) {
+ return this.readClasses().expand(f);
+ }
+ every(f) {
+ return this.readClasses().every(f);
+ }
+ any(f) {
+ return this.readClasses().any(f);
+ }
+ get isEmpty() {
+ return this.readClasses().isEmpty;
+ }
+ get isNotEmpty() {
+ return this.readClasses().isNotEmpty;
+ }
+ get length() {
+ return this.readClasses().length;
+ }
+ reduce(combine) {
+ return this.readClasses().reduce(combine);
+ }
+ fold(initialValue, combine) {
+ return this.readClasses().fold(initialValue, combine);
+ }
+ contains(value) {
+ if (!(typeof value == 'string'))
+ return false;
+ this[_validateToken](dart.as(value, core.String));
+ return this.readClasses().contains(value);
+ }
+ lookup(value) {
+ return dart.as(dart.notNull(this.contains(value)) ? value : null, core.String);
+ }
+ add(value) {
+ this[_validateToken](value);
+ return dart.as(this.modify(dart.fn(s => dart.dsend(s, 'add', value))), core.bool);
+ }
+ remove(value) {
+ this[_validateToken](dart.as(value, core.String));
+ if (!(typeof value == 'string'))
+ return false;
+ let s = this.readClasses();
+ let result = s.remove(value);
+ this.writeClasses(s);
+ return result;
+ }
+ addAll(iterable) {
+ this.modify(dart.fn((s => dart.dsend(s, 'addAll', iterable[dartx.map](dart.bind(this, _validateToken)))).bind(this)));
+ }
+ removeAll(iterable) {
+ this.modify(dart.fn((s => dart.dsend(s, 'removeAll', iterable[dartx.map](dart.as(dart.bind(this, _validateToken), __CastType0)))).bind(this)));
+ }
+ toggleAll(iterable, shouldAdd) {
+ if (shouldAdd === void 0)
+ shouldAdd = null;
+ iterable[dartx.forEach](dart.fn((e => this.toggle(dart.as(e, core.String), shouldAdd)).bind(this), core.bool, [dart.dynamic]));
+ }
+ retainAll(iterable) {
+ this.modify(dart.fn(s => dart.dsend(s, 'retainAll', iterable)));
+ }
+ removeWhere(test) {
+ this.modify(dart.fn(s => dart.dsend(s, 'removeWhere', test)));
+ }
+ retainWhere(test) {
+ this.modify(dart.fn(s => dart.dsend(s, 'retainWhere', test)));
+ }
+ containsAll(collection) {
+ return this.readClasses().containsAll(collection);
+ }
+ intersection(other) {
+ return this.readClasses().intersection(other);
+ }
+ union(other) {
+ return this.readClasses().union(other);
+ }
+ difference(other) {
+ return this.readClasses().difference(other);
+ }
+ get first() {
+ return this.readClasses().first;
+ }
+ get last() {
+ return this.readClasses().last;
+ }
+ get single() {
+ return this.readClasses().single;
+ }
+ toList(opts) {
+ let growable = opts && 'growable' in opts ? opts.growable : true;
+ return this.readClasses().toList({growable: growable});
+ }
+ toSet() {
+ return this.readClasses().toSet();
+ }
+ take(n) {
+ return this.readClasses().take(n);
+ }
+ takeWhile(test) {
+ return this.readClasses().takeWhile(test);
+ }
+ skip(n) {
+ return this.readClasses().skip(n);
+ }
+ skipWhile(test) {
+ return this.readClasses().skipWhile(test);
+ }
+ firstWhere(test, opts) {
+ let orElse = opts && 'orElse' in opts ? opts.orElse : null;
+ return this.readClasses().firstWhere(test, {orElse: orElse});
+ }
+ lastWhere(test, opts) {
+ let orElse = opts && 'orElse' in opts ? opts.orElse : null;
+ return this.readClasses().lastWhere(test, {orElse: orElse});
+ }
+ singleWhere(test) {
+ return this.readClasses().singleWhere(test);
+ }
+ elementAt(index) {
+ return this.readClasses().elementAt(index);
+ }
+ clear() {
+ this.modify(dart.fn(s => dart.dsend(s, 'clear')));
+ }
+ modify(f) {
+ let s = this.readClasses();
+ let ret = f(s);
+ this.writeClasses(s);
+ return ret;
+ }
+ }
+ CssClassSetImpl[dart.implements] = () => [html.CssClassSet];
+ dart.setSignature(CssClassSetImpl, {
+ methods: () => ({
+ [_validateToken]: [core.String, [core.String]],
+ toggle: [core.bool, [core.String], [core.bool]],
+ forEach: [dart.void, [dart.functionType(dart.void, [core.String])]],
+ join: [core.String, [], [core.String]],
+ map: [core.Iterable, [dart.functionType(dart.dynamic, [core.String])]],
+ where: [core.Iterable$(core.String), [dart.functionType(core.bool, [core.String])]],
+ expand: [core.Iterable, [dart.functionType(core.Iterable, [core.String])]],
+ every: [core.bool, [dart.functionType(core.bool, [core.String])]],
+ any: [core.bool, [dart.functionType(core.bool, [core.String])]],
+ reduce: [core.String, [dart.functionType(core.String, [core.String, core.String])]],
+ fold: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynamic, [dart.dynamic, core.String])]],
+ contains: [core.bool, [core.Object]],
+ lookup: [core.String, [core.Object]],
+ add: [core.bool, [core.String]],
+ remove: [core.bool, [core.Object]],
+ addAll: [dart.void, [core.Iterable$(core.String)]],
+ removeAll: [dart.void, [core.Iterable$(core.Object)]],
+ toggleAll: [dart.void, [core.Iterable$(core.String)], [core.bool]],
+ retainAll: [dart.void, [core.Iterable$(core.Object)]],
+ removeWhere: [dart.void, [dart.functionType(core.bool, [core.String])]],
+ retainWhere: [dart.void, [dart.functionType(core.bool, [core.String])]],
+ containsAll: [core.bool, [core.Iterable$(core.Object)]],
+ intersection: [core.Set$(core.String), [core.Set$(core.Object)]],
+ union: [core.Set$(core.String), [core.Set$(core.String)]],
+ difference: [core.Set$(core.String), [core.Set$(core.String)]],
+ toList: [core.List$(core.String), [], {growable: core.bool}],
+ toSet: [core.Set$(core.String), []],
+ take: [core.Iterable$(core.String), [core.int]],
+ takeWhile: [core.Iterable$(core.String), [dart.functionType(core.bool, [core.String])]],
+ skip: [core.Iterable$(core.String), [core.int]],
+ skipWhile: [core.Iterable$(core.String), [dart.functionType(core.bool, [core.String])]],
+ firstWhere: [core.String, [dart.functionType(core.bool, [core.String])], {orElse: dart.functionType(core.String, [])}],
+ lastWhere: [core.String, [dart.functionType(core.bool, [core.String])], {orElse: dart.functionType(core.String, [])}],
+ singleWhere: [core.String, [dart.functionType(core.bool, [core.String])]],
+ elementAt: [core.String, [core.int]],
+ clear: [dart.void, []],
+ modify: [dart.dynamic, [dart.functionType(dart.dynamic, [core.Set$(core.String)])]]
+ })
+ });
+ dart.defineExtensionMembers(CssClassSetImpl, [
+ 'forEach',
+ 'join',
+ 'map',
+ 'where',
+ 'expand',
+ 'every',
+ 'any',
+ 'reduce',
+ 'fold',
+ 'contains',
+ 'toList',
+ 'toSet',
+ 'take',
+ 'takeWhile',
+ 'skip',
+ 'skipWhile',
+ 'firstWhere',
+ 'lastWhere',
+ 'singleWhere',
+ 'elementAt',
+ 'iterator',
+ 'isEmpty',
+ 'isNotEmpty',
+ 'length',
+ 'first',
+ 'last',
+ 'single'
+ ]);
+ dart.defineLazyProperties(CssClassSetImpl, {
+ get _validTokenRE() {
+ return core.RegExp.new('^\\S+$');
+ }
+ });
+ const __CastType0 = dart.typedef('__CastType0', () => dart.functionType(dart.dynamic, [core.Object]));
+ function convertDartToNative_SerializedScriptValue(value) {
+ return convertDartToNative_PrepareForStructuredClone(value);
+ }
+ dart.fn(convertDartToNative_SerializedScriptValue);
+ function convertNativeToDart_SerializedScriptValue(object) {
+ return convertNativeToDart_AcceptStructuredClone(object, {mustCopy: true});
+ }
+ dart.fn(convertNativeToDart_SerializedScriptValue);
+ class _StructuredClone extends core.Object {
+ _StructuredClone() {
+ this.values = [];
+ this.copies = [];
+ }
+ findSlot(value) {
+ let length = this.values[dartx.length];
+ for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
+ if (dart.notNull(core.identical(this.values[dartx.get](i), value)))
+ return i;
+ }
+ this.values[dartx.add](value);
+ this.copies[dartx.add](null);
+ return length;
+ }
+ readSlot(i) {
+ return this.copies[dartx.get](i);
+ }
+ writeSlot(i, x) {
+ this.copies[dartx.set](i, x);
+ }
+ cleanupSlots() {}
+ walk(e) {
+ if (e == null)
+ return e;
+ if (typeof e == 'boolean')
+ return e;
+ if (typeof e == 'number')
+ return e;
+ if (typeof e == 'string')
+ return e;
+ if (dart.is(e, core.DateTime)) {
+ return convertDartToNative_DateTime(dart.as(e, core.DateTime));
+ }
+ if (dart.is(e, core.RegExp)) {
+ dart.throw(new core.UnimplementedError('structured clone of RegExp'));
+ }
+ if (dart.is(e, dart.dynamic))
+ return e;
+ if (dart.is(e, dart.dynamic))
+ return e;
+ if (dart.is(e, dart.dynamic))
+ return e;
+ if (dart.is(e, dart.dynamic))
+ return e;
+ if (dart.notNull(this.cloneNotRequired(e)))
+ return e;
+ if (dart.is(e, core.Map)) {
+ let slot = this.findSlot(e);
+ let copy = this.readSlot(slot);
+ if (copy != null)
+ return copy;
+ copy = this.newJsMap();
+ this.writeSlot(slot, copy);
+ dart.dsend(e, 'forEach', dart.fn(((key, value) => {
+ this.putIntoMap(copy, key, this.walk(value));
+ }).bind(this)));
+ return copy;
+ }
+ if (dart.is(e, core.List)) {
+ let slot = this.findSlot(e);
+ let copy = this.readSlot(slot);
+ if (copy != null)
+ return copy;
+ copy = this.copyList(dart.as(e, core.List), slot);
+ return copy;
+ }
+ dart.throw(new core.UnimplementedError('structured clone of other type'));
+ }
+ copyList(e, slot) {
+ let i = 0;
+ let length = e[dartx.length];
+ let copy = this.newJsList(length);
+ this.writeSlot(slot, copy);
+ for (; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
+ dart.dsetindex(copy, i, this.walk(e[dartx.get](i)));
+ }
+ return copy;
+ }
+ convertDartToNative_PrepareForStructuredClone(value) {
+ let copy = this.walk(value);
+ this.cleanupSlots();
+ return copy;
+ }
+ }
+ dart.setSignature(_StructuredClone, {
+ methods: () => ({
+ findSlot: [core.int, [dart.dynamic]],
+ readSlot: [dart.dynamic, [core.int]],
+ writeSlot: [dart.dynamic, [core.int, dart.dynamic]],
+ cleanupSlots: [dart.dynamic, []],
+ walk: [dart.dynamic, [dart.dynamic]],
+ copyList: [dart.dynamic, [core.List, core.int]],
+ convertDartToNative_PrepareForStructuredClone: [dart.dynamic, [dart.dynamic]]
+ })
+ });
+ class _AcceptStructuredClone extends core.Object {
+ _AcceptStructuredClone() {
+ this.values = [];
+ this.copies = [];
+ this.mustCopy = false;
+ }
+ findSlot(value) {
+ let length = this.values[dartx.length];
+ for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
+ if (dart.notNull(this.identicalInJs(this.values[dartx.get](i), value)))
+ return i;
+ }
+ this.values[dartx.add](value);
+ this.copies[dartx.add](null);
+ return length;
+ }
+ readSlot(i) {
+ return this.copies[dartx.get](i);
+ }
+ writeSlot(i, x) {
+ this.copies[dartx.set](i, x);
+ }
+ walk(e) {
+ if (e == null)
+ return e;
+ if (typeof e == 'boolean')
+ return e;
+ if (typeof e == 'number')
+ return e;
+ if (typeof e == 'string')
+ return e;
+ if (dart.notNull(isJavaScriptDate(e))) {
+ return convertNativeToDart_DateTime(e);
+ }
+ if (dart.notNull(isJavaScriptRegExp(e))) {
+ dart.throw(new core.UnimplementedError('structured clone of RegExp'));
+ }
+ if (dart.notNull(isJavaScriptPromise(e))) {
+ return convertNativePromiseToDartFuture(e);
+ }
+ if (dart.notNull(isJavaScriptSimpleObject(e))) {
+ let slot = this.findSlot(e);
+ let copy = this.readSlot(slot);
+ if (copy != null)
+ return copy;
+ copy = dart.map();
+ this.writeSlot(slot, copy);
+ this.forEachJsField(e, dart.fn(((key, value) => dart.dsetindex(copy, key, this.walk(value))).bind(this)));
+ return copy;
+ }
+ if (dart.notNull(isJavaScriptArray(e))) {
+ let slot = this.findSlot(e);
+ let copy = this.readSlot(slot);
+ if (copy != null)
+ return copy;
+ let length = dart.as(dart.dload(e, 'length'), core.int);
+ copy = dart.notNull(this.mustCopy) ? this.newDartList(length) : e;
+ this.writeSlot(slot, copy);
+ for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
+ dart.dsetindex(copy, i, this.walk(dart.dindex(e, i)));
+ }
+ return copy;
+ }
+ return e;
+ }
+ convertNativeToDart_AcceptStructuredClone(object, opts) {
+ let mustCopy = opts && 'mustCopy' in opts ? opts.mustCopy : false;
+ this.mustCopy = dart.as(mustCopy, core.bool);
+ let copy = this.walk(object);
+ return copy;
+ }
+ }
+ dart.setSignature(_AcceptStructuredClone, {
+ methods: () => ({
+ findSlot: [core.int, [dart.dynamic]],
+ readSlot: [dart.dynamic, [core.int]],
+ writeSlot: [dart.dynamic, [core.int, dart.dynamic]],
+ walk: [dart.dynamic, [dart.dynamic]],
+ convertNativeToDart_AcceptStructuredClone: [dart.dynamic, [dart.dynamic], {mustCopy: dart.dynamic}]
+ })
+ });
+ class _TypedContextAttributes extends core.Object {
+ _TypedContextAttributes(alpha, antialias, depth, failIfMajorPerformanceCaveat, premultipliedAlpha, preserveDrawingBuffer, stencil) {
+ this.alpha = alpha;
+ this.antialias = antialias;
+ this.depth = depth;
+ this.failIfMajorPerformanceCaveat = failIfMajorPerformanceCaveat;
+ this.premultipliedAlpha = premultipliedAlpha;
+ this.preserveDrawingBuffer = preserveDrawingBuffer;
+ this.stencil = stencil;
+ }
+ }
+ dart.setSignature(_TypedContextAttributes, {
+ constructors: () => ({_TypedContextAttributes: [_TypedContextAttributes, [core.bool, core.bool, core.bool, core.bool, core.bool, core.bool, core.bool]]})
+ });
+ function convertNativeToDart_ContextAttributes(nativeContextAttributes) {
+ if (dart.is(nativeContextAttributes, dart.dynamic)) {
+ return nativeContextAttributes;
+ }
+ return new _TypedContextAttributes(dart.as(nativeContextAttributes.alpha, core.bool), dart.as(nativeContextAttributes.antialias, core.bool), dart.as(nativeContextAttributes.depth, core.bool), dart.as(nativeContextAttributes.failIfMajorPerformanceCaveat, core.bool), dart.as(nativeContextAttributes.premultipliedAlpha, core.bool), dart.as(nativeContextAttributes.preserveDrawingBuffer, core.bool), dart.as(nativeContextAttributes.stencil, core.bool));
+ }
+ dart.fn(convertNativeToDart_ContextAttributes);
+ class _TypedImageData extends core.Object {
+ _TypedImageData(data, height, width) {
+ this.data = data;
+ this.height = height;
+ this.width = width;
+ }
+ }
+ dart.setSignature(_TypedImageData, {
+ constructors: () => ({_TypedImageData: [_TypedImageData, [typed_data.Uint8ClampedList, core.int, core.int]]})
+ });
+ function convertNativeToDart_ImageData(nativeImageData) {
+ 0;
+ if (dart.is(nativeImageData, dart.dynamic)) {
+ let data = dart.dload(nativeImageData, 'data');
+ if (data.constructor === Array) {
+ if (typeof CanvasPixelArray !== "undefined") {
+ data.constructor = CanvasPixelArray;
+ data.BYTES_PER_ELEMENT = 1;
+ }
+ }
+ return nativeImageData;
+ }
+ return new _TypedImageData(dart.as(nativeImageData.data, typed_data.Uint8ClampedList), dart.as(nativeImageData.height, core.int), dart.as(nativeImageData.width, core.int));
+ }
+ dart.fn(convertNativeToDart_ImageData);
+ function convertDartToNative_ImageData(imageData) {
+ if (dart.is(imageData, _TypedImageData)) {
+ return {data: dart.dload(imageData, 'data'), height: dart.dload(imageData, 'height'), width: dart.dload(imageData, 'width')};
+ }
+ return imageData;
+ }
+ dart.fn(convertDartToNative_ImageData);
+ const _serializedScriptValue = 'num|String|bool|' + 'JSExtendableArray|=Object|' + 'Blob|File|NativeByteBuffer|NativeTypedData';
+ const annotation_Creates_SerializedScriptValue = dart.const(new _js_helper.Creates(_serializedScriptValue));
+ const annotation_Returns_SerializedScriptValue = dart.const(new _js_helper.Returns(_serializedScriptValue));
+ function convertNativeToDart_Dictionary(object) {
+ if (object == null)
+ return null;
+ let dict = dart.map();
+ let keys = Object.getOwnPropertyNames(object);
+ for (let key of dart.as(keys, core.Iterable)) {
+ dict.set(key, object[key]);
+ }
+ return dict;
+ }
+ dart.fn(convertNativeToDart_Dictionary, core.Map, [dart.dynamic]);
+ function convertDartToNative_Dictionary(dict, postCreate) {
+ if (postCreate === void 0)
+ postCreate = null;
+ if (dict == null)
+ return null;
+ let object = {};
+ if (postCreate != null) {
+ dart.dcall(postCreate, object);
+ }
+ dict.forEach(dart.fn((key, value) => {
+ object[key] = value;
+ }, dart.dynamic, [core.String, dart.dynamic]));
+ return object;
+ }
+ dart.fn(convertDartToNative_Dictionary, dart.dynamic, [core.Map], [dart.functionType(dart.void, [dart.dynamic])]);
+ function convertDartToNative_StringArray(input) {
+ return input;
+ }
+ dart.fn(convertDartToNative_StringArray, core.List, [core.List$(core.String)]);
+ function convertNativeToDart_DateTime(date) {
+ let millisSinceEpoch = date.getTime();
+ return new core.DateTime.fromMillisecondsSinceEpoch(millisSinceEpoch, {isUtc: true});
+ }
+ dart.fn(convertNativeToDart_DateTime, core.DateTime, [dart.dynamic]);
+ function convertDartToNative_DateTime(date) {
+ return new Date(date.millisecondsSinceEpoch);
+ }
+ dart.fn(convertDartToNative_DateTime, dart.dynamic, [core.DateTime]);
+ function convertDartToNative_PrepareForStructuredClone(value) {
+ return new _StructuredCloneDart2Js().convertDartToNative_PrepareForStructuredClone(value);
+ }
+ dart.fn(convertDartToNative_PrepareForStructuredClone);
+ function convertNativeToDart_AcceptStructuredClone(object, opts) {
+ let mustCopy = opts && 'mustCopy' in opts ? opts.mustCopy : false;
+ return new _AcceptStructuredCloneDart2Js().convertNativeToDart_AcceptStructuredClone(object, {mustCopy: mustCopy});
+ }
+ dart.fn(convertNativeToDart_AcceptStructuredClone, dart.dynamic, [dart.dynamic], {mustCopy: dart.dynamic});
+ class _StructuredCloneDart2Js extends _StructuredClone {
+ _StructuredCloneDart2Js() {
+ super._StructuredClone();
+ }
+ newJsMap() {
+ return {};
+ }
+ putIntoMap(map, key, value) {
+ return map[key] = value;
+ }
+ newJsList(length) {
+ return new Array(length);
+ }
+ cloneNotRequired(e) {
+ return dart.is(e, _native_typed_data.NativeByteBuffer) || dart.is(e, _native_typed_data.NativeTypedData);
+ }
+ }
+ dart.setSignature(_StructuredCloneDart2Js, {
+ methods: () => ({
+ newJsMap: [dart.dynamic, []],
+ putIntoMap: [dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]],
+ newJsList: [dart.dynamic, [dart.dynamic]],
+ cloneNotRequired: [core.bool, [dart.dynamic]]
+ })
+ });
+ class _AcceptStructuredCloneDart2Js extends _AcceptStructuredClone {
+ _AcceptStructuredCloneDart2Js() {
+ super._AcceptStructuredClone();
+ }
+ newJsList(length) {
+ return new Array(length);
+ }
+ newDartList(length) {
+ return this.newJsList(length);
+ }
+ identicalInJs(a, b) {
+ return core.identical(a, b);
+ }
+ forEachJsField(object, action) {
+ for (let key of dart.as(Object.keys(object), core.Iterable)) {
+ dart.dcall(action, key, object[key]);
+ }
+ }
+ }
+ dart.setSignature(_AcceptStructuredCloneDart2Js, {
+ methods: () => ({
+ newJsList: [dart.dynamic, [dart.dynamic]],
+ newDartList: [dart.dynamic, [dart.dynamic]],
+ identicalInJs: [core.bool, [dart.dynamic, dart.dynamic]],
+ forEachJsField: [dart.void, [dart.dynamic, dart.dynamic]]
+ })
+ });
+ function isJavaScriptDate(value) {
+ return value instanceof Date;
+ }
+ dart.fn(isJavaScriptDate, core.bool, [dart.dynamic]);
+ function isJavaScriptRegExp(value) {
+ return value instanceof RegExp;
+ }
+ dart.fn(isJavaScriptRegExp, core.bool, [dart.dynamic]);
+ function isJavaScriptArray(value) {
+ return value instanceof Array;
+ }
+ dart.fn(isJavaScriptArray, core.bool, [dart.dynamic]);
+ function isJavaScriptSimpleObject(value) {
+ let proto = Object.getPrototypeOf(value);
+ return proto === Object.prototype || proto === null;
+ }
+ dart.fn(isJavaScriptSimpleObject, core.bool, [dart.dynamic]);
+ function isImmutableJavaScriptArray(value) {
+ return !!value.immutable$list;
+ }
+ dart.fn(isImmutableJavaScriptArray, core.bool, [dart.dynamic]);
+ function isJavaScriptPromise(value) {
+ return typeof Promise != "undefined" && value instanceof Promise;
+ }
+ dart.fn(isJavaScriptPromise, core.bool, [dart.dynamic]);
+ function convertNativePromiseToDartFuture(promise) {
+ let completer = async.Completer.new();
+ let then = dart.dcall(/* Unimplemented unknown name */convertDartClosureToJS, dart.fn(result => completer.complete(result), dart.void, [dart.dynamic]), 1);
+ let error = dart.dcall(/* Unimplemented unknown name */convertDartClosureToJS, dart.fn(result => completer.completeError(result), dart.void, [dart.dynamic]), 1);
+ let newPromise = promise.then(then).catch(error);
+ return completer.future;
+ }
+ dart.fn(convertNativePromiseToDartFuture, async.Future, [dart.dynamic]);
+ class Device extends core.Object {
+ static get userAgent() {
+ return dart.as(html.window.navigator.userAgent, core.String);
+ }
+ static get isOpera() {
+ if (Device._isOpera == null) {
+ Device._isOpera = Device.userAgent[dartx.contains]("Opera", 0);
+ }
+ return Device._isOpera;
+ }
+ static get isIE() {
+ if (Device._isIE == null) {
+ Device._isIE = !dart.notNull(Device.isOpera) && dart.notNull(Device.userAgent[dartx.contains]("Trident/", 0));
+ }
+ return Device._isIE;
+ }
+ static get isFirefox() {
+ if (Device._isFirefox == null) {
+ Device._isFirefox = Device.userAgent[dartx.contains]("Firefox", 0);
+ }
+ return Device._isFirefox;
+ }
+ static get isWebKit() {
+ if (Device._isWebKit == null) {
+ Device._isWebKit = !dart.notNull(Device.isOpera) && dart.notNull(Device.userAgent[dartx.contains]("WebKit", 0));
+ }
+ return Device._isWebKit;
+ }
+ static get cssPrefix() {
+ let prefix = Device._cachedCssPrefix;
+ if (prefix != null)
+ return prefix;
+ if (dart.notNull(Device.isFirefox)) {
+ prefix = '-moz-';
+ } else if (dart.notNull(Device.isIE)) {
+ prefix = '-ms-';
+ } else if (dart.notNull(Device.isOpera)) {
+ prefix = '-o-';
+ } else {
+ prefix = '-webkit-';
+ }
+ return Device._cachedCssPrefix = prefix;
+ }
+ static get propertyPrefix() {
+ let prefix = Device._cachedPropertyPrefix;
+ if (prefix != null)
+ return prefix;
+ if (dart.notNull(Device.isFirefox)) {
+ prefix = 'moz';
+ } else if (dart.notNull(Device.isIE)) {
+ prefix = 'ms';
+ } else if (dart.notNull(Device.isOpera)) {
+ prefix = 'o';
+ } else {
+ prefix = 'webkit';
+ }
+ return Device._cachedPropertyPrefix = prefix;
+ }
+ static isEventTypeSupported(eventType) {
+ try {
+ let e = html.Event.eventType(eventType, '');
+ return dart.is(e, html.Event);
+ } catch (_) {
+ }
+
+ return false;
+ }
+ }
+ dart.setSignature(Device, {
+ statics: () => ({isEventTypeSupported: [core.bool, [core.String]]}),
+ names: ['isEventTypeSupported']
+ });
+ Device._isOpera = null;
+ Device._isIE = null;
+ Device._isFirefox = null;
+ Device._isWebKit = null;
+ Device._cachedCssPrefix = null;
+ Device._cachedPropertyPrefix = null;
+ const _childNodes = Symbol('_childNodes');
+ const _node = Symbol('_node');
+ const _iterable = Symbol('_iterable');
+ const _filtered = Symbol('_filtered');
+ class FilteredElementList extends collection.ListBase$(html.Element) {
+ FilteredElementList(node) {
+ this[_childNodes] = node.nodes;
+ this[_node] = node;
+ }
+ get [_iterable]() {
+ return new _internal.WhereIterable(this[_childNodes], dart.fn(n => dart.is(n, html.Element), core.bool, [dart.dynamic]));
+ }
+ get [_filtered]() {
+ return core.List$(html.Element).from(this[_iterable], {growable: false});
+ }
+ forEach(f) {
+ this[_filtered][dartx.forEach](f);
+ }
+ set(index, value) {
+ this.get(index).replaceWith(value);
+ return value;
+ }
+ set length(newLength) {
+ let len = this.length;
+ if (dart.notNull(newLength) >= dart.notNull(len)) {
+ return;
+ } else if (dart.notNull(newLength) < 0) {
+ dart.throw(new core.ArgumentError("Invalid list length"));
+ }
+ this.removeRange(newLength, len);
+ }
+ add(value) {
+ this[_childNodes][dartx.add](value);
+ }
+ addAll(iterable) {
+ for (let element of iterable) {
+ this.add(element);
+ }
+ }
+ contains(needle) {
+ if (!dart.is(needle, html.Element))
+ return false;
+ let element = dart.as(needle, html.Element);
+ return dart.equals(element.parentNode, this[_node]);
+ }
+ get reversed() {
+ return this[_filtered][dartx.reversed];
+ }
+ sort(compare) {
+ if (compare === void 0)
+ compare = null;
+ dart.throw(new core.UnsupportedError('Cannot sort filtered list'));
+ }
+ setRange(start, end, iterable, skipCount) {
+ if (skipCount === void 0)
+ skipCount = 0;
+ dart.throw(new core.UnsupportedError('Cannot setRange on filtered list'));
+ }
+ fillRange(start, end, fillValue) {
+ if (fillValue === void 0)
+ fillValue = null;
+ dart.throw(new core.UnsupportedError('Cannot fillRange on filtered list'));
+ }
+ replaceRange(start, end, iterable) {
+ dart.throw(new core.UnsupportedError('Cannot replaceRange on filtered list'));
+ }
+ removeRange(start, end) {
+ core.List.from(this[_iterable][dartx.skip](start)[dartx.take](dart.notNull(end) - dart.notNull(start)))[dartx.forEach](dart.fn(el => dart.dsend(el, 'remove')));
+ }
+ clear() {
+ this[_childNodes][dartx.clear]();
+ }
+ removeLast() {
+ let result = this[_iterable][dartx.last];
+ if (result != null) {
+ result.remove();
+ }
+ return result;
+ }
+ insert(index, value) {
+ if (index == this.length) {
+ this.add(value);
+ } else {
+ let element = this[_iterable][dartx.elementAt](index);
+ element.parentNode.insertBefore(value, element);
+ }
+ }
+ insertAll(index, iterable) {
+ if (index == this.length) {
+ this.addAll(iterable);
+ } else {
+ let element = this[_iterable][dartx.elementAt](index);
+ element.parentNode.insertAllBefore(iterable, element);
+ }
+ }
+ removeAt(index) {
+ let result = this.get(index);
+ result.remove();
+ return result;
+ }
+ remove(element) {
+ if (!dart.is(element, html.Element))
+ return false;
+ if (dart.notNull(this.contains(element))) {
+ dart.as(element, html.Element).remove();
+ return true;
+ } else {
+ return false;
+ }
+ }
+ get length() {
+ return this[_iterable][dartx.length];
+ }
+ get(index) {
+ return this[_iterable][dartx.elementAt](index);
+ }
+ get iterator() {
+ return this[_filtered][dartx.iterator];
+ }
+ get rawList() {
+ return this[_node].childNodes;
+ }
+ }
+ FilteredElementList[dart.implements] = () => [NodeListWrapper];
+ dart.setSignature(FilteredElementList, {
+ constructors: () => ({FilteredElementList: [FilteredElementList, [html.Node]]}),
+ methods: () => ({
+ forEach: [dart.void, [dart.functionType(dart.void, [html.Element])]],
+ set: [dart.void, [core.int, html.Element]],
+ add: [dart.void, [html.Element]],
+ addAll: [dart.void, [core.Iterable$(html.Element)]],
+ sort: [dart.void, [], [dart.functionType(core.int, [html.Element, html.Element])]],
+ setRange: [dart.void, [core.int, core.int, core.Iterable$(html.Element)], [core.int]],
+ fillRange: [dart.void, [core.int, core.int], [html.Element]],
+ replaceRange: [dart.void, [core.int, core.int, core.Iterable$(html.Element)]],
+ removeLast: [html.Element, []],
+ insert: [dart.void, [core.int, html.Element]],
+ insertAll: [dart.void, [core.int, core.Iterable$(html.Element)]],
+ removeAt: [html.Element, [core.int]],
+ get: [html.Element, [core.int]]
+ })
+ });
+ dart.defineExtensionMembers(FilteredElementList, [
+ 'forEach',
+ 'set',
+ 'add',
+ 'addAll',
+ 'contains',
+ 'sort',
+ 'setRange',
+ 'fillRange',
+ 'replaceRange',
+ 'removeRange',
+ 'clear',
+ 'removeLast',
+ 'insert',
+ 'insertAll',
+ 'removeAt',
+ 'remove',
+ 'get',
+ 'length',
+ 'reversed',
+ 'length',
+ 'iterator'
+ ]);
+ class Lists extends core.Object {
+ static indexOf(a, element, startIndex, endIndex) {
+ if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
+ return -1;
+ }
+ if (dart.notNull(startIndex) < 0) {
+ startIndex = 0;
+ }
+ for (let i = startIndex; dart.notNull(i) < dart.notNull(endIndex); i = dart.notNull(i) + 1) {
+ if (dart.equals(a[dartx.get](i), element)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+ static lastIndexOf(a, element, startIndex) {
+ if (dart.notNull(startIndex) < 0) {
+ return -1;
+ }
+ if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
+ startIndex = dart.notNull(a[dartx.length]) - 1;
+ }
+ for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
+ if (dart.equals(a[dartx.get](i), element)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+ static getRange(a, start, end, accumulator) {
+ if (dart.notNull(start) < 0)
+ dart.throw(new core.RangeError.value(start));
+ if (dart.notNull(end) < dart.notNull(start))
+ dart.throw(new core.RangeError.value(end));
+ if (dart.notNull(end) > dart.notNull(a[dartx.length]))
+ dart.throw(new core.RangeError.value(end));
+ for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
+ accumulator[dartx.add](a[dartx.get](i));
+ }
+ return accumulator;
+ }
+ }
+ dart.setSignature(Lists, {
+ statics: () => ({
+ indexOf: [core.int, [core.List, core.Object, core.int, core.int]],
+ lastIndexOf: [core.int, [core.List, core.Object, core.int]],
+ getRange: [core.List, [core.List, core.int, core.int, core.List]]
+ }),
+ names: ['indexOf', 'lastIndexOf', 'getRange']
+ });
+ class NodeListWrapper extends core.Object {}
+ // Exports:
+ exports.CssClassSetImpl = CssClassSetImpl;
+ exports.convertDartToNative_SerializedScriptValue = convertDartToNative_SerializedScriptValue;
+ exports.convertNativeToDart_SerializedScriptValue = convertNativeToDart_SerializedScriptValue;
+ exports.convertNativeToDart_ContextAttributes = convertNativeToDart_ContextAttributes;
+ exports.convertNativeToDart_ImageData = convertNativeToDart_ImageData;
+ exports.convertDartToNative_ImageData = convertDartToNative_ImageData;
+ exports.annotation_Creates_SerializedScriptValue = annotation_Creates_SerializedScriptValue;
+ exports.annotation_Returns_SerializedScriptValue = annotation_Returns_SerializedScriptValue;
+ exports.convertNativeToDart_Dictionary = convertNativeToDart_Dictionary;
+ exports.convertDartToNative_Dictionary = convertDartToNative_Dictionary;
+ exports.convertDartToNative_StringArray = convertDartToNative_StringArray;
+ exports.convertNativeToDart_DateTime = convertNativeToDart_DateTime;
+ exports.convertDartToNative_DateTime = convertDartToNative_DateTime;
+ exports.convertDartToNative_PrepareForStructuredClone = convertDartToNative_PrepareForStructuredClone;
+ exports.convertNativeToDart_AcceptStructuredClone = convertNativeToDart_AcceptStructuredClone;
+ exports.isJavaScriptDate = isJavaScriptDate;
+ exports.isJavaScriptRegExp = isJavaScriptRegExp;
+ exports.isJavaScriptArray = isJavaScriptArray;
+ exports.isJavaScriptSimpleObject = isJavaScriptSimpleObject;
+ exports.isImmutableJavaScriptArray = isImmutableJavaScriptArray;
+ exports.isJavaScriptPromise = isJavaScriptPromise;
+ exports.convertNativePromiseToDartFuture = convertNativePromiseToDartFuture;
+ exports.Device = Device;
+ exports.FilteredElementList = FilteredElementList;
+ exports.Lists = Lists;
+ exports.NodeListWrapper = NodeListWrapper;
+});
« no previous file with comments | « lib/runtime/dart/html.js ('k') | lib/runtime/dart/js.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698