UNPKG

asp-smart-ui-plus-test

Version:

A Component Library for Vue 3

95 lines (77 loc) 1.9 kB
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) { const 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 const 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