blob: 6deccb0101680e66b9490bdb4d0cce567a137862 [file] [log] [blame] [edit]
dart_library.library('dart/js', null, /* Imports */[
'dart/_runtime',
'dart/core',
'dart/collection',
'dart/_js_helper'
], /* Lazy imports */[
], function(exports, dart, core, collection, _js_helper) {
'use strict';
let dartx = dart.dartx;
const _global = dart.global;
dart.defineLazyProperties(exports, {
get context() {
return _wrapToDart(_global);
}
});
const _jsObject = Symbol('_jsObject');
class JsObject extends core.Object {
_fromJs(jsObject) {
this[_jsObject] = jsObject;
dart.assert(this[_jsObject] != null);
}
static new(constructor, arguments$) {
if (arguments$ === void 0) arguments$ = null;
let ctor = constructor[_jsObject];
if (arguments$ == null) {
return _wrapToDart(new ctor());
}
return _wrapToDart(new ctor(...arguments$));
}
static fromBrowserObject(object) {
if (typeof object == 'number' || typeof object == 'string' || typeof object == 'boolean' || object == null) {
dart.throw(new core.ArgumentError("object cannot be a num, string, bool, or null"));
}
return _wrapToDart(_convertToJS(object));
}
static jsify(object) {
if (!dart.is(object, core.Map) && !dart.is(object, core.Iterable)) {
dart.throw(new core.ArgumentError("object must be a Map or Iterable"));
}
return _wrapToDart(JsObject._convertDataTree(object));
}
static _convertDataTree(data) {
let _convertedObjects = collection.HashMap.identity();
function _convert(o) {
if (dart.notNull(_convertedObjects.containsKey(o))) {
return _convertedObjects.get(o);
}
if (dart.is(o, core.Map)) {
let convertedMap = {};
_convertedObjects.set(o, convertedMap);
for (let key of o.keys) {
convertedMap[key] = _convert(o.get(key));
}
return convertedMap;
} else if (dart.is(o, core.Iterable)) {
let convertedList = [];
_convertedObjects.set(o, convertedList);
convertedList[dartx.addAll](o[dartx.map](_convert));
return convertedList;
} else {
return _convertToJS(o);
}
}
dart.fn(_convert);
return _convert(data);
}
get(property) {
if (!(typeof property == 'string') && !(typeof property == 'number')) {
dart.throw(new core.ArgumentError("property is not a String or num"));
}
return _convertToDart(this[_jsObject][property]);
}
set(property, value) {
if (!(typeof property == 'string') && !(typeof property == 'number')) {
dart.throw(new core.ArgumentError("property is not a String or num"));
}
this[_jsObject][property] = _convertToJS(value);
return value;
}
get hashCode() {
return 0;
}
['=='](other) {
return dart.is(other, JsObject) && this[_jsObject] === other[_jsObject];
}
hasProperty(property) {
if (!(typeof property == 'string') && !(typeof property == 'number')) {
dart.throw(new core.ArgumentError("property is not a String or num"));
}
return property in this[_jsObject];
}
deleteProperty(property) {
if (!(typeof property == 'string') && !(typeof property == 'number')) {
dart.throw(new core.ArgumentError("property is not a String or num"));
}
delete this[_jsObject][property];
}
instanceof(type) {
return this[_jsObject] instanceof _convertToJS(type);
}
toString() {
try {
return String(this[_jsObject]);
} catch (e) {
return super.toString();
}
}
callMethod(method, args) {
if (args === void 0) args = null;
if (!(typeof method == 'string') && !(typeof method == 'number')) {
dart.throw(new core.ArgumentError("method is not a String or num"));
}
if (args != null) args = core.List.from(args[dartx.map](_convertToJS));
let fn = this[_jsObject][method];
if (!(fn instanceof Function)) {
dart.throw(new core.NoSuchMethodError(this[_jsObject], core.Symbol.new(dart.as(method, core.String)), args, dart.map()));
}
return _convertToDart(fn.apply(this[_jsObject], args));
}
}
dart.defineNamedConstructor(JsObject, '_fromJs');
dart.setSignature(JsObject, {
constructors: () => ({
_fromJs: [JsObject, [dart.dynamic]],
new: [JsObject, [JsFunction], [core.List]],
fromBrowserObject: [JsObject, [dart.dynamic]],
jsify: [JsObject, [dart.dynamic]]
}),
methods: () => ({
get: [dart.dynamic, [core.Object]],
set: [dart.dynamic, [core.Object, dart.dynamic]],
hasProperty: [core.bool, [dart.dynamic]],
deleteProperty: [dart.void, [dart.dynamic]],
instanceof: [core.bool, [JsFunction]],
callMethod: [dart.dynamic, [dart.dynamic], [core.List]]
}),
statics: () => ({_convertDataTree: [dart.dynamic, [dart.dynamic]]}),
names: ['_convertDataTree']
});
class JsFunction extends JsObject {
static withThis(f) {
return new JsFunction._fromJs(function() {
let args = [_convertToDart(this)];
for (let arg of arguments) {
args.push(_convertToDart(arg));
}
return _convertToJS(f(...args));
});
}
_fromJs(jsObject) {
super._fromJs(jsObject);
}
apply(args, opts) {
let thisArg = opts && 'thisArg' in opts ? opts.thisArg : null;
return _convertToDart(this[_jsObject].apply(_convertToJS(thisArg), args == null ? null : core.List.from(args[dartx.map](_convertToJS))));
}
}
dart.defineNamedConstructor(JsFunction, '_fromJs');
dart.setSignature(JsFunction, {
constructors: () => ({
withThis: [JsFunction, [core.Function]],
_fromJs: [JsFunction, [dart.dynamic]]
}),
methods: () => ({apply: [dart.dynamic, [core.List], {thisArg: dart.dynamic}]})
});
const _checkIndex = Symbol('_checkIndex');
const _checkInsertIndex = Symbol('_checkInsertIndex');
const JsArray$ = dart.generic(function(E) {
class JsArray extends dart.mixin(JsObject, collection.ListMixin$(E)) {
JsArray() {
super._fromJs([]);
}
from(other) {
super._fromJs((() => {
let _ = [];
_[dartx.addAll](other[dartx.map](dart.as(_convertToJS, __CastType0)));
return _;
})());
}
_fromJs(jsObject) {
super._fromJs(jsObject);
}
[_checkIndex](index) {
if (typeof index == 'number' && (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this.length))) {
dart.throw(new core.RangeError.range(index, 0, this.length));
}
}
[_checkInsertIndex](index) {
if (typeof index == 'number' && (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this.length) + 1)) {
dart.throw(new core.RangeError.range(index, 0, this.length));
}
}
static _checkRange(start, end, length) {
if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(length)) {
dart.throw(new core.RangeError.range(start, 0, length));
}
if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dart.notNull(length)) {
dart.throw(new core.RangeError.range(end, start, length));
}
}
get(index) {
if (typeof index == 'number' && index == index[dartx.toInt]()) {
this[_checkIndex](dart.asInt(index));
}
return dart.as(super.get(index), E);
}
set(index, value) {
dart.as(value, E);
if (typeof index == 'number' && index == index[dartx.toInt]()) {
this[_checkIndex](dart.asInt(index));
}
super.set(index, value);
return value;
}
get length() {
let len = this[_jsObject].length;
if (typeof len === "number" && len >>> 0 === len) {
return len;
}
dart.throw(new core.StateError('Bad JsArray length'));
}
set length(length) {
super.set('length', length);
}
add(value) {
dart.as(value, E);
this.callMethod('push', [value]);
}
addAll(iterable) {
dart.as(iterable, core.Iterable$(E));
let list = iterable instanceof Array ? iterable : core.List.from(iterable);
this.callMethod('push', dart.as(list, core.List));
}
insert(index, element) {
dart.as(element, E);
this[_checkInsertIndex](index);
this.callMethod('splice', [index, 0, element]);
}
removeAt(index) {
this[_checkIndex](index);
return dart.as(dart.dindex(this.callMethod('splice', [index, 1]), 0), E);
}
removeLast() {
if (this.length == 0) dart.throw(new core.RangeError(-1));
return dart.as(this.callMethod('pop'), E);
}
removeRange(start, end) {
JsArray$()._checkRange(start, end, this.length);
this.callMethod('splice', [start, dart.notNull(end) - dart.notNull(start)]);
}
setRange(start, end, iterable, skipCount) {
dart.as(iterable, core.Iterable$(E));
if (skipCount === void 0) skipCount = 0;
JsArray$()._checkRange(start, end, this.length);
let length = dart.notNull(end) - dart.notNull(start);
if (length == 0) return;
if (dart.notNull(skipCount) < 0) dart.throw(new core.ArgumentError(skipCount));
let args = [start, length];
args[dartx.addAll](iterable[dartx.skip](skipCount)[dartx.take](length));
this.callMethod('splice', args);
}
sort(compare) {
if (compare === void 0) compare = null;
dart.as(compare, dart.functionType(core.int, [E, E]));
this.callMethod('sort', compare == null ? [] : [compare]);
}
}
dart.defineNamedConstructor(JsArray, 'from');
dart.defineNamedConstructor(JsArray, '_fromJs');
dart.setSignature(JsArray, {
constructors: () => ({
JsArray: [JsArray$(E), []],
from: [JsArray$(E), [core.Iterable$(E)]],
_fromJs: [JsArray$(E), [dart.dynamic]]
}),
methods: () => ({
[_checkIndex]: [dart.dynamic, [core.int]],
[_checkInsertIndex]: [dart.dynamic, [core.int]],
get: [E, [core.Object]],
set: [dart.void, [core.Object, E]],
add: [dart.void, [E]],
addAll: [dart.void, [core.Iterable$(E)]],
insert: [dart.void, [core.int, E]],
removeAt: [E, [core.int]],
removeLast: [E, []],
setRange: [dart.void, [core.int, core.int, core.Iterable$(E)], [core.int]],
sort: [dart.void, [], [dart.functionType(core.int, [E, E])]]
}),
statics: () => ({_checkRange: [dart.dynamic, [core.int, core.int, core.int]]}),
names: ['_checkRange']
});
dart.defineExtensionMembers(JsArray, [
'get',
'set',
'add',
'addAll',
'insert',
'removeAt',
'removeLast',
'removeRange',
'setRange',
'sort',
'length',
'length'
]);
return JsArray;
});
let JsArray = JsArray$();
function _isBrowserType(o) {
return o instanceof Blob || o instanceof Event || window.KeyRange && o instanceof KeyRange || o instanceof ImageData || o instanceof Node || window.TypedData && o instanceof TypedData || o instanceof Window;
}
dart.fn(_isBrowserType, core.bool, [dart.dynamic]);
const _dartObj = Symbol('_dartObj');
class _DartObject extends core.Object {
_DartObject(dartObj) {
this[_dartObj] = dartObj;
}
}
dart.setSignature(_DartObject, {
constructors: () => ({_DartObject: [_DartObject, [dart.dynamic]]})
});
function _convertToJS(o) {
if (o == null || typeof o == 'string' || typeof o == 'number' || typeof o == 'boolean' || dart.notNull(_isBrowserType(o))) {
return o;
} else if (dart.is(o, core.DateTime)) {
return _js_helper.Primitives.lazyAsJsDate(o);
} else if (dart.is(o, JsObject)) {
return o[_jsObject];
} else if (dart.is(o, core.Function)) {
return _putIfAbsent(_jsProxies, o, _wrapDartFunction);
} else {
return _putIfAbsent(_jsProxies, o, dart.fn(o => new _DartObject(o), _DartObject, [dart.dynamic]));
}
}
dart.fn(_convertToJS);
function _wrapDartFunction(f) {
let wrapper = function() {
let args = Array.prototype.map.call(arguments, _convertToDart);
return _convertToJS(f(...args));
};
dart.dsetindex(_dartProxies, wrapper, f);
return wrapper;
}
dart.fn(_wrapDartFunction);
function _convertToDart(o) {
if (o == null || typeof o == "string" || typeof o == "number" || typeof o == "boolean" || dart.notNull(_isBrowserType(o))) {
return o;
} else if (o instanceof Date) {
let ms = o.getTime();
return new core.DateTime.fromMillisecondsSinceEpoch(dart.asInt(ms));
} else if (dart.is(o, _DartObject) && dart.jsobject != dart.realRuntimeType(o)) {
return o[_dartObj];
} else {
return _putIfAbsent(_dartProxies, o, _wrapToDart);
}
}
dart.fn(_convertToDart, core.Object, [dart.dynamic]);
function _wrapToDart(o) {
if (typeof o == "function") {
return new JsFunction._fromJs(o);
}
if (o instanceof Array) {
return new JsArray._fromJs(o);
}
return new JsObject._fromJs(o);
}
dart.fn(_wrapToDart, JsObject, [dart.dynamic]);
const _dartProxies = new WeakMap();
const _jsProxies = new WeakMap();
function _putIfAbsent(weakMap, o, getValue) {
let value = weakMap.get(o);
if (value == null) {
value = dart.dcall(getValue, o);
weakMap.set(o, value);
}
return value;
}
dart.fn(_putIfAbsent, core.Object, [dart.dynamic, dart.dynamic, dart.functionType(dart.dynamic, [dart.dynamic])]);
function allowInterop(f) {
return f;
}
dart.fn(allowInterop, core.Function, [core.Function]);
dart.defineLazyProperties(exports, {
get _interopCaptureThisExpando() {
return new (core.Expando$(core.Function))();
},
set _interopCaptureThisExpando(_) {}
});
function allowInteropCaptureThis(f) {
let ret = exports._interopCaptureThisExpando.get(f);
if (ret == null) {
ret = dart.as(function() {
let args = [this];
for (let arg of arguments) {
args.push(arg);
}
return f(...args);
}, core.Function);
exports._interopCaptureThisExpando.set(f, ret);
}
return ret;
}
dart.fn(allowInteropCaptureThis, core.Function, [core.Function]);
const __CastType0$ = dart.generic(function(E) {
const __CastType0 = dart.typedef('__CastType0', () => dart.functionType(dart.dynamic, [E]));
return __CastType0;
});
let __CastType0 = __CastType0$();
// Exports:
exports.JsObject = JsObject;
exports.JsFunction = JsFunction;
exports.JsArray$ = JsArray$;
exports.JsArray = JsArray;
exports.allowInterop = allowInterop;
exports.allowInteropCaptureThis = allowInteropCaptureThis;
});