@kospa/base
Version:
Base components for kospa framework
117 lines (116 loc) • 3.87 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.setViewLoader = exports.setModuleLoader = exports.setViewLocator = exports.setModuleLocator = exports.loadView = exports.loadModule = exports.viewLoader = exports.moduleLoader = exports.viewLocator = exports.moduleLocator = void 0;
// @ts-ignore
var IS_AMD = (typeof define === "function" && define.amd);
// @ts-ignore
var IS_COMMONJS = (typeof module === "object" && module.exports);
// @ts-ignore
var IS_SYSTEMJS = (typeof System === "object" && typeof System.import === "function");
exports.moduleLocator = defaultModuleLocator;
exports.viewLocator = defaultViewLocator;
exports.moduleLoader = defaultModuleLoader;
exports.viewLoader = defaultViewLoader;
function loadModule(module) {
return exports.moduleLoader(exports.moduleLocator(module));
}
exports.loadModule = loadModule;
function loadView(view) {
return exports.viewLoader(exports.viewLocator(view));
}
exports.loadView = loadView;
function setModuleLocator(locator) {
exports.moduleLocator = locator;
}
exports.setModuleLocator = setModuleLocator;
function setViewLocator(locator) {
exports.viewLocator = locator;
}
exports.setViewLocator = setViewLocator;
function setModuleLoader(loader) {
exports.moduleLoader = loader;
}
exports.setModuleLoader = setModuleLoader;
function setViewLoader(loader) {
exports.viewLoader = loader;
}
exports.setViewLoader = setViewLoader;
function defaultModuleLocator(module) {
return module;
}
function defaultViewLocator(view) {
if (IS_AMD) {
return "text!" + addHTMLExtension(view);
}
else if (IS_COMMONJS) {
return view;
}
else if (IS_SYSTEMJS) {
return addHTMLExtension(view) + "!text";
}
else {
throw new TypeError("No import mecanism available!");
}
}
function defaultModuleLoader(module) {
if (IS_AMD) {
return importAMD(module);
}
else if (IS_COMMONJS) {
return importCommonJS(module);
}
else if (IS_SYSTEMJS) {
return importSystemJS(module);
}
else {
return Promise.reject(new TypeError("No import mecanism available!"));
}
}
function defaultViewLoader(view) {
return defaultModuleLoader(view)
.then(function (res) {
if (IS_COMMONJS) {
return res.view || res.default;
}
return res;
});
}
function importAMD(module) {
return new Promise(function (resolve, reject) {
try {
// @ts-ignore
require([module], function (mod) { resolve(mod); }, function (err) { reject(err); });
}
catch (e) {
reject(e);
}
});
}
function importCommonJS(module) {
return new Promise(function (resolve, reject) {
try {
// @ts-ignore
resolve(require(module));
}
catch (e) {
reject(e);
}
});
}
function importSystemJS(module) {
// @ts-ignore
return System.import(module);
}
function addHTMLExtension(path) {
return path + (/\.html$/.test(path) ? "" : ".html");
}
});