solid-panes 3.5.27 → 3.5.28-67b6a3eb

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 (309) hide show
  1. package/.babelrc +0 -0
  2. package/.eslintignore +0 -0
  3. package/.eslintrc +0 -0
  4. package/.github/workflows/ci.yml +0 -0
  5. package/.nvmrc +0 -0
  6. package/Documentation/VisualLanguage.html +0 -0
  7. package/Documentation/conventions.md +0 -0
  8. package/LICENSE.md +0 -0
  9. package/README.md +0 -2
  10. package/dev/index.html +0 -0
  11. package/dev/loader.ts +0 -0
  12. package/dev/pane/index.ts +0 -0
  13. package/doc/images/panes-for-classes.epgz +0 -0
  14. package/doc/images/panes-for-classes.svg +0 -0
  15. package/jest.config.js +0 -0
  16. package/jest.setup.ts +0 -0
  17. package/lib/RDFXMLPane.js +6 -8
  18. package/lib/RDFXMLPane.js.map +1 -1
  19. package/lib/argument/argumentPane.js +10 -11
  20. package/lib/argument/argumentPane.js.map +1 -1
  21. package/lib/attach/attachPane.js +47 -85
  22. package/lib/attach/attachPane.js.map +1 -1
  23. package/lib/audio/audioPane.js +11 -36
  24. package/lib/audio/audioPane.js.map +1 -1
  25. package/lib/classInstancePane.js +11 -20
  26. package/lib/classInstancePane.js.map +1 -1
  27. package/lib/dashboard/basicPreferences.d.ts +0 -0
  28. package/lib/dashboard/basicPreferences.d.ts.map +0 -0
  29. package/lib/dashboard/basicPreferences.js +3 -53
  30. package/lib/dashboard/basicPreferences.js.map +1 -1
  31. package/lib/dashboard/dashboardPane.d.ts +0 -0
  32. package/lib/dashboard/dashboardPane.d.ts.map +0 -0
  33. package/lib/dashboard/dashboardPane.js +2 -18
  34. package/lib/dashboard/dashboardPane.js.map +1 -1
  35. package/lib/dashboard/homepage.d.ts +0 -0
  36. package/lib/dashboard/homepage.d.ts.map +0 -0
  37. package/lib/dashboard/homepage.js +1 -19
  38. package/lib/dashboard/homepage.js.map +1 -1
  39. package/lib/dataContentPane.js +15 -58
  40. package/lib/dataContentPane.js.map +1 -1
  41. package/lib/defaultPane.js +13 -21
  42. package/lib/defaultPane.js.map +1 -1
  43. package/lib/dokieli/dokieliPane.js +19 -28
  44. package/lib/dokieli/dokieliPane.js.map +1 -1
  45. package/lib/dokieli/new.js +0 -0
  46. package/lib/dokieli/new.js.map +1 -1
  47. package/lib/form/pane.js +26 -40
  48. package/lib/form/pane.js.map +1 -1
  49. package/lib/global.d.js +0 -0
  50. package/lib/global.d.js.map +0 -0
  51. package/lib/home/homePane.d.ts +0 -0
  52. package/lib/home/homePane.d.ts.map +0 -0
  53. package/lib/home/homePane.js +7 -23
  54. package/lib/home/homePane.js.map +1 -1
  55. package/lib/humanReadablePane.js +14 -28
  56. package/lib/humanReadablePane.js.map +1 -1
  57. package/lib/imagePane.js +9 -13
  58. package/lib/imagePane.js.map +1 -1
  59. package/lib/index.d.ts +0 -0
  60. package/lib/index.d.ts.map +0 -0
  61. package/lib/index.js +4 -18
  62. package/lib/index.js.map +1 -1
  63. package/lib/internal/internalPane.d.ts +0 -0
  64. package/lib/internal/internalPane.d.ts.map +0 -0
  65. package/lib/internal/internalPane.js +10 -41
  66. package/lib/internal/internalPane.js.map +1 -1
  67. package/lib/mainPage/footer.d.ts +0 -0
  68. package/lib/mainPage/footer.d.ts.map +0 -0
  69. package/lib/mainPage/footer.js +0 -4
  70. package/lib/mainPage/footer.js.map +1 -1
  71. package/lib/mainPage/header.d.ts +0 -0
  72. package/lib/mainPage/header.d.ts.map +0 -0
  73. package/lib/mainPage/header.js +2 -28
  74. package/lib/mainPage/header.js.map +1 -1
  75. package/lib/mainPage/index.d.ts +0 -0
  76. package/lib/mainPage/index.d.ts.map +0 -0
  77. package/lib/mainPage/index.js +1 -12
  78. package/lib/mainPage/index.js.map +1 -1
  79. package/lib/microblogPane/microblogPane.js +100 -237
  80. package/lib/microblogPane/microblogPane.js.map +1 -1
  81. package/lib/n3Pane.js +2 -7
  82. package/lib/n3Pane.js.map +1 -1
  83. package/lib/outline/context.d.ts +0 -0
  84. package/lib/outline/context.d.ts.map +0 -0
  85. package/lib/outline/context.js +0 -2
  86. package/lib/outline/context.js.map +1 -1
  87. package/lib/outline/licenseOptions.js +9 -25
  88. package/lib/outline/licenseOptions.js.map +1 -1
  89. package/lib/outline/manager.js +180 -581
  90. package/lib/outline/manager.js.map +1 -1
  91. package/lib/outline/manager.test.js +1 -11
  92. package/lib/outline/manager.test.js.map +1 -1
  93. package/lib/outline/outlineIcons.js +30 -25
  94. package/lib/outline/outlineIcons.js.map +1 -1
  95. package/lib/outline/propertyViews.d.ts +0 -0
  96. package/lib/outline/propertyViews.d.ts.map +0 -0
  97. package/lib/outline/propertyViews.js +0 -10
  98. package/lib/outline/propertyViews.js.map +1 -1
  99. package/lib/outline/propertyViews.test.js +1 -3
  100. package/lib/outline/propertyViews.test.js.map +1 -1
  101. package/lib/outline/queryByExample.js +24 -76
  102. package/lib/outline/queryByExample.js.map +1 -1
  103. package/lib/outline/userInput.js +214 -454
  104. package/lib/outline/userInput.js.map +1 -1
  105. package/lib/outline/viewAsImage.d.ts +0 -0
  106. package/lib/outline/viewAsImage.d.ts.map +0 -0
  107. package/lib/outline/viewAsImage.js +0 -6
  108. package/lib/outline/viewAsImage.js.map +1 -1
  109. package/lib/outline/viewAsMbox.d.ts +0 -0
  110. package/lib/outline/viewAsMbox.d.ts.map +0 -0
  111. package/lib/outline/viewAsMbox.js +3 -4
  112. package/lib/outline/viewAsMbox.js.map +1 -1
  113. package/lib/pad/padPane.d.ts +0 -0
  114. package/lib/pad/padPane.d.ts.map +0 -0
  115. package/lib/pad/padPane.js +45 -93
  116. package/lib/pad/padPane.js.map +1 -1
  117. package/lib/playlist/playlistPane.js +3 -20
  118. package/lib/playlist/playlistPane.js.map +1 -1
  119. package/lib/profile/editProfile.view.d.ts +0 -0
  120. package/lib/profile/editProfile.view.d.ts.map +0 -0
  121. package/lib/profile/editProfile.view.js +7 -24
  122. package/lib/profile/editProfile.view.js.map +1 -1
  123. package/lib/profile/profile.dom.d.ts +0 -0
  124. package/lib/profile/profile.dom.d.ts.map +0 -0
  125. package/lib/profile/profile.dom.js +0 -3
  126. package/lib/profile/profile.dom.js.map +1 -1
  127. package/lib/registerPanes.js +29 -27
  128. package/lib/registerPanes.js.map +1 -1
  129. package/lib/schedule/formsForSchedule.js +0 -0
  130. package/lib/schedule/formsForSchedule.js.map +1 -1
  131. package/lib/schedule/schedulePane.js +62 -122
  132. package/lib/schedule/schedulePane.js.map +1 -1
  133. package/lib/sharing/sharingPane.d.ts +0 -0
  134. package/lib/sharing/sharingPane.d.ts.map +0 -0
  135. package/lib/sharing/sharingPane.js +2 -10
  136. package/lib/sharing/sharingPane.js.map +1 -1
  137. package/lib/slideshow/slideshowPane.js +9 -14
  138. package/lib/slideshow/slideshowPane.js.map +1 -1
  139. package/lib/socialPane.js +45 -126
  140. package/lib/socialPane.js.map +1 -1
  141. package/lib/tabbed/tabbedPane.d.ts +0 -0
  142. package/lib/tabbed/tabbedPane.d.ts.map +0 -0
  143. package/lib/tabbed/tabbedPane.js +1 -15
  144. package/lib/tabbed/tabbedPane.js.map +1 -1
  145. package/lib/tableViewPane.js +4 -7
  146. package/lib/tableViewPane.js.map +1 -1
  147. package/lib/test-import-export/common.js +2 -1
  148. package/lib/test-import-export/common.js.map +1 -1
  149. package/lib/test-import-export/edit-importer.js +7 -9
  150. package/lib/test-import-export/edit-importer.js.map +1 -1
  151. package/lib/test-import-export/testImportExport.js +0 -0
  152. package/lib/test-import-export/testImportExport.js.map +0 -0
  153. package/lib/transaction/pane.js +31 -90
  154. package/lib/transaction/pane.js.map +1 -1
  155. package/lib/transaction/period.js +20 -71
  156. package/lib/transaction/period.js.map +1 -1
  157. package/lib/trip/tripPane.js +30 -34
  158. package/lib/trip/tripPane.js.map +1 -1
  159. package/lib/trustedApplications/trustedApplications.dom.d.ts +0 -0
  160. package/lib/trustedApplications/trustedApplications.dom.d.ts.map +0 -0
  161. package/lib/trustedApplications/trustedApplications.dom.js +8 -34
  162. package/lib/trustedApplications/trustedApplications.dom.js.map +1 -1
  163. package/lib/trustedApplications/trustedApplications.test.js +3 -8
  164. package/lib/trustedApplications/trustedApplications.test.js.map +1 -1
  165. package/lib/trustedApplications/trustedApplications.utils.d.ts +0 -0
  166. package/lib/trustedApplications/trustedApplications.utils.d.ts.map +0 -0
  167. package/lib/trustedApplications/trustedApplications.utils.js +0 -10
  168. package/lib/trustedApplications/trustedApplications.utils.js.map +1 -1
  169. package/lib/trustedApplications/trustedApplications.view.d.ts +0 -0
  170. package/lib/trustedApplications/trustedApplications.view.d.ts.map +0 -0
  171. package/lib/trustedApplications/trustedApplications.view.js +1 -22
  172. package/lib/trustedApplications/trustedApplications.view.js.map +1 -1
  173. package/lib/types.d.ts +0 -0
  174. package/lib/types.d.ts.map +0 -0
  175. package/lib/types.js +0 -0
  176. package/lib/types.js.map +0 -0
  177. package/lib/ui/pane.js +22 -28
  178. package/lib/ui/pane.js.map +1 -1
  179. package/lib/versionInfo.d.ts +0 -0
  180. package/lib/versionInfo.d.ts.map +0 -0
  181. package/lib/versionInfo.js +14 -14
  182. package/lib/versionInfo.js.map +1 -1
  183. package/lib/video/videoPane.js +2 -5
  184. package/lib/video/videoPane.js.map +1 -1
  185. package/package.json +25 -25
  186. package/src/RDFXMLPane.js +0 -0
  187. package/src/argument/argumentPane.js +0 -0
  188. package/src/argument/argument_icon_v04.jpg +0 -0
  189. package/src/argument/icon_argument.png +0 -0
  190. package/src/argument/transparentyingyang.png +0 -0
  191. package/src/attach/attachPane.js +0 -0
  192. package/src/attach/tbl-paperclip-128.png +0 -0
  193. package/src/attach/tbl-paperclip-22.png +0 -0
  194. package/src/attach/tbl-paperclip-22a.png +0 -0
  195. package/src/audio/audioPane.js +0 -0
  196. package/src/chatPreferencesForm.ttl +0 -0
  197. package/src/classInstancePane.js +0 -0
  198. package/src/dashboard/basicPreferences.ts +0 -0
  199. package/src/dashboard/dashboardPane.ts +0 -0
  200. package/src/dashboard/homepage.ts +0 -0
  201. package/src/dashboard/languages/codes.html +0 -0
  202. package/src/dashboard/languages/codes.xml +0 -0
  203. package/src/dashboard/languages/codes2.txt +0 -0
  204. package/src/dashboard/languages/foo +0 -0
  205. package/src/dashboard/languages/foo.ttl +0 -0
  206. package/src/dashboard/languages/get-language-names.sh +0 -0
  207. package/src/dashboard/ontologyData.ttl +0 -0
  208. package/src/dashboard/preferencesFormText.ttl +0 -0
  209. package/src/dataContentPane.js +0 -0
  210. package/src/defaultPane.js +0 -0
  211. package/src/dokieli/Makefile +0 -0
  212. package/src/dokieli/dokieliPane.js +0 -0
  213. package/src/dokieli/new.html +0 -0
  214. package/src/dokieli/new.js +0 -0
  215. package/src/form/form-22.png +0 -0
  216. package/src/form/form-b-22.png +0 -0
  217. package/src/form/form.graffle +0 -0
  218. package/src/form/form.png +0 -0
  219. package/src/form/pane.js +0 -0
  220. package/src/form/psuedocode-notes.txt +0 -0
  221. package/src/global.d.ts +0 -0
  222. package/src/home/homePane.ts +0 -0
  223. package/src/humanReadablePane.js +0 -0
  224. package/src/imagePane.js +0 -0
  225. package/src/index.ts +0 -0
  226. package/src/internal/internalPane.ts +0 -0
  227. package/src/mainPage/footer.ts +0 -0
  228. package/src/mainPage/header.ts +0 -0
  229. package/src/mainPage/index.ts +0 -0
  230. package/src/meeting/Makefile +0 -0
  231. package/src/meeting/test/meeting1/Actions/actions.ttl +0 -0
  232. package/src/meeting/test/meeting1/Actions/config.ttl +0 -0
  233. package/src/meeting/test/meeting1/Actions/state.ttl +0 -0
  234. package/src/meeting/test/meeting1/Schedule/details.ttl +0 -0
  235. package/src/meeting/test/meeting1/Schedule/details.ttl.acl +0 -0
  236. package/src/meeting/test/meeting1/Schedule/forms.ttl +0 -0
  237. package/src/meeting/test/meeting1/Schedule/forms.ttl.acl +0 -0
  238. package/src/meeting/test/meeting1/Schedule/index.html +0 -0
  239. package/src/meeting/test/meeting1/Schedule/index.html.acl +0 -0
  240. package/src/meeting/test/meeting1/Schedule/results.ttl +0 -0
  241. package/src/meeting/test/meeting1/Schedule/results.ttl.acl +0 -0
  242. package/src/meeting/test/meeting1/SharedNotes/pad.ttl +0 -0
  243. package/src/meeting/test/meeting1/chat/chat.ttl +0 -0
  244. package/src/meeting/test/meeting1/details.ttl +0 -0
  245. package/src/meeting/test/meeting1/pad/pad.ttl +0 -0
  246. package/src/microblogPane/mbStyle.css +0 -0
  247. package/src/microblogPane/microblogPane.js +0 -0
  248. package/src/n3Pane.js +0 -0
  249. package/src/outline/context.ts +0 -0
  250. package/src/outline/licenseOptions.js +0 -0
  251. package/src/outline/manager.js +2 -1
  252. package/src/outline/manager.test.ts +0 -0
  253. package/src/outline/outlineIcons.js +0 -0
  254. package/src/outline/propertyViews.test.ts +0 -0
  255. package/src/outline/propertyViews.ts +0 -0
  256. package/src/outline/queryByExample.js +0 -0
  257. package/src/outline/userInput.js +0 -0
  258. package/src/outline/viewAsImage.ts +0 -0
  259. package/src/outline/viewAsMbox.ts +0 -0
  260. package/src/pad/images/ColourOff.ai +0 -0
  261. package/src/pad/images/ColourOff.png +0 -0
  262. package/src/pad/images/ColourOn.ai +0 -0
  263. package/src/pad/images/ColourOn.png +0 -0
  264. package/src/pad/padPane.ts +0 -0
  265. package/src/playlist/playlistPane.js +0 -0
  266. package/src/profile/editProfile.view.ts +0 -0
  267. package/src/profile/profile.dom.ts +0 -0
  268. package/src/profile/profileFormText.ttl +0 -0
  269. package/src/registerPanes.js +0 -0
  270. package/src/schedule/Makefile +0 -0
  271. package/src/schedule/formsForSchedule.js +0 -0
  272. package/src/schedule/formsForSchedule.ttl +0 -0
  273. package/src/schedule/schedulePane.js +0 -0
  274. package/src/sharing/sharingPane.ts +0 -0
  275. package/src/slideshow/slideshowPane.js +0 -0
  276. package/src/socialPane.js +2 -2
  277. package/src/style/tabbedtab.css +0 -0
  278. package/src/tabbed/tabbedPane.ts +0 -0
  279. package/src/tableViewPane.js +0 -0
  280. package/src/test-import-export/common.js +0 -0
  281. package/src/test-import-export/edit-importer.js +0 -0
  282. package/src/test-import-export/testImportExport.js +0 -0
  283. package/src/transaction/068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
  284. package/src/transaction/075988-3d-transparent-glass-icon-business-currency-british-pound-sc35.png +0 -0
  285. package/src/transaction/22-pixel-068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
  286. package/src/transaction/pane.js +0 -0
  287. package/src/transaction/period.js +0 -0
  288. package/src/transaction/thumbs_075987-3d-transparent-glass-icon-business-creditcard2.png +0 -0
  289. package/src/transaction/thumbs_075989-3d-transparent-glass-icon-business-currency-cent-sc35.png +0 -0
  290. package/src/trip/tripPane.js +0 -0
  291. package/src/trustedApplications/__snapshots__/trustedApplications.test.ts.snap +0 -0
  292. package/src/trustedApplications/trustedApplications.dom.ts +0 -0
  293. package/src/trustedApplications/trustedApplications.test.ts +0 -0
  294. package/src/trustedApplications/trustedApplications.utils.ts +0 -0
  295. package/src/trustedApplications/trustedApplications.view.ts +0 -0
  296. package/src/types.ts +0 -0
  297. package/src/ui/22-builder.png +0 -0
  298. package/src/ui/builder.graffle +0 -0
  299. package/src/ui/builder.png +0 -0
  300. package/src/ui/builder2.png +0 -0
  301. package/src/ui/pane.js +0 -0
  302. package/src/versionInfo.ts +14 -14
  303. package/src/video/videoPane.js +0 -0
  304. package/timestamp.sh +0 -0
  305. package/travis/bumpversion.js +0 -0
  306. package/tsconfig.json +0 -0
  307. package/typings/raw-loader.d.ts +0 -0
  308. package/typings/solid-namespace/index.d.ts +0 -0
  309. package/webpack.config.js +0 -0
@@ -4,23 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.generateHomepage = generateHomepage;
7
-
8
7
  var _rdflib = require("rdflib");
9
-
10
8
  var _solidUi = require("solid-ui");
11
-
12
9
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
13
-
14
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
15
-
10
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
16
11
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
17
-
18
12
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
19
-
20
13
  function generateHomepage(_x, _x2, _x3) {
21
14
  return _generateHomepage.apply(this, arguments);
22
15
  }
23
-
24
16
  function _generateHomepage() {
25
17
  _generateHomepage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(subject, store, fetcher) {
26
18
  var ownersProfile, name, wrapper;
@@ -30,7 +22,6 @@ function _generateHomepage() {
30
22
  case 0:
31
23
  _context.next = 2;
32
24
  return loadProfile(subject, fetcher);
33
-
34
25
  case 2:
35
26
  ownersProfile = _context.sent;
36
27
  name = getName(store, ownersProfile);
@@ -39,7 +30,6 @@ function _generateHomepage() {
39
30
  wrapper.appendChild(createTitle(ownersProfile.uri, name));
40
31
  wrapper.appendChild(createDataSection(name));
41
32
  return _context.abrupt("return", wrapper);
42
-
43
33
  case 9:
44
34
  case "end":
45
35
  return _context.stop();
@@ -49,7 +39,6 @@ function _generateHomepage() {
49
39
  }));
50
40
  return _generateHomepage.apply(this, arguments);
51
41
  }
52
-
53
42
  function createDataSection(name) {
54
43
  var dataSection = document.createElement('section');
55
44
  var title = document.createElement('h2');
@@ -65,7 +54,6 @@ function createDataSection(name) {
65
54
  listGroup.appendChild(publicDataLink);
66
55
  return dataSection;
67
56
  }
68
-
69
57
  function createTitle(uri, name) {
70
58
  var profileLink = document.createElement('a');
71
59
  profileLink.href = uri;
@@ -77,11 +65,9 @@ function createTitle(uri, name) {
77
65
  title.appendChild(profileLinkPost);
78
66
  return title;
79
67
  }
80
-
81
68
  function loadProfile(_x4, _x5) {
82
69
  return _loadProfile.apply(this, arguments);
83
70
  }
84
-
85
71
  function _loadProfile() {
86
72
  _loadProfile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(subject, fetcher) {
87
73
  var pod, webId;
@@ -90,14 +76,11 @@ function _loadProfile() {
90
76
  switch (_context2.prev = _context2.next) {
91
77
  case 0:
92
78
  pod = subject.site().uri; // TODO: This is a hack - we cannot assume that the profile is at this document, but we will live with it for now
93
-
94
79
  webId = (0, _rdflib.sym)("".concat(pod, "profile/card#me"));
95
80
  _context2.next = 4;
96
81
  return fetcher.load(webId);
97
-
98
82
  case 4:
99
83
  return _context2.abrupt("return", webId);
100
-
101
84
  case 5:
102
85
  case "end":
103
86
  return _context2.stop();
@@ -107,7 +90,6 @@ function _loadProfile() {
107
90
  }));
108
91
  return _loadProfile.apply(this, arguments);
109
92
  }
110
-
111
93
  function getName(store, ownersProfile) {
112
94
  return store.anyValue(ownersProfile, _solidUi.ns.vcard('fn'), null, ownersProfile.doc()) || store.anyValue(ownersProfile, _solidUi.ns.foaf('name'), null, ownersProfile.doc()) || new URL(ownersProfile.uri).host.split('.')[0];
113
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"homepage.js","names":["generateHomepage","subject","store","fetcher","loadProfile","ownersProfile","name","getName","wrapper","document","createElement","classList","add","appendChild","createTitle","uri","createDataSection","dataSection","title","innerText","listGroup","publicDataLink","href","window","location","profileLink","profileLinkPost","pod","site","webId","sym","load","anyValue","ns","vcard","doc","foaf","URL","host","split"],"sources":["../../src/dashboard/homepage.ts"],"sourcesContent":["import { Fetcher, IndexedFormula, NamedNode, sym } from 'rdflib'\nimport { ns } from 'solid-ui'\n\nexport async function generateHomepage (\n subject: NamedNode,\n store: IndexedFormula,\n fetcher: Fetcher\n): Promise<HTMLElement> {\n const ownersProfile = await loadProfile(subject, fetcher)\n const name = getName(store, ownersProfile)\n\n const wrapper = document.createElement('div')\n wrapper.classList.add('container')\n wrapper.appendChild(createTitle(ownersProfile.uri, name))\n wrapper.appendChild(createDataSection(name))\n\n return wrapper\n}\n\nfunction createDataSection (name: string): HTMLElement {\n const dataSection = document.createElement('section')\n\n const title = document.createElement('h2')\n title.innerText = 'Data'\n dataSection.appendChild(title)\n\n const listGroup = document.createElement('div')\n listGroup.classList.add('list-group')\n dataSection.appendChild(listGroup)\n\n const publicDataLink = document.createElement('a')\n publicDataLink.classList.add('list-group-item')\n publicDataLink.href = window.document.location.href + 'public/'\n publicDataLink.innerText = `View ${name}'s files`\n listGroup.appendChild(publicDataLink)\n\n return dataSection\n}\n\nfunction createTitle (uri: string, name: string): HTMLElement {\n const profileLink = document.createElement('a')\n profileLink.href = uri\n profileLink.innerText = name\n\n const profileLinkPost = document.createElement('span')\n profileLinkPost.innerText = '\\'s Pod'\n\n const title = document.createElement('h1')\n title.appendChild(profileLink)\n title.appendChild(profileLinkPost)\n\n return title\n}\n\nasync function loadProfile (\n subject: NamedNode,\n fetcher: Fetcher\n): Promise<NamedNode> {\n const pod = subject.site().uri\n // TODO: This is a hack - we cannot assume that the profile is at this document, but we will live with it for now\n const webId = sym(`${pod}profile/card#me`)\n await fetcher.load(webId)\n return webId\n}\n\nfunction getName (store: IndexedFormula, ownersProfile: NamedNode): string {\n return (\n store.anyValue(ownersProfile, ns.vcard('fn'), null, ownersProfile.doc()) ||\n store.anyValue(ownersProfile, ns.foaf('name'), null, ownersProfile.doc()) ||\n new URL(ownersProfile.uri).host.split('.')[0]\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"homepage.js","names":["generateHomepage","subject","store","fetcher","loadProfile","ownersProfile","name","getName","wrapper","document","createElement","classList","add","appendChild","createTitle","uri","createDataSection","dataSection","title","innerText","listGroup","publicDataLink","href","window","location","profileLink","profileLinkPost","pod","site","webId","sym","load","anyValue","ns","vcard","doc","foaf","URL","host","split"],"sources":["../../src/dashboard/homepage.ts"],"sourcesContent":["import { Fetcher, IndexedFormula, NamedNode, sym } from 'rdflib'\nimport { ns } from 'solid-ui'\n\nexport async function generateHomepage (\n subject: NamedNode,\n store: IndexedFormula,\n fetcher: Fetcher\n): Promise<HTMLElement> {\n const ownersProfile = await loadProfile(subject, fetcher)\n const name = getName(store, ownersProfile)\n\n const wrapper = document.createElement('div')\n wrapper.classList.add('container')\n wrapper.appendChild(createTitle(ownersProfile.uri, name))\n wrapper.appendChild(createDataSection(name))\n\n return wrapper\n}\n\nfunction createDataSection (name: string): HTMLElement {\n const dataSection = document.createElement('section')\n\n const title = document.createElement('h2')\n title.innerText = 'Data'\n dataSection.appendChild(title)\n\n const listGroup = document.createElement('div')\n listGroup.classList.add('list-group')\n dataSection.appendChild(listGroup)\n\n const publicDataLink = document.createElement('a')\n publicDataLink.classList.add('list-group-item')\n publicDataLink.href = window.document.location.href + 'public/'\n publicDataLink.innerText = `View ${name}'s files`\n listGroup.appendChild(publicDataLink)\n\n return dataSection\n}\n\nfunction createTitle (uri: string, name: string): HTMLElement {\n const profileLink = document.createElement('a')\n profileLink.href = uri\n profileLink.innerText = name\n\n const profileLinkPost = document.createElement('span')\n profileLinkPost.innerText = '\\'s Pod'\n\n const title = document.createElement('h1')\n title.appendChild(profileLink)\n title.appendChild(profileLinkPost)\n\n return title\n}\n\nasync function loadProfile (\n subject: NamedNode,\n fetcher: Fetcher\n): Promise<NamedNode> {\n const pod = subject.site().uri\n // TODO: This is a hack - we cannot assume that the profile is at this document, but we will live with it for now\n const webId = sym(`${pod}profile/card#me`)\n await fetcher.load(webId)\n return webId\n}\n\nfunction getName (store: IndexedFormula, ownersProfile: NamedNode): string {\n return (\n store.anyValue(ownersProfile, ns.vcard('fn'), null, ownersProfile.doc()) ||\n store.anyValue(ownersProfile, ns.foaf('name'), null, ownersProfile.doc()) ||\n new URL(ownersProfile.uri).host.split('.')[0]\n )\n}\n"],"mappings":"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"}
@@ -5,14 +5,14 @@
5
5
  ** This pane shows the content of a particular RDF resource
6
6
  ** or at least the RDF semantics we attribute to that resource.
7
7
  */
8
+
8
9
  // To do: - Only take data from one graph
9
10
  // - Only do forwards not backward?
10
11
  // - Expand automatically all the way down
11
12
  // - original source view? Use ffox view source
12
- var UI = require('solid-ui');
13
13
 
14
+ var UI = require('solid-ui');
14
15
  var $rdf = require('rdflib');
15
-
16
16
  var ns = UI.ns;
17
17
  module.exports = {
18
18
  icon: UI.icons.originalIconBase + 'rdf_flyer.24.gif',
@@ -22,62 +22,51 @@ module.exports = {
22
22
  if ('http://www.w3.org/2007/ont/link#ProtocolEvent' in context.session.store.findTypeURIs(subject)) {
23
23
  return null;
24
24
  }
25
-
26
25
  var n = context.session.store.statementsMatching(undefined, undefined, undefined, subject).length;
27
26
  if (n === 0) return null;
28
27
  return 'Data (' + n + ')';
29
28
  },
30
-
31
29
  /*
32
30
  shouldGetFocus: function(subject) {
33
31
  return store.whether(subject, UI.ns.rdf('type'), UI.ns.link('RDFDocument'))
34
32
  },
35
33
  */
36
34
  statementsAsTables: function statementsAsTables(sts, context, initialRoots) {
37
- var myDocument = context.dom; // const outliner = context.getOutliner(myDocument)
38
-
35
+ var myDocument = context.dom;
36
+ // const outliner = context.getOutliner(myDocument)
39
37
  var rep = myDocument.createElement('table');
40
38
  var sz = UI.rdf.Serializer(context.session.store);
41
39
  var res = sz.rootSubjects(sts);
42
40
  var roots = res.roots;
43
41
  var subjects = res.subjects;
44
42
  var loopBreakers = res.loopBreakers;
45
-
46
43
  for (var x in loopBreakers) {
47
44
  console.log('\tdataContentPane: loopbreaker:' + x);
48
45
  }
49
-
50
46
  var doneBnodes = {}; // For preventing looping
51
-
52
47
  var referencedBnodes = {}; // Bnodes which need to be named alas
53
- // The property tree for a single subject or anonymous node
54
48
 
49
+ // The property tree for a single subject or anonymous node
55
50
  function propertyTree(subject) {
56
51
  // print('Proprty tree for '+subject)
57
52
  var rep = myDocument.createElement('table');
58
53
  var lastPred = null;
59
54
  var sts = subjects[sz.toStr(subject)]; // relevant statements
60
-
61
55
  if (!sts) {
62
56
  // No statements in tree
63
57
  rep.appendChild(myDocument.createTextNode('...')); // just empty bnode as object
64
-
65
58
  return rep;
66
59
  }
67
-
68
60
  sts.sort();
69
61
  var same = 0;
70
62
  var predicateTD; // The cell which holds the predicate
71
-
72
63
  for (var i = 0; i < sts.length; i++) {
73
64
  var st = sts[i];
74
65
  var tr = myDocument.createElement('tr');
75
-
76
66
  if (st.predicate.uri !== lastPred) {
77
67
  if (lastPred && same > 1) {
78
68
  predicateTD.setAttribute('rowspan', '' + same);
79
69
  }
80
-
81
70
  predicateTD = myDocument.createElement('td');
82
71
  predicateTD.setAttribute('class', 'pred');
83
72
  var anchor = myDocument.createElement('a');
@@ -89,22 +78,19 @@ module.exports = {
89
78
  lastPred = st.predicate.uri;
90
79
  same = 0;
91
80
  }
92
-
93
81
  same++;
94
82
  var objectTD = myDocument.createElement('td');
95
83
  objectTD.appendChild(objectTree(st.object));
96
84
  tr.appendChild(objectTD);
97
85
  rep.appendChild(tr);
98
86
  }
99
-
100
87
  if (lastPred && same > 1) predicateTD.setAttribute('rowspan', '' + same);
101
88
  return rep;
102
- } // Convert a set of statements into a nested tree of tables
103
-
89
+ }
104
90
 
91
+ // Convert a set of statements into a nested tree of tables
105
92
  function objectTree(obj) {
106
93
  var res, anchor;
107
-
108
94
  switch (obj.termType) {
109
95
  case 'NamedNode':
110
96
  anchor = myDocument.createElement('a');
@@ -112,7 +98,6 @@ module.exports = {
112
98
  anchor.addEventListener('click', UI.widgets.openHrefInOutlineMode, true);
113
99
  anchor.appendChild(myDocument.createTextNode(UI.utils.label(obj)));
114
100
  return anchor;
115
-
116
101
  case 'Literal':
117
102
  if (!obj.datatype || !obj.datatype.uri) {
118
103
  res = myDocument.createElement('div');
@@ -123,10 +108,8 @@ module.exports = {
123
108
  res = myDocument.createElement('div');
124
109
  res.setAttribute('class', 'embeddedXHTML');
125
110
  res.innerHTML = obj.value; // Try that @@@ beware embedded dangerous code
126
-
127
111
  return res;
128
112
  }
129
-
130
113
  return myDocument.createTextNode(obj.value);
131
114
  // placeholder - could be smarter,
132
115
 
@@ -135,56 +118,43 @@ module.exports = {
135
118
  if (obj.toNT() in doneBnodes) {
136
119
  // Break infinite recursion
137
120
  referencedBnodes[obj.toNT()] = true;
138
-
139
121
  var _anchor = myDocument.createElement('a');
140
-
141
122
  _anchor.setAttribute('href', '#' + obj.toNT().slice(2));
142
-
143
123
  _anchor.setAttribute('class', 'bnodeRef');
144
-
145
124
  _anchor.textContent = '*' + obj.toNT().slice(3);
146
125
  return _anchor;
147
126
  }
148
-
149
127
  doneBnodes[obj.toNT()] = true; // Flag to prevent infinite recursion in propertyTree
150
-
151
128
  var newTable = propertyTree(obj);
152
129
  doneBnodes[obj.toNT()] = newTable; // Track where we mentioned it first
153
-
154
130
  if (UI.utils.ancestor(newTable, 'TABLE') && UI.utils.ancestor(newTable, 'TABLE').style.backgroundColor === 'white') {
155
131
  newTable.style.backgroundColor = '#eee';
156
132
  } else {
157
133
  newTable.style.backgroundColor = 'white';
158
134
  }
159
-
160
135
  return newTable;
161
136
  }
162
-
163
137
  case 'Collection':
164
138
  res = myDocument.createElement('table');
165
139
  res.setAttribute('class', 'collectionAsTables');
166
-
167
140
  for (var i = 0; i < obj.elements.length; i++) {
168
141
  var tr = myDocument.createElement('tr');
169
142
  res.appendChild(tr);
170
143
  tr.appendChild(objectTree(obj.elements[i]));
171
144
  }
172
-
173
145
  return res;
174
-
175
146
  case 'Graph':
176
147
  res = context.session.paneRegistry.byName('dataContents').statementsAsTables(obj.statements, context);
177
148
  res.setAttribute('class', 'nestedFormula');
178
149
  return res;
179
-
180
150
  case 'Variable':
181
151
  res = myDocument.createTextNode('?' + obj.uri);
182
152
  return res;
183
153
  }
184
-
185
154
  throw new Error('Unhandled node type: ' + obj.termType);
186
- } // roots.sort()
155
+ }
187
156
 
157
+ // roots.sort()
188
158
 
189
159
  if (initialRoots) {
190
160
  roots = initialRoots.concat(roots.filter(function (x) {
@@ -192,11 +162,9 @@ module.exports = {
192
162
  // Max 2
193
163
  if (x.sameTerm(initialRoots[i])) return false;
194
164
  }
195
-
196
165
  return true;
197
166
  }));
198
167
  }
199
-
200
168
  for (var i = 0; i < roots.length; i++) {
201
169
  var tr = myDocument.createElement('tr');
202
170
  rep.appendChild(tr);
@@ -205,7 +173,6 @@ module.exports = {
205
173
  var TDTree = myDocument.createElement('td');
206
174
  tr.appendChild(TDTree);
207
175
  var root = roots[i];
208
-
209
176
  if (root.termType === 'BlankNode') {
210
177
  subjectTD.appendChild(myDocument.createTextNode(UI.utils.label(root))); // Don't recurse!
211
178
  } else {
@@ -214,31 +181,27 @@ module.exports = {
214
181
 
215
182
  TDTree.appendChild(propertyTree(root));
216
183
  }
217
-
218
184
  for (var bNT in referencedBnodes) {
219
185
  // Add number to refer to
220
- var table = doneBnodes[bNT]; // let tr = myDocument.createElement('tr')
221
-
186
+ var table = doneBnodes[bNT];
187
+ // let tr = myDocument.createElement('tr')
222
188
  var anchor = myDocument.createElement('a');
223
189
  anchor.setAttribute('id', bNT.slice(2));
224
190
  anchor.setAttribute('class', 'bnodeDef');
225
191
  anchor.textContent = bNT.slice(3) + ')';
226
192
  table.insertBefore(anchor, table.firstChild);
227
193
  }
228
-
229
194
  return rep;
230
195
  },
231
196
  // statementsAsTables
232
197
  // View the data in a file in user-friendly way
233
198
  render: function render(subject, context) {
234
199
  var myDocument = context.dom;
235
-
236
200
  function alternativeRendering() {
237
201
  var sz = UI.rdf.Serializer(context.session.store);
238
202
  var res = sz.rootSubjects(sts);
239
203
  var roots = res.roots;
240
204
  var p = {};
241
-
242
205
  p.render = function (s2) {
243
206
  var div = myDocument.createElement('div');
244
207
  div.setAttribute('class', 'withinDocumentPane');
@@ -248,7 +211,6 @@ module.exports = {
248
211
  });
249
212
  return div;
250
213
  };
251
-
252
214
  for (var i = 0; i < roots.length; i++) {
253
215
  var tr = myDocument.createElement('TR');
254
216
  var root = roots[i];
@@ -261,27 +223,23 @@ module.exports = {
261
223
  });
262
224
  }
263
225
  }
264
-
265
226
  function mainRendering() {
266
227
  var initialRoots = []; // Ordering: start with stuff about this doc
267
-
268
228
  if (kb.holds(subject, undefined, undefined, subject)) {
269
229
  initialRoots.push(subject);
270
- } // Then about the primary topic of the document if any
271
-
272
-
230
+ }
231
+ // Then about the primary topic of the document if any
273
232
  var ps = kb.any(subject, UI.ns.foaf('primaryTopic'), undefined, subject);
274
233
  if (ps) initialRoots.push(ps);
275
234
  div.appendChild(context.session.paneRegistry.byName('dataContents').statementsAsTables(sts, context, initialRoots));
276
235
  }
277
-
278
236
  var outliner = context.getOutliner(myDocument);
279
237
  var kb = context.session.store;
280
238
  var div = myDocument.createElement('div');
281
- div.setAttribute('class', 'dataContentPane'); // Because of smushing etc, this will not be a copy of the original source
239
+ div.setAttribute('class', 'dataContentPane');
240
+ // Because of smushing etc, this will not be a copy of the original source
282
241
  // We could instead either fetch and re-parse the source,
283
242
  // or we could keep all the pre-smushed triples.
284
-
285
243
  var sts = kb.statementsMatching(undefined, undefined, undefined, subject); // @@ slow with current store!
286
244
 
287
245
  if ($rdf.keepThisCodeForLaterButDisableFerossConstantConditionPolice) {
@@ -289,7 +247,6 @@ module.exports = {
289
247
  } else {
290
248
  mainRendering();
291
249
  }
292
-
293
250
  return div;
294
251
  }
295
252
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dataContentPane.js","names":["UI","require","$rdf","ns","module","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","session","store","findTypeURIs","n","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","i","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","keepThisCodeForLaterButDisableFerossConstantConditionPolice"],"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\nconst UI = require('solid-ui')\nconst $rdf = require('rdflib')\nconst ns = UI.ns\n\nmodule.exports = {\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 ($rdf.keepThisCodeForLaterButDisableFerossConstantConditionPolice) {\n alternativeRendering()\n } else {\n mainRendering()\n }\n return div\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dataContentPane.js","names":["UI","require","$rdf","ns","module","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","session","store","findTypeURIs","n","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","i","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","keepThisCodeForLaterButDisableFerossConstantConditionPolice"],"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\nconst UI = require('solid-ui')\nconst $rdf = require('rdflib')\nconst ns = UI.ns\n\nmodule.exports = {\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 ($rdf.keepThisCodeForLaterButDisableFerossConstantConditionPolice) {\n alternativeRendering()\n } else {\n mainRendering()\n }\n return div\n }\n}\n"],"mappings":"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"}