let incId = 1; const noop = function () { }; class GImage { static GBridge = null; constructor() { this._id = incId++; this._width = 0; this._height = 0; this._src = undefined; this._onload = noop; this._onerror = noop; this.complete = false; } get width() { return this._width; } set width(v) { this._width = v; } get height() { return this._height; } set height(v) { this._height = v; } get src() { return this._src; } set src(v) { if (v.startsWith('//')) { v = 'http:' + v; } this._src = v; GImage.GBridge.perloadImage([this._src, this._id], (data) => { if (typeof data === 'string') { data = JSON.parse(data); } if (data.error) { var evt = { type: 'error', target: this }; this.onerror(evt); } else { this.complete = true; this.width = typeof data.width === 'number' ? data.width : 0; this.height = typeof data.height === 'number' ? data.height : 0; var evt = { type: 'load', target: this }; this.onload(evt); } }); } addEventListener(name, listener) { if (name === 'load') { this.onload = listener; } else if (name === 'error') { this.onerror = listener; } } removeEventListener(name, listener) { if (name === 'load') { this.onload = noop; } else if (name === 'error') { this.onerror = noop; } } get onload() { return this._onload; } set onload(v) { this._onload = v; } get onerror() { return this._onerror; } set onerror(v) { this._onerror = v; } } export default GImage;