72 lines
1.6 KiB
TypeScript
72 lines
1.6 KiB
TypeScript
import axios from 'axios'
|
|
import { loadDoricJSBundle } from './DoricBundleLoader'
|
|
import { DoricContext } from './DoricContext'
|
|
|
|
|
|
export class DoricElement extends HTMLElement {
|
|
context?: DoricContext
|
|
constructor() {
|
|
super()
|
|
}
|
|
get src() {
|
|
return this.getAttribute('src') as string
|
|
}
|
|
|
|
get alias() {
|
|
return this.getAttribute('alias') as string
|
|
}
|
|
set src(v: string) {
|
|
this.setAttribute('src', v)
|
|
}
|
|
set alias(v: string) {
|
|
this.setAttribute('alias', v)
|
|
}
|
|
|
|
get initData() {
|
|
return this.getAttribute('data') as string
|
|
}
|
|
|
|
set initData(v: string) {
|
|
this.setAttribute('data', v)
|
|
}
|
|
|
|
connectedCallback() {
|
|
if (this.src && this.context === undefined) {
|
|
loadDoricJSBundle(this.src).then(result => {
|
|
this.load(result)
|
|
})
|
|
}
|
|
}
|
|
|
|
disconnectedCallback() {
|
|
}
|
|
|
|
adoptedCallback() {
|
|
|
|
}
|
|
|
|
attributeChangedCallback() {
|
|
|
|
}
|
|
|
|
onDestroy() {
|
|
this.context?.onDestroy()
|
|
this.context?.teardown()
|
|
}
|
|
|
|
load(content: string) {
|
|
this.context = new DoricContext(content)
|
|
this.context.init(this.initData)
|
|
this.context.onCreate()
|
|
const divElement = document.createElement('div')
|
|
divElement.style.position = 'relative'
|
|
divElement.style.height = '100%'
|
|
this.append(divElement)
|
|
this.context.rootNode.view = divElement
|
|
this.context.build({
|
|
width: divElement.offsetWidth,
|
|
height: divElement.offsetHeight,
|
|
})
|
|
this.context.onShow()
|
|
}
|
|
} |