Files
2019-09-29 19:47:00 -05:00

61 lines
1.9 KiB
JavaScript
Vendored

import Vue from 'vue';
import App from './components/App';
export default class Ignition {
constructor(data) {
this.data = data;
this.tabCallbacks = [];
}
registerBuiltinTabs() {
Vue.component('AppTab', require('./components/Tabs/AppTab').default);
Vue.component('ContextTab', require('./components/Tabs/ContextTab').default);
Vue.component('DebugTab', require('./components/Tabs/DebugTab').default);
Vue.component('RequestTab', require('./components/Tabs/RequestTab').default);
Vue.component('StackTab', require('./components/Tabs/StackTab').default);
Vue.component('UserTab', require('./components/Tabs/UserTab').default);
}
registerCustomTabs() {
this.tabCallbacks.forEach(callback => callback(Vue, this.data));
this.tabCallbacks = [];
}
registerTab(callback) {
this.tabCallbacks.push(callback);
}
start() {
this.registerBuiltinTabs();
this.registerCustomTabs();
window.app = new Vue({
data: () => this.data,
render(h) {
return h(App, {
props: {
report: {
...this.report,
stacktrace: this.report.stacktrace.map(frame => ({
...frame,
relative_file: frame.file.replace(
`${this.report.application_path}/`,
'',
),
})),
},
config: this.config,
solutions: this.solutions,
telescopeUrl: this.telescopeUrl,
shareEndpoint: this.shareEndpoint,
},
});
},
}).$mount('#app');
}
}