cloudcmd/client/cloudcmd.js
2020-12-24 19:06:35 +02:00

70 lines
1.6 KiB
JavaScript

import('../css/main.css');
import('../css/nojs.css');
import('../css/columns/name-size-date.css');
import('../css/columns/name-size.css');
import wraptile from 'wraptile';
import load from 'load.js';
const isDev = process.env.NODE_ENV === 'development';
import {registerSW, listenSW} from './sw/register.js';
// prevent additional loading of emitify
window.Emitify = await import('emitify');
export default window.CloudCmd = async (config) => {
window.Util = await import('../common/util');
window.CloudFunc = await iimport('../common/cloudfunc');
const DOM = await import('./dom');
window.DOM = DOM;
window.CloudCmd = require('./client');
await register(config);
await Promise.all([
import('./listeners'),
import('./key');
import('./sort');
]);
const prefix = getPrefix(config.prefix);
window.CloudCmd.init(prefix, config);
};
function getPrefix(prefix) {
if (!prefix)
return '';
if (!prefix.indexOf('/'))
return prefix;
return `/${prefix}`;
}
const onUpdateFound = wraptile(async (config) => {
if (isDev)
return;
const {DOM} = window;
const prefix = getPrefix(config.prefix);
await load.js(`${prefix}/dist/cloudcmd.common.js`);
await load.js(`${prefix}/dist/cloudcmd.js`);
console.log('cloudcmd: sw: updated');
DOM.Events.removeAll();
window.CloudCmd(config);
});
async function register(config) {
const {prefix} = config;
const sw = await registerSW(prefix);
listenSW(sw, 'updatefound', onUpdateFound(config));
}