solid-panes 3.6.1-f8ff071d → 3.6.2-352b1a3d

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.
Files changed (32) hide show
  1. package/coverage/clover.xml +2 -2
  2. package/coverage/coverage-final.json +2 -2
  3. package/coverage/lcov-report/index.html +1 -1
  4. package/coverage/lcov-report/outline/index.html +1 -1
  5. package/coverage/lcov-report/outline/outlineIcons.js.html +1 -1
  6. package/coverage/lcov-report/outline/propertyViews.ts.html +1 -1
  7. package/coverage/lcov-report/outline/viewAsImage.ts.html +1 -1
  8. package/coverage/lcov-report/outline/viewAsMbox.ts.html +1 -1
  9. package/coverage/lcov-report/trustedApplications/index.html +1 -1
  10. package/coverage/lcov-report/trustedApplications/trustedApplications.utils.ts.html +2 -2
  11. package/coverage/lcov.info +2 -2
  12. package/eslint.config.mjs +34 -0
  13. package/lib/dokieli/dokieliPane.js +37 -22
  14. package/lib/dokieli/dokieliPane.js.map +1 -1
  15. package/lib/dokieli/new.js +1 -1
  16. package/lib/dokieli/new.js.map +1 -1
  17. package/lib/humanReadablePane.js +33 -18
  18. package/lib/humanReadablePane.js.map +1 -1
  19. package/lib/trustedApplications/trustedApplications.utils.js +1 -1
  20. package/lib/trustedApplications/trustedApplications.utils.js.map +1 -1
  21. package/lib/versionInfo.d.ts +17 -10
  22. package/lib/versionInfo.d.ts.map +1 -1
  23. package/lib/versionInfo.js +27 -20
  24. package/lib/versionInfo.js.map +1 -1
  25. package/package.json +32 -31
  26. package/src/dokieli/dokieliPane.js +33 -25
  27. package/src/dokieli/new.html +17 -6
  28. package/src/dokieli/new.js +1 -1
  29. package/src/humanReadablePane.js +35 -26
  30. package/src/trustedApplications/__snapshots__/trustedApplications.test.ts.snap +24 -16
  31. package/src/trustedApplications/trustedApplications.utils.ts +1 -1
  32. package/src/versionInfo.ts +27 -20
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1738522418394" clover="3.2.0">
3
- <project timestamp="1738522418394" name="All files">
2
+ <coverage generated="1739472967880" clover="3.2.0">
3
+ <project timestamp="1739472967880" 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"/>
@@ -1,6 +1,6 @@
1
1
  {"/home/runner/work/solid-panes/solid-panes/src/outline/outlineIcons.js": {"path":"/home/runner/work/solid-panes/solid-panes/src/outline/outlineIcons.js","statementMap":{"0":{"start":{"line":6,"column":28},"end":{"line":6,"column":30}},"1":{"start":{"line":8,"column":0},"end":{"line":8,"column":21}},"2":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"3":{"start":{"line":13,"column":0},"end":{"line":14,"column":52}},"4":{"start":{"line":15,"column":0},"end":{"line":15,"column":77}},"5":{"start":{"line":17,"column":0},"end":{"line":17,"column":79}},"6":{"start":{"line":18,"column":0},"end":{"line":19,"column":58}},"7":{"start":{"line":20,"column":0},"end":{"line":21,"column":56}},"8":{"start":{"line":22,"column":0},"end":{"line":22,"column":76}},"9":{"start":{"line":23,"column":0},"end":{"line":23,"column":78}},"10":{"start":{"line":24,"column":0},"end":{"line":24,"column":80}},"11":{"start":{"line":25,"column":0},"end":{"line":25,"column":75}},"12":{"start":{"line":26,"column":0},"end":{"line":26,"column":71}},"13":{"start":{"line":31,"column":0},"end":{"line":31,"column":80}},"14":{"start":{"line":33,"column":0},"end":{"line":33,"column":77}},"15":{"start":{"line":34,"column":0},"end":{"line":34,"column":74}},"16":{"start":{"line":35,"column":0},"end":{"line":35,"column":80}},"17":{"start":{"line":39,"column":0},"end":{"line":39,"column":67}},"18":{"start":{"line":40,"column":0},"end":{"line":40,"column":75}},"19":{"start":{"line":41,"column":0},"end":{"line":42,"column":59}},"20":{"start":{"line":43,"column":0},"end":{"line":44,"column":48}},"21":{"start":{"line":45,"column":0},"end":{"line":45,"column":79}},"22":{"start":{"line":46,"column":0},"end":{"line":47,"column":48}},"23":{"start":{"line":48,"column":0},"end":{"line":49,"column":60}},"24":{"start":{"line":50,"column":0},"end":{"line":50,"column":71}},"25":{"start":{"line":51,"column":0},"end":{"line":51,"column":69}},"26":{"start":{"line":52,"column":0},"end":{"line":52,"column":78}},"27":{"start":{"line":55,"column":0},"end":{"line":55,"column":79}},"28":{"start":{"line":56,"column":0},"end":{"line":56,"column":75}},"29":{"start":{"line":57,"column":0},"end":{"line":57,"column":74}},"30":{"start":{"line":58,"column":0},"end":{"line":58,"column":80}},"31":{"start":{"line":59,"column":0},"end":{"line":59,"column":78}},"32":{"start":{"line":60,"column":0},"end":{"line":60,"column":78}},"33":{"start":{"line":61,"column":0},"end":{"line":61,"column":76}},"34":{"start":{"line":62,"column":0},"end":{"line":63,"column":48}},"35":{"start":{"line":70,"column":0},"end":{"line":70,"column":73}},"36":{"start":{"line":71,"column":0},"end":{"line":71,"column":73}},"37":{"start":{"line":72,"column":0},"end":{"line":72,"column":77}},"38":{"start":{"line":73,"column":0},"end":{"line":73,"column":75}},"39":{"start":{"line":74,"column":0},"end":{"line":74,"column":73}},"40":{"start":{"line":75,"column":0},"end":{"line":75,"column":67}},"41":{"start":{"line":76,"column":0},"end":{"line":76,"column":67}},"42":{"start":{"line":78,"column":0},"end":{"line":78,"column":80}},"43":{"start":{"line":82,"column":0},"end":{"line":83,"column":50}},"44":{"start":{"line":84,"column":0},"end":{"line":84,"column":74}},"45":{"start":{"line":85,"column":0},"end":{"line":86,"column":47}},"46":{"start":{"line":87,"column":0},"end":{"line":88,"column":53}},"47":{"start":{"line":89,"column":0},"end":{"line":90,"column":57}},"48":{"start":{"line":91,"column":0},"end":{"line":92,"column":63}},"49":{"start":{"line":95,"column":0},"end":{"line":96,"column":57}},"50":{"start":{"line":97,"column":0},"end":{"line":98,"column":24}},"51":{"start":{"line":101,"column":0},"end":{"line":101,"column":68}},"52":{"start":{"line":102,"column":0},"end":{"line":102,"column":71}},"53":{"start":{"line":103,"column":0},"end":{"line":103,"column":67}},"54":{"start":{"line":104,"column":0},"end":{"line":104,"column":69}},"55":{"start":{"line":105,"column":0},"end":{"line":105,"column":71}},"56":{"start":{"line":106,"column":0},"end":{"line":106,"column":68}},"57":{"start":{"line":107,"column":0},"end":{"line":107,"column":73}},"58":{"start":{"line":108,"column":0},"end":{"line":108,"column":63}},"59":{"start":{"line":109,"column":0},"end":{"line":109,"column":61}},"60":{"start":{"line":110,"column":0},"end":{"line":111,"column":34}},"61":{"start":{"line":113,"column":0},"end":{"line":113,"column":72}},"62":{"start":{"line":114,"column":0},"end":{"line":114,"column":78}},"63":{"start":{"line":115,"column":0},"end":{"line":116,"column":35}},"64":{"start":{"line":117,"column":0},"end":{"line":118,"column":41}},"65":{"start":{"line":120,"column":0},"end":{"line":120,"column":68}},"66":{"start":{"line":121,"column":0},"end":{"line":122,"column":55}},"67":{"start":{"line":123,"column":0},"end":{"line":124,"column":47}},"68":{"start":{"line":128,"column":0},"end":{"line":139,"column":1}},"69":{"start":{"line":129,"column":2},"end":{"line":129,"column":16}},"70":{"start":{"line":130,"column":2},"end":{"line":130,"column":16}},"71":{"start":{"line":131,"column":2},"end":{"line":131,"column":20}},"72":{"start":{"line":132,"column":2},"end":{"line":132,"column":24}},"73":{"start":{"line":133,"column":2},"end":{"line":133,"column":22}},"74":{"start":{"line":138,"column":2},"end":{"line":138,"column":13}},"75":{"start":{"line":141,"column":0},"end":{"line":141,"column":29}},"76":{"start":{"line":142,"column":0},"end":{"line":147,"column":1}},"77":{"start":{"line":148,"column":0},"end":{"line":153,"column":1}},"78":{"start":{"line":154,"column":0},"end":{"line":159,"column":1}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":128,"column":28},"end":{"line":128,"column":29}},"loc":{"start":{"line":128,"column":72},"end":{"line":139,"column":1}},"line":128}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":3,"70":3,"71":3,"72":3,"73":3,"74":3,"75":1,"76":1,"77":1,"78":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b112e637258c5791b7704e4a65ebd3c7fe1c1ab5"}
2
2
  ,"/home/runner/work/solid-panes/solid-panes/src/outline/propertyViews.ts": {"path":"/home/runner/work/solid-panes/solid-panes/src/outline/propertyViews.ts","statementMap":{"0":{"start":{"line":7,"column":0},"end":{"line":7,"column":16}},"1":{"start":{"line":28,"column":0},"end":{"line":28,"column":16}},"2":{"start":{"line":1,"column":0},"end":{"line":1,"column":29}},"3":{"start":{"line":2,"column":0},"end":{"line":2,"column":39}},"4":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"5":{"start":{"line":9,"column":16},"end":{"line":13,"column":4}},"6":{"start":{"line":15,"column":18},"end":{"line":15,"column":34}},"7":{"start":{"line":16,"column":17},"end":{"line":16,"column":32}},"8":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"9":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"10":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"11":{"start":{"line":21,"column":2},"end":{"line":21,"column":null}},"12":{"start":{"line":22,"column":2},"end":{"line":22,"column":null}},"13":{"start":{"line":23,"column":2},"end":{"line":23,"column":null}},"14":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"15":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"16":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}},"17":{"start":{"line":32,"column":2},"end":{"line":32,"column":null}},"18":{"start":{"line":33,"column":2},"end":{"line":36,"column":3}},"19":{"start":{"line":35,"column":4},"end":{"line":35,"column":null}}},"fnMap":{"0":{"name":"propertyViews","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":29}},"loc":{"start":{"line":7,"column":34},"end":{"line":25,"column":1}}},"1":{"name":"viewsAddPropertyView","decl":{"start":{"line":28,"column":16},"end":{"line":28,"column":36}},"loc":{"start":{"line":28,"column":75},"end":{"line":37,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"type":"if","locations":[{"start":{"line":29,"column":2},"end":{"line":31,"column":3}}]},"1":{"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":3}},"type":"if","locations":[{"start":{"line":33,"column":2},"end":{"line":36,"column":3}}]}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":10,"6":10,"7":10,"8":10,"9":10,"10":10,"11":10,"12":10,"13":10,"14":10,"15":60,"16":60,"17":60,"18":60,"19":60},"f":{"0":10,"1":60},"b":{"0":[60],"1":[60]}}
3
- ,"/home/runner/work/solid-panes/solid-panes/src/outline/viewAsImage.ts": {"path":"/home/runner/work/solid-panes/solid-panes/src/outline/viewAsImage.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"1":{"start":{"line":3,"column":0},"end":{"line":12,"column":null}},"2":{"start":{"line":3,"column":24},"end":{"line":12,"column":null}},"3":{"start":{"line":4,"column":14},"end":{"line":8,"column":null}},"4":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"5":{"start":{"line":11,"column":2},"end":{"line":11,"column":null}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":16}},"loc":{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}},"1":{"name":"viewAsImage","decl":{"start":{"line":3,"column":33},"end":{"line":3,"column":44}},"loc":{"start":{"line":3,"column":49},"end":{"line":12,"column":1}}}},"branchMap":{},"s":{"0":2,"1":2,"2":10,"3":5,"4":5,"5":5},"f":{"0":10,"1":5},"b":{}}
3
+ ,"/home/runner/work/solid-panes/solid-panes/src/outline/viewAsImage.ts": {"path":"/home/runner/work/solid-panes/solid-panes/src/outline/viewAsImage.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"1":{"start":{"line":3,"column":0},"end":{"line":12,"column":null}},"2":{"start":{"line":3,"column":24},"end":{"line":12,"column":null}},"3":{"start":{"line":4,"column":14},"end":{"line":8,"column":null}},"4":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"5":{"start":{"line":11,"column":2},"end":{"line":11,"column":null}}},"fnMap":{"0":{"name":"(anonymous_9)","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":16}},"loc":{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}},"1":{"name":"viewAsImage","decl":{"start":{"line":3,"column":33},"end":{"line":3,"column":44}},"loc":{"start":{"line":3,"column":49},"end":{"line":12,"column":1}}}},"branchMap":{},"s":{"0":2,"1":2,"2":10,"3":5,"4":5,"5":5},"f":{"0":10,"1":5},"b":{}}
4
4
  ,"/home/runner/work/solid-panes/solid-panes/src/outline/viewAsMbox.ts": {"path":"/home/runner/work/solid-panes/solid-panes/src/outline/viewAsMbox.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":14,"column":null}},"1":{"start":{"line":1,"column":24},"end":{"line":14,"column":null}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":39}},"3":{"start":{"line":7,"column":16},"end":{"line":7,"column":66}},"4":{"start":{"line":9,"column":16},"end":{"line":9,"column":42}},"5":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"6":{"start":{"line":11,"column":2},"end":{"line":11,"column":null}},"7":{"start":{"line":12,"column":2},"end":{"line":12,"column":null}},"8":{"start":{"line":13,"column":2},"end":{"line":13,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":15},"end":{"line":1,"column":16}},"loc":{"start":{"line":1,"column":19},"end":{"line":1,"column":33}}},"1":{"name":"viewAsMbox","decl":{"start":{"line":1,"column":33},"end":{"line":1,"column":43}},"loc":{"start":{"line":1,"column":48},"end":{"line":14,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":16},"end":{"line":7,"column":66}},"type":"cond-expr","locations":[{"start":{"line":7,"column":47},"end":{"line":7,"column":54}},{"start":{"line":7,"column":57},"end":{"line":7,"column":66}}]},"1":{"loc":{"start":{"line":10,"column":12},"end":{"line":10,"column":59}},"type":"cond-expr","locations":[{"start":{"line":10,"column":25},"end":{"line":10,"column":49}},{"start":{"line":10,"column":52},"end":{"line":10,"column":59}}]}},"s":{"0":2,"1":10,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{"0":10,"1":1},"b":{"0":[1,0],"1":[1,0]}}
5
- ,"/home/runner/work/solid-panes/solid-panes/src/trustedApplications/trustedApplications.utils.ts": {"path":"/home/runner/work/solid-panes/solid-panes/src/trustedApplications/trustedApplications.utils.ts","statementMap":{"0":{"start":{"line":4,"column":0},"end":{"line":4,"column":16}},"1":{"start":{"line":32,"column":0},"end":{"line":32,"column":16}},"2":{"start":{"line":49,"column":0},"end":{"line":49,"column":16}},"3":{"start":{"line":1,"column":0},"end":{"line":1,"column":90}},"4":{"start":{"line":10,"column":32},"end":{"line":13,"column":null}},"5":{"start":{"line":15,"column":29},"end":{"line":27,"column":null}},"6":{"start":{"line":17,"column":6},"end":{"line":25,"column":null}},"7":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"8":{"start":{"line":39,"column":22},"end":{"line":39,"column":70}},"9":{"start":{"line":40,"column":2},"end":{"line":45,"column":null}},"10":{"start":{"line":44,"column":19},"end":{"line":44,"column":29}},"11":{"start":{"line":45,"column":19},"end":{"line":45,"column":71}},"12":{"start":{"line":50,"column":2},"end":{"line":50,"column":null}}},"fnMap":{"0":{"name":"getStatementsToDelete","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":37}},"loc":{"start":{"line":8,"column":16},"end":{"line":30,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":13},"end":{"line":26,"column":5}}},"2":{"name":"getStatementsToAdd","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":34}},"loc":{"start":{"line":37,"column":16},"end":{"line":47,"column":1}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":44,"column":11},"end":{"line":44,"column":15}},"loc":{"start":{"line":44,"column":15},"end":{"line":44,"column":22}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":45,"column":11},"end":{"line":45,"column":15}},"loc":{"start":{"line":45,"column":15},"end":{"line":45,"column":21}}},"5":{"name":"generateRandomString","decl":{"start":{"line":49,"column":16},"end":{"line":49,"column":36}},"loc":{"start":{"line":49,"column":36},"end":{"line":51,"column":1}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":3,"5":3,"6":1,"7":3,"8":1,"9":1,"10":2,"11":2,"12":1},"f":{"0":3,"1":1,"2":1,"3":2,"4":2,"5":1},"b":{}}
5
+ ,"/home/runner/work/solid-panes/solid-panes/src/trustedApplications/trustedApplications.utils.ts": {"path":"/home/runner/work/solid-panes/solid-panes/src/trustedApplications/trustedApplications.utils.ts","statementMap":{"0":{"start":{"line":4,"column":0},"end":{"line":4,"column":16}},"1":{"start":{"line":32,"column":0},"end":{"line":32,"column":16}},"2":{"start":{"line":49,"column":0},"end":{"line":49,"column":16}},"3":{"start":{"line":1,"column":0},"end":{"line":1,"column":90}},"4":{"start":{"line":10,"column":32},"end":{"line":13,"column":null}},"5":{"start":{"line":15,"column":29},"end":{"line":27,"column":null}},"6":{"start":{"line":17,"column":6},"end":{"line":25,"column":null}},"7":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"8":{"start":{"line":39,"column":22},"end":{"line":39,"column":53}},"9":{"start":{"line":40,"column":2},"end":{"line":45,"column":null}},"10":{"start":{"line":44,"column":19},"end":{"line":44,"column":29}},"11":{"start":{"line":45,"column":19},"end":{"line":45,"column":71}},"12":{"start":{"line":50,"column":2},"end":{"line":50,"column":null}}},"fnMap":{"0":{"name":"getStatementsToDelete","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":37}},"loc":{"start":{"line":8,"column":16},"end":{"line":30,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":13},"end":{"line":26,"column":5}}},"2":{"name":"getStatementsToAdd","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":34}},"loc":{"start":{"line":37,"column":16},"end":{"line":47,"column":1}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":44,"column":11},"end":{"line":44,"column":15}},"loc":{"start":{"line":44,"column":15},"end":{"line":44,"column":22}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":45,"column":11},"end":{"line":45,"column":15}},"loc":{"start":{"line":45,"column":15},"end":{"line":45,"column":21}}},"5":{"name":"generateRandomString","decl":{"start":{"line":49,"column":16},"end":{"line":49,"column":36}},"loc":{"start":{"line":49,"column":36},"end":{"line":51,"column":1}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":3,"5":3,"6":1,"7":3,"8":1,"9":1,"10":2,"11":2,"12":1},"f":{"0":3,"1":1,"2":1,"3":2,"4":2,"5":1},"b":{}}
6
6
  }
@@ -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-02-02T18:53:38.385Z
119
+ at 2025-02-13T18:56:07.871Z
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-02-02T18:53:38.385Z
149
+ at 2025-02-13T18:56:07.871Z
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-02-02T18:53:38.385Z
553
+ at 2025-02-13T18:56:07.871Z
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-02-02T18:53:38.385Z
184
+ at 2025-02-13T18:56:07.871Z
185
185
  </div>
186
186
  <script src="../prettify.js"></script>
187
187
  <script>
@@ -106,7 +106,7 @@ export default (dom) =&gt; 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-02-02T18:53:38.385Z
109
+ at 2025-02-13T18:56:07.871Z
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-02-02T18:53:38.385Z
115
+ at 2025-02-13T18:56:07.871Z
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-02-02T18:53:38.385Z
104
+ at 2025-02-13T18:56:07.871Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -203,7 +203,7 @@ export function getStatementsToAdd (
203
203
  person: NamedNode,
204
204
  ns: Namespaces
205
205
  ): any {
206
- const application = new NamedNode(`${person.doc().uri}#${nodeName}`)
206
+ const application = new BlankNode(`bn_${nodeName}`) // NamedNode(`${person.doc().uri}#${nodeName}`)
207
207
  return [
208
208
  st(person, ns.acl('trustedApp'), application, person.doc()),
209
209
  st(application, ns.acl('origin'), origin, person.doc()),
@@ -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-02-02T18:53:38.385Z
226
+ at 2025-02-13T18:56:07.871Z
227
227
  </div>
228
228
  <script src="../prettify.js"></script>
229
229
  <script>
@@ -125,11 +125,11 @@ BRH:2
125
125
  end_of_record
126
126
  TN:
127
127
  SF:src/outline/viewAsImage.ts
128
- FN:3,(anonymous_6)
128
+ FN:3,(anonymous_9)
129
129
  FN:3,viewAsImage
130
130
  FNF:2
131
131
  FNH:2
132
- FNDA:10,(anonymous_6)
132
+ FNDA:10,(anonymous_9)
133
133
  FNDA:5,viewAsImage
134
134
  DA:1,2
135
135
  DA:3,10
@@ -0,0 +1,34 @@
1
+ import typescriptEslint from "@typescript-eslint/eslint-plugin";
2
+ import globals from "globals";
3
+ import tsParser from "@typescript-eslint/parser";
4
+
5
+ export default [{
6
+ ignores: ["**/dist", "**/lib", "typings/rdflib"],
7
+ }, {
8
+ plugins: {
9
+ "@typescript-eslint": typescriptEslint,
10
+ },
11
+
12
+ languageOptions: {
13
+ globals: {
14
+ ...globals.browser,
15
+ ...globals.node,
16
+ Atomics: "readonly",
17
+ SharedArrayBuffer: "readonly",
18
+ },
19
+
20
+ parser: tsParser,
21
+ },
22
+ files: ["src/**/*.js", "src/**/*.ts", "src/**/*.cjs", "src/**/*.mjs"],
23
+ rules: {
24
+ "no-unused-vars": ["warn", {
25
+ argsIgnorePattern: "^_",
26
+ varsIgnorePattern: "^_",
27
+ }],
28
+
29
+ "@typescript-eslint/no-unused-vars": ["warn", {
30
+ argsIgnorePattern: "^_",
31
+ varsIgnorePattern: "^_",
32
+ }],
33
+ },
34
+ }];
@@ -8,7 +8,8 @@ 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 DOKIELI_TEMPLATE = _interopRequireWildcard(require("./new.js"));
11
+ var _new = _interopRequireDefault(require("./new.js"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
13
  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); }
13
14
  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; }
14
15
  /* Human-readable editable "Dokieli" Pane
@@ -52,7 +53,7 @@ var _default = exports["default"] = {
52
53
 
53
54
  // This data coul d come from a fetch OR from ldp comtaimner
54
55
  var hasContentTypeIn2 = function hasContentTypeIn2(kb, x, displayables) {
55
- var t = kb.findTypeURIs(subject);
56
+ var t = kb.findTypeURIs(x);
56
57
  for (var k = 0; k < displayables.length; k++) {
57
58
  if ($rdf.Util.mediaTypeClass(displayables[k]).uri in t) {
58
59
  return true;
@@ -89,7 +90,7 @@ var _default = exports["default"] = {
89
90
 
90
91
  // console.log('New dokieli will make: ' + newInstance)
91
92
 
92
- var htmlContents = DOKIELI_TEMPLATE;
93
+ var htmlContents = _new["default"];
93
94
  var filename = newInstance.uri.split('/').slice(-1)[0];
94
95
  filename = decodeURIComponent(filename.split('.')[0]);
95
96
  var encodedTitle = filename.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
@@ -118,38 +119,52 @@ var _default = exports["default"] = {
118
119
  div.setAttribute('class', 'docView');
119
120
  var iframe = myDocument.createElement('IFRAME');
120
121
 
121
- // get with authenticated fetch
122
- kb.fetcher._fetch(subject.uri).then(function (response) {
123
- return response.blob();
124
- }).then(function (blob) {
122
+ // Function to set iframe attributes
123
+ var setIframeAttributes = function setIframeAttributes(iframe, blob, lines) {
125
124
  var objectURL = URL.createObjectURL(blob);
126
- iframe.setAttribute('src', objectURL); // w640 h480 //
125
+ iframe.setAttribute('src', objectURL);
127
126
  iframe.setAttribute('type', blob.type);
128
127
  iframe.setAttribute('class', 'doc');
129
- return blob.text();
130
- }).then(function (blobText) {
128
+ iframe.setAttribute('style', "border: 1px solid; padding: 1em; height:".concat(lines, "em; width:800px; resize: both; overflow: auto;"));
129
+
130
+ // Apply sandbox attribute only for HTML files
131
+ // @@ NOte beflow - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF.
132
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
133
+ // You can;'t have any sandbox and allow plugins.
134
+ // We could sandbox only HTML files I suppose.
135
+ // HTML5 bug: https://lists.w3.org/Archives/Public/public-html/2011Jun/0330.html
136
+ if (blob.type === 'text/html' || blob.type === 'application/xhtml+xml') {
137
+ iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin');
138
+ }
139
+ };
140
+
141
+ // Fetch and process the blob
142
+ kb.fetcher._fetch(subject.uri).then(function (response) {
143
+ return response.blob();
144
+ }).then(function (blob) {
145
+ var blobTextPromise = blob.type.startsWith('text') ? blob.text() : Promise.resolve('');
146
+ return blobTextPromise.then(function (blobText) {
147
+ return {
148
+ blob: blob,
149
+ blobText: blobText
150
+ };
151
+ });
152
+ }).then(function (_ref) {
153
+ var blob = _ref.blob,
154
+ blobText = _ref.blobText;
131
155
  var newLines = blobText.includes('<script src="https://dokie.li/scripts/dokieli.js">') ? -10 : 5;
132
156
  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;"));
157
+ setIframeAttributes(iframe, blob, lines);
134
158
  })["catch"](function (err) {
135
- console.log(err);
159
+ console.log('Error fetching or processing blob:', err);
136
160
  });
137
161
  var cts = kb.fetcher.getHeader(subject.doc(), 'content-type');
138
- var ct = cts ? cts[0] : null;
162
+ var ct = cts ? cts[0].split(';', 1)[0].trim() : null;
139
163
  if (ct) {
140
164
  console.log('dokieliPane: c-t:' + ct);
141
165
  } else {
142
166
  console.log('dokieliPane: unknown content-type?');
143
167
  }
144
-
145
- // @@ NOte beflow - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF.
146
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
147
- // You can;'t have any sandbox and allow plugins.
148
- // We could sandbox only HTML files I suppose.
149
- // HTML5 bug: https://lists.w3.org/Archives/Public/public-html/2011Jun/0330.html
150
-
151
- // iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static
152
-
153
168
  var tr = myDocument.createElement('tr');
154
169
  tr.appendChild(iframe);
155
170
  div.appendChild(tr);
@@ -1 +1 @@
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, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\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":[]}
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","htmlContents","DOKIELI_TEMPLATE","filename","split","decodeURIComponent","encodedTitle","replace","Promise","resolve","webOperation","data","then","console","log","err","render","myDocument","dom","div","createElement","setAttribute","iframe","setIframeAttributes","blob","lines","objectURL","URL","createObjectURL","type","concat","_fetch","response","blobTextPromise","startsWith","text","blobText","_ref","newLines","Math","min","doc","ct","trim","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(x)\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, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\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 // Function to set iframe attributes\n const setIframeAttributes = (iframe, blob, lines) => {\n const objectURL = URL.createObjectURL(blob)\n iframe.setAttribute('src', objectURL)\n iframe.setAttribute('type', blob.type)\n iframe.setAttribute('class', 'doc')\n iframe.setAttribute('style', `border: 1px solid; padding: 1em; height:${lines}em; width:800px; resize: both; overflow: auto;`)\n\n // Apply sandbox attribute only for HTML files\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 if (blob.type === 'text/html' || blob.type === 'application/xhtml+xml') {\n iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin')\n }\n }\n\n // Fetch and process the blob\n kb.fetcher._fetch(subject.uri)\n .then(response => response.blob())\n .then(blob => {\n const blobTextPromise = blob.type.startsWith('text') ? blob.text() : Promise.resolve('')\n return blobTextPromise.then(blobText => ({ blob, blobText }))\n })\n .then(({ blob, 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 setIframeAttributes(iframe, blob, lines)\n })\n .catch(err => {\n console.log('Error fetching or processing blob:', err)\n })\n\n const cts = kb.fetcher.getHeader(subject.doc(), 'content-type')\n const ct = cts ? cts[0].split(';', 1)[0].trim() : null\n if (ct) {\n console.log('dokieliPane: c-t:' + ct)\n } else {\n console.log('dokieliPane: unknown content-type?')\n }\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":[]}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
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>";
7
+ var DOKIELI_TEMPLATE = "\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
@@ -1 +1 @@
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":[]}
1
+ {"version":3,"file":"new.js","names":["DOKIELI_TEMPLATE","_default","exports"],"sources":["../../src/dokieli/new.js"],"sourcesContent":["const DOKIELI_TEMPLATE = `\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":";;;;;;AAAA,IAAMA,gBAAgB,ylEAmBd;AAAA,IAAAC,QAAA,GAAAC,OAAA,cAEOF,gBAAgB","ignoreList":[]}
@@ -62,7 +62,7 @@ var humanReadablePane = {
62
62
  var div = myDocument.createElement('div');
63
63
  var kb = context.session.store;
64
64
  var cts = kb.fetcher.getHeader(subject.doc(), 'content-type');
65
- var ct = cts ? cts[0] : null;
65
+ var ct = cts ? cts[0].split(';', 1)[0].trim() : null; // remove content-type parameters
66
66
  if (ct) {
67
67
  // console.log('humanReadablePane: c-t:' + ct)
68
68
  } else {
@@ -73,6 +73,21 @@ var humanReadablePane = {
73
73
  div.setAttribute('class', 'docView');
74
74
  var element = ct === 'text/markdown' ? 'DIV' : 'IFRAME';
75
75
  var frame = myDocument.createElement(element);
76
+ var setIframeAttributes = function setIframeAttributes(frame, blob, lines) {
77
+ frame.setAttribute('src', URL.createObjectURL(blob));
78
+ frame.setAttribute('type', blob.type);
79
+ frame.setAttribute('class', 'doc');
80
+ frame.setAttribute('style', "border: 1px solid; padding: 1em; height: ".concat(lines, "em; width: 800px; resize: both; overflow: auto;"));
81
+
82
+ // Apply sandbox attribute only for HTML files
83
+ // @@ Note below - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF.
84
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
85
+ // You can't have any sandbox and allow plugins.
86
+ // We could sandbox only HTML files I suppose.
87
+ if (blob.type === 'text/html' || blob.type === 'application/xhtml+xml') {
88
+ frame.setAttribute('sandbox', 'allow-scripts allow-same-origin');
89
+ }
90
+ };
76
91
 
77
92
  // render markdown to html
78
93
  var markdownHtml = function markdownHtml() {
@@ -84,35 +99,35 @@ var humanReadablePane = {
84
99
  frame.innerHTML = clean;
85
100
  frame.setAttribute('class', 'doc');
86
101
  frame.setAttribute('style', "border: 1px solid; padding: 1em; height: ".concat(lines, "em; width: 800px; resize: both; overflow: auto;"));
102
+ })["catch"](function (error) {
103
+ console.error('Error fetching markdown content:', error);
104
+ frame.innerHTML = '<p>Error loading content</p>';
87
105
  });
88
106
  };
89
107
  if (ct === 'text/markdown') {
90
108
  markdownHtml();
91
109
  } else {
92
- // get with authenticated fetch
110
+ // Fetch and process the blob
93
111
  kb.fetcher._fetch(subject.uri).then(function (response) {
94
112
  return response.blob();
95
113
  }).then(function (blob) {
96
- var objectURL = URL.createObjectURL(blob);
97
- frame.setAttribute('src', objectURL);
98
- frame.setAttribute('type', blob.type);
99
- frame.setAttribute('class', 'doc');
100
- return blob.type.startsWith('text') ? blob.text() : '';
101
- }).then(function (blobText) {
114
+ var blobTextPromise = blob.type.startsWith('text') ? blob.text() : Promise.resolve('');
115
+ return blobTextPromise.then(function (blobText) {
116
+ return {
117
+ blob: blob,
118
+ blobText: blobText
119
+ };
120
+ });
121
+ }).then(function (_ref) {
122
+ var blob = _ref.blob,
123
+ blobText = _ref.blobText;
102
124
  var newLines = blobText.includes('<script src="https://dokie.li/scripts/dokieli.js">') ? -10 : 5;
103
125
  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;"));
126
+ setIframeAttributes(frame, blob, lines);
127
+ })["catch"](function (err) {
128
+ console.log('Error fetching or processing blob:', err);
105
129
  });
106
130
  }
107
-
108
- // @@ Note below - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF.
109
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
110
- // You can't have any sandbox and allow plugins.
111
- // We could sandbox only HTML files I suppose.
112
- // HTML5 bug: https://lists.w3.org/Archives/Public/public-html/2011Jun/0330.html
113
-
114
- // iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static
115
-
116
131
  var tr = myDocument.createElement('TR');
117
132
  tr.appendChild(frame);
118
133
  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","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":[]}
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","split","trim","console","log","setAttribute","element","frame","setIframeAttributes","blob","lines","URL","createObjectURL","type","concat","markdownHtml","webOperation","then","response","markdownText","responseText","Math","min","res","marked","parse","clean","DOMPurify","sanitize","innerHTML","error","_fetch","blobTextPromise","startsWith","text","Promise","resolve","blobText","_ref","newLines","includes","err","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].split(';', 1)[0].trim() : null // remove content-type parameters\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 const setIframeAttributes = (frame, blob, lines) => {\n frame.setAttribute('src', URL.createObjectURL(blob));\n frame.setAttribute('type', blob.type);\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 // Apply sandbox attribute only for HTML files\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 if (blob.type === 'text/html' || blob.type === 'application/xhtml+xml') {\n frame.setAttribute('sandbox', 'allow-scripts allow-same-origin');\n }\n };\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 }).catch(error => {\n console.error('Error fetching markdown content:', error)\n frame.innerHTML = '<p>Error loading content</p>'\n })\n }\n\n if (ct === 'text/markdown') {\n markdownHtml()\n } else {\n // Fetch and process the blob\n kb.fetcher._fetch(subject.uri)\n .then(response => response.blob())\n .then(blob => {\n const blobTextPromise = blob.type.startsWith('text') ? blob.text() : Promise.resolve('')\n return blobTextPromise.then(blobText => ({ blob, blobText }))\n })\n .then(({ blob, 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 setIframeAttributes(frame, blob, lines)\n })\n .catch(err => {\n console.log('Error fetching or processing blob:', err)\n })\n }\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":[]}