forked from rc/aircox
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import Vue from 'vue';
 | 
						|
 | 
						|
 | 
						|
export const appBaseConfig = {
 | 
						|
    el: '#app',
 | 
						|
    delimiters: ['[[', ']]'],
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Application config for the main application instance
 | 
						|
 */
 | 
						|
var appConfig = {};
 | 
						|
 | 
						|
export function setAppConfig(config) {
 | 
						|
    for(var member in appConfig) delete appConfig[member];
 | 
						|
    return Object.assign(appConfig, config)
 | 
						|
}
 | 
						|
 | 
						|
export function getAppConfig(config) {
 | 
						|
    if(config instanceof Function)
 | 
						|
        config = config()
 | 
						|
    config = config == null ? appConfig : config;
 | 
						|
    return {...appBaseConfig, ...config}
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Create Vue application at window 'load' event and return a Promise
 | 
						|
 * resolving to the created app.
 | 
						|
 *
 | 
						|
 * config: defaults to appConfig (checked when window is loaded)
 | 
						|
 */
 | 
						|
export function loadApp(config=null) {
 | 
						|
    return new Promise(function(resolve, reject) {
 | 
						|
        window.addEventListener('load', function() {
 | 
						|
            try {
 | 
						|
                config = getAppConfig(config)
 | 
						|
                const el = document.querySelector(config.el)
 | 
						|
                if(!el) {
 | 
						|
                    reject(`Error: missing element ${config.el}`);
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
 | 
						|
                resolve(new Vue(config))
 | 
						|
            }
 | 
						|
            catch(error) { reject(error) }
 | 
						|
        })
 | 
						|
    })
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |