iportal
Version:
web-portal
47 lines (45 loc) • 1.36 kB
text/typescript
import windowOpen from './windowOpen'
import { smartSetTimeout, smartSetInterval } from './smartSetTimeout'
import tapHighlight from './tapHighlight'
import cssVar from './cssVar'
import { Module } from '../../types'
export default (moduleWindow: Window, module: Module) => {
const { config, application } = module
const apply = config.apply || []
if (Array.isArray(apply)) {
for (const item of apply) {
switch (item) {
case 'link-in-new-window':
windowOpen(moduleWindow, application)
break
case 'smart-setTimeout':
smartSetTimeout(moduleWindow)
break
case 'smart-setInterval':
smartSetInterval(moduleWindow)
break
case 'tap-highlight':
tapHighlight(moduleWindow)
break
default:
if (Array.isArray(item)) {
switch (item[0]) {
case 'tap-highlight':
tapHighlight(moduleWindow, item[1])
break
}
}
break
}
}
}
if (typeof config.inject === 'function') {
config.inject(moduleWindow, module)
}
if (module.components) {
for (const mountComponent of module.components) {
moduleWindow.customElements.define('code-highlight', mountComponent(moduleWindow))
}
}
cssVar(moduleWindow, module)
}