solid-panes 3.5.12 → 3.5.13-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +1 -1
- package/README.md +4 -0
- package/lib/dashboard/dashboardPane.d.ts.map +1 -1
- package/lib/dashboard/dashboardPane.js +6 -2
- package/lib/dashboard/dashboardPane.js.map +1 -1
- package/lib/form/pane.js +1 -1
- package/lib/form/pane.js.map +1 -1
- package/lib/humanReadablePane.js +55 -23
- package/lib/humanReadablePane.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/microblogPane/microblogPane.js +1 -1
- package/lib/outline/manager.js +29 -18
- package/lib/outline/manager.js.map +1 -1
- package/lib/outline/userInput.js +1 -1
- package/lib/outline/viewAsImage.js +1 -1
- package/lib/registerPanes.js +1 -1
- package/lib/registerPanes.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.dom.js +2 -2
- package/lib/trustedApplications/trustedApplications.test.js +1 -1
- package/lib/versionInfo.d.ts +0 -1
- package/lib/versionInfo.d.ts.map +1 -1
- package/lib/versionInfo.js +18 -19
- package/lib/versionInfo.js.map +1 -1
- package/package.json +21 -21
- package/src/dashboard/dashboardPane.ts +4 -2
- package/src/form/pane.js +1 -1
- package/src/humanReadablePane.js +38 -14
- package/src/outline/manager.js +10 -1
- package/src/registerPanes.js +2 -2
- package/src/versionInfo.ts +18 -19
- package/webpack.config.js +1 -1
package/.github/workflows/ci.yml
CHANGED
package/README.md
CHANGED
|
@@ -48,6 +48,10 @@ to new users.
|
|
|
48
48
|
|
|
49
49
|
Volunteers are always welcome!
|
|
50
50
|
|
|
51
|
+
## Documentation
|
|
52
|
+
- [Visual Language](https://solid.github.io/solid-panes/Documentation/VisualLanguage.html)
|
|
53
|
+
- [Conventions](./Documentation/conventions.md)
|
|
54
|
+
|
|
51
55
|
## Development
|
|
52
56
|
To get started, make sure you have Node.js installed (for instance
|
|
53
57
|
through https://github.com/nvm-sh/nvm), and:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboardPane.d.ts","sourceRoot":"","sources":["../../src/dashboard/dashboardPane.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,cAAc,EAAE,MAAM,eAAe,CAAA;AAElE,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"dashboardPane.d.ts","sourceRoot":"","sources":["../../src/dashboard/dashboardPane.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,cAAc,EAAE,MAAM,eAAe,CAAA;AAElE,eAAO,MAAM,aAAa,EAAE,cAqC3B,CAAA;AAuCD,eAAe,aAAa,CAAA"}
|
|
@@ -13,6 +13,8 @@ var dashboardPane = {
|
|
|
13
13
|
icon: _solidUi.icons.iconBase + 'noun_547570.svg',
|
|
14
14
|
name: 'dashboard',
|
|
15
15
|
label: function label(subject) {
|
|
16
|
+
console.log();
|
|
17
|
+
|
|
16
18
|
if (subject.uri === subject.site().uri) {
|
|
17
19
|
return 'Dashboard';
|
|
18
20
|
}
|
|
@@ -47,8 +49,10 @@ var dashboardPane = {
|
|
|
47
49
|
exports.dashboardPane = dashboardPane;
|
|
48
50
|
|
|
49
51
|
function buildPage(container, webId, context, subject) {
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
+
// if uri then SolidOS is a browse.html web app
|
|
53
|
+
var uri = new URL(window.location.href).searchParams.get('uri');
|
|
54
|
+
|
|
55
|
+
if (webId && (uri || webId.site().uri === subject.site().uri)) {
|
|
52
56
|
return buildDashboard(container, context);
|
|
53
57
|
}
|
|
54
58
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/dashboard/dashboardPane.ts"],"names":["dashboardPane","icon","icons","iconBase","name","label","subject","
|
|
1
|
+
{"version":3,"sources":["../../src/dashboard/dashboardPane.ts"],"names":["dashboardPane","icon","icons","iconBase","name","label","subject","console","log","uri","site","render","context","dom","container","createElement","runBuildPage","innerHTML","buildPage","authn","currentUser","authSession","onLogin","onSessionRestore","webId","URL","window","location","href","searchParams","get","buildDashboard","buildHomePage","outliner","getOutliner","getDashboard","then","dashboard","appendChild","wrapper","document","shadow","attachShadow","mode","link","rel","store","fetcher","homepage"],"mappings":";;;;;;;AAAA;;AAEA;;AAGO,IAAMA,aAA6B,GAAG;AAC3CC,EAAAA,IAAI,EAAEC,eAAMC,QAAN,GAAiB,iBADoB;AAE3CC,EAAAA,IAAI,EAAE,WAFqC;AAG3CC,EAAAA,KAAK,EAAE,eAAAC,OAAO,EAAI;AAChBC,IAAAA,OAAO,CAACC,GAAR;;AACA,QAAIF,OAAO,CAACG,GAAR,KAAgBH,OAAO,CAACI,IAAR,GAAeD,GAAnC,EAAwC;AACtC,aAAO,WAAP;AACD;;AACD,WAAO,IAAP;AACD,GAT0C;AAU3CE,EAAAA,MAAM,EAAE,gBAACL,OAAD,EAAUM,OAAV,EAAsB;AAC5BL,IAAAA,OAAO,CAACC,GAAR,CAAY,uBAAZ;AACA,QAAMK,GAAG,GAAGD,OAAO,CAACC,GAApB;AACA,QAAMC,SAAS,GAAGD,GAAG,CAACE,aAAJ,CAAkB,KAAlB,CAAlB;;AACA,QAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzBF,MAAAA,SAAS,CAACG,SAAV,GAAsB,EAAtB;AACAC,MAAAA,SAAS,CACPJ,SADO,EAEPK,eAAMC,WAAN,MAAuB,IAFhB,EAGPR,OAHO,EAIPN,OAJO,CAAT;AAMD,KARD;;AAUAa,mBAAME,WAAN,CAAkBC,OAAlB,CAA0B,YAAM;AAC9B;AACAN,MAAAA,YAAY;AACb,KAHD;;AAIAG,mBAAME,WAAN,CAAkBE,gBAAlB,CAAmC,YAAM;AACvC;AACAP,MAAAA,YAAY;AACb,KAHD,EAlB4B,CAsB5B;;;AACAA,IAAAA,YAAY;AAEZ,WAAOF,SAAP;AACD;AApC0C,CAAtC;;;AAuCP,SAASI,SAAT,CACEJ,SADF,EAEEU,KAFF,EAGEZ,OAHF,EAIEN,OAJF,EAKE;AACA;AACA,MAAMG,GAAG,GAAI,IAAIgB,GAAJ,CAAQC,MAAM,CAACC,QAAP,CAAgBC,IAAxB,CAAD,CAAgCC,YAAhC,CAA6CC,GAA7C,CAAiD,KAAjD,CAAZ;;AACA,MAAIN,KAAK,KAAKf,GAAG,IAAIe,KAAK,CAACd,IAAN,GAAaD,GAAb,KAAqBH,OAAO,CAACI,IAAR,GAAeD,GAAhD,CAAT,EAA+D;AAC7D,WAAOsB,cAAc,CAACjB,SAAD,EAAYF,OAAZ,CAArB;AACD;;AACD,SAAOoB,aAAa,CAAClB,SAAD,EAAYR,OAAZ,CAApB;AACD;;AAED,SAASyB,cAAT,CAAyBjB,SAAzB,EAAiDF,OAAjD,EAA8E;AAC5E;AACA;AACA,MAAMqB,QAAa,GAAGrB,OAAO,CAACsB,WAAR,CAAoBtB,OAAO,CAACC,GAA5B,CAAtB;AACAoB,EAAAA,QAAQ,CACLE,YADH,GAEGC,IAFH,CAEQ,UAACC,SAAD;AAAA,WAA4BvB,SAAS,CAACwB,WAAV,CAAsBD,SAAtB,CAA5B;AAAA,GAFR;AAGD;;AAED,SAASL,aAAT,CAAwBlB,SAAxB,EAAgDR,OAAhD,EAAoE;AAClE;AACA,MAAMiC,OAAO,GAAGC,QAAQ,CAACzB,aAAT,CAAuB,KAAvB,CAAhB;AACAD,EAAAA,SAAS,CAACwB,WAAV,CAAsBC,OAAtB;AACA,MAAME,MAAM,GAAGF,OAAO,CAACG,YAAR,CAAqB;AAAEC,IAAAA,IAAI,EAAE;AAAR,GAArB,CAAf;AACA,MAAMC,IAAI,GAAGJ,QAAQ,CAACzB,aAAT,CAAuB,MAAvB,CAAb;AACA6B,EAAAA,IAAI,CAACC,GAAL,GAAW,YAAX;AACAD,EAAAA,IAAI,CAAChB,IAAL,GAAY,+BAAZ;AACAa,EAAAA,MAAM,CAACH,WAAP,CAAmBM,IAAnB;AACA,kCAAiBtC,OAAjB,EAA0BwC,cAA1B,EAAiCA,eAAMC,OAAvC,EAA2DX,IAA3D,CAAgE,UAAAY,QAAQ;AAAA,WACtEP,MAAM,CAACH,WAAP,CAAmBU,QAAnB,CADsE;AAAA,GAAxE;AAGD;;eAEchD,a","sourcesContent":["import { authn, icons, store } from 'solid-ui'\nimport { Fetcher, NamedNode } from 'rdflib'\nimport { generateHomepage } from './homepage'\nimport { DataBrowserContext, PaneDefinition } from 'pane-registry'\n\nexport const dashboardPane: PaneDefinition = {\n icon: icons.iconBase + 'noun_547570.svg',\n name: 'dashboard',\n label: subject => {\n console.log()\n if (subject.uri === subject.site().uri) {\n return 'Dashboard'\n }\n return null\n },\n render: (subject, context) => {\n console.log('Dashboard Pane Render')\n const dom = context.dom\n const container = dom.createElement('div')\n const runBuildPage = () => {\n container.innerHTML = ''\n buildPage(\n container,\n authn.currentUser() || null,\n context,\n subject\n )\n }\n\n authn.authSession.onLogin(() => {\n // console.log('On Login')\n runBuildPage()\n })\n authn.authSession.onSessionRestore(() => {\n // console.log('On Session Restore')\n runBuildPage()\n })\n // console.log('Initial Load')\n runBuildPage()\n\n return container\n }\n}\n\nfunction buildPage (\n container: HTMLElement,\n webId: NamedNode | null,\n context: DataBrowserContext,\n subject: NamedNode\n) {\n // if uri then SolidOS is a browse.html web app\n const uri = (new URL(window.location.href)).searchParams.get('uri')\n if (webId && (uri || webId.site().uri === subject.site().uri)) {\n return buildDashboard(container, context)\n }\n return buildHomePage(container, subject)\n}\n\nfunction buildDashboard (container: HTMLElement, context: DataBrowserContext) {\n // console.log('build dashboard')\n // @@ TODO get a proper type\n const outliner: any = context.getOutliner(context.dom)\n outliner\n .getDashboard()\n .then((dashboard: HTMLElement) => container.appendChild(dashboard))\n}\n\nfunction buildHomePage (container: HTMLElement, subject: NamedNode) {\n // console.log('build home page')\n const wrapper = document.createElement('div')\n container.appendChild(wrapper)\n const shadow = wrapper.attachShadow({ mode: 'open' })\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = '/common/css/bootstrap.min.css'\n shadow.appendChild(link)\n generateHomepage(subject, store, store.fetcher as Fetcher).then(homepage =>\n shadow.appendChild(homepage)\n )\n}\n\nexport default dashboardPane\n"],"file":"dashboardPane.js"}
|
package/lib/form/pane.js
CHANGED
package/lib/form/pane.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/form/pane.js"],"names":["UI","require","$rdf","ns","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","n","widgets","formsFor","length","log","debug","render","context","kb","session","store","dom","mention","complain","message","style","pre","createElement","setAttribute","box","appendChild","textContent","complainIfBad","ok","body","me","authn","currentUser","ws","each","ui","renderFormsFor","fetcher","nowOrWhenFetched","uri","forms","i","form","heading","formStore","Util","document","e","editFormButton","anchor","utils","appendForm","docuri","docpart","updater","editable","doc","any","sym","link","docs","docList","statementsMatching","forEach","st","why","undefined","d","push","sort","_followeach","path","oo","res","concat","slice","date","foobarbaz","selectWorkspace","activities","space","j","act","subjectDoc2","start","cal","value","end"],"mappings":"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","sourcesContent":["/*\n ** Pane for running existing forms for any object\n **\n */\n\nconst UI = require('solid-ui')\nconst $rdf = require('rdflib')\nconst ns = UI.ns\n\nmodule.exports = {\n icon: UI.icons.iconBase + 'noun_122196.svg',\n\n name: 'form',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve this pane?\n label: function (subject) {\n const n = UI.widgets.formsFor(subject).length\n UI.log.debug('Form pane: forms for ' + subject + ': ' + n)\n if (!n) return null\n return '' + n + ' forms'\n },\n\n render: function (subject, context) {\n const kb = context.session.store\n const dom = context.dom\n\n const mention = function complain (message, style) {\n const pre = dom.createElement('p')\n pre.setAttribute('style', style || 'color: grey; background-color: white')\n box.appendChild(pre).textContent = message\n return pre\n }\n\n const complain = function complain (message, style) {\n mention(message, 'style', style || 'color: grey; background-color: #fdd;')\n }\n\n const complainIfBad = function (ok, body) {\n if (ok) {\n // setModifiedDate(store, kb, store);\n // rerender(box); // Deleted forms at the moment\n } else complain('Sorry, failed to save your change:\\n' + body)\n }\n\n // The question of where to store this data about subject\n // This in general needs a whole lot more thought\n // and it connects to the discoverbility through links\n\n // const t = kb.findTypeURIs(subject)\n\n const me = UI.authn.currentUser()\n\n const box = dom.createElement('div')\n box.setAttribute('class', 'formPane')\n\n if (!me) {\n mention(\n 'You are not logged in. If you log in and have ' +\n 'workspaces then you would be able to select workspace in which ' +\n 'to put this new information'\n )\n } else {\n const ws = kb.each(me, ns.ui('workspace'))\n if (ws.length === 0) {\n mention(\n \"You don't seem to have any workspaces defined. \" +\n 'A workspace is a place on the web (http://..) or in ' +\n 'the file system (file:///) to store application data.\\n'\n )\n } else {\n // @@\n }\n }\n\n // Render forms using a given store\n\n const renderFormsFor = function (store, subject) {\n kb.fetcher.nowOrWhenFetched(store.uri, subject, function (ok, body) {\n if (!ok) return complain('Cannot load store ' + store.uri + ': ' + body)\n\n // Render the forms\n\n const forms = UI.widgets.formsFor(subject)\n\n // complain('Form for editing this form:');\n for (let i = 0; i < forms.length; i++) {\n const form = forms[i]\n const heading = dom.createElement('h4')\n box.appendChild(heading)\n if (form.uri) {\n const formStore = $rdf.Util.uri.document(form)\n if (formStore.uri !== form.uri) {\n // The form is a hash-type URI\n const e = box.appendChild(\n UI.widgets.editFormButton(\n dom,\n box,\n form,\n formStore,\n complainIfBad\n )\n )\n e.setAttribute('style', 'float: right;')\n }\n }\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', form.uri)\n heading.appendChild(anchor)\n anchor.textContent = UI.utils.label(form, true)\n\n /* Keep tis as a reminder to let a New one have its URI given by user\n mention(\"Where will this information be stored?\")\n const ele = dom.createElement('input');\n box.appendChild(ele);\n ele.setAttribute('type', 'text');\n ele.setAttribute('size', '72');\n ele.setAttribute('maxlength', '1024');\n ele.setAttribute('style', 'font-size: 80%; color:#222;');\n ele.value = store.uri\n */\n\n UI.widgets.appendForm(\n dom,\n box,\n {},\n subject,\n form,\n store,\n complainIfBad\n )\n }\n }) // end: when store loded\n } // renderFormsFor\n\n // Figure out what store\n\n // Which places are editable and have stuff about the subject?\n\n let store = null\n\n // 1. The document URI of the subject itself\n const docuri = $rdf.Util.uri.docpart(subject.uri)\n if (subject.uri !== docuri && kb.updater.editable(docuri, kb)) {\n store = subject.doc()\n } // an editable data file with hash\n\n store = store || kb.any(kb.sym(docuri), ns.link('annotationStore'))\n\n // 2. where stuff is already stored\n if (!store) {\n const docs = {}\n const docList = []\n store.statementsMatching(subject).forEach(function (st) {\n docs[st.why.uri] = 1\n })\n store\n .statementsMatching(undefined, undefined, subject)\n .forEach(function (st) {\n docs[st.why.uri] = 2\n })\n for (const d in docs) docList.push(docs[d], d)\n docList.sort()\n for (let i = 0; i < docList.length; i++) {\n const uri = docList[i][1]\n if (uri && store.updater.editable(uri)) {\n store = store.sym(uri)\n break\n }\n }\n }\n\n // 3. In a workspace store\n // @@ TODO: Can probably remove _followeach (not done this time because the commit is a very safe refactor)\n const _followeach = function (kb, subject, path) {\n if (path.length === 0) return [subject]\n const oo = kb.each(subject, path[0])\n let res = []\n for (let i = 0; i < oo.length; i++) {\n res = res.concat(_followeach(kb, oo[i], path.slice(1)))\n }\n return res\n }\n\n const date = '2014' // @@@@@@@@@@@@ pass as parameter\n\n if (store) {\n // mention(\"@@ Ok, we have a store <\" + store.uri + \">.\");\n renderFormsFor(store, subject)\n } else {\n complain('No suitable store is known, to edit <' + subject.uri + '>.')\n const foobarbaz = UI.authn.selectWorkspace(dom, function (ws) {\n mention('Workspace selected OK: ' + ws)\n\n const activities = store.each(undefined, ns.space('workspace'), ws)\n for (let j = 0; j < activities.length; j++) {\n const act = activities[j]\n\n const subjectDoc2 = store.any(ws, ns.space('store'))\n const start = store.any(ws, ns.cal('dtstart')).value()\n const end = store.any(ws, ns.cal('dtend')).value()\n if (subjectDoc2 && start && end && start <= date && end > date) {\n renderFormsFor(subjectDoc2, subject)\n break\n } else {\n complain('Note no suitable annotation store in activity: ' + act)\n }\n }\n })\n box.appendChild(foobarbaz)\n }\n\n return box\n }\n}\n"],"file":"pane.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/form/pane.js"],"names":["UI","require","$rdf","ns","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","n","widgets","formsFor","length","log","debug","render","context","kb","session","store","dom","mention","complain","message","style","pre","createElement","setAttribute","box","appendChild","textContent","complainIfBad","ok","body","me","authn","currentUser","ws","each","ui","renderFormsFor","fetcher","nowOrWhenFetched","uri","forms","i","form","heading","formStore","Util","document","e","editFormButton","anchor","utils","appendForm","docuri","docpart","updater","editable","doc","any","sym","link","docs","docList","statementsMatching","forEach","st","why","undefined","d","push","sort","_followeach","path","oo","res","concat","slice","date","foobarbaz","selectWorkspace","activities","space","j","act","subjectDoc2","start","cal","value","end"],"mappings":"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","sourcesContent":["/*\n ** Pane for running existing forms for any object\n **\n */\n\nconst UI = require('solid-ui')\nconst $rdf = require('rdflib')\nconst ns = UI.ns\n\nmodule.exports = {\n icon: UI.icons.iconBase + 'noun_122196.svg',\n\n name: 'form',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve this pane?\n label: function (subject) {\n const n = UI.widgets.formsFor(subject).length\n UI.log.debug('Form pane: forms for ' + subject + ': ' + n)\n if (!n) return null\n return '' + n + ' forms'\n },\n\n render: function (subject, context) {\n const kb = context.session.store\n const dom = context.dom\n\n const mention = function complain (message, style) {\n const pre = dom.createElement('p')\n pre.setAttribute('style', style || 'color: grey; background-color: white')\n box.appendChild(pre).textContent = message\n return pre\n }\n\n const complain = function complain (message, style) {\n mention(message, 'style', style || 'color: grey; background-color: #fdd;')\n }\n\n const complainIfBad = function (ok, body) {\n if (ok) {\n // setModifiedDate(store, kb, store);\n // rerender(box); // Deleted forms at the moment\n } else complain('Sorry, failed to save your change:\\n' + body)\n }\n\n // The question of where to store this data about subject\n // This in general needs a whole lot more thought\n // and it connects to the discoverbility through links\n\n // const t = kb.findTypeURIs(subject)\n\n const me = UI.authn.currentUser()\n\n const box = dom.createElement('div')\n box.setAttribute('class', 'formPane')\n\n if (!me) {\n mention(\n 'You are not logged in. If you log in and have ' +\n 'workspaces then you would be able to select workspace in which ' +\n 'to put this new information'\n )\n } else {\n const ws = kb.each(me, ns.ui('workspace'))\n if (ws.length === 0) {\n mention(\n \"You don't seem to have any workspaces defined. \" +\n 'A workspace is a place on the web (http://..) or in ' +\n 'the file system (file:///) to store application data.\\n'\n )\n } else {\n // @@\n }\n }\n\n // Render forms using a given store\n\n const renderFormsFor = function (store, subject) {\n kb.fetcher.nowOrWhenFetched(store.uri, subject, function (ok, body) {\n if (!ok) return complain('Cannot load store ' + store.uri + ': ' + body)\n\n // Render the forms\n\n const forms = UI.widgets.formsFor(subject)\n\n // complain('Form for editing this form:');\n for (let i = 0; i < forms.length; i++) {\n const form = forms[i]\n const heading = dom.createElement('h4')\n box.appendChild(heading)\n if (form.uri) {\n const formStore = $rdf.Util.uri.document(form.uri)\n if (formStore.uri !== form.uri) {\n // The form is a hash-type URI\n const e = box.appendChild(\n UI.widgets.editFormButton(\n dom,\n box,\n form,\n formStore,\n complainIfBad\n )\n )\n e.setAttribute('style', 'float: right;')\n }\n }\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', form.uri)\n heading.appendChild(anchor)\n anchor.textContent = UI.utils.label(form, true)\n\n /* Keep tis as a reminder to let a New one have its URI given by user\n mention(\"Where will this information be stored?\")\n const ele = dom.createElement('input');\n box.appendChild(ele);\n ele.setAttribute('type', 'text');\n ele.setAttribute('size', '72');\n ele.setAttribute('maxlength', '1024');\n ele.setAttribute('style', 'font-size: 80%; color:#222;');\n ele.value = store.uri\n */\n\n UI.widgets.appendForm(\n dom,\n box,\n {},\n subject,\n form,\n store,\n complainIfBad\n )\n }\n }) // end: when store loded\n } // renderFormsFor\n\n // Figure out what store\n\n // Which places are editable and have stuff about the subject?\n\n let store = null\n\n // 1. The document URI of the subject itself\n const docuri = $rdf.Util.uri.docpart(subject.uri)\n if (subject.uri !== docuri && kb.updater.editable(docuri, kb)) {\n store = subject.doc()\n } // an editable data file with hash\n\n store = store || kb.any(kb.sym(docuri), ns.link('annotationStore'))\n\n // 2. where stuff is already stored\n if (!store) {\n const docs = {}\n const docList = []\n store.statementsMatching(subject).forEach(function (st) {\n docs[st.why.uri] = 1\n })\n store\n .statementsMatching(undefined, undefined, subject)\n .forEach(function (st) {\n docs[st.why.uri] = 2\n })\n for (const d in docs) docList.push(docs[d], d)\n docList.sort()\n for (let i = 0; i < docList.length; i++) {\n const uri = docList[i][1]\n if (uri && store.updater.editable(uri)) {\n store = store.sym(uri)\n break\n }\n }\n }\n\n // 3. In a workspace store\n // @@ TODO: Can probably remove _followeach (not done this time because the commit is a very safe refactor)\n const _followeach = function (kb, subject, path) {\n if (path.length === 0) return [subject]\n const oo = kb.each(subject, path[0])\n let res = []\n for (let i = 0; i < oo.length; i++) {\n res = res.concat(_followeach(kb, oo[i], path.slice(1)))\n }\n return res\n }\n\n const date = '2014' // @@@@@@@@@@@@ pass as parameter\n\n if (store) {\n // mention(\"@@ Ok, we have a store <\" + store.uri + \">.\");\n renderFormsFor(store, subject)\n } else {\n complain('No suitable store is known, to edit <' + subject.uri + '>.')\n const foobarbaz = UI.authn.selectWorkspace(dom, function (ws) {\n mention('Workspace selected OK: ' + ws)\n\n const activities = store.each(undefined, ns.space('workspace'), ws)\n for (let j = 0; j < activities.length; j++) {\n const act = activities[j]\n\n const subjectDoc2 = store.any(ws, ns.space('store'))\n const start = store.any(ws, ns.cal('dtstart')).value()\n const end = store.any(ws, ns.cal('dtend')).value()\n if (subjectDoc2 && start && end && start <= date && end > date) {\n renderFormsFor(subjectDoc2, subject)\n break\n } else {\n complain('Note no suitable annotation store in activity: ' + act)\n }\n }\n })\n box.appendChild(foobarbaz)\n }\n\n return box\n }\n}\n"],"file":"pane.js"}
|
package/lib/humanReadablePane.js
CHANGED
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _solidUi = require("solid-ui");
|
|
9
|
+
|
|
10
|
+
var _rdflib = require("rdflib");
|
|
11
|
+
|
|
12
|
+
var _marked = require("marked");
|
|
13
|
+
|
|
3
14
|
/* Human-readable Pane
|
|
4
15
|
**
|
|
5
16
|
** This outline pane contains the document contents for an HTML document
|
|
6
17
|
** This is for peeking at a page, because the user might not want to leave the data browser.
|
|
7
18
|
*/
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
var $rdf = require('rdflib');
|
|
11
|
-
|
|
12
|
-
module.exports = {
|
|
13
|
-
icon: UI.icons.originalIconBase + 'tango/22-text-x-generic.png',
|
|
19
|
+
var humanReadablePane = {
|
|
20
|
+
icon: _solidUi.icons.originalIconBase + 'tango/22-text-x-generic.png',
|
|
14
21
|
name: 'humanReadable',
|
|
15
22
|
label: function label(subject, context) {
|
|
16
|
-
var kb = context.session.store;
|
|
17
|
-
var ns = UI.ns; // See also the source pane, which has lower precedence.
|
|
23
|
+
var kb = context.session.store; // See also the source pane, which has lower precedence.
|
|
18
24
|
|
|
19
|
-
var allowed = ['text/plain', 'text/html', 'application/xhtml+xml', 'image/png', 'image/jpeg', 'application/pdf', 'video/mp4'];
|
|
25
|
+
var allowed = ['text/plain', 'text/html', 'text/markdown', 'application/xhtml+xml', 'image/png', 'image/jpeg', 'application/pdf', 'video/mp4'];
|
|
20
26
|
|
|
21
27
|
var hasContentTypeIn = function hasContentTypeIn(kb, x, displayables) {
|
|
22
28
|
var cts = kb.fetcher.getHeader(x, 'content-type');
|
|
@@ -39,7 +45,7 @@ module.exports = {
|
|
|
39
45
|
var t = kb.findTypeURIs(subject);
|
|
40
46
|
|
|
41
47
|
for (var k = 0; k < displayables.length; k++) {
|
|
42
|
-
if (
|
|
48
|
+
if (_rdflib.Util.mediaTypeClass(displayables[k]).uri in t) {
|
|
43
49
|
return true;
|
|
44
50
|
}
|
|
45
51
|
}
|
|
@@ -50,7 +56,7 @@ module.exports = {
|
|
|
50
56
|
if (!subject.uri) return null; // no bnodes
|
|
51
57
|
|
|
52
58
|
var t = kb.findTypeURIs(subject);
|
|
53
|
-
if (t[ns.link('WebPage').uri]) return 'view';
|
|
59
|
+
if (t[_solidUi.ns.link('WebPage').uri]) return 'view';
|
|
54
60
|
|
|
55
61
|
if (hasContentTypeIn(kb, subject, allowed) || hasContentTypeIn2(kb, subject, allowed)) {
|
|
56
62
|
return 'View';
|
|
@@ -61,13 +67,7 @@ module.exports = {
|
|
|
61
67
|
render: function render(subject, context) {
|
|
62
68
|
var myDocument = context.dom;
|
|
63
69
|
var div = myDocument.createElement('div');
|
|
64
|
-
var kb = context.session.store;
|
|
65
|
-
|
|
66
|
-
div.setAttribute('class', 'docView');
|
|
67
|
-
var iframe = myDocument.createElement('IFRAME');
|
|
68
|
-
iframe.setAttribute('src', subject.uri); // allow-same-origin
|
|
69
|
-
|
|
70
|
-
iframe.setAttribute('class', 'doc');
|
|
70
|
+
var kb = context.session.store;
|
|
71
71
|
var cts = kb.fetcher.getHeader(subject.doc(), 'content-type');
|
|
72
72
|
var ct = cts ? cts[0] : null;
|
|
73
73
|
|
|
@@ -75,21 +75,53 @@ module.exports = {
|
|
|
75
75
|
console.log('humanReadablePane: c-t:' + ct);
|
|
76
76
|
} else {
|
|
77
77
|
console.log('humanReadablePane: unknown content-type?');
|
|
78
|
+
} // @@ When we can, use CSP to turn off scripts within the iframe
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
div.setAttribute('class', 'docView');
|
|
82
|
+
var element = ct === 'text/markdown' ? 'DIV' : 'IFRAME';
|
|
83
|
+
var frame = myDocument.createElement(element); // let dataUri
|
|
84
|
+
// render markdown to html
|
|
85
|
+
|
|
86
|
+
var markdownHtml = function markdownHtml() {
|
|
87
|
+
kb.fetcher.webOperation('GET', subject.uri).then(function (response) {
|
|
88
|
+
var markdownText = response.responseText;
|
|
89
|
+
var lines = Math.min(30, markdownText.split(/\n/).length + 5);
|
|
90
|
+
|
|
91
|
+
var res = _marked.marked.parse(markdownText); // dataUri = 'data:text/html;charset=utf-8,' + encodeURIComponent(res)
|
|
92
|
+
// iframe.setAttribute('src', dataUri)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
frame.innerHTML = res;
|
|
96
|
+
frame.setAttribute('class', 'doc');
|
|
97
|
+
frame.setAttribute('style', "border: 1px solid; padding: 1em; height: ".concat(lines, "em; width: 800px; resize: both; overflow: auto;"));
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
if (ct === 'text/markdown') {
|
|
102
|
+
markdownHtml();
|
|
103
|
+
} else {
|
|
104
|
+
frame.setAttribute('src', subject.uri); // allow-same-origin
|
|
105
|
+
|
|
106
|
+
frame.setAttribute('class', 'doc');
|
|
107
|
+
frame.setAttribute('style', 'resize = both; height:120em; width:80em;');
|
|
78
108
|
} // @@ Note below - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF.
|
|
79
109
|
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
|
|
80
110
|
// You can;'t have any sandbox and allow plugins.
|
|
81
111
|
// We could sandbox only HTML files I suppose.
|
|
82
112
|
// HTML5 bug: https://lists.w3.org/Archives/Public/public-html/2011Jun/0330.html
|
|
83
113
|
// iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
iframe.setAttribute('style', 'resize = both; height: 120em; width:80em;'); // iframe.setAttribute('height', '480')
|
|
114
|
+
// iframe.setAttribute('height', '480')
|
|
87
115
|
// iframe.setAttribute('width', '640')
|
|
88
116
|
|
|
117
|
+
|
|
89
118
|
var tr = myDocument.createElement('TR');
|
|
90
|
-
tr.appendChild(
|
|
119
|
+
tr.appendChild(frame);
|
|
91
120
|
div.appendChild(tr);
|
|
92
121
|
return div;
|
|
93
122
|
}
|
|
94
|
-
};
|
|
123
|
+
};
|
|
124
|
+
var _default = humanReadablePane; // ends
|
|
125
|
+
|
|
126
|
+
exports["default"] = _default;
|
|
95
127
|
//# sourceMappingURL=humanReadablePane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/humanReadablePane.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["../src/humanReadablePane.js"],"names":["humanReadablePane","icon","icons","originalIconBase","name","label","subject","context","kb","session","store","allowed","hasContentTypeIn","x","displayables","cts","fetcher","getHeader","j","length","k","indexOf","hasContentTypeIn2","t","findTypeURIs","Util","mediaTypeClass","uri","ns","link","render","myDocument","dom","div","createElement","doc","ct","console","log","setAttribute","element","frame","markdownHtml","webOperation","then","response","markdownText","responseText","lines","Math","min","split","res","marked","parse","innerHTML","tr","appendChild"],"mappings":"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","sourcesContent":["/* Human-readable Pane\n **\n ** This outline pane contains the document contents for an HTML document\n ** This is for peeking at a page, because the user might not want to leave the data browser.\n */\nimport { icons, ns } from 'solid-ui'\nimport { Util } from 'rdflib'\nimport { marked } from 'marked'\n\nconst humanReadablePane = {\n icon: icons.originalIconBase + 'tango/22-text-x-generic.png',\n\n name: 'humanReadable',\n\n label: function (subject, context) {\n const kb = context.session.store\n\n // See also the source pane, which has lower precedence.\n\n const allowed = [\n 'text/plain',\n 'text/html',\n 'text/markdown',\n 'application/xhtml+xml',\n 'image/png',\n 'image/jpeg',\n 'application/pdf',\n 'video/mp4'\n ]\n\n const hasContentTypeIn = function (kb, x, displayables) {\n const cts = kb.fetcher.getHeader(x, 'content-type')\n if (cts) {\n for (let j = 0; j < cts.length; j++) {\n for (let k = 0; k < displayables.length; k++) {\n if (cts[j].indexOf(displayables[k]) >= 0) {\n return true\n }\n }\n }\n }\n return false\n }\n\n // This data could come from a fetch OR from ldp container\n const hasContentTypeIn2 = function (kb, x, displayables) {\n const t = kb.findTypeURIs(subject)\n for (let k = 0; k < displayables.length; k++) {\n if (Util.mediaTypeClass(displayables[k]).uri in t) {\n return true\n }\n }\n return false\n }\n\n if (!subject.uri) return null // no bnodes\n\n const t = kb.findTypeURIs(subject)\n if (t[ns.link('WebPage').uri]) return 'view'\n\n if (\n hasContentTypeIn(kb, subject, allowed) ||\n hasContentTypeIn2(kb, subject, allowed)\n ) {\n return 'View'\n }\n\n return null\n },\n\n render: function (subject, context) {\n const myDocument = context.dom\n const div = myDocument.createElement('div')\n const kb = context.session.store\n\n const cts = kb.fetcher.getHeader(subject.doc(), 'content-type')\n const ct = cts ? cts[0] : null\n if (ct) {\n console.log('humanReadablePane: c-t:' + ct)\n } else {\n console.log('humanReadablePane: unknown content-type?')\n }\n\n // @@ When we can, use CSP to turn off scripts within the iframe\n div.setAttribute('class', 'docView')\n const element = ct === 'text/markdown' ? 'DIV' : 'IFRAME'\n const frame = myDocument.createElement(element)\n // let dataUri\n\n // render markdown to html\n const markdownHtml = function () {\n kb.fetcher.webOperation('GET', subject.uri).then(response => {\n const markdownText = response.responseText\n const lines = Math.min(30, markdownText.split(/\\n/).length + 5)\n const res = marked.parse(markdownText)\n // dataUri = 'data:text/html;charset=utf-8,' + encodeURIComponent(res)\n // iframe.setAttribute('src', dataUri)\n frame.innerHTML = res\n frame.setAttribute('class', 'doc')\n frame.setAttribute('style', `border: 1px solid; padding: 1em; height: ${lines}em; width: 800px; resize: both; overflow: auto;`)\n })\n }\n\n if (ct === 'text/markdown') {\n markdownHtml()\n } else {\n frame.setAttribute('src', subject.uri) // allow-same-origin\n frame.setAttribute('class', 'doc')\n frame.setAttribute('style', 'resize = both; height:120em; width:80em;')\n }\n\n // @@ Note below - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF.\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe\n // You can;'t have any sandbox and allow plugins.\n // We could sandbox only HTML files I suppose.\n // HTML5 bug: https://lists.w3.org/Archives/Public/public-html/2011Jun/0330.html\n\n // iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static\n\n // iframe.setAttribute('height', '480')\n // iframe.setAttribute('width', '640')\n const tr = myDocument.createElement('TR')\n tr.appendChild(frame)\n div.appendChild(tr)\n return div\n }\n}\n\nexport default humanReadablePane\n// ends\n"],"file":"humanReadablePane.js"}
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
4
|
|
|
5
5
|
/*
|
|
6
6
|
Microblog pane
|
package/lib/outline/manager.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -487,7 +487,7 @@ function _default(context) {
|
|
|
487
487
|
|
|
488
488
|
_getPods = function _getPods3() {
|
|
489
489
|
_getPods = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {
|
|
490
|
-
var addPodRoot, _addPodRoot, addPodRootFromUrl, _addPodRootFromUrl, pods;
|
|
490
|
+
var addPodRoot, _addPodRoot, addPodRootFromUrl, _addPodRootFromUrl, pods, uri, podUrl;
|
|
491
491
|
|
|
492
492
|
return regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
493
493
|
while (1) {
|
|
@@ -597,27 +597,30 @@ function _default(context) {
|
|
|
597
597
|
case 13:
|
|
598
598
|
pods = kb.each(me, ns.space('storage'), null, me.doc());
|
|
599
599
|
_context4.prev = 14;
|
|
600
|
-
|
|
601
|
-
|
|
600
|
+
// if uri then SolidOS is a browse.html web app
|
|
601
|
+
uri = new URL(window.location.href).searchParams.get('uri');
|
|
602
|
+
podUrl = uri || window.location.href;
|
|
603
|
+
_context4.next = 19;
|
|
604
|
+
return addPodRootFromUrl(podUrl.substring(0, podUrl.lastIndexOf('/') + 1));
|
|
602
605
|
|
|
603
|
-
case
|
|
604
|
-
_context4.next =
|
|
606
|
+
case 19:
|
|
607
|
+
_context4.next = 24;
|
|
605
608
|
break;
|
|
606
609
|
|
|
607
|
-
case
|
|
608
|
-
_context4.prev =
|
|
610
|
+
case 21:
|
|
611
|
+
_context4.prev = 21;
|
|
609
612
|
_context4.t1 = _context4["catch"](14);
|
|
610
613
|
console.error('cannot load container', _context4.t1);
|
|
611
614
|
|
|
612
|
-
case
|
|
615
|
+
case 24:
|
|
613
616
|
if (pods.length) {
|
|
614
|
-
_context4.next =
|
|
617
|
+
_context4.next = 26;
|
|
615
618
|
break;
|
|
616
619
|
}
|
|
617
620
|
|
|
618
621
|
return _context4.abrupt("return", []);
|
|
619
622
|
|
|
620
|
-
case
|
|
623
|
+
case 26:
|
|
621
624
|
return _context4.abrupt("return", pods.map(function (pod, index) {
|
|
622
625
|
function split(item) {
|
|
623
626
|
return item.uri.split('//')[1].slice(0, -1);
|
|
@@ -633,12 +636,12 @@ function _default(context) {
|
|
|
633
636
|
};
|
|
634
637
|
}));
|
|
635
638
|
|
|
636
|
-
case
|
|
639
|
+
case 27:
|
|
637
640
|
case "end":
|
|
638
641
|
return _context4.stop();
|
|
639
642
|
}
|
|
640
643
|
}
|
|
641
|
-
}, _callee4, null, [[4, 9], [14,
|
|
644
|
+
}, _callee4, null, [[4, 9], [14, 21]]);
|
|
642
645
|
}));
|
|
643
646
|
return _getPods.apply(this, arguments);
|
|
644
647
|
};
|
|
@@ -699,10 +702,12 @@ function _default(context) {
|
|
|
699
702
|
var options,
|
|
700
703
|
dashboardContainer,
|
|
701
704
|
outlineContainer,
|
|
702
|
-
|
|
705
|
+
_tab,
|
|
703
706
|
dashboard,
|
|
707
|
+
tab,
|
|
704
708
|
closeDashboard,
|
|
705
709
|
_args7 = arguments;
|
|
710
|
+
|
|
706
711
|
return regeneratorRuntime.wrap(function _callee7$(_context8) {
|
|
707
712
|
while (1) {
|
|
708
713
|
switch (_context8.prev = _context8.next) {
|
|
@@ -723,14 +728,15 @@ function _default(context) {
|
|
|
723
728
|
|
|
724
729
|
outlineContainer.style.display = 'none';
|
|
725
730
|
dashboardContainer.style.display = 'inherit';
|
|
726
|
-
|
|
731
|
+
_tab = dashboardContainer.querySelector("[data-global-pane-name=\"".concat(options.pane, "\"]"));
|
|
727
732
|
|
|
728
|
-
if (!
|
|
733
|
+
if (!_tab) {
|
|
729
734
|
_context8.next = 11;
|
|
730
735
|
break;
|
|
731
736
|
}
|
|
732
737
|
|
|
733
|
-
|
|
738
|
+
_tab.click();
|
|
739
|
+
|
|
734
740
|
return _context8.abrupt("return");
|
|
735
741
|
|
|
736
742
|
case 11:
|
|
@@ -750,8 +756,13 @@ function _default(context) {
|
|
|
750
756
|
|
|
751
757
|
outlineContainer.style.display = 'none';
|
|
752
758
|
dashboardContainer.appendChild(dashboard);
|
|
759
|
+
tab = dashboardContainer.querySelector("[data-global-pane-name=\"".concat(options.pane, "\"]"));
|
|
760
|
+
|
|
761
|
+
if (tab) {
|
|
762
|
+
tab.click();
|
|
763
|
+
}
|
|
753
764
|
|
|
754
|
-
case
|
|
765
|
+
case 20:
|
|
755
766
|
case "end":
|
|
756
767
|
return _context8.stop();
|
|
757
768
|
}
|