solid-panes
Version:
Solid-compatible Panes: applets and views for the mashlib and databrowser
67 lines (66 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.dashboardPane = void 0;
var _solidUi = require("solid-ui");
var _solidLogic = require("solid-logic");
var _homepage = require("./homepage");
const dashboardPane = exports.dashboardPane = {
icon: _solidUi.icons.iconBase + 'noun_547570.svg',
name: 'dashboard',
label: subject => {
if (subject.termType === 'NamedNode' && subject.uri === subject.site().uri) {
return 'Dashboard';
}
return null;
},
render: (subject, context) => {
console.log('Dashboard Pane Render');
const dom = context.dom;
const container = dom.createElement('div');
const runBuildPage = () => {
container.innerHTML = '';
buildPage(container, _solidLogic.authn.currentUser() || null, context, subject);
};
_solidLogic.authSession.events.on('login', () => {
// console.log('On Login')
runBuildPage();
});
_solidLogic.authSession.events.on('sessionRestore', () => {
// console.log('On Session Restore')
runBuildPage();
});
// console.log('Initial Load')
runBuildPage();
return container;
}
};
function buildPage(container, webId, context, subject) {
// if uri then SolidOS is a browse.html web app
const uri = new URL(window.location.href).searchParams.get('uri');
if (webId && (uri || webId.site().uri === subject.site().uri)) {
return buildDashboard(container, context);
}
return buildHomePage(container, subject);
}
function buildDashboard(container, context) {
// console.log('build dashboard')
// @@ TODO get a proper type
const outliner = context.getOutliner(context.dom);
outliner.getDashboard().then(dashboard => container.appendChild(dashboard));
}
function buildHomePage(container, subject) {
// console.log('build home page')
const wrapper = document.createElement('div');
container.appendChild(wrapper);
const shadow = wrapper.attachShadow({
mode: 'open'
});
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = '/common/css/bootstrap.min.css';
shadow.appendChild(link);
(0, _homepage.generateHomepage)(subject, _solidLogic.store, _solidLogic.store.fetcher).then(homepage => shadow.appendChild(homepage));
}
var _default = exports.default = dashboardPane;