adonisjs-livewire
Version:
A front-end framework for AdonisJS
60 lines (59 loc) • 1.82 kB
JavaScript
import { store } from './store.js';
export class BaseComponent {
// @ts-ignore
__id;
// @ts-ignore
__name;
// @ts-ignore
__view_path;
get view() {
return {
share: (data) => {
return this.__view.share(data);
},
render: async (templatePath, state) => {
this.__view_data = Object.assign({}, this.__view_data || {}, state || {});
return await this.__view.render(templatePath, state);
},
renderSync: (templatePath, state) => {
this.__view_data = Object.assign({}, this.__view_data || {}, state || {});
return this.__view.renderSync(templatePath, state);
},
renderRaw: async (contents, state, templatePath) => {
this.__view_data = Object.assign({}, this.__view_data || {}, state || {});
return await this.__view.renderRaw(contents, state, templatePath);
},
renderRawSync: (contents, state, templatePath) => {
this.__view_data = Object.assign({}, this.__view_data || {}, state || {});
return this.__view.renderRawSync(contents, state, templatePath);
},
};
}
setId(id) {
this.__id = id;
}
getId() {
return this.__id;
}
setName(name) {
this.__name = name;
}
setViewPath(view) {
this.__view_path = view;
}
getName() {
return this.__name;
}
async render() {
return this.view.render(this.__view_path);
}
skipRender(html) {
store(this).set('skipRender', html ?? true);
}
skipMount() {
store(this).set('skipMount', true);
}
skipHydrate() {
store(this).set('skipHydrate', true);
}
}