solid-panes 3.6.1-e1d9d5d1 → 3.6.1-f8ff071d
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/coverage/clover.xml +2 -2
- package/coverage/lcov-report/index.html +1 -1
- package/coverage/lcov-report/outline/index.html +1 -1
- package/coverage/lcov-report/outline/outlineIcons.js.html +1 -1
- package/coverage/lcov-report/outline/propertyViews.ts.html +1 -1
- package/coverage/lcov-report/outline/viewAsImage.ts.html +1 -1
- package/coverage/lcov-report/outline/viewAsMbox.ts.html +1 -1
- package/coverage/lcov-report/trustedApplications/index.html +1 -1
- package/coverage/lcov-report/trustedApplications/trustedApplications.utils.ts.html +1 -1
- package/lib/dataContentPane.js +1 -0
- package/lib/dataContentPane.js.map +1 -1
- package/lib/dokieli/dokieliPane.js +23 -11
- package/lib/dokieli/dokieliPane.js.map +1 -1
- package/lib/dokieli/new.js +1 -1
- package/lib/dokieli/new.js.map +1 -1
- package/lib/humanReadablePane.js +9 -9
- package/lib/humanReadablePane.js.map +1 -1
- package/lib/versionInfo.js +2 -2
- package/lib/versionInfo.js.map +1 -1
- package/package.json +1 -1
- package/src/dataContentPane.js +2 -1
- package/src/dokieli/dokieliPane.js +24 -10
- package/src/dokieli/new.html +6 -17
- package/src/dokieli/new.js +1 -1
- package/src/humanReadablePane.js +10 -9
- package/src/versionInfo.ts +2 -2
package/coverage/clover.xml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<coverage generated="
|
|
3
|
-
<project timestamp="
|
|
2
|
+
<coverage generated="1738522418394" clover="3.2.0">
|
|
3
|
+
<project timestamp="1738522418394" name="All files">
|
|
4
4
|
<metrics statements="125" coveredstatements="125" conditionals="6" coveredconditionals="4" methods="13" coveredmethods="13" elements="144" coveredelements="142" complexity="0" loc="125" ncloc="125" packages="2" files="5" classes="5"/>
|
|
5
5
|
<package name="outline">
|
|
6
6
|
<metrics statements="112" coveredstatements="112" conditionals="6" coveredconditionals="4" methods="7" coveredmethods="7"/>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2025-
|
|
119
|
+
at 2025-02-02T18:53:38.385Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="prettify.js"></script>
|
|
122
122
|
<script>
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
147
147
|
Code coverage generated by
|
|
148
148
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
149
|
-
at 2025-
|
|
149
|
+
at 2025-02-02T18:53:38.385Z
|
|
150
150
|
</div>
|
|
151
151
|
<script src="../prettify.js"></script>
|
|
152
152
|
<script>
|
|
@@ -550,7 +550,7 @@ outlineIcons.termWidgets.addTri = new outlineIcons.OutlinerIcon(
|
|
|
550
550
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
551
551
|
Code coverage generated by
|
|
552
552
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
553
|
-
at 2025-
|
|
553
|
+
at 2025-02-02T18:53:38.385Z
|
|
554
554
|
</div>
|
|
555
555
|
<script src="../prettify.js"></script>
|
|
556
556
|
<script>
|
|
@@ -181,7 +181,7 @@ export function viewsAddPropertyView (views, property, pviewfunc, isDefault) {
|
|
|
181
181
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
182
182
|
Code coverage generated by
|
|
183
183
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
184
|
-
at 2025-
|
|
184
|
+
at 2025-02-02T18:53:38.385Z
|
|
185
185
|
</div>
|
|
186
186
|
<script src="../prettify.js"></script>
|
|
187
187
|
<script>
|
|
@@ -106,7 +106,7 @@ export default (dom) => function viewAsImage (obj) {
|
|
|
106
106
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
107
107
|
Code coverage generated by
|
|
108
108
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
109
|
-
at 2025-
|
|
109
|
+
at 2025-02-02T18:53:38.385Z
|
|
110
110
|
</div>
|
|
111
111
|
<script src="../prettify.js"></script>
|
|
112
112
|
<script>
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
113
113
|
Code coverage generated by
|
|
114
114
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
115
|
-
at 2025-
|
|
115
|
+
at 2025-02-02T18:53:38.385Z
|
|
116
116
|
</div>
|
|
117
117
|
<script src="../prettify.js"></script>
|
|
118
118
|
<script>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at 2025-
|
|
104
|
+
at 2025-02-02T18:53:38.385Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -223,7 +223,7 @@ export function generateRandomString () {
|
|
|
223
223
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
224
224
|
Code coverage generated by
|
|
225
225
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
226
|
-
at 2025-
|
|
226
|
+
at 2025-02-02T18:53:38.385Z
|
|
227
227
|
</div>
|
|
228
228
|
<script src="../prettify.js"></script>
|
|
229
229
|
<script>
|
package/lib/dataContentPane.js
CHANGED
|
@@ -173,6 +173,7 @@ var dataContentPane = exports.dataContentPane = {
|
|
|
173
173
|
}
|
|
174
174
|
for (var i = 0; i < roots.length; i++) {
|
|
175
175
|
var tr = myDocument.createElement('tr');
|
|
176
|
+
tr.setAttribute('style', "background-color: ".concat(i % 2 === 0 ? '#f0f0f0' : 'white', ";"));
|
|
176
177
|
rep.appendChild(tr);
|
|
177
178
|
var subjectTD = myDocument.createElement('td');
|
|
178
179
|
tr.appendChild(subjectTD);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataContentPane.js","names":["UI","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ns","dataContentPane","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","session","store","findTypeURIs","statementsMatching","undefined","length","statementsAsTables","sts","initialRoots","myDocument","dom","rep","createElement","sz","rdf","Serializer","res","rootSubjects","roots","subjects","loopBreakers","x","console","log","doneBnodes","referencedBnodes","propertyTree","lastPred","toStr","appendChild","createTextNode","sort","same","predicateTD","st","tr","predicate","uri","setAttribute","anchor","addEventListener","widgets","openHrefInOutlineMode","utils","predicateLabelForXML","objectTD","objectTree","object","obj","termType","datatype","textContent","value","innerHTML","toNT","slice","newTable","ancestor","style","backgroundColor","elements","paneRegistry","byName","statements","Error","concat","filter","sameTerm","subjectTD","TDTree","root","bNT","table","insertBefore","firstChild","render","alternativeRendering","p","s2","div","plist","kb","outliner","appendPropertyTRs","_pred","_inverse","verticalAlign","td","outlineObjectTD","outlineExpand","pane","mainRendering","holds","push","ps","any","foaf","getOutliner"],"sources":["../src/dataContentPane.js"],"sourcesContent":["/* Data content Pane\n **\n ** This pane shows the content of a particular RDF resource\n ** or at least the RDF semantics we attribute to that resource.\n */\n\n// To do: - Only take data from one graph\n// - Only do forwards not backward?\n// - Expand automatically all the way down\n// - original source view? Use ffox view source\n\nimport * as UI from 'solid-ui'\nconst ns = UI.ns\n\nexport const dataContentPane = {\n icon: UI.icons.originalIconBase + 'rdf_flyer.24.gif',\n\n name: 'dataContents',\n\n audience: [ns.solid('Developer')],\n\n label: function (subject, context) {\n if (\n 'http://www.w3.org/2007/ont/link#ProtocolEvent' in\n context.session.store.findTypeURIs(subject)\n ) {\n return null\n }\n const n = context.session.store.statementsMatching(\n undefined,\n undefined,\n undefined,\n subject\n ).length\n if (n === 0) return null\n return 'Data (' + n + ')'\n },\n /*\n shouldGetFocus: function(subject) {\n return store.whether(subject, UI.ns.rdf('type'), UI.ns.link('RDFDocument'))\n },\n*/\n statementsAsTables: function statementsAsTables (sts, context, initialRoots) {\n const myDocument = context.dom\n // const outliner = context.getOutliner(myDocument)\n const rep = myDocument.createElement('table')\n const sz = UI.rdf.Serializer(context.session.store)\n const res = sz.rootSubjects(sts)\n let roots = res.roots\n const subjects = res.subjects\n const loopBreakers = res.loopBreakers\n for (const x in loopBreakers) {\n console.log('\\tdataContentPane: loopbreaker:' + x)\n }\n const doneBnodes = {} // For preventing looping\n const referencedBnodes = {} // Bnodes which need to be named alas\n\n // The property tree for a single subject or anonymous node\n function propertyTree (subject) {\n // print('Proprty tree for '+subject)\n const rep = myDocument.createElement('table')\n let lastPred = null\n const sts = subjects[sz.toStr(subject)] // relevant statements\n if (!sts) {\n // No statements in tree\n rep.appendChild(myDocument.createTextNode('...')) // just empty bnode as object\n return rep\n }\n sts.sort()\n let same = 0\n let predicateTD // The cell which holds the predicate\n for (let i = 0; i < sts.length; i++) {\n const st = sts[i]\n const tr = myDocument.createElement('tr')\n if (st.predicate.uri !== lastPred) {\n if (lastPred && same > 1) {\n predicateTD.setAttribute('rowspan', '' + same)\n }\n predicateTD = myDocument.createElement('td')\n predicateTD.setAttribute('class', 'pred')\n const anchor = myDocument.createElement('a')\n anchor.setAttribute('href', st.predicate.uri)\n anchor.addEventListener(\n 'click',\n UI.widgets.openHrefInOutlineMode,\n true\n )\n anchor.appendChild(\n myDocument.createTextNode(\n UI.utils.predicateLabelForXML(st.predicate)\n )\n )\n predicateTD.appendChild(anchor)\n tr.appendChild(predicateTD)\n lastPred = st.predicate.uri\n same = 0\n }\n same++\n const objectTD = myDocument.createElement('td')\n objectTD.appendChild(objectTree(st.object))\n tr.appendChild(objectTD)\n rep.appendChild(tr)\n }\n if (lastPred && same > 1) predicateTD.setAttribute('rowspan', '' + same)\n return rep\n }\n\n // Convert a set of statements into a nested tree of tables\n function objectTree (obj) {\n let res, anchor\n switch (obj.termType) {\n case 'NamedNode':\n anchor = myDocument.createElement('a')\n anchor.setAttribute('href', obj.uri)\n anchor.addEventListener(\n 'click',\n UI.widgets.openHrefInOutlineMode,\n true\n )\n anchor.appendChild(myDocument.createTextNode(UI.utils.label(obj)))\n return anchor\n\n case 'Literal':\n if (!obj.datatype || !obj.datatype.uri) {\n res = myDocument.createElement('div')\n res.setAttribute('style', 'white-space: pre-wrap;')\n res.textContent = obj.value\n return res\n } else if (\n obj.datatype.uri ===\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'\n ) {\n res = myDocument.createElement('div')\n res.setAttribute('class', 'embeddedXHTML')\n res.innerHTML = obj.value // Try that @@@ beware embedded dangerous code\n return res\n }\n return myDocument.createTextNode(obj.value) // placeholder - could be smarter,\n\n case 'BlankNode': {\n if (obj.toNT() in doneBnodes) {\n // Break infinite recursion\n referencedBnodes[obj.toNT()] = true\n const anchor = myDocument.createElement('a')\n anchor.setAttribute('href', '#' + obj.toNT().slice(2))\n anchor.setAttribute('class', 'bnodeRef')\n anchor.textContent = '*' + obj.toNT().slice(3)\n return anchor\n }\n doneBnodes[obj.toNT()] = true // Flag to prevent infinite recursion in propertyTree\n const newTable = propertyTree(obj)\n doneBnodes[obj.toNT()] = newTable // Track where we mentioned it first\n if (\n UI.utils.ancestor(newTable, 'TABLE') &&\n UI.utils.ancestor(newTable, 'TABLE').style.backgroundColor ===\n 'white'\n ) {\n newTable.style.backgroundColor = '#eee'\n } else {\n newTable.style.backgroundColor = 'white'\n }\n return newTable\n }\n case 'Collection':\n res = myDocument.createElement('table')\n res.setAttribute('class', 'collectionAsTables')\n for (let i = 0; i < obj.elements.length; i++) {\n const tr = myDocument.createElement('tr')\n res.appendChild(tr)\n tr.appendChild(objectTree(obj.elements[i]))\n }\n return res\n case 'Graph':\n res = context.session.paneRegistry\n .byName('dataContents')\n .statementsAsTables(obj.statements, context)\n res.setAttribute('class', 'nestedFormula')\n return res\n case 'Variable':\n res = myDocument.createTextNode('?' + obj.uri)\n return res\n }\n throw new Error('Unhandled node type: ' + obj.termType)\n }\n\n // roots.sort()\n\n if (initialRoots) {\n roots = initialRoots.concat(\n roots.filter(function (x) {\n for (let i = 0; i < initialRoots.length; i++) {\n // Max 2\n if (x.sameTerm(initialRoots[i])) return false\n }\n return true\n })\n )\n }\n for (let i = 0; i < roots.length; i++) {\n const tr = myDocument.createElement('tr')\n rep.appendChild(tr)\n const subjectTD = myDocument.createElement('td')\n tr.appendChild(subjectTD)\n const TDTree = myDocument.createElement('td')\n tr.appendChild(TDTree)\n const root = roots[i]\n if (root.termType === 'BlankNode') {\n subjectTD.appendChild(myDocument.createTextNode(UI.utils.label(root))) // Don't recurse!\n } else {\n subjectTD.appendChild(objectTree(root)) // won't have tree\n }\n TDTree.appendChild(propertyTree(root))\n }\n for (const bNT in referencedBnodes) {\n // Add number to refer to\n const table = doneBnodes[bNT]\n // let tr = myDocument.createElement('tr')\n const anchor = myDocument.createElement('a')\n anchor.setAttribute('id', bNT.slice(2))\n anchor.setAttribute('class', 'bnodeDef')\n anchor.textContent = bNT.slice(3) + ')'\n table.insertBefore(anchor, table.firstChild)\n }\n return rep\n }, // statementsAsTables\n // View the data in a file in user-friendly way\n render: function (subject, context) {\n const myDocument = context.dom\n\n function alternativeRendering () {\n const sz = UI.rdf.Serializer(context.session.store)\n const res = sz.rootSubjects(sts)\n const roots = res.roots\n const p = {}\n p.render = function (s2) {\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'withinDocumentPane')\n const plist = kb.statementsMatching(s2, undefined, undefined, subject)\n outliner.appendPropertyTRs(div, plist, false, function (\n _pred,\n _inverse\n ) {\n return true\n })\n return div\n }\n for (let i = 0; i < roots.length; i++) {\n const tr = myDocument.createElement('TR')\n const root = roots[i]\n tr.style.verticalAlign = 'top'\n const td = outliner.outlineObjectTD(root, undefined, tr)\n tr.appendChild(td)\n div.appendChild(tr)\n outliner.outlineExpand(td, root, { pane: p })\n }\n }\n\n function mainRendering () {\n const initialRoots = [] // Ordering: start with stuff about this doc\n if (kb.holds(subject, undefined, undefined, subject)) {\n initialRoots.push(subject)\n }\n // Then about the primary topic of the document if any\n const ps = kb.any(subject, UI.ns.foaf('primaryTopic'), undefined, subject)\n if (ps) initialRoots.push(ps)\n div.appendChild(\n context.session.paneRegistry\n .byName('dataContents')\n .statementsAsTables(sts, context, initialRoots)\n )\n }\n\n const outliner = context.getOutliner(myDocument)\n const kb = context.session.store\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'dataContentPane')\n // Because of smushing etc, this will not be a copy of the original source\n // We could instead either fetch and re-parse the source,\n // or we could keep all the pre-smushed triples.\n const sts = kb.statementsMatching(undefined, undefined, undefined, subject) // @@ slow with current store!\n\n if (false) { // keep code\n alternativeRendering()\n } else {\n mainRendering()\n }\n return div\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"dataContentPane.js","names":["UI","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ns","dataContentPane","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","session","store","findTypeURIs","statementsMatching","undefined","length","statementsAsTables","sts","initialRoots","myDocument","dom","rep","createElement","sz","rdf","Serializer","res","rootSubjects","roots","subjects","loopBreakers","x","console","log","doneBnodes","referencedBnodes","propertyTree","lastPred","toStr","appendChild","createTextNode","sort","same","predicateTD","st","tr","predicate","uri","setAttribute","anchor","addEventListener","widgets","openHrefInOutlineMode","utils","predicateLabelForXML","objectTD","objectTree","object","obj","termType","datatype","textContent","value","innerHTML","toNT","slice","newTable","ancestor","style","backgroundColor","elements","paneRegistry","byName","statements","Error","concat","filter","sameTerm","subjectTD","TDTree","root","bNT","table","insertBefore","firstChild","render","alternativeRendering","p","s2","div","plist","kb","outliner","appendPropertyTRs","_pred","_inverse","verticalAlign","td","outlineObjectTD","outlineExpand","pane","mainRendering","holds","push","ps","any","foaf","getOutliner"],"sources":["../src/dataContentPane.js"],"sourcesContent":["/* Data content Pane\n **\n ** This pane shows the content of a particular RDF resource\n ** or at least the RDF semantics we attribute to that resource.\n */\n\n// To do: - Only take data from one graph\n// - Only do forwards not backward?\n// - Expand automatically all the way down\n// - original source view? Use ffox view source\n\nimport * as UI from 'solid-ui'\nconst ns = UI.ns\n\nexport const dataContentPane = {\n icon: UI.icons.originalIconBase + 'rdf_flyer.24.gif',\n\n name: 'dataContents',\n\n audience: [ns.solid('Developer')],\n\n label: function (subject, context) {\n if (\n 'http://www.w3.org/2007/ont/link#ProtocolEvent' in\n context.session.store.findTypeURIs(subject)\n ) {\n return null\n }\n const n = context.session.store.statementsMatching(\n undefined,\n undefined,\n undefined,\n subject\n ).length\n if (n === 0) return null\n return 'Data (' + n + ')'\n },\n /*\n shouldGetFocus: function(subject) {\n return store.whether(subject, UI.ns.rdf('type'), UI.ns.link('RDFDocument'))\n },\n*/\n statementsAsTables: function statementsAsTables (sts, context, initialRoots) {\n const myDocument = context.dom\n // const outliner = context.getOutliner(myDocument)\n const rep = myDocument.createElement('table')\n const sz = UI.rdf.Serializer(context.session.store)\n const res = sz.rootSubjects(sts)\n let roots = res.roots\n const subjects = res.subjects\n const loopBreakers = res.loopBreakers\n for (const x in loopBreakers) {\n console.log('\\tdataContentPane: loopbreaker:' + x)\n }\n const doneBnodes = {} // For preventing looping\n const referencedBnodes = {} // Bnodes which need to be named alas\n\n // The property tree for a single subject or anonymous node\n function propertyTree (subject) {\n // print('Proprty tree for '+subject)\n const rep = myDocument.createElement('table')\n let lastPred = null\n const sts = subjects[sz.toStr(subject)] // relevant statements\n if (!sts) {\n // No statements in tree\n rep.appendChild(myDocument.createTextNode('...')) // just empty bnode as object\n return rep\n }\n sts.sort()\n let same = 0\n let predicateTD // The cell which holds the predicate\n for (let i = 0; i < sts.length; i++) {\n const st = sts[i]\n const tr = myDocument.createElement('tr')\n if (st.predicate.uri !== lastPred) {\n if (lastPred && same > 1) {\n predicateTD.setAttribute('rowspan', '' + same)\n }\n predicateTD = myDocument.createElement('td')\n predicateTD.setAttribute('class', 'pred')\n const anchor = myDocument.createElement('a')\n anchor.setAttribute('href', st.predicate.uri)\n anchor.addEventListener(\n 'click',\n UI.widgets.openHrefInOutlineMode,\n true\n )\n anchor.appendChild(\n myDocument.createTextNode(\n UI.utils.predicateLabelForXML(st.predicate)\n )\n )\n predicateTD.appendChild(anchor)\n tr.appendChild(predicateTD)\n lastPred = st.predicate.uri\n same = 0\n }\n same++\n const objectTD = myDocument.createElement('td')\n objectTD.appendChild(objectTree(st.object))\n tr.appendChild(objectTD)\n rep.appendChild(tr)\n }\n if (lastPred && same > 1) predicateTD.setAttribute('rowspan', '' + same)\n return rep\n }\n\n // Convert a set of statements into a nested tree of tables\n function objectTree (obj) {\n let res, anchor\n switch (obj.termType) {\n case 'NamedNode':\n anchor = myDocument.createElement('a')\n anchor.setAttribute('href', obj.uri)\n anchor.addEventListener(\n 'click',\n UI.widgets.openHrefInOutlineMode,\n true\n )\n anchor.appendChild(myDocument.createTextNode(UI.utils.label(obj)))\n return anchor\n\n case 'Literal':\n if (!obj.datatype || !obj.datatype.uri) {\n res = myDocument.createElement('div')\n res.setAttribute('style', 'white-space: pre-wrap;')\n res.textContent = obj.value\n return res\n } else if (\n obj.datatype.uri ===\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'\n ) {\n res = myDocument.createElement('div')\n res.setAttribute('class', 'embeddedXHTML')\n res.innerHTML = obj.value // Try that @@@ beware embedded dangerous code\n return res\n }\n return myDocument.createTextNode(obj.value) // placeholder - could be smarter,\n\n case 'BlankNode': {\n if (obj.toNT() in doneBnodes) {\n // Break infinite recursion\n referencedBnodes[obj.toNT()] = true\n const anchor = myDocument.createElement('a')\n anchor.setAttribute('href', '#' + obj.toNT().slice(2))\n anchor.setAttribute('class', 'bnodeRef')\n anchor.textContent = '*' + obj.toNT().slice(3)\n return anchor\n }\n doneBnodes[obj.toNT()] = true // Flag to prevent infinite recursion in propertyTree\n const newTable = propertyTree(obj)\n doneBnodes[obj.toNT()] = newTable // Track where we mentioned it first\n if (\n UI.utils.ancestor(newTable, 'TABLE') &&\n UI.utils.ancestor(newTable, 'TABLE').style.backgroundColor ===\n 'white'\n ) {\n newTable.style.backgroundColor = '#eee'\n } else {\n newTable.style.backgroundColor = 'white'\n }\n return newTable\n }\n case 'Collection':\n res = myDocument.createElement('table')\n res.setAttribute('class', 'collectionAsTables')\n for (let i = 0; i < obj.elements.length; i++) {\n const tr = myDocument.createElement('tr')\n res.appendChild(tr)\n tr.appendChild(objectTree(obj.elements[i]))\n }\n return res\n case 'Graph':\n res = context.session.paneRegistry\n .byName('dataContents')\n .statementsAsTables(obj.statements, context)\n res.setAttribute('class', 'nestedFormula')\n return res\n case 'Variable':\n res = myDocument.createTextNode('?' + obj.uri)\n return res\n }\n throw new Error('Unhandled node type: ' + obj.termType)\n }\n\n // roots.sort()\n\n if (initialRoots) {\n roots = initialRoots.concat(\n roots.filter(function (x) {\n for (let i = 0; i < initialRoots.length; i++) {\n // Max 2\n if (x.sameTerm(initialRoots[i])) return false\n }\n return true\n })\n )\n }\n for (let i = 0; i < roots.length; i++) {\n const tr = myDocument.createElement('tr')\n tr.setAttribute('style', `background-color: ${i % 2 === 0 ? '#f0f0f0' : 'white'};`)\n rep.appendChild(tr)\n const subjectTD = myDocument.createElement('td')\n tr.appendChild(subjectTD)\n const TDTree = myDocument.createElement('td')\n tr.appendChild(TDTree)\n const root = roots[i]\n if (root.termType === 'BlankNode') {\n subjectTD.appendChild(myDocument.createTextNode(UI.utils.label(root))) // Don't recurse!\n } else {\n subjectTD.appendChild(objectTree(root)) // won't have tree\n }\n TDTree.appendChild(propertyTree(root))\n }\n for (const bNT in referencedBnodes) {\n // Add number to refer to\n const table = doneBnodes[bNT]\n // let tr = myDocument.createElement('tr')\n const anchor = myDocument.createElement('a')\n anchor.setAttribute('id', bNT.slice(2))\n anchor.setAttribute('class', 'bnodeDef')\n anchor.textContent = bNT.slice(3) + ')'\n table.insertBefore(anchor, table.firstChild)\n }\n return rep\n }, // statementsAsTables\n // View the data in a file in user-friendly way\n render: function (subject, context) {\n const myDocument = context.dom\n\n function alternativeRendering () {\n const sz = UI.rdf.Serializer(context.session.store)\n const res = sz.rootSubjects(sts)\n const roots = res.roots\n const p = {}\n p.render = function (s2) {\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'withinDocumentPane')\n const plist = kb.statementsMatching(s2, undefined, undefined, subject)\n outliner.appendPropertyTRs(div, plist, false, function (\n _pred,\n _inverse\n ) {\n return true\n })\n return div\n }\n for (let i = 0; i < roots.length; i++) {\n const tr = myDocument.createElement('TR')\n const root = roots[i]\n tr.style.verticalAlign = 'top'\n const td = outliner.outlineObjectTD(root, undefined, tr)\n tr.appendChild(td)\n div.appendChild(tr)\n outliner.outlineExpand(td, root, { pane: p })\n }\n }\n\n function mainRendering () {\n const initialRoots = [] // Ordering: start with stuff about this doc\n if (kb.holds(subject, undefined, undefined, subject)) {\n initialRoots.push(subject)\n }\n // Then about the primary topic of the document if any\n const ps = kb.any(subject, UI.ns.foaf('primaryTopic'), undefined, subject)\n if (ps) initialRoots.push(ps)\n div.appendChild(\n context.session.paneRegistry\n .byName('dataContents')\n .statementsAsTables(sts, context, initialRoots)\n )\n }\n\n const outliner = context.getOutliner(myDocument)\n const kb = context.session.store\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'dataContentPane')\n // Because of smushing etc, this will not be a copy of the original source\n // We could instead either fetch and re-parse the source,\n // or we could keep all the pre-smushed triples.\n const sts = kb.statementsMatching(undefined, undefined, undefined, subject) // @@ slow with current store!\n\n if (false) { // keep code\n alternativeRendering()\n } else {\n mainRendering()\n }\n return div\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,8 +8,7 @@ exports["default"] = void 0;
|
|
|
8
8
|
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
9
9
|
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
10
10
|
var mime = _interopRequireWildcard(require("mime-types"));
|
|
11
|
-
var
|
|
12
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
+
var DOKIELI_TEMPLATE = _interopRequireWildcard(require("./new.js"));
|
|
13
12
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
14
13
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
15
14
|
/* Human-readable editable "Dokieli" Pane
|
|
@@ -88,14 +87,15 @@ var _default = exports["default"] = {
|
|
|
88
87
|
}
|
|
89
88
|
newPaneOptions.newInstance = newInstance; // Save for creation system
|
|
90
89
|
|
|
91
|
-
console.log('New dokieli will make: ' + newInstance)
|
|
92
|
-
|
|
90
|
+
// console.log('New dokieli will make: ' + newInstance)
|
|
91
|
+
|
|
92
|
+
var htmlContents = DOKIELI_TEMPLATE;
|
|
93
93
|
var filename = newInstance.uri.split('/').slice(-1)[0];
|
|
94
94
|
filename = decodeURIComponent(filename.split('.')[0]);
|
|
95
95
|
var encodedTitle = filename.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
96
96
|
htmlContents = htmlContents.replace('<title>', '<title>' + encodedTitle);
|
|
97
97
|
htmlContents = htmlContents.replace('</article>', '<h1>' + encodedTitle + '</h1></article>');
|
|
98
|
-
console.log('@@ New HTML for Dok:' + htmlContents)
|
|
98
|
+
// console.log('@@ New HTML for Dok:' + htmlContents)
|
|
99
99
|
return new Promise(function (resolve) {
|
|
100
100
|
kb.fetcher.webOperation('PUT', newInstance.uri, {
|
|
101
101
|
data: htmlContents,
|
|
@@ -104,7 +104,7 @@ var _default = exports["default"] = {
|
|
|
104
104
|
console.log('new Dokieli document created at ' + newPaneOptions.newInstance);
|
|
105
105
|
resolve(newPaneOptions);
|
|
106
106
|
})["catch"](function (err) {
|
|
107
|
-
console.log('Error creating
|
|
107
|
+
console.log('Error creating dokieli doc at ' + newPaneOptions.newInstance + ': ' + err);
|
|
108
108
|
});
|
|
109
109
|
});
|
|
110
110
|
},
|
|
@@ -117,8 +117,23 @@ var _default = exports["default"] = {
|
|
|
117
117
|
// @@ When we can, use CSP to turn off scripts within the iframe
|
|
118
118
|
div.setAttribute('class', 'docView');
|
|
119
119
|
var iframe = myDocument.createElement('IFRAME');
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
|
|
121
|
+
// get with authenticated fetch
|
|
122
|
+
kb.fetcher._fetch(subject.uri).then(function (response) {
|
|
123
|
+
return response.blob();
|
|
124
|
+
}).then(function (blob) {
|
|
125
|
+
var objectURL = URL.createObjectURL(blob);
|
|
126
|
+
iframe.setAttribute('src', objectURL); // w640 h480 //
|
|
127
|
+
iframe.setAttribute('type', blob.type);
|
|
128
|
+
iframe.setAttribute('class', 'doc');
|
|
129
|
+
return blob.text();
|
|
130
|
+
}).then(function (blobText) {
|
|
131
|
+
var newLines = blobText.includes('<script src="https://dokie.li/scripts/dokieli.js">') ? -10 : 5;
|
|
132
|
+
var lines = Math.min(30, blobText.split(/\n/).length + newLines);
|
|
133
|
+
iframe.setAttribute('style', "border: 1px solid; padding: 1em; height:".concat(lines, "em; width:800px; resize: both; overflow: auto;"));
|
|
134
|
+
})["catch"](function (err) {
|
|
135
|
+
console.log(err);
|
|
136
|
+
});
|
|
122
137
|
var cts = kb.fetcher.getHeader(subject.doc(), 'content-type');
|
|
123
138
|
var ct = cts ? cts[0] : null;
|
|
124
139
|
if (ct) {
|
|
@@ -135,9 +150,6 @@ var _default = exports["default"] = {
|
|
|
135
150
|
|
|
136
151
|
// iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static
|
|
137
152
|
|
|
138
|
-
iframe.setAttribute('style', 'resize = both; height: 40em; width:40em;'); // @@ improve guess
|
|
139
|
-
// iframe.setAttribute('height', '480')
|
|
140
|
-
// iframe.setAttribute('width', '640')
|
|
141
153
|
var tr = myDocument.createElement('tr');
|
|
142
154
|
tr.appendChild(iframe);
|
|
143
155
|
div.appendChild(tr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dokieliPane.js","names":["UI","_interopRequireWildcard","require","$rdf","mime","_new","_interopRequireDefault","e","__esModule","_getRequireWildcardCache","WeakMap","r","t","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_default","exports","icon","icons","iconBase","name","mintClass","ns","solid","label","subject","context","kb","session","store","allowed","hasContentTypeIn","x","displayables","cts","fetcher","getHeader","j","length","k","indexOf","hasContentTypeIn2","findTypeURIs","Util","mediaTypeClass","uri","link","mintNew","newPaneOptions","newInstance","newBase","endsWith","slice","sym","contentType","lookup","includes","console","log","htmlContents","DOKIELI_TEMPLATE","filename","split","decodeURIComponent","encodedTitle","replace","Promise","resolve","webOperation","data","then","err","render","myDocument","dom","div","createElement","setAttribute","iframe","doc","ct","tr","appendChild"],"sources":["../../src/dokieli/dokieliPane.js"],"sourcesContent":["/* Human-readable editable \"Dokieli\" Pane\n **\n ** This outline pane contains the document contents for a Dokieli document\n ** The dokeili system allows the user to edit a document including anotations\n ** review. It does not use turtle, but RDF/a\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\nimport * as mime from 'mime-types'\n\n// const DOKIELI_TEMPLATE_URI = 'https://dokie.li/new' // Copy to make new dok\n\nimport DOKIELI_TEMPLATE from './new.js' // Distributed with this library\n\nexport default {\n icon: UI.icons.iconBase + 'dokieli-logo.png', // @@ improve? more like doccument?\n\n name: 'Dokieli',\n\n mintClass: UI.ns.solid('DokieliDocument'), // @@ A better class?\n\n label: function (subject, context) {\n const kb = context.session.store\n const ns = UI.ns\n const allowed = [\n // 'text/plain',\n 'text/html',\n 'application/xhtml+xml'\n // 'image/png', 'image/jpeg', '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 coul d come from a fetch OR from ldp comtaimner\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 'Dok'\n }\n\n return null\n },\n\n // Create a new folder in a Solid system, with a dokieli editable document in it\n mintNew: function (context, newPaneOptions) {\n const kb = context.session.store\n let newInstance = newPaneOptions.newInstance\n if (!newInstance) {\n let uri = newPaneOptions.newBase\n if (uri.endsWith('/')) {\n uri = uri.slice(0, -1)\n newPaneOptions.newBase = uri\n }\n newInstance = kb.sym(uri)\n }\n\n const contentType = mime.lookup(newInstance.uri)\n if (!contentType || !contentType.includes('html')) {\n newInstance = $rdf.sym(newInstance.uri + '.html')\n }\n newPaneOptions.newInstance = newInstance // Save for creation system\n\n console.log('New dokieli will make: ' + newInstance)\n\n let htmlContents = DOKIELI_TEMPLATE\n let filename = newInstance.uri.split('/').slice(-1)[0]\n filename = decodeURIComponent(filename.split('.')[0])\n const encodedTitle = filename\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n htmlContents = htmlContents.replace('<title>', '<title>' + encodedTitle)\n htmlContents = htmlContents.replace(\n '</article>',\n '<h1>' + encodedTitle + '</h1></article>'\n )\n console.log('@@ New HTML for Dok:' + htmlContents)\n return new Promise(function (resolve) {\n kb.fetcher\n .webOperation('PUT', newInstance.uri, {\n data: htmlContents,\n contentType: 'text/html'\n })\n .then(function () {\n console.log(\n 'new Dokieli document created at ' + newPaneOptions.newInstance\n )\n resolve(newPaneOptions)\n })\n .catch(function (err) {\n console.log(\n 'Error creating dokelili dok at ' +\n newPaneOptions.newInstance +\n ': ' +\n err\n )\n })\n })\n },\n\n // Derived from: humanReadablePane .. share code?\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('dokieliPane: c-t:' + ct)\n } else {\n console.log('dokieliPane: unknown content-type?')\n }\n\n // @@ NOte beflow - 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: 40em; width:40em;') // @@ improve guess\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"],"mappings":";;;;;;;AAOA,IAAAA,EAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,IAAA,GAAAH,uBAAA,CAAAC,OAAA;AAIA,IAAAG,IAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAAuC,SAAAI,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,gBAAAA,CAAA;AAAA,SAAAE,yBAAAF,CAAA,6BAAAG,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,yBAAAF,CAAA,WAAAA,CAAA,GAAAK,CAAA,GAAAD,CAAA,KAAAJ,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAI,CAAA,SAAAA,CAAA,IAAAJ,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,gBAAAM,OAAA,CAAAN,CAAA,0BAAAA,CAAA,sBAAAA,CAAA,QAAAK,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAE,GAAA,CAAAP,CAAA,UAAAK,CAAA,CAAAG,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,cAAAT,CAAA,EAAAK,CAAA,IAAAA,CAAA,CAAAc,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAbvC;AACA;AACA;AACA;AACA;AACA;AAMA;AAEwC;AAAA,IAAAW,QAAA,GAAAC,OAAA,cAEzB;EACbC,IAAI,EAAE7B,EAAE,CAAC8B,KAAK,CAACC,QAAQ,GAAG,kBAAkB;EAAE;;EAE9CC,IAAI,EAAE,SAAS;EAEfC,SAAS,EAAEjC,EAAE,CAACkC,EAAE,CAACC,KAAK,CAAC,iBAAiB,CAAC;EAAE;;EAE3CC,KAAK,EAAE,SAAPA,KAAKA,CAAYC,OAAO,EAAEC,OAAO,EAAE;IACjC,IAAMC,EAAE,GAAGD,OAAO,CAACE,OAAO,CAACC,KAAK;IAChC,IAAMP,EAAE,GAAGlC,EAAE,CAACkC,EAAE;IAChB,IAAMQ,OAAO,GAAG;IACd;IACA,WAAW,EACX;IACA;IACA;IAAA,CACD;IAED,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAaJ,EAAE,EAAEK,CAAC,EAAEC,YAAY,EAAE;MACtD,IAAMC,GAAG,GAAGP,EAAE,CAACQ,OAAO,CAACC,SAAS,CAACJ,CAAC,EAAE,cAAc,CAAC;MACnD,IAAIE,GAAG,EAAE;QACP,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,GAAG,CAACI,MAAM,EAAED,CAAC,EAAE,EAAE;UACnC,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,YAAY,CAACK,MAAM,EAAEC,CAAC,EAAE,EAAE;YAC5C,IAAIL,GAAG,CAACG,CAAC,CAAC,CAACG,OAAO,CAACP,YAAY,CAACM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;cACxC,OAAO,IAAI;YACb;UACF;QACF;MACF;MACA,OAAO,KAAK;IACd,CAAC;;IAED;IACA,IAAME,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAad,EAAE,EAAEK,CAAC,EAAEC,YAAY,EAAE;MACvD,IAAMjC,CAAC,GAAG2B,EAAE,CAACe,YAAY,CAACjB,OAAO,CAAC;MAClC,KAAK,IAAIc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,YAAY,CAACK,MAAM,EAAEC,CAAC,EAAE,EAAE;QAC5C,IAAIhD,IAAI,CAACoD,IAAI,CAACC,cAAc,CAACX,YAAY,CAACM,CAAC,CAAC,CAAC,CAACM,GAAG,IAAI7C,CAAC,EAAE;UACtD,OAAO,IAAI;QACb;MACF;MACA,OAAO,KAAK;IACd,CAAC;IAED,IAAI,CAACyB,OAAO,CAACoB,GAAG,EAAE,OAAO,IAAI,EAAC;;IAE9B,IAAM7C,CAAC,GAAG2B,EAAE,CAACe,YAAY,CAACjB,OAAO,CAAC;IAClC,IAAIzB,CAAC,CAACsB,EAAE,CAACwB,IAAI,CAAC,SAAS,CAAC,CAACD,GAAG,CAAC,EAAE,OAAO,MAAM;IAE5C,IACEd,gBAAgB,CAACJ,EAAE,EAAEF,OAAO,EAAEK,OAAO,CAAC,IACtCW,iBAAiB,CAACd,EAAE,EAAEF,OAAO,EAAEK,OAAO,CAAC,EACvC;MACA,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb,CAAC;EAED;EACAiB,OAAO,EAAE,SAATA,OAAOA,CAAYrB,OAAO,EAAEsB,cAAc,EAAE;IAC1C,IAAMrB,EAAE,GAAGD,OAAO,CAACE,OAAO,CAACC,KAAK;IAChC,IAAIoB,WAAW,GAAGD,cAAc,CAACC,WAAW;IAC5C,IAAI,CAACA,WAAW,EAAE;MAChB,IAAIJ,GAAG,GAAGG,cAAc,CAACE,OAAO;MAChC,IAAIL,GAAG,CAACM,QAAQ,CAAC,GAAG,CAAC,EAAE;QACrBN,GAAG,GAAGA,GAAG,CAACO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtBJ,cAAc,CAACE,OAAO,GAAGL,GAAG;MAC9B;MACAI,WAAW,GAAGtB,EAAE,CAAC0B,GAAG,CAACR,GAAG,CAAC;IAC3B;IAEA,IAAMS,WAAW,GAAG9D,IAAI,CAAC+D,MAAM,CAACN,WAAW,CAACJ,GAAG,CAAC;IAChD,IAAI,CAACS,WAAW,IAAI,CAACA,WAAW,CAACE,QAAQ,CAAC,MAAM,CAAC,EAAE;MACjDP,WAAW,GAAG1D,IAAI,CAAC8D,GAAG,CAACJ,WAAW,CAACJ,GAAG,GAAG,OAAO,CAAC;IACnD;IACAG,cAAc,CAACC,WAAW,GAAGA,WAAW,EAAC;;IAEzCQ,OAAO,CAACC,GAAG,CAAC,yBAAyB,GAAGT,WAAW,CAAC;IAEpD,IAAIU,YAAY,GAAGC,eAAgB;IACnC,IAAIC,QAAQ,GAAGZ,WAAW,CAACJ,GAAG,CAACiB,KAAK,CAAC,GAAG,CAAC,CAACV,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtDS,QAAQ,GAAGE,kBAAkB,CAACF,QAAQ,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,IAAME,YAAY,GAAGH,QAAQ,CAC1BI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CACtBA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CACrBA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;IACxBN,YAAY,GAAGA,YAAY,CAACM,OAAO,CAAC,SAAS,EAAE,SAAS,GAAGD,YAAY,CAAC;IACxEL,YAAY,GAAGA,YAAY,CAACM,OAAO,CACjC,YAAY,EACZ,MAAM,GAAGD,YAAY,GAAG,iBAC1B,CAAC;IACDP,OAAO,CAACC,GAAG,CAAC,sBAAsB,GAAGC,YAAY,CAAC;IAClD,OAAO,IAAIO,OAAO,CAAC,UAAUC,OAAO,EAAE;MACpCxC,EAAE,CAACQ,OAAO,CACPiC,YAAY,CAAC,KAAK,EAAEnB,WAAW,CAACJ,GAAG,EAAE;QACpCwB,IAAI,EAAEV,YAAY;QAClBL,WAAW,EAAE;MACf,CAAC,CAAC,CACDgB,IAAI,CAAC,YAAY;QAChBb,OAAO,CAACC,GAAG,CACT,kCAAkC,GAAGV,cAAc,CAACC,WACtD,CAAC;QACDkB,OAAO,CAACnB,cAAc,CAAC;MACzB,CAAC,CAAC,SACI,CAAC,UAAUuB,GAAG,EAAE;QACpBd,OAAO,CAACC,GAAG,CACT,iCAAiC,GAC/BV,cAAc,CAACC,WAAW,GAC1B,IAAI,GACJsB,GACJ,CAAC;MACH,CAAC,CAAC;IACN,CAAC,CAAC;EACJ,CAAC;EAED;EACAC,MAAM,EAAE,SAARA,MAAMA,CAAY/C,OAAO,EAAEC,OAAO,EAAE;IAClC,IAAM+C,UAAU,GAAG/C,OAAO,CAACgD,GAAG;IAC9B,IAAMC,GAAG,GAAGF,UAAU,CAACG,aAAa,CAAC,KAAK,CAAC;IAC3C,IAAMjD,EAAE,GAAGD,OAAO,CAACE,OAAO,CAACC,KAAK;;IAEhC;IACA8C,GAAG,CAACE,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC;IACpC,IAAMC,MAAM,GAAGL,UAAU,CAACG,aAAa,CAAC,QAAQ,CAAC;IACjDE,MAAM,CAACD,YAAY,CAAC,KAAK,EAAEpD,OAAO,CAACoB,GAAG,CAAC,EAAC;IACxCiC,MAAM,CAACD,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;IAEnC,IAAM3C,GAAG,GAAGP,EAAE,CAACQ,OAAO,CAACC,SAAS,CAACX,OAAO,CAACsD,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC;IAC/D,IAAMC,EAAE,GAAG9C,GAAG,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;IAC9B,IAAI8C,EAAE,EAAE;MACNvB,OAAO,CAACC,GAAG,CAAC,mBAAmB,GAAGsB,EAAE,CAAC;IACvC,CAAC,MAAM;MACLvB,OAAO,CAACC,GAAG,CAAC,oCAAoC,CAAC;IACnD;;IAEA;IACA;IACA;IACA;IACA;;IAEA;;IAEAoB,MAAM,CAACD,YAAY,CAAC,OAAO,EAAE,0CAA0C,CAAC,EAAC;IACzE;IACA;IACA,IAAMI,EAAE,GAAGR,UAAU,CAACG,aAAa,CAAC,IAAI,CAAC;IACzCK,EAAE,CAACC,WAAW,CAACJ,MAAM,CAAC;IACtBH,GAAG,CAACO,WAAW,CAACD,EAAE,CAAC;IACnB,OAAON,GAAG;EACZ;AACF,CAAC,EACD","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"dokieliPane.js","names":["UI","_interopRequireWildcard","require","$rdf","mime","DOKIELI_TEMPLATE","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_default","exports","icon","icons","iconBase","name","mintClass","ns","solid","label","subject","context","kb","session","store","allowed","hasContentTypeIn","x","displayables","cts","fetcher","getHeader","j","length","k","indexOf","hasContentTypeIn2","findTypeURIs","Util","mediaTypeClass","uri","link","mintNew","newPaneOptions","newInstance","newBase","endsWith","slice","sym","contentType","lookup","includes","htmlContents","filename","split","decodeURIComponent","encodedTitle","replace","Promise","resolve","webOperation","data","then","console","log","err","render","myDocument","dom","div","createElement","setAttribute","iframe","_fetch","response","blob","objectURL","URL","createObjectURL","type","text","blobText","newLines","lines","Math","min","concat","doc","ct","tr","appendChild"],"sources":["../../src/dokieli/dokieliPane.js"],"sourcesContent":["/* Human-readable editable \"Dokieli\" Pane\n **\n ** This outline pane contains the document contents for a Dokieli document\n ** The dokeili system allows the user to edit a document including anotations\n ** review. It does not use turtle, but RDF/a\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\nimport * as mime from 'mime-types'\n\n// const DOKIELI_TEMPLATE_URI = 'https://dokie.li/new' // Copy to make new dok\n\nimport * as DOKIELI_TEMPLATE from './new.js' // Distributed with this library\n\nexport default {\n icon: UI.icons.iconBase + 'dokieli-logo.png', // @@ improve? more like doccument?\n\n name: 'Dokieli',\n\n mintClass: UI.ns.solid('DokieliDocument'), // @@ A better class?\n\n label: function (subject, context) {\n const kb = context.session.store\n const ns = UI.ns\n const allowed = [\n // 'text/plain',\n 'text/html',\n 'application/xhtml+xml'\n // 'image/png', 'image/jpeg', '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 coul d come from a fetch OR from ldp comtaimner\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 'Dok'\n }\n\n return null\n },\n\n // Create a new folder in a Solid system, with a dokieli editable document in it\n mintNew: function (context, newPaneOptions) {\n const kb = context.session.store\n let newInstance = newPaneOptions.newInstance\n if (!newInstance) {\n let uri = newPaneOptions.newBase\n if (uri.endsWith('/')) {\n uri = uri.slice(0, -1)\n newPaneOptions.newBase = uri\n }\n newInstance = kb.sym(uri)\n }\n\n const contentType = mime.lookup(newInstance.uri)\n if (!contentType || !contentType.includes('html')) {\n newInstance = $rdf.sym(newInstance.uri + '.html')\n }\n newPaneOptions.newInstance = newInstance // Save for creation system\n\n // console.log('New dokieli will make: ' + newInstance)\n\n let htmlContents = DOKIELI_TEMPLATE\n let filename = newInstance.uri.split('/').slice(-1)[0]\n filename = decodeURIComponent(filename.split('.')[0])\n const encodedTitle = filename\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n htmlContents = htmlContents.replace('<title>', '<title>' + encodedTitle)\n htmlContents = htmlContents.replace(\n '</article>',\n '<h1>' + encodedTitle + '</h1></article>'\n )\n // console.log('@@ New HTML for Dok:' + htmlContents)\n return new Promise(function (resolve) {\n kb.fetcher\n .webOperation('PUT', newInstance.uri, {\n data: htmlContents,\n contentType: 'text/html'\n })\n .then(function () {\n console.log(\n 'new Dokieli document created at ' + newPaneOptions.newInstance\n )\n resolve(newPaneOptions)\n })\n .catch(function (err) {\n console.log(\n 'Error creating dokieli doc at ' +\n newPaneOptions.newInstance +\n ': ' +\n err\n )\n })\n })\n },\n\n // Derived from: humanReadablePane .. share code?\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\n // get with authenticated fetch\n kb.fetcher._fetch(subject.uri)\n .then(function(response) {\n return response.blob()\n })\n .then(function(blob) {\n const objectURL = URL.createObjectURL(blob)\n iframe.setAttribute('src', objectURL) // w640 h480 //\n iframe.setAttribute('type', blob.type)\n iframe.setAttribute('class', 'doc')\n return blob.text()\n })\n .then(function(blobText) {\n const newLines = blobText.includes('<script src=\"https://dokie.li/scripts/dokieli.js\">') ? -10 : 5\n const lines = Math.min(30, blobText.split(/\\n/).length + newLines)\n iframe.setAttribute('style', `border: 1px solid; padding: 1em; height:${lines}em; width:800px; resize: both; overflow: auto;`)\n })\n .catch(err => { console.log(err) })\n\n const cts = kb.fetcher.getHeader(subject.doc(), 'content-type')\n const ct = cts ? cts[0] : null\n if (ct) {\n console.log('dokieliPane: c-t:' + ct)\n } else {\n console.log('dokieliPane: unknown content-type?')\n }\n\n // @@ NOte beflow - 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 const tr = myDocument.createElement('tr')\n tr.appendChild(iframe)\n div.appendChild(tr)\n return div\n }\n}\n// ends\n"],"mappings":"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","ignoreList":[]}
|
package/lib/dokieli/new.js
CHANGED
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
|
-
|
|
7
|
+
module.exports = "\n<!DOCTYPE html>\n<html lang=\"en\" xml:lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n <meta charset=\"utf-8\" />\n <title></title>\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <link href=\"https://dokie.li/media/css/basic.css\" media=\"all\" rel=\"stylesheet\" title=\"Basic\" />\n <link href=\"https://dokie.li/media/css/dokieli.css\" media=\"all\" rel=\"stylesheet\" />\n <script src=\"https://dokie.li/scripts/dokieli.js\"></script>\n </head>\n\n <body about=\"\" prefix=\"rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs: http://www.w3.org/2000/01/rdf-schema# owl: http://www.w3.org/2002/07/owl# xsd: http://www.w3.org/2001/XMLSchema# rdfa: http://www.w3.org/ns/rdfa# dcterms: http://purl.org/dc/terms/ dctypes: http://purl.org/dc/dcmitype/ foaf: http://xmlns.com/foaf/0.1/ pimspace: http://www.w3.org/ns/pim/space# skos: http://www.w3.org/2004/02/skos/core# prov: http://www.w3.org/ns/prov# mem: http://mementoweb.org/ns# qb: http://purl.org/linked-data/cube# schema: http://schema.org/ void: http://rdfs.org/ns/void# rsa: http://www.w3.org/ns/auth/rsa# cert: http://www.w3.org/ns/auth/cert# wgs: http://www.w3.org/2003/01/geo/wgs84_pos# bibo: http://purl.org/ontology/bibo/ sioc: http://rdfs.org/sioc/ns# doap: http://usefulinc.com/ns/doap# dbr: http://dbpedia.org/resource/ dbp: http://dbpedia.org/property/ sio: http://semanticscience.org/resource/ opmw: http://www.opmw.org/ontology/ deo: http://purl.org/spar/deo/ doco: http://purl.org/spar/doco/ cito: http://purl.org/spar/cito/ fabio: http://purl.org/spar/fabio/ oa: http://www.w3.org/ns/oa# as: https://www.w3.org/ns/activitystreams# ldp: http://www.w3.org/ns/ldp# solid: http://www.w3.org/ns/solid/terms# acl: http://www.w3.org/ns/auth/acl# earl: http://www.w3.org/ns/earl# spec: http://www.w3.org/ns/spec# odrl: http://www.w3.org/ns/odrl/2/ dio: https://w3id.org/dio# rel: https://www.w3.org/ns/iana/link-relations/relation#\" typeof=\"schema:CreativeWork prov:Entity\">\n <main>\n <article about=\"\" typeof=\"schema:Article\">\n\n </article>\n </main>\n </body>\n</html>";
|
|
8
8
|
var _default = exports["default"] = DOKIELI_TEMPLATE;
|
|
9
9
|
//# sourceMappingURL=new.js.map
|
package/lib/dokieli/new.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","names":["
|
|
1
|
+
{"version":3,"file":"new.js","names":["module","exports","_default","DOKIELI_TEMPLATE"],"sources":["../../src/dokieli/new.js"],"sourcesContent":["module.exports = `\n<!DOCTYPE html>\n<html lang=\"en\" xml:lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n <meta charset=\"utf-8\" />\n <title></title>\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <link href=\"https://dokie.li/media/css/basic.css\" media=\"all\" rel=\"stylesheet\" title=\"Basic\" />\n <link href=\"https://dokie.li/media/css/dokieli.css\" media=\"all\" rel=\"stylesheet\" />\n <script src=\"https://dokie.li/scripts/dokieli.js\"></script>\n </head>\n\n <body about=\"\" prefix=\"rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs: http://www.w3.org/2000/01/rdf-schema# owl: http://www.w3.org/2002/07/owl# xsd: http://www.w3.org/2001/XMLSchema# rdfa: http://www.w3.org/ns/rdfa# dcterms: http://purl.org/dc/terms/ dctypes: http://purl.org/dc/dcmitype/ foaf: http://xmlns.com/foaf/0.1/ pimspace: http://www.w3.org/ns/pim/space# skos: http://www.w3.org/2004/02/skos/core# prov: http://www.w3.org/ns/prov# mem: http://mementoweb.org/ns# qb: http://purl.org/linked-data/cube# schema: http://schema.org/ void: http://rdfs.org/ns/void# rsa: http://www.w3.org/ns/auth/rsa# cert: http://www.w3.org/ns/auth/cert# wgs: http://www.w3.org/2003/01/geo/wgs84_pos# bibo: http://purl.org/ontology/bibo/ sioc: http://rdfs.org/sioc/ns# doap: http://usefulinc.com/ns/doap# dbr: http://dbpedia.org/resource/ dbp: http://dbpedia.org/property/ sio: http://semanticscience.org/resource/ opmw: http://www.opmw.org/ontology/ deo: http://purl.org/spar/deo/ doco: http://purl.org/spar/doco/ cito: http://purl.org/spar/cito/ fabio: http://purl.org/spar/fabio/ oa: http://www.w3.org/ns/oa# as: https://www.w3.org/ns/activitystreams# ldp: http://www.w3.org/ns/ldp# solid: http://www.w3.org/ns/solid/terms# acl: http://www.w3.org/ns/auth/acl# earl: http://www.w3.org/ns/earl# spec: http://www.w3.org/ns/spec# odrl: http://www.w3.org/ns/odrl/2/ dio: https://w3id.org/dio# rel: https://www.w3.org/ns/iana/link-relations/relation#\" typeof=\"schema:CreativeWork prov:Entity\">\n <main>\n <article about=\"\" typeof=\"schema:Article\">\n\n </article>\n </main>\n </body>\n</html>`\n\nexport default DOKIELI_TEMPLATE\n"],"mappings":";;;;;;AAAAA,MAAM,CAACC,OAAO,ylEAmBN;AAAA,IAAAC,QAAA,GAAAD,OAAA,cAEOE,gBAAgB","ignoreList":[]}
|
package/lib/humanReadablePane.js
CHANGED
|
@@ -88,21 +88,23 @@ var humanReadablePane = {
|
|
|
88
88
|
};
|
|
89
89
|
if (ct === 'text/markdown') {
|
|
90
90
|
markdownHtml();
|
|
91
|
-
} else
|
|
91
|
+
} else {
|
|
92
92
|
// get with authenticated fetch
|
|
93
93
|
kb.fetcher._fetch(subject.uri).then(function (response) {
|
|
94
94
|
return response.blob();
|
|
95
95
|
}).then(function (blob) {
|
|
96
96
|
var objectURL = URL.createObjectURL(blob);
|
|
97
|
-
frame.setAttribute('src', objectURL);
|
|
97
|
+
frame.setAttribute('src', objectURL);
|
|
98
|
+
frame.setAttribute('type', blob.type);
|
|
98
99
|
frame.setAttribute('class', 'doc');
|
|
99
|
-
|
|
100
|
+
return blob.type.startsWith('text') ? blob.text() : '';
|
|
101
|
+
}).then(function (blobText) {
|
|
102
|
+
var newLines = blobText.includes('<script src="https://dokie.li/scripts/dokieli.js">') ? -10 : 5;
|
|
103
|
+
var lines = Math.min(30, blobText.split(/\n/).length + newLines);
|
|
104
|
+
frame.setAttribute('style', "border: 1px solid; padding: 1em; height:".concat(lines, "em; width:800px; resize: both; overflow: auto;"));
|
|
100
105
|
});
|
|
101
|
-
} else {
|
|
102
|
-
frame.setAttribute('src', subject.uri); // allow-same-origin
|
|
103
|
-
frame.setAttribute('class', 'doc');
|
|
104
|
-
frame.setAttribute('style', 'resize = both; height:120em; width:80em;');
|
|
105
106
|
}
|
|
107
|
+
|
|
106
108
|
// @@ Note below - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF.
|
|
107
109
|
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
|
|
108
110
|
// You can't have any sandbox and allow plugins.
|
|
@@ -111,8 +113,6 @@ var humanReadablePane = {
|
|
|
111
113
|
|
|
112
114
|
// iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static
|
|
113
115
|
|
|
114
|
-
// iframe.setAttribute('height', '480')
|
|
115
|
-
// iframe.setAttribute('width', '640')
|
|
116
116
|
var tr = myDocument.createElement('TR');
|
|
117
117
|
tr.appendChild(frame);
|
|
118
118
|
div.appendChild(tr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"humanReadablePane.js","names":["_solidUi","require","_rdflib","_marked","_dompurify","_interopRequireDefault","e","__esModule","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","clean","DOMPurify","sanitize","innerHTML","concat","_fetch","blob","objectURL","URL","createObjectURL","tr","appendChild","_default","exports"],"sources":["../src/humanReadablePane.js"],"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'\nimport DOMPurify from 'dompurify';\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\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 const clean = DOMPurify.sanitize(res)\n frame.innerHTML = clean\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
|
|
1
|
+
{"version":3,"file":"humanReadablePane.js","names":["_solidUi","require","_rdflib","_marked","_dompurify","_interopRequireDefault","e","__esModule","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","clean","DOMPurify","sanitize","innerHTML","concat","_fetch","blob","objectURL","URL","createObjectURL","type","startsWith","text","blobText","newLines","includes","tr","appendChild","_default","exports"],"sources":["../src/humanReadablePane.js"],"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'\nimport DOMPurify from 'dompurify';\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\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 const clean = DOMPurify.sanitize(res)\n frame.innerHTML = clean\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 // get with authenticated fetch\n kb.fetcher._fetch(subject.uri)\n .then(function(response) {\n return response.blob()\n })\n .then(function(blob) {\n const objectURL = URL.createObjectURL(blob)\n frame.setAttribute('src', objectURL)\n frame.setAttribute('type', blob.type)\n frame.setAttribute('class', 'doc')\n return blob.type.startsWith('text') ? blob.text() : ''\n })\n .then(function(blobText) {\n const newLines = blobText.includes('<script src=\"https://dokie.li/scripts/dokieli.js\">') ? -10 : 5\n const lines = Math.min(30, blobText.split(/\\n/).length + newLines)\n frame.setAttribute('style', `border: 1px solid; padding: 1em; height:${lines}em; width:800px; resize: both; overflow: auto;`)\n })\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 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"],"mappings":"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","ignoreList":[]}
|
package/lib/versionInfo.js
CHANGED
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
var _default = exports["default"] = {
|
|
8
|
-
buildTime: "2025-
|
|
9
|
-
commit: "
|
|
8
|
+
buildTime: "2025-02-02T18:53:39Z",
|
|
9
|
+
commit: "f8ff071d427c27ca43d5a9ff88ff8316a4866d80",
|
|
10
10
|
npmInfo: {
|
|
11
11
|
'solid-panes': '3.6.1',
|
|
12
12
|
npm: '8.19.4',
|
package/lib/versionInfo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionInfo.js","names":["buildTime","commit","npmInfo","npm","node","v8","uv","zlib","brotli","ares","modules","nghttp2","napi","llhttp","openssl","cldr","icu","tz","unicode","ngtcp2","nghttp3"],"sources":["../src/versionInfo.ts"],"sourcesContent":["export default {\nbuildTime: \"2025-
|
|
1
|
+
{"version":3,"file":"versionInfo.js","names":["buildTime","commit","npmInfo","npm","node","v8","uv","zlib","brotli","ares","modules","nghttp2","napi","llhttp","openssl","cldr","icu","tz","unicode","ngtcp2","nghttp3"],"sources":["../src/versionInfo.ts"],"sourcesContent":["export default {\nbuildTime: \"2025-02-02T18:53:39Z\",\ncommit: \"f8ff071d427c27ca43d5a9ff88ff8316a4866d80\",\nnpmInfo:\n{\n 'solid-panes': '3.6.1',\n npm: '8.19.4',\n node: '16.20.2',\n v8: '9.4.146.26-node.26',\n uv: '1.43.0',\n zlib: '1.2.11',\n brotli: '1.0.9',\n ares: '1.19.1',\n modules: '93',\n nghttp2: '1.47.0',\n napi: '8',\n llhttp: '6.0.11',\n openssl: '1.1.1v+quic',\n cldr: '41.0',\n icu: '71.1',\n tz: '2022f',\n unicode: '14.0',\n ngtcp2: '0.8.1',\n nghttp3: '0.7.0'\n}\n};\n"],"mappings":";;;;;;oCAAe;EACfA,SAAS,EAAE,sBAAsB;EACjCC,MAAM,EAAE,0CAA0C;EAClDC,OAAO,EACP;IACE,aAAa,EAAE,OAAO;IACtBC,GAAG,EAAE,QAAQ;IACbC,IAAI,EAAE,SAAS;IACfC,EAAE,EAAE,oBAAoB;IACxBC,EAAE,EAAE,QAAQ;IACZC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE,OAAO;IACfC,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAE,IAAI;IACbC,OAAO,EAAE,QAAQ;IACjBC,IAAI,EAAE,GAAG;IACTC,MAAM,EAAE,QAAQ;IAChBC,OAAO,EAAE,aAAa;IACtBC,IAAI,EAAE,MAAM;IACZC,GAAG,EAAE,MAAM;IACXC,EAAE,EAAE,OAAO;IACXC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,OAAO;IACfC,OAAO,EAAE;EACX;AACA,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
package/src/dataContentPane.js
CHANGED
|
@@ -153,7 +153,7 @@ export const dataContentPane = {
|
|
|
153
153
|
if (
|
|
154
154
|
UI.utils.ancestor(newTable, 'TABLE') &&
|
|
155
155
|
UI.utils.ancestor(newTable, 'TABLE').style.backgroundColor ===
|
|
156
|
-
|
|
156
|
+
'white'
|
|
157
157
|
) {
|
|
158
158
|
newTable.style.backgroundColor = '#eee'
|
|
159
159
|
} else {
|
|
@@ -198,6 +198,7 @@ export const dataContentPane = {
|
|
|
198
198
|
}
|
|
199
199
|
for (let i = 0; i < roots.length; i++) {
|
|
200
200
|
const tr = myDocument.createElement('tr')
|
|
201
|
+
tr.setAttribute('style', `background-color: ${i % 2 === 0 ? '#f0f0f0' : 'white'};`)
|
|
201
202
|
rep.appendChild(tr)
|
|
202
203
|
const subjectTD = myDocument.createElement('td')
|
|
203
204
|
tr.appendChild(subjectTD)
|
|
@@ -11,7 +11,7 @@ import * as mime from 'mime-types'
|
|
|
11
11
|
|
|
12
12
|
// const DOKIELI_TEMPLATE_URI = 'https://dokie.li/new' // Copy to make new dok
|
|
13
13
|
|
|
14
|
-
import DOKIELI_TEMPLATE from './new.js' // Distributed with this library
|
|
14
|
+
import * as DOKIELI_TEMPLATE from './new.js' // Distributed with this library
|
|
15
15
|
|
|
16
16
|
export default {
|
|
17
17
|
icon: UI.icons.iconBase + 'dokieli-logo.png', // @@ improve? more like doccument?
|
|
@@ -90,7 +90,7 @@ export default {
|
|
|
90
90
|
}
|
|
91
91
|
newPaneOptions.newInstance = newInstance // Save for creation system
|
|
92
92
|
|
|
93
|
-
console.log('New dokieli will make: ' + newInstance)
|
|
93
|
+
// console.log('New dokieli will make: ' + newInstance)
|
|
94
94
|
|
|
95
95
|
let htmlContents = DOKIELI_TEMPLATE
|
|
96
96
|
let filename = newInstance.uri.split('/').slice(-1)[0]
|
|
@@ -104,7 +104,7 @@ export default {
|
|
|
104
104
|
'</article>',
|
|
105
105
|
'<h1>' + encodedTitle + '</h1></article>'
|
|
106
106
|
)
|
|
107
|
-
console.log('@@ New HTML for Dok:' + htmlContents)
|
|
107
|
+
// console.log('@@ New HTML for Dok:' + htmlContents)
|
|
108
108
|
return new Promise(function (resolve) {
|
|
109
109
|
kb.fetcher
|
|
110
110
|
.webOperation('PUT', newInstance.uri, {
|
|
@@ -119,7 +119,7 @@ export default {
|
|
|
119
119
|
})
|
|
120
120
|
.catch(function (err) {
|
|
121
121
|
console.log(
|
|
122
|
-
'Error creating
|
|
122
|
+
'Error creating dokieli doc at ' +
|
|
123
123
|
newPaneOptions.newInstance +
|
|
124
124
|
': ' +
|
|
125
125
|
err
|
|
@@ -137,8 +137,25 @@ export default {
|
|
|
137
137
|
// @@ When we can, use CSP to turn off scripts within the iframe
|
|
138
138
|
div.setAttribute('class', 'docView')
|
|
139
139
|
const iframe = myDocument.createElement('IFRAME')
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
|
|
141
|
+
// get with authenticated fetch
|
|
142
|
+
kb.fetcher._fetch(subject.uri)
|
|
143
|
+
.then(function(response) {
|
|
144
|
+
return response.blob()
|
|
145
|
+
})
|
|
146
|
+
.then(function(blob) {
|
|
147
|
+
const objectURL = URL.createObjectURL(blob)
|
|
148
|
+
iframe.setAttribute('src', objectURL) // w640 h480 //
|
|
149
|
+
iframe.setAttribute('type', blob.type)
|
|
150
|
+
iframe.setAttribute('class', 'doc')
|
|
151
|
+
return blob.text()
|
|
152
|
+
})
|
|
153
|
+
.then(function(blobText) {
|
|
154
|
+
const newLines = blobText.includes('<script src="https://dokie.li/scripts/dokieli.js">') ? -10 : 5
|
|
155
|
+
const lines = Math.min(30, blobText.split(/\n/).length + newLines)
|
|
156
|
+
iframe.setAttribute('style', `border: 1px solid; padding: 1em; height:${lines}em; width:800px; resize: both; overflow: auto;`)
|
|
157
|
+
})
|
|
158
|
+
.catch(err => { console.log(err) })
|
|
142
159
|
|
|
143
160
|
const cts = kb.fetcher.getHeader(subject.doc(), 'content-type')
|
|
144
161
|
const ct = cts ? cts[0] : null
|
|
@@ -156,10 +173,7 @@ export default {
|
|
|
156
173
|
|
|
157
174
|
// iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static
|
|
158
175
|
|
|
159
|
-
|
|
160
|
-
// iframe.setAttribute('height', '480')
|
|
161
|
-
// iframe.setAttribute('width', '640')
|
|
162
|
-
const tr = myDocument.createElement('tr')
|
|
176
|
+
const tr = myDocument.createElement('tr')
|
|
163
177
|
tr.appendChild(iframe)
|
|
164
178
|
div.appendChild(tr)
|
|
165
179
|
return div
|
package/src/dokieli/new.html
CHANGED
|
@@ -4,27 +4,16 @@
|
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<title></title>
|
|
6
6
|
<meta content="width=device-width, initial-scale=1" name="viewport" />
|
|
7
|
-
<link
|
|
8
|
-
|
|
9
|
-
media="all"
|
|
10
|
-
rel="stylesheet"
|
|
11
|
-
title="Basic"
|
|
12
|
-
/>
|
|
13
|
-
<link
|
|
14
|
-
href="https://dokie.li/media/css/dokieli.css"
|
|
15
|
-
media="all"
|
|
16
|
-
rel="stylesheet"
|
|
17
|
-
/>
|
|
7
|
+
<link href="https://dokie.li/media/css/basic.css" media="all" rel="stylesheet" title="Basic" />
|
|
8
|
+
<link href="https://dokie.li/media/css/dokieli.css" media="all" rel="stylesheet" />
|
|
18
9
|
<script src="https://dokie.li/scripts/dokieli.js"></script>
|
|
19
10
|
</head>
|
|
20
11
|
|
|
21
|
-
<body
|
|
22
|
-
about=""
|
|
23
|
-
prefix="rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs: http://www.w3.org/2000/01/rdf-schema# owl: http://www.w3.org/2002/07/owl# xsd: http://www.w3.org/2001/XMLSchema# dcterms: http://purl.org/dc/terms/ dctypes: http://purl.org/dc/dcmitype/ foaf: http://xmlns.com/foaf/0.1/ pimspace: http://www.w3.org/ns/pim/space# cc: https://creativecommons.org/ns# skos: http://www.w3.org/2004/02/skos/core# prov: http://www.w3.org/ns/prov# mem: http://mementoweb.org/ns# qb: http://purl.org/linked-data/cube# schema: http://schema.org/ void: http://rdfs.org/ns/void# rsa: http://www.w3.org/ns/auth/rsa# cert: http://www.w3.org/ns/auth/cert# wgs: http://www.w3.org/2003/01/geo/wgs84_pos# bibo: http://purl.org/ontology/bibo/ sioc: http://rdfs.org/sioc/ns# doap: http://usefulinc.com/ns/doap# dbr: http://dbpedia.org/resource/ dbp: http://dbpedia.org/property/ sio: http://semanticscience.org/resource/ opmw: http://www.opmw.org/ontology/ deo: http://purl.org/spar/deo/ doco: http://purl.org/spar/doco/ cito: http://purl.org/spar/cito/ fabio: http://purl.org/spar/fabio/ oa: http://www.w3.org/ns/oa# as: https://www.w3.org/ns/activitystreams# ldp: http://www.w3.org/ns/ldp# solid: http://www.w3.org/ns/solid/terms# acl: http://www.w3.org/ns/auth/acl# dio: https://w3id.org/dio# rel: https://www.w3.org/ns/iana/link-relations/relation#"
|
|
24
|
-
typeof="schema:CreativeWork sioc:Post prov:Entity"
|
|
25
|
-
>
|
|
12
|
+
<body about="" prefix="rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs: http://www.w3.org/2000/01/rdf-schema# owl: http://www.w3.org/2002/07/owl# xsd: http://www.w3.org/2001/XMLSchema# rdfa: http://www.w3.org/ns/rdfa# dcterms: http://purl.org/dc/terms/ dctypes: http://purl.org/dc/dcmitype/ foaf: http://xmlns.com/foaf/0.1/ pimspace: http://www.w3.org/ns/pim/space# skos: http://www.w3.org/2004/02/skos/core# prov: http://www.w3.org/ns/prov# mem: http://mementoweb.org/ns# qb: http://purl.org/linked-data/cube# schema: http://schema.org/ void: http://rdfs.org/ns/void# rsa: http://www.w3.org/ns/auth/rsa# cert: http://www.w3.org/ns/auth/cert# wgs: http://www.w3.org/2003/01/geo/wgs84_pos# bibo: http://purl.org/ontology/bibo/ sioc: http://rdfs.org/sioc/ns# doap: http://usefulinc.com/ns/doap# dbr: http://dbpedia.org/resource/ dbp: http://dbpedia.org/property/ sio: http://semanticscience.org/resource/ opmw: http://www.opmw.org/ontology/ deo: http://purl.org/spar/deo/ doco: http://purl.org/spar/doco/ cito: http://purl.org/spar/cito/ fabio: http://purl.org/spar/fabio/ oa: http://www.w3.org/ns/oa# as: https://www.w3.org/ns/activitystreams# ldp: http://www.w3.org/ns/ldp# solid: http://www.w3.org/ns/solid/terms# acl: http://www.w3.org/ns/auth/acl# earl: http://www.w3.org/ns/earl# spec: http://www.w3.org/ns/spec# odrl: http://www.w3.org/ns/odrl/2/ dio: https://w3id.org/dio# rel: https://www.w3.org/ns/iana/link-relations/relation#" typeof="schema:CreativeWork prov:Entity">
|
|
26
13
|
<main>
|
|
27
|
-
<article about="" typeof="schema:Article"
|
|
14
|
+
<article about="" typeof="schema:Article">
|
|
15
|
+
|
|
16
|
+
</article>
|
|
28
17
|
</main>
|
|
29
18
|
</body>
|
|
30
19
|
</html>
|
package/src/dokieli/new.js
CHANGED
package/src/humanReadablePane.js
CHANGED
|
@@ -102,7 +102,7 @@ const humanReadablePane = {
|
|
|
102
102
|
|
|
103
103
|
if (ct === 'text/markdown') {
|
|
104
104
|
markdownHtml()
|
|
105
|
-
} else
|
|
105
|
+
} else {
|
|
106
106
|
// get with authenticated fetch
|
|
107
107
|
kb.fetcher._fetch(subject.uri)
|
|
108
108
|
.then(function(response) {
|
|
@@ -110,15 +110,18 @@ const humanReadablePane = {
|
|
|
110
110
|
})
|
|
111
111
|
.then(function(blob) {
|
|
112
112
|
const objectURL = URL.createObjectURL(blob)
|
|
113
|
-
frame.setAttribute('src', objectURL)
|
|
113
|
+
frame.setAttribute('src', objectURL)
|
|
114
|
+
frame.setAttribute('type', blob.type)
|
|
114
115
|
frame.setAttribute('class', 'doc')
|
|
115
|
-
|
|
116
|
+
return blob.type.startsWith('text') ? blob.text() : ''
|
|
117
|
+
})
|
|
118
|
+
.then(function(blobText) {
|
|
119
|
+
const newLines = blobText.includes('<script src="https://dokie.li/scripts/dokieli.js">') ? -10 : 5
|
|
120
|
+
const lines = Math.min(30, blobText.split(/\n/).length + newLines)
|
|
121
|
+
frame.setAttribute('style', `border: 1px solid; padding: 1em; height:${lines}em; width:800px; resize: both; overflow: auto;`)
|
|
116
122
|
})
|
|
117
|
-
} else {
|
|
118
|
-
frame.setAttribute('src', subject.uri) // allow-same-origin
|
|
119
|
-
frame.setAttribute('class', 'doc')
|
|
120
|
-
frame.setAttribute('style', 'resize = both; height:120em; width:80em;')
|
|
121
123
|
}
|
|
124
|
+
|
|
122
125
|
// @@ Note below - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF.
|
|
123
126
|
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
|
|
124
127
|
// You can't have any sandbox and allow plugins.
|
|
@@ -127,8 +130,6 @@ const humanReadablePane = {
|
|
|
127
130
|
|
|
128
131
|
// iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static
|
|
129
132
|
|
|
130
|
-
// iframe.setAttribute('height', '480')
|
|
131
|
-
// iframe.setAttribute('width', '640')
|
|
132
133
|
const tr = myDocument.createElement('TR')
|
|
133
134
|
tr.appendChild(frame)
|
|
134
135
|
div.appendChild(tr)
|
package/src/versionInfo.ts
CHANGED