@sanpjs/runtime
Version:
San Pro Runtime
61 lines • 1.56 kB
JavaScript
;
/**
* @file app.js
*/
Object.defineProperty(exports, "__esModule", { value: true });
const san_1 = require("san");
/**
*
* @param {SanComponent} Component san的 component
* @param {String|DOM} selector attach 的节点
*/
/**
*
* 一个简单的demo
* import {createApp, BaseComponent} from '@sanpjs/runtime';
* import {BaseComponent} from '@sanpjs/runtime';
*
* class MyComps extends BaseComponent {
* static template = `
* <div>{{text}}</div>
* `;
* }
*
* createApp(MyComps, '#app');
*
*/
// eslint-disable-next-line max-len
function createApp(Component, selector) {
const doc = document;
// eslint-disable-next-line @typescript-eslint/init-declarations
let app;
if (Component instanceof san_1.Component) {
app = Component;
}
else {
const AppComponent = (0, san_1.defineComponent)(Component);
app = new AppComponent();
}
// eslint-disable-next-line @typescript-eslint/init-declarations
let $node;
switch (typeof selector) {
case 'string':
$node = doc.querySelector(selector);
break;
case 'undefined':
$node = doc.body;
break;
default:
if (selector.nodeType && selector.nodeName) {
$node = selector;
}
else {
throw new Error(selector + ' must be an DOM or DOM-selector!');
}
}
app.attach($node);
return app;
}
exports.default = createApp;
;
//# sourceMappingURL=createApp.js.map