asp-smart-ui-plus-test
Version:
A Component Library for Vue 3
95 lines (77 loc) • 1.9 kB
JavaScript
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