This commit is contained in:
2021-08-20 11:18:47 +03:00
parent b31226635c
commit ff5f1770ad
9 changed files with 117 additions and 58 deletions
+30 -2
View File
@@ -5,7 +5,6 @@
*/
window.kit = window.kit || {};
(function(global){
var stackPromise = {};
var stateList = {
undefined: 0,
registered: 1,
@@ -464,9 +463,23 @@ window.kit = window.kit || {};
};
__proto.exec = function (deps, callback, argArr = []) {
if(!Array.isArray(deps)) {
if(typeof deps === 'function') {
argArr = callback;
callback = deps;
deps = [];
}
if(!Array.isArray(deps) ) {
deps = [deps];
}
if(typeof argArr === 'undefined') {
argArr = [];
}
deps = Array.from(new Set(deps.concat(global.config.requiredDependencies)));
if(typeof callback !== 'function') {
return undefined;
}
@@ -544,6 +557,10 @@ window.kit = window.kit || {};
return undefined;
};
var defaultConfig = {
defaultPath: '',
requiredDependencies: [],
};
var manager = new PluginManager(global);
manager.register('PluginManager', {
alias: 'pm',
@@ -553,6 +570,17 @@ window.kit = window.kit || {};
}
});
manager.install('PluginManager');
manager.register('config', {
alias: 'pm',
type: moduleTypeList.loader,
loader: function(module, exports, require, global) {
console.warn('global.config', JSON.stringify(global.config));
global.config = global.config || {};
global.config = Object.assign(defaultConfig, global.config);
}
});
manager.install('config');
global.PluginManager = manager;
global.exec = manager.exec.bind(manager);
global.require = manager.require.bind(manager);
+22 -14
View File
@@ -1,6 +1,6 @@
kit.PluginManager.registerPlugins({
menu: {
path: '/local/templates.dev/kit/assets/menu',
path: kit.config.defaultPath + '/menu',
module: '/menu.js',
css: [
'/menu.css'
@@ -9,28 +9,28 @@ kit.PluginManager.registerPlugins({
deps: ['lib', 'align', 'utils']
},
lib: {
path: '/local/templates.dev/kit/assets/lib',
path: kit.config.defaultPath + '/lib',
module: '/lib.js',
type: 'loader',
},
align: {
path: '/local/templates.dev/kit/assets/align',
path: kit.config.defaultPath + '/align',
module: '/align.js',
type: 'loader',
},
utils: {
path: '/local/templates.dev/kit/assets/utils',
path: kit.config.defaultPath + '/utils',
module: '/utils.js',
type: 'loader',
},
jquery: {
path: '/local/templates.dev/kit/assets/jquery',
path: kit.config.defaultPath + '/jquery',
module: '/jquery.min.js',
type: 'loader',
alias: '$',
},
tooltip: {
path: '/local/templates.dev/kit/assets/tooltip',
path: kit.config.defaultPath + '/tooltip',
module: '/tooltip.js',
type: 'loader',
css: '/tooltip.css',
@@ -40,13 +40,13 @@ kit.PluginManager.registerPlugins({
deps: ['popper', 'bsCore'],
},
popper: {
path: '/local/templates.dev/kit/assets/popper',
path: kit.config.defaultPath + '/popper',
alias: 'popper.js',
module: '/popper.js',
type: 'loader',
},
bsCore: {
path: '/local/templates.dev/kit/assets/bsCore',
path: kit.config.defaultPath + '/bsCore',
module: '/bsCore.js',
type: 'loader',
css: [
@@ -54,20 +54,20 @@ kit.PluginManager.registerPlugins({
]
},
mask: {
path: '/local/templates.dev/kit/assets/mask',
path: kit.config.defaultPath + '/mask',
module: '/mask.js',
type: 'loader',
deps: ['jquery'],
},
toolkit: {
path: '/local/templates.dev/kit/assets/toolkit',
path: kit.config.defaultPath + '/toolkit',
module: '/toolkit.js',
type: 'loader',
css: ['/toolkit.css'],
deps: ['jquery', 'mask'],
},
modal: {
path: '/local/templates.dev/kit/assets/modal',
path: kit.config.defaultPath + '/modal',
module: '/modal.js',
type: 'loader',
css: [
@@ -92,7 +92,7 @@ kit.PluginManager.registerPlugins({
},
},
collapse: {
path: '/local/templates.dev/kit/assets/collapse',
path: kit.config.defaultPath + '/collapse',
module: '/collapse.js',
type: 'loader',
css: [
@@ -106,7 +106,7 @@ kit.PluginManager.registerPlugins({
},
},
datepicker: {
path: '/local/templates.dev/kit/assets/datepicker',
path: kit.config.defaultPath + '/datepicker',
module: '/js/datepicker.js',
type: 'loader',
css: [
@@ -136,10 +136,18 @@ kit.exec([], function () {
if (/complete|interactive|loaded/.test(document.readyState)) {
// In case the document has finished parsing, document's readyState will
// be one of "complete", "interactive" or (non-standard) "loaded".
console.log('1');
_init();
} else {
console.log('2');
// The document is not ready yet, so wait for the DOMContentLoaded event
document.addEventListener("DOMContentLoaded", _init);
}
console.log('readyState', document.readyState);
document.addEventListener("DOMContentLoaded", function () {
console.log('DOMContentLoaded', document.readyState);
});
$(function(){
console.log('$', document.readyState, typeof kit.toolkit);
});
});