Files
2015-04-25 11:27:36 -05:00

90 lines
1.6 KiB
JavaScript

import * as util from 'ionic/util'
class WebView {
constructor(options) {
util.extend(this, options)
}
}
let registry = {}
let defaultWebView;
let activeWebView;
class WebViewController {
constructor() {
let self = this
let proxyMethods = 'ready fullScreen showStatusBar exitApp'.split(' ')
for (let x = 0; x < proxyMethods.length; x++) {
this[proxyMethods[x]] = function() {
return self.proxy(proxyMethods[x], arguments)
}
}
}
proxy(target, args) {
let webview = this.get()
if (webview && webview[target]) {
return webview[target].apply(this, args)
}
return new Promise(resolve => {}, reject => {
reject()
})
}
is(name) {
return this.getName() === name
}
isWebView() {
return !!this.get().isWebView
}
getName() {
return this.get().name
}
get() {
if (util.isUndefined(activeWebView)) {
this.set(this.detect())
}
return activeWebView || defaultWebView
}
set(webview) {
activeWebView = webview
}
setDefault(webview) {
if (!webview instanceof WebView) webview = new WebView(webview)
defaultWebView = webview
}
register(webview) {
if (!webview instanceof WebView) webview = new WebView(webview)
webview.isWebView = true
registry[webview.name] = webview
}
detect() {
for (let name in registry) {
if (registry[name].isMatch()) {
return registry[name]
}
}
return null
}
}
export let webview = new WebViewController()
webview.setDefault({
name: 'default',
ready: util.dom.windowLoad
})