solid-panes 3.5.27 → 3.5.28-59efa615

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 +15 -9
  18. package/lib/RDFXMLPane.js.map +1 -1
  19. package/lib/argument/argumentPane.js +12 -11
  20. package/lib/argument/argumentPane.js.map +1 -1
  21. package/lib/attach/attachPane.js +58 -90
  22. package/lib/attach/attachPane.js.map +1 -1
  23. package/lib/audio/audioPane.js +19 -37
  24. package/lib/audio/audioPane.js.map +1 -1
  25. package/lib/classInstancePane.js +21 -22
  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 +96 -154
  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 +27 -49
  38. package/lib/dashboard/homepage.js.map +1 -1
  39. package/lib/dataContentPane.js +26 -61
  40. package/lib/dataContentPane.js.map +1 -1
  41. package/lib/defaultPane.js +23 -23
  42. package/lib/defaultPane.js.map +1 -1
  43. package/lib/dokieli/dokieliPane.js +29 -34
  44. package/lib/dokieli/dokieliPane.js.map +1 -1
  45. package/lib/dokieli/new.js +6 -1
  46. package/lib/dokieli/new.js.map +1 -1
  47. package/lib/form/pane.js +34 -45
  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 +49 -67
  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 +19 -14
  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 +6 -20
  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 +66 -100
  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 +17 -30
  78. package/lib/mainPage/index.js.map +1 -1
  79. package/lib/microblogPane/microblogPane.js +182 -321
  80. package/lib/microblogPane/microblogPane.js.map +1 -1
  81. package/lib/n3Pane.js +12 -8
  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 +21 -35
  88. package/lib/outline/licenseOptions.js.map +1 -1
  89. package/lib/outline/manager.js +740 -1176
  90. package/lib/outline/manager.js.map +1 -1
  91. package/lib/outline/manager.test.js +16 -25
  92. package/lib/outline/manager.test.js.map +1 -1
  93. package/lib/outline/outlineIcons.js +39 -26
  94. package/lib/outline/outlineIcons.js.map +1 -1
  95. package/lib/outline/propertyViews.d.ts +3 -2
  96. package/lib/outline/propertyViews.d.ts.map +1 -1
  97. package/lib/outline/propertyViews.js +7 -15
  98. package/lib/outline/propertyViews.js.map +1 -1
  99. package/lib/outline/propertyViews.test.js +7 -7
  100. package/lib/outline/propertyViews.test.js.map +1 -1
  101. package/lib/outline/queryByExample.js +28 -80
  102. package/lib/outline/queryByExample.js.map +1 -1
  103. package/lib/outline/userInput.js +221 -459
  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 +11 -21
  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 +1 -1
  121. package/lib/profile/editProfile.view.js +22 -23
  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 +99 -54
  128. package/lib/registerPanes.js.map +1 -1
  129. package/lib/schedule/formsForSchedule.js +6 -1
  130. package/lib/schedule/formsForSchedule.js.map +1 -1
  131. package/lib/schedule/schedulePane.js +71 -126
  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 +21 -21
  138. package/lib/slideshow/slideshowPane.js.map +1 -1
  139. package/lib/socialPane.js +58 -135
  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 +32 -48
  144. package/lib/tabbed/tabbedPane.js.map +1 -1
  145. package/lib/tableViewPane.js +15 -9
  146. package/lib/tableViewPane.js.map +1 -1
  147. package/lib/test-import-export/common.js +8 -3
  148. package/lib/test-import-export/common.js.map +1 -1
  149. package/lib/test-import-export/edit-importer.js +10 -14
  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 +38 -91
  154. package/lib/transaction/pane.js.map +1 -1
  155. package/lib/transaction/period.js +27 -71
  156. package/lib/transaction/period.js.map +1 -1
  157. package/lib/trip/tripPane.js +38 -35
  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 +12 -35
  162. package/lib/trustedApplications/trustedApplications.dom.js.map +1 -1
  163. package/lib/trustedApplications/trustedApplications.test.js +6 -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 +1 -11
  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 +38 -61
  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 +30 -29
  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 +11 -7
  184. package/lib/video/videoPane.js.map +1 -1
  185. package/package.json +26 -26
  186. package/src/RDFXMLPane.js +2 -2
  187. package/src/argument/argumentPane.js +1 -1
  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 +3 -3
  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 +3 -3
  196. package/src/chatPreferencesForm.ttl +0 -0
  197. package/src/classInstancePane.js +3 -3
  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 +3 -4
  210. package/src/defaultPane.js +3 -3
  211. package/src/dokieli/Makefile +0 -0
  212. package/src/dokieli/dokieliPane.js +5 -5
  213. package/src/dokieli/new.html +0 -0
  214. package/src/dokieli/new.js +1 -1
  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 +2 -2
  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 +2 -2
  225. package/src/index.ts +1 -1
  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 +1 -1
  248. package/src/n3Pane.js +2 -2
  249. package/src/outline/context.ts +0 -0
  250. package/src/outline/licenseOptions.js +9 -8
  251. package/src/outline/manager.js +18 -20
  252. package/src/outline/manager.test.ts +6 -0
  253. package/src/outline/outlineIcons.js +4 -2
  254. package/src/outline/propertyViews.test.ts +7 -1
  255. package/src/outline/propertyViews.ts +3 -3
  256. package/src/outline/queryByExample.js +3 -9
  257. package/src/outline/userInput.js +1 -1
  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 +3 -3
  266. package/src/profile/editProfile.view.ts +20 -0
  267. package/src/profile/profile.dom.ts +0 -0
  268. package/src/profile/profileFormText.ttl +0 -0
  269. package/src/registerPanes.js +92 -52
  270. package/src/schedule/Makefile +0 -0
  271. package/src/schedule/formsForSchedule.js +1 -1
  272. package/src/schedule/formsForSchedule.ttl +0 -0
  273. package/src/schedule/schedulePane.js +6 -2
  274. package/src/sharing/sharingPane.ts +0 -0
  275. package/src/slideshow/slideshowPane.js +3 -6
  276. package/src/socialPane.js +4 -5
  277. package/src/style/tabbedtab.css +0 -0
  278. package/src/tabbed/tabbedPane.ts +0 -0
  279. package/src/tableViewPane.js +3 -3
  280. package/src/test-import-export/common.js +1 -1
  281. package/src/test-import-export/edit-importer.js +5 -10
  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 +3 -3
  287. package/src/transaction/period.js +2 -2
  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 +3 -3
  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 +4 -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 +3 -3
  302. package/src/versionInfo.ts +14 -14
  303. package/src/video/videoPane.js +3 -3
  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
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var UI = _interopRequireWildcard(require("solid-ui"));
9
+ var $rdf = _interopRequireWildcard(require("rdflib"));
10
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
3
12
  /* Single audio play Pane
4
13
  **
5
14
  */
6
- var UI = require('solid-ui');
7
-
8
- var $rdf = require('rdflib');
9
15
 
10
16
  var ns = UI.ns;
11
- module.exports = {
17
+ var _default = {
12
18
  icon: UI.icons.iconBase + 'noun_534313.svg',
13
19
  name: 'audio',
14
20
  // Does the subject deserve an audio play pane?
@@ -16,11 +22,9 @@ module.exports = {
16
22
  var kb = context.session.store;
17
23
  var typeURIs = kb.findTypeURIs(subject);
18
24
  var prefix = $rdf.Util.mediaTypeClass('audio/*').uri.split('*')[0];
19
-
20
25
  for (var t in typeURIs) {
21
26
  if (t.startsWith(prefix)) return 'Play audio';
22
27
  }
23
-
24
28
  return null;
25
29
  },
26
30
  render: function render(subject, context) {
@@ -32,46 +36,39 @@ module.exports = {
32
36
  chainAlbums: true,
33
37
  loop: false
34
38
  };
35
-
36
39
  var removeExtension = function removeExtension(str) {
37
40
  var dot = str.lastIndexOf('.');
38
41
  if (dot < 0) return str; // if any
39
-
40
42
  var slash = str.lastIndexOf('/');
41
43
  if (dot < slash) return str;
42
44
  return str.slice(0, dot);
43
- }; // True if there is another file like song.mp3 when this is "song 1.mp3"
45
+ };
46
+
47
+ // True if there is another file like song.mp3 when this is "song 1.mp3"
44
48
  // or this is song.m4a
45
49
  //
46
-
47
-
48
50
  var looksRedundant = function looksRedundant(x) {
49
51
  var folder = kb.any(undefined, ns.ldp('contains'), x);
50
52
  if (!folder) return false;
51
53
  var contents = kb.each(folder, ns.ldp('contains'));
52
54
  if (contents.length < 2) return false;
53
55
  var thisName = x.uri;
54
-
55
56
  for (var k = 0; k < contents.length; k++) {
56
57
  var otherName = contents[k].uri;
57
-
58
58
  if (thisName.length > otherName.length && thisName.startsWith(removeExtension(otherName))) {
59
59
  return true;
60
60
  }
61
-
62
61
  if (thisName.endsWith('.m4a') && otherName.endsWith('.mp3') && removeExtension(thisName) === removeExtension(otherName)) {
63
62
  return true;
64
63
  }
65
64
  }
66
-
67
65
  return false;
68
- }; // Alternative methods could include:
69
- // Accesing metadata in the audio contol, or paring the audio file
70
-
66
+ };
71
67
 
68
+ // Alternative methods could include:
69
+ // Accesing metadata in the audio contol, or paring the audio file
72
70
  var guessNames = function guessNames(x) {
73
71
  var a = x.uri.split('/').slice(-3); // Hope artist, album, track
74
-
75
72
  var decode = function decode(str) {
76
73
  try {
77
74
  return decodeURIComponent(str);
@@ -79,41 +76,34 @@ module.exports = {
79
76
  return str;
80
77
  }
81
78
  };
82
-
83
79
  artistRow.textContent = decode(a[0]);
84
80
  albumRow.textContent = decode(a[1]);
85
81
  trackRow.textContent = decode(removeExtension(a[2]));
86
82
  };
87
-
88
83
  var moveOn = function moveOn(current, level) {
89
84
  return new Promise(function (resolve) {
90
85
  level = level || 0;
91
- if (!options.chain) return resolve(null); // Ideally navigate graph else cheat with URI munging:
92
-
86
+ if (!options.chain) return resolve(null);
87
+ // Ideally navigate graph else cheat with URI munging:
93
88
  var folder = kb.any(undefined, ns.ldp('contains'), current) || current.dir();
94
89
  if (!folder) return resolve(null);
95
90
  kb.fetcher.load(folder).then(function (_xhr) {
96
91
  var contents = kb.each(folder, ns.ldp('contains')); // @@ load if not loaded
97
92
  // if (contents.length < 2) return resolve(null) NO might move on from 1-track album
98
-
99
93
  var j;
100
94
  contents.sort(); // sort by URI which hopefully will get tracks in order
101
-
102
95
  for (var i = 0; i < contents.length; i++) {
103
96
  if (current.uri === contents[i].uri) {
104
97
  j = (i + 1) % contents.length;
105
-
106
98
  if (j === 0) {
107
99
  if (!options.chainAlbums) {
108
100
  if (options.loop) {
109
101
  return resolve(contents[j]);
110
102
  }
111
-
112
103
  return resolve(null); // No more music needed
113
104
  } else {
114
105
  // chain albums
115
106
  if (level === 1 || !options.chainAlbums) return resolve(null); // limit of navigating treee
116
-
117
107
  moveOn(folder, level + 1).then(function (folder2) {
118
108
  if (folder2) {
119
109
  kb.fetcher.load(folder2).then(function (_xhr) {
@@ -131,7 +121,6 @@ module.exports = {
131
121
  }
132
122
  }
133
123
  } // for
134
-
135
124
  });
136
125
  });
137
126
  };
@@ -139,7 +128,6 @@ module.exports = {
139
128
  var endedListener = function endedListener(event) {
140
129
  var current = kb.sym(event.target.getAttribute('src'));
141
130
  if (!options.chain) return;
142
-
143
131
  var tryNext = function tryNext(cur) {
144
132
  var current = cur;
145
133
  moveOn(current).then(function (next) {
@@ -147,12 +135,10 @@ module.exports = {
147
135
  console.log('No successor to ' + current);
148
136
  return;
149
137
  }
150
-
151
138
  if (!looksRedundant(next)) {
152
139
  console.log('Moving on to ' + next);
153
140
  guessNames(next);
154
141
  controlRow.appendChild(audioControl(next, true)); // Force autoplay
155
-
156
142
  controlRow.removeChild(event.target);
157
143
  } else {
158
144
  console.log('Ignoring redundant ' + next);
@@ -160,15 +146,12 @@ module.exports = {
160
146
  }
161
147
  });
162
148
  };
163
-
164
149
  tryNext(current);
165
150
  };
166
-
167
151
  var audioControl = function audioControl(song, autoplay) {
168
152
  var audio = dom.createElement('audio');
169
153
  audio.setAttribute('controls', 'yes');
170
154
  audio.setAttribute('src', song.uri);
171
-
172
155
  if (autoplay) {
173
156
  audio.setAttribute('autoplay', 'autoplay'); // Make this a personal preference
174
157
  }
@@ -176,7 +159,6 @@ module.exports = {
176
159
  audio.addEventListener('ended', endedListener, false);
177
160
  return audio;
178
161
  };
179
-
180
162
  var div = dom.createElement('div');
181
163
  var table = div.appendChild(dom.createElement('table'));
182
164
  var labelStyle = 'padding: 0.3em; color:white; background-color: black;';
@@ -189,7 +171,6 @@ module.exports = {
189
171
  var controlRow = table.appendChild(dom.createElement('tr'));
190
172
  guessNames(subject);
191
173
  controlRow.appendChild(audioControl(subject, options.autoplay));
192
-
193
174
  if (!kb.holds(undefined, ns.ldp('contains'), subject) && subject.dir()) {
194
175
  kb.fetcher.load(subject.dir()); // Prefetch enclosing @@ or playlist
195
176
  }
@@ -197,4 +178,5 @@ module.exports = {
197
178
  return div;
198
179
  }
199
180
  }; // ends
181
+ exports["default"] = _default;
200
182
  //# sourceMappingURL=audioPane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audioPane.js","names":["UI","require","$rdf","ns","module","exports","icon","icons","iconBase","name","label","subject","context","kb","session","store","typeURIs","findTypeURIs","prefix","Util","mediaTypeClass","uri","split","t","startsWith","render","dom","options","autoplay","chain","chainAlbums","loop","removeExtension","str","dot","lastIndexOf","slash","slice","looksRedundant","x","folder","any","undefined","ldp","contents","each","length","thisName","k","otherName","endsWith","guessNames","a","decode","decodeURIComponent","e","artistRow","textContent","albumRow","trackRow","moveOn","current","level","Promise","resolve","dir","fetcher","load","then","_xhr","j","sort","i","folder2","console","log","endedListener","event","sym","target","getAttribute","tryNext","cur","next","controlRow","appendChild","audioControl","removeChild","song","audio","createElement","setAttribute","addEventListener","div","table","labelStyle","style","cssText","holds"],"sources":["../../src/audio/audioPane.js"],"sourcesContent":["/* Single audio play Pane\n **\n */\nconst UI = require('solid-ui')\nconst $rdf = require('rdflib')\nconst ns = UI.ns\n\nmodule.exports = {\n icon: UI.icons.iconBase + 'noun_534313.svg',\n\n name: 'audio',\n\n // Does the subject deserve an audio play pane?\n label: function (subject, context) {\n const kb = context.session.store\n const typeURIs = kb.findTypeURIs(subject)\n\n const prefix = $rdf.Util.mediaTypeClass('audio/*').uri.split('*')[0]\n for (const t in typeURIs) {\n if (t.startsWith(prefix)) return 'Play audio'\n }\n return null\n },\n\n render: function (subject, context) {\n const kb = context.session.store\n const dom = context.dom\n const options = {\n autoplay: false,\n chain: true,\n chainAlbums: true,\n loop: false\n }\n\n const removeExtension = function (str) {\n const dot = str.lastIndexOf('.')\n if (dot < 0) return str // if any\n const slash = str.lastIndexOf('/')\n if (dot < slash) return str\n return str.slice(0, dot)\n }\n\n // True if there is another file like song.mp3 when this is \"song 1.mp3\"\n // or this is song.m4a\n //\n const looksRedundant = function (x) {\n const folder = kb.any(undefined, ns.ldp('contains'), x)\n if (!folder) return false\n const contents = kb.each(folder, ns.ldp('contains'))\n if (contents.length < 2) return false\n const thisName = x.uri\n for (let k = 0; k < contents.length; k++) {\n const otherName = contents[k].uri\n if (\n thisName.length > otherName.length &&\n thisName.startsWith(removeExtension(otherName))\n ) {\n return true\n }\n if (\n thisName.endsWith('.m4a') &&\n otherName.endsWith('.mp3') &&\n removeExtension(thisName) === removeExtension(otherName)\n ) {\n return true\n }\n }\n return false\n }\n\n // Alternative methods could include:\n // Accesing metadata in the audio contol, or paring the audio file\n const guessNames = function (x) {\n const a = x.uri.split('/').slice(-3) // Hope artist, album, track\n const decode = function (str) {\n try {\n return decodeURIComponent(str)\n } catch (e) {\n return str\n }\n }\n artistRow.textContent = decode(a[0])\n albumRow.textContent = decode(a[1])\n trackRow.textContent = decode(removeExtension(a[2]))\n }\n\n const moveOn = function (current, level) {\n return new Promise(function (resolve) {\n level = level || 0\n if (!options.chain) return resolve(null)\n // Ideally navigate graph else cheat with URI munging:\n const folder =\n kb.any(undefined, ns.ldp('contains'), current) || current.dir()\n if (!folder) return resolve(null)\n kb.fetcher.load(folder).then(function (_xhr) {\n const contents = kb.each(folder, ns.ldp('contains')) // @@ load if not loaded\n // if (contents.length < 2) return resolve(null) NO might move on from 1-track album\n let j\n contents.sort() // sort by URI which hopefully will get tracks in order\n for (let i = 0; i < contents.length; i++) {\n if (current.uri === contents[i].uri) {\n j = (i + 1) % contents.length\n if (j === 0) {\n if (!options.chainAlbums) {\n if (options.loop) {\n return resolve(contents[j])\n }\n return resolve(null) // No more music needed\n } else {\n // chain albums\n if (level === 1 || !options.chainAlbums) return resolve(null) // limit of navigating treee\n moveOn(folder, level + 1).then(function (folder2) {\n if (folder2) {\n kb.fetcher.load(folder2).then(function (_xhr) {\n const contents = kb.each(folder2, ns.ldp('contains'))\n if (contents.length === 0) return resolve(null)\n contents.sort()\n console.log('New Album: ' + folder2)\n return resolve(contents[0]) // Start off new album\n })\n }\n })\n }\n } else {\n return resolve(contents[j])\n }\n }\n } // for\n })\n })\n }\n const endedListener = function (event) {\n const current = kb.sym(event.target.getAttribute('src'))\n if (!options.chain) return\n const tryNext = function (cur) {\n const current = cur\n moveOn(current).then(function (next) {\n if (!next) {\n console.log('No successor to ' + current)\n return\n }\n if (!looksRedundant(next)) {\n console.log('Moving on to ' + next)\n guessNames(next)\n controlRow.appendChild(audioControl(next, true)) // Force autoplay\n controlRow.removeChild(event.target)\n } else {\n console.log('Ignoring redundant ' + next)\n tryNext(next)\n }\n })\n }\n tryNext(current)\n }\n\n const audioControl = function (song, autoplay) {\n const audio = dom.createElement('audio')\n audio.setAttribute('controls', 'yes')\n audio.setAttribute('src', song.uri)\n if (autoplay) {\n audio.setAttribute('autoplay', 'autoplay') // Make this a personal preference\n }\n audio.addEventListener('ended', endedListener, false)\n return audio\n }\n\n const div = dom.createElement('div')\n const table = div.appendChild(dom.createElement('table'))\n const labelStyle = 'padding: 0.3em; color:white; background-color: black;'\n const artistRow = table.appendChild(dom.createElement('tr'))\n artistRow.style.cssText = labelStyle\n const albumRow = table.appendChild(dom.createElement('tr'))\n albumRow.style.cssText = labelStyle\n const trackRow = table.appendChild(dom.createElement('tr'))\n trackRow.style.cssText = labelStyle\n const controlRow = table.appendChild(dom.createElement('tr'))\n guessNames(subject)\n controlRow.appendChild(audioControl(subject, options.autoplay))\n\n if (!kb.holds(undefined, ns.ldp('contains'), subject) && subject.dir()) {\n kb.fetcher.load(subject.dir()) // Prefetch enclosing @@ or playlist\n }\n\n return div\n }\n}\n\n// ends\n"],"mappings":"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"}
1
+ {"version":3,"file":"audioPane.js","names":["ns","UI","icon","icons","iconBase","name","label","subject","context","kb","session","store","typeURIs","findTypeURIs","prefix","$rdf","Util","mediaTypeClass","uri","split","t","startsWith","render","dom","options","autoplay","chain","chainAlbums","loop","removeExtension","str","dot","lastIndexOf","slash","slice","looksRedundant","x","folder","any","undefined","ldp","contents","each","length","thisName","k","otherName","endsWith","guessNames","a","decode","decodeURIComponent","e","artistRow","textContent","albumRow","trackRow","moveOn","current","level","Promise","resolve","dir","fetcher","load","then","_xhr","j","sort","i","folder2","console","log","endedListener","event","sym","target","getAttribute","tryNext","cur","next","controlRow","appendChild","audioControl","removeChild","song","audio","createElement","setAttribute","addEventListener","div","table","labelStyle","style","cssText","holds"],"sources":["../../src/audio/audioPane.js"],"sourcesContent":["/* Single audio play Pane\n **\n */\n import * as UI from 'solid-ui'\n import * as $rdf from 'rdflib'\nconst ns = UI.ns\n\nexport default {\n icon: UI.icons.iconBase + 'noun_534313.svg',\n\n name: 'audio',\n\n // Does the subject deserve an audio play pane?\n label: function (subject, context) {\n const kb = context.session.store\n const typeURIs = kb.findTypeURIs(subject)\n\n const prefix = $rdf.Util.mediaTypeClass('audio/*').uri.split('*')[0]\n for (const t in typeURIs) {\n if (t.startsWith(prefix)) return 'Play audio'\n }\n return null\n },\n\n render: function (subject, context) {\n const kb = context.session.store\n const dom = context.dom\n const options = {\n autoplay: false,\n chain: true,\n chainAlbums: true,\n loop: false\n }\n\n const removeExtension = function (str) {\n const dot = str.lastIndexOf('.')\n if (dot < 0) return str // if any\n const slash = str.lastIndexOf('/')\n if (dot < slash) return str\n return str.slice(0, dot)\n }\n\n // True if there is another file like song.mp3 when this is \"song 1.mp3\"\n // or this is song.m4a\n //\n const looksRedundant = function (x) {\n const folder = kb.any(undefined, ns.ldp('contains'), x)\n if (!folder) return false\n const contents = kb.each(folder, ns.ldp('contains'))\n if (contents.length < 2) return false\n const thisName = x.uri\n for (let k = 0; k < contents.length; k++) {\n const otherName = contents[k].uri\n if (\n thisName.length > otherName.length &&\n thisName.startsWith(removeExtension(otherName))\n ) {\n return true\n }\n if (\n thisName.endsWith('.m4a') &&\n otherName.endsWith('.mp3') &&\n removeExtension(thisName) === removeExtension(otherName)\n ) {\n return true\n }\n }\n return false\n }\n\n // Alternative methods could include:\n // Accesing metadata in the audio contol, or paring the audio file\n const guessNames = function (x) {\n const a = x.uri.split('/').slice(-3) // Hope artist, album, track\n const decode = function (str) {\n try {\n return decodeURIComponent(str)\n } catch (e) {\n return str\n }\n }\n artistRow.textContent = decode(a[0])\n albumRow.textContent = decode(a[1])\n trackRow.textContent = decode(removeExtension(a[2]))\n }\n\n const moveOn = function (current, level) {\n return new Promise(function (resolve) {\n level = level || 0\n if (!options.chain) return resolve(null)\n // Ideally navigate graph else cheat with URI munging:\n const folder =\n kb.any(undefined, ns.ldp('contains'), current) || current.dir()\n if (!folder) return resolve(null)\n kb.fetcher.load(folder).then(function (_xhr) {\n const contents = kb.each(folder, ns.ldp('contains')) // @@ load if not loaded\n // if (contents.length < 2) return resolve(null) NO might move on from 1-track album\n let j\n contents.sort() // sort by URI which hopefully will get tracks in order\n for (let i = 0; i < contents.length; i++) {\n if (current.uri === contents[i].uri) {\n j = (i + 1) % contents.length\n if (j === 0) {\n if (!options.chainAlbums) {\n if (options.loop) {\n return resolve(contents[j])\n }\n return resolve(null) // No more music needed\n } else {\n // chain albums\n if (level === 1 || !options.chainAlbums) return resolve(null) // limit of navigating treee\n moveOn(folder, level + 1).then(function (folder2) {\n if (folder2) {\n kb.fetcher.load(folder2).then(function (_xhr) {\n const contents = kb.each(folder2, ns.ldp('contains'))\n if (contents.length === 0) return resolve(null)\n contents.sort()\n console.log('New Album: ' + folder2)\n return resolve(contents[0]) // Start off new album\n })\n }\n })\n }\n } else {\n return resolve(contents[j])\n }\n }\n } // for\n })\n })\n }\n const endedListener = function (event) {\n const current = kb.sym(event.target.getAttribute('src'))\n if (!options.chain) return\n const tryNext = function (cur) {\n const current = cur\n moveOn(current).then(function (next) {\n if (!next) {\n console.log('No successor to ' + current)\n return\n }\n if (!looksRedundant(next)) {\n console.log('Moving on to ' + next)\n guessNames(next)\n controlRow.appendChild(audioControl(next, true)) // Force autoplay\n controlRow.removeChild(event.target)\n } else {\n console.log('Ignoring redundant ' + next)\n tryNext(next)\n }\n })\n }\n tryNext(current)\n }\n\n const audioControl = function (song, autoplay) {\n const audio = dom.createElement('audio')\n audio.setAttribute('controls', 'yes')\n audio.setAttribute('src', song.uri)\n if (autoplay) {\n audio.setAttribute('autoplay', 'autoplay') // Make this a personal preference\n }\n audio.addEventListener('ended', endedListener, false)\n return audio\n }\n\n const div = dom.createElement('div')\n const table = div.appendChild(dom.createElement('table'))\n const labelStyle = 'padding: 0.3em; color:white; background-color: black;'\n const artistRow = table.appendChild(dom.createElement('tr'))\n artistRow.style.cssText = labelStyle\n const albumRow = table.appendChild(dom.createElement('tr'))\n albumRow.style.cssText = labelStyle\n const trackRow = table.appendChild(dom.createElement('tr'))\n trackRow.style.cssText = labelStyle\n const controlRow = table.appendChild(dom.createElement('tr'))\n guessNames(subject)\n controlRow.appendChild(audioControl(subject, options.autoplay))\n\n if (!kb.holds(undefined, ns.ldp('contains'), subject) && subject.dir()) {\n kb.fetcher.load(subject.dir()) // Prefetch enclosing @@ or playlist\n }\n\n return div\n }\n}\n\n// ends\n"],"mappings":"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"}
@@ -1,51 +1,55 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.classInstancePane = void 0;
8
+ var UI = _interopRequireWildcard(require("solid-ui"));
9
+ var $rdf = _interopRequireWildcard(require("rdflib"));
10
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
3
12
  /* Class member Pane
4
13
  **
5
14
  ** This outline pane lists the members of a class
6
15
  */
7
- var UI = require('solid-ui');
8
-
9
- var $rdf = require('rdflib');
10
16
 
11
17
  var ns = UI.ns;
12
- module.exports = {
18
+ var classInstancePane = {
13
19
  icon: UI.icons.originalIconBase + 'tango/22-folder-open.png',
14
20
  name: 'classInstance',
15
21
  // Create a new folder in a Solid system,
22
+
16
23
  audience: [ns.solid('PowerUser')],
17
24
  label: function label(subject, context) {
18
25
  var kb = context.session.store;
19
26
  var n = kb.each(undefined, ns.rdf('type'), subject).length;
20
27
  if (n > 0) return 'List (' + n + ')'; // Show how many in hover text
21
-
22
28
  return null; // Suppress pane otherwise
23
29
  },
30
+
24
31
  render: function render(subject, context) {
25
32
  var dom = context.dom;
26
33
  var outliner = context.getOutliner(dom);
27
34
  var kb = context.session.store;
28
-
29
35
  var complain = function complain(message, color) {
30
36
  var pre = dom.createElement('pre');
31
37
  pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';');
32
38
  div.appendChild(pre);
33
39
  pre.appendChild(dom.createTextNode(message));
34
40
  };
35
-
36
41
  var div = dom.createElement('div');
37
42
  div.setAttribute('class', 'instancePane');
38
- div.setAttribute('style', ' border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em '); // If this is a class, look for all both explicit and implicit
43
+ div.setAttribute('style', ' border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em ');
39
44
 
45
+ // If this is a class, look for all both explicit and implicit
40
46
  var sts = kb.statementsMatching(undefined, ns.rdf('type'), subject);
41
-
42
47
  if (sts.length > 0) {
43
48
  var already = {};
44
49
  var more = [];
45
50
  sts.forEach(function (st) {
46
51
  already[st.subject.toNT()] = st;
47
52
  });
48
-
49
53
  for (var nt in kb.findMembersNT(subject)) {
50
54
  if (!already[nt]) {
51
55
  more.push($rdf.st(kb.fromNT(nt), ns.rdf('type'), subject)); // @@ no provenance
@@ -55,35 +59,29 @@ module.exports = {
55
59
  if (more.length) {
56
60
  complain('There are ' + sts.length + ' explicit and ' + more.length + ' implicit members of ' + UI.utils.label(subject));
57
61
  }
58
-
59
- if (subject.sameTerm(ns.rdf('Property'))) {// / Do not find all properties used as properties .. unless look at kb index
62
+ if (subject.sameTerm(ns.rdf('Property'))) {
63
+ // / Do not find all properties used as properties .. unless look at kb index
60
64
  } else if (subject.sameTerm(ns.rdfs('Class'))) {
61
65
  var uses = kb.statementsMatching(undefined, ns.rdf('type'), undefined);
62
66
  var usedTypes = {};
63
67
  uses.forEach(function (st) {
64
68
  usedTypes[st.object] = st;
65
69
  }); // Get unique
66
-
67
70
  var used = [];
68
-
69
71
  for (var i in usedTypes) {
70
72
  used.push($rdf.st($rdf.sym(i), ns.rdf('type'), ns.rdfs('Class')));
71
73
  }
72
-
73
74
  complain('Total of ' + uses.length + ' type statements and ' + used.length + ' unique types.');
74
75
  }
75
-
76
76
  if (sts.length > 10) {
77
77
  var tr = dom.createElement('TR');
78
- tr.appendChild(dom.createTextNode('' + sts.length)); // tr.AJAR_statement=sts[i]
79
-
78
+ tr.appendChild(dom.createTextNode('' + sts.length));
79
+ // tr.AJAR_statement=sts[i]
80
80
  div.appendChild(tr);
81
81
  }
82
-
83
82
  outliner.appendPropertyTRs(div, sts, true, function (_pred) {
84
83
  return true;
85
84
  });
86
-
87
85
  if (more.length) {
88
86
  complain('Implicit:');
89
87
  outliner.appendPropertyTRs(div, more, true, function (_pred) {
@@ -91,8 +89,9 @@ module.exports = {
91
89
  });
92
90
  }
93
91
  }
94
-
95
92
  return div;
96
93
  }
97
- }; // ends
94
+ };
95
+ // ends
96
+ exports.classInstancePane = classInstancePane;
98
97
  //# sourceMappingURL=classInstancePane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"classInstancePane.js","names":["UI","require","$rdf","ns","module","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","kb","session","store","n","each","undefined","rdf","length","render","dom","outliner","getOutliner","complain","message","color","pre","createElement","setAttribute","div","appendChild","createTextNode","sts","statementsMatching","already","more","forEach","st","toNT","nt","findMembersNT","push","fromNT","utils","sameTerm","rdfs","uses","usedTypes","object","used","i","sym","tr","appendPropertyTRs","_pred"],"sources":["../src/classInstancePane.js"],"sourcesContent":["/* Class member Pane\n **\n ** This outline pane lists the members of a class\n */\n\nconst UI = require('solid-ui')\nconst $rdf = require('rdflib')\n\nconst ns = UI.ns\n\nmodule.exports = {\n icon: UI.icons.originalIconBase + 'tango/22-folder-open.png',\n\n name: 'classInstance',\n\n // Create a new folder in a Solid system,\n\n audience: [ns.solid('PowerUser')],\n\n label: function (subject, context) {\n const kb = context.session.store\n const n = kb.each(undefined, ns.rdf('type'), subject).length\n if (n > 0) return 'List (' + n + ')' // Show how many in hover text\n return null // Suppress pane otherwise\n },\n\n render: function (subject, context) {\n const dom = context.dom\n const outliner = context.getOutliner(dom)\n const kb = context.session.store\n const complain = function complain (message, color) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n const div = dom.createElement('div')\n div.setAttribute('class', 'instancePane')\n div.setAttribute(\n 'style',\n ' border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em '\n )\n\n // If this is a class, look for all both explicit and implicit\n const sts = kb.statementsMatching(undefined, ns.rdf('type'), subject)\n if (sts.length > 0) {\n const already = {}\n const more = []\n sts.forEach(st => {\n already[st.subject.toNT()] = st\n })\n for (const nt in kb.findMembersNT(subject)) {\n if (!already[nt]) {\n more.push($rdf.st(kb.fromNT(nt), ns.rdf('type'), subject)) // @@ no provenance\n }\n }\n if (more.length) {\n complain(\n 'There are ' +\n sts.length +\n ' explicit and ' +\n more.length +\n ' implicit members of ' +\n UI.utils.label(subject)\n )\n }\n if (subject.sameTerm(ns.rdf('Property'))) {\n // / Do not find all properties used as properties .. unless look at kb index\n } else if (subject.sameTerm(ns.rdfs('Class'))) {\n const uses = kb.statementsMatching(undefined, ns.rdf('type'), undefined)\n const usedTypes = {}\n uses.forEach(function (st) {\n usedTypes[st.object] = st\n }) // Get unique\n const used = []\n for (const i in usedTypes) {\n used.push($rdf.st($rdf.sym(i), ns.rdf('type'), ns.rdfs('Class')))\n }\n complain(\n 'Total of ' +\n uses.length +\n ' type statements and ' +\n used.length +\n ' unique types.'\n )\n }\n\n if (sts.length > 10) {\n const tr = dom.createElement('TR')\n tr.appendChild(dom.createTextNode('' + sts.length))\n // tr.AJAR_statement=sts[i]\n div.appendChild(tr)\n }\n\n outliner.appendPropertyTRs(div, sts, true, function (_pred) {\n return true\n })\n\n if (more.length) {\n complain('Implicit:')\n outliner.appendPropertyTRs(div, more, true, function (_pred) {\n return true\n })\n }\n }\n\n return div\n }\n}\n// ends\n"],"mappings":"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"}
1
+ {"version":3,"file":"classInstancePane.js","names":["ns","UI","classInstancePane","icon","icons","originalIconBase","name","audience","solid","label","subject","context","kb","session","store","n","each","undefined","rdf","length","render","dom","outliner","getOutliner","complain","message","color","pre","createElement","setAttribute","div","appendChild","createTextNode","sts","statementsMatching","already","more","forEach","st","toNT","nt","findMembersNT","push","$rdf","fromNT","utils","sameTerm","rdfs","uses","usedTypes","object","used","i","sym","tr","appendPropertyTRs","_pred"],"sources":["../src/classInstancePane.js"],"sourcesContent":["/* Class member Pane\n **\n ** This outline pane lists the members of a class\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\n\nconst ns = UI.ns\n\nexport const classInstancePane = {\n icon: UI.icons.originalIconBase + 'tango/22-folder-open.png',\n\n name: 'classInstance',\n\n // Create a new folder in a Solid system,\n\n audience: [ns.solid('PowerUser')],\n\n label: function (subject, context) {\n const kb = context.session.store\n const n = kb.each(undefined, ns.rdf('type'), subject).length\n if (n > 0) return 'List (' + n + ')' // Show how many in hover text\n return null // Suppress pane otherwise\n },\n\n render: function (subject, context) {\n const dom = context.dom\n const outliner = context.getOutliner(dom)\n const kb = context.session.store\n const complain = function complain (message, color) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n const div = dom.createElement('div')\n div.setAttribute('class', 'instancePane')\n div.setAttribute(\n 'style',\n ' border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em '\n )\n\n // If this is a class, look for all both explicit and implicit\n const sts = kb.statementsMatching(undefined, ns.rdf('type'), subject)\n if (sts.length > 0) {\n const already = {}\n const more = []\n sts.forEach(st => {\n already[st.subject.toNT()] = st\n })\n for (const nt in kb.findMembersNT(subject)) {\n if (!already[nt]) {\n more.push($rdf.st(kb.fromNT(nt), ns.rdf('type'), subject)) // @@ no provenance\n }\n }\n if (more.length) {\n complain(\n 'There are ' +\n sts.length +\n ' explicit and ' +\n more.length +\n ' implicit members of ' +\n UI.utils.label(subject)\n )\n }\n if (subject.sameTerm(ns.rdf('Property'))) {\n // / Do not find all properties used as properties .. unless look at kb index\n } else if (subject.sameTerm(ns.rdfs('Class'))) {\n const uses = kb.statementsMatching(undefined, ns.rdf('type'), undefined)\n const usedTypes = {}\n uses.forEach(function (st) {\n usedTypes[st.object] = st\n }) // Get unique\n const used = []\n for (const i in usedTypes) {\n used.push($rdf.st($rdf.sym(i), ns.rdf('type'), ns.rdfs('Class')))\n }\n complain(\n 'Total of ' +\n uses.length +\n ' type statements and ' +\n used.length +\n ' unique types.'\n )\n }\n\n if (sts.length > 10) {\n const tr = dom.createElement('TR')\n tr.appendChild(dom.createTextNode('' + sts.length))\n // tr.AJAR_statement=sts[i]\n div.appendChild(tr)\n }\n\n outliner.appendPropertyTRs(div, sts, true, function (_pred) {\n return true\n })\n\n if (more.length) {\n complain('Implicit:')\n outliner.appendPropertyTRs(div, more, true, function (_pred) {\n return true\n })\n }\n }\n\n return div\n }\n}\n// ends\n"],"mappings":"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"}
File without changes
File without changes