UNPKG

solid-panes

Version:

Solid-compatible Panes: applets and views for the mashlib and databrowser

67 lines (66 loc) 2.33 kB
"use strict"; 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;