solid-panes 3.5.9 → 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.
@@ -12,7 +12,7 @@ jobs:
12
12
  node-version:
13
13
  - 12.x
14
14
  - 14.x
15
- - 15.x
15
+ - 16.x
16
16
  steps:
17
17
  - uses: actions/checkout@v2
18
18
  - name: Use Node.js ${{ matrix.node-version }}
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,cAoC3B,CAAA;AAsCD,eAAe,aAAa,CAAA"}
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
- // console.log('build page')
51
- if (webId && webId.site().uri === subject.site().uri) {
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","uri","site","render","context","console","log","dom","container","createElement","runBuildPage","innerHTML","buildPage","authn","currentUser","authSession","onLogin","onSessionRestore","webId","buildDashboard","buildHomePage","outliner","getOutliner","getDashboard","then","dashboard","appendChild","wrapper","document","shadow","attachShadow","mode","link","rel","href","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;AAChB,QAAIA,OAAO,CAACC,GAAR,KAAgBD,OAAO,CAACE,IAAR,GAAeD,GAAnC,EAAwC;AACtC,aAAO,WAAP;AACD;;AACD,WAAO,IAAP;AACD,GAR0C;AAS3CE,EAAAA,MAAM,EAAE,gBAACH,OAAD,EAAUI,OAAV,EAAsB;AAC5BC,IAAAA,OAAO,CAACC,GAAR,CAAY,uBAAZ;AACA,QAAMC,GAAG,GAAGH,OAAO,CAACG,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,EAGPV,OAHO,EAIPJ,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;AAnC0C,CAAtC;;;AAsCP,SAASI,SAAT,CACEJ,SADF,EAEEU,KAFF,EAGEd,OAHF,EAIEJ,OAJF,EAKE;AACA;AACA,MAAIkB,KAAK,IAAIA,KAAK,CAAChB,IAAN,GAAaD,GAAb,KAAqBD,OAAO,CAACE,IAAR,GAAeD,GAAjD,EAAsD;AACpD,WAAOkB,cAAc,CAACX,SAAD,EAAYJ,OAAZ,CAArB;AACD;;AACD,SAAOgB,aAAa,CAACZ,SAAD,EAAYR,OAAZ,CAApB;AACD;;AAED,SAASmB,cAAT,CAAyBX,SAAzB,EAAiDJ,OAAjD,EAA8E;AAC5E;AACA;AACA,MAAMiB,QAAa,GAAGjB,OAAO,CAACkB,WAAR,CAAoBlB,OAAO,CAACG,GAA5B,CAAtB;AACAc,EAAAA,QAAQ,CACLE,YADH,GAEGC,IAFH,CAEQ,UAACC,SAAD;AAAA,WAA4BjB,SAAS,CAACkB,WAAV,CAAsBD,SAAtB,CAA5B;AAAA,GAFR;AAGD;;AAED,SAASL,aAAT,CAAwBZ,SAAxB,EAAgDR,OAAhD,EAAoE;AAClE;AACA,MAAM2B,OAAO,GAAGC,QAAQ,CAACnB,aAAT,CAAuB,KAAvB,CAAhB;AACAD,EAAAA,SAAS,CAACkB,WAAV,CAAsBC,OAAtB;AACA,MAAME,MAAM,GAAGF,OAAO,CAACG,YAAR,CAAqB;AAAEC,IAAAA,IAAI,EAAE;AAAR,GAArB,CAAf;AACA,MAAMC,IAAI,GAAGJ,QAAQ,CAACnB,aAAT,CAAuB,MAAvB,CAAb;AACAuB,EAAAA,IAAI,CAACC,GAAL,GAAW,YAAX;AACAD,EAAAA,IAAI,CAACE,IAAL,GAAY,+BAAZ;AACAL,EAAAA,MAAM,CAACH,WAAP,CAAmBM,IAAnB;AACA,kCAAiBhC,OAAjB,EAA0BmC,cAA1B,EAAiCA,eAAMC,OAAvC,EAA2DZ,IAA3D,CAAgE,UAAAa,QAAQ;AAAA,WACtER,MAAM,CAACH,WAAP,CAAmBW,QAAnB,CADsE;AAAA,GAAxE;AAGD;;eAEc3C,a","sourcesContent":["import { authn, icons, store } from 'solid-ui'\nimport { Fetcher, NamedNode, sym } 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 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 // console.log('build page')\n if (webId && 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"}
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":"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","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
@@ -73,7 +73,7 @@ module.exports = {
73
73
  box.appendChild(heading);
74
74
 
75
75
  if (form.uri) {
76
- var formStore = $rdf.Util.uri.document(form);
76
+ var formStore = $rdf.Util.uri.document(form.uri);
77
77
 
78
78
  if (formStore.uri !== form.uri) {
79
79
  // The form is a hash-type URI
@@ -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"}
@@ -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 UI = require('solid-ui');
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 ($rdf.Util.mediaTypeClass(displayables[k]).uri in t) {
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; // @@ When we can, use CSP to turn off scripts within the iframe
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(iframe);
119
+ tr.appendChild(frame);
91
120
  div.appendChild(tr);
92
121
  return div;
93
122
  }
94
- }; // ends
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":["UI","require","$rdf","module","exports","icon","icons","originalIconBase","name","label","subject","context","kb","session","store","ns","allowed","hasContentTypeIn","x","displayables","cts","fetcher","getHeader","j","length","k","indexOf","hasContentTypeIn2","t","findTypeURIs","Util","mediaTypeClass","uri","link","render","myDocument","dom","div","createElement","setAttribute","iframe","doc","ct","console","log","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 */\nconst UI = require('solid-ui')\nconst $rdf = require('rdflib')\n\nmodule.exports = {\n icon: UI.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 const ns = UI.ns\n\n // See also the source pane, which has lower precedence.\n\n const allowed = [\n 'text/plain',\n 'text/html',\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 ($rdf.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 // @@ When we can, use CSP to turn off scripts within the iframe\n div.setAttribute('class', 'docView')\n const iframe = myDocument.createElement('IFRAME')\n iframe.setAttribute('src', subject.uri) // allow-same-origin\n iframe.setAttribute('class', 'doc')\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 // @@ 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('style', 'resize = both; height: 120em; width:80em;')\n // iframe.setAttribute('height', '480')\n // iframe.setAttribute('width', '640')\n const tr = myDocument.createElement('TR')\n tr.appendChild(iframe)\n div.appendChild(tr)\n return div\n }\n}\n// ends\n"],"file":"humanReadablePane.js"}
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"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
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"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
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