solid-panes 3.7.3-3425a37d → 3.7.3-346708d2

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 (103) hide show
  1. package/dist/RDFXMLPane.js +58 -0
  2. package/dist/RDFXMLPane.js.map +1 -0
  3. package/dist/argument/argumentPane.js +61 -0
  4. package/dist/argument/argumentPane.js.map +1 -0
  5. package/dist/attach/attachPane.js +394 -0
  6. package/dist/attach/attachPane.js.map +1 -0
  7. package/dist/audio/audioPane.js +182 -0
  8. package/dist/audio/audioPane.js.map +1 -0
  9. package/dist/classInstancePane.js +92 -0
  10. package/dist/classInstancePane.js.map +1 -0
  11. package/dist/dashboard/basicPreferences.js +121 -129
  12. package/dist/dashboard/basicPreferences.js.map +1 -1
  13. package/dist/dashboard/dashboardPane.js +60 -54
  14. package/dist/dashboard/dashboardPane.js.map +1 -1
  15. package/dist/dashboard/homepage.js +45 -54
  16. package/dist/dashboard/homepage.js.map +1 -1
  17. package/dist/dataContentPane.js +259 -0
  18. package/dist/dataContentPane.js.map +1 -0
  19. package/dist/defaultPane.js +75 -0
  20. package/dist/defaultPane.js.map +1 -0
  21. package/dist/dokieli/dokieliPane.js +169 -0
  22. package/dist/dokieli/dokieliPane.js.map +1 -0
  23. package/dist/dokieli/new.js +28 -0
  24. package/dist/dokieli/new.js.map +1 -0
  25. package/dist/form/pane.js +185 -0
  26. package/dist/form/pane.js.map +1 -0
  27. package/dist/global.d.js +2 -0
  28. package/dist/global.d.js.map +1 -0
  29. package/dist/home/homePane.js +60 -55
  30. package/dist/home/homePane.js.map +1 -1
  31. package/dist/humanReadablePane.js +135 -0
  32. package/dist/humanReadablePane.js.map +1 -0
  33. package/dist/imagePane.js +70 -0
  34. package/dist/imagePane.js.map +1 -0
  35. package/dist/index.js +86 -25
  36. package/dist/index.js.map +1 -1
  37. package/dist/internal/internalPane.js +168 -179
  38. package/dist/internal/internalPane.js.map +1 -1
  39. package/dist/mainPage/footer.js +13 -7
  40. package/dist/mainPage/footer.js.map +1 -1
  41. package/dist/mainPage/header.js +59 -58
  42. package/dist/mainPage/header.js.map +1 -1
  43. package/dist/mainPage/index.js +19 -24
  44. package/dist/mainPage/index.js.map +1 -1
  45. package/dist/microblogPane/microblogPane.js +1031 -0
  46. package/dist/microblogPane/microblogPane.js.map +1 -0
  47. package/dist/n3Pane.js +56 -0
  48. package/dist/n3Pane.js.map +1 -0
  49. package/dist/outline/context.js +17 -11
  50. package/dist/outline/context.js.map +1 -1
  51. package/dist/outline/manager.js +1997 -0
  52. package/dist/outline/manager.js.map +1 -0
  53. package/dist/outline/outlineIcons.js +127 -0
  54. package/dist/outline/outlineIcons.js.map +1 -0
  55. package/dist/outline/propertyViews.js +39 -28
  56. package/dist/outline/propertyViews.js.map +1 -1
  57. package/dist/outline/queryByExample.js +285 -0
  58. package/dist/outline/queryByExample.js.map +1 -0
  59. package/dist/outline/userInput.js +1819 -0
  60. package/dist/outline/userInput.js.map +1 -0
  61. package/dist/outline/viewAsImage.js +13 -5
  62. package/dist/outline/viewAsImage.js.map +1 -1
  63. package/dist/outline/viewAsMbox.js +20 -11
  64. package/dist/outline/viewAsMbox.js.map +1 -1
  65. package/dist/pad/padPane.js +395 -404
  66. package/dist/pad/padPane.js.map +1 -1
  67. package/dist/playlist/playlistPane.js +124 -0
  68. package/dist/playlist/playlistPane.js.map +1 -0
  69. package/dist/registerPanes.js +146 -0
  70. package/dist/registerPanes.js.map +1 -0
  71. package/dist/schedule/schedulePane.js +888 -0
  72. package/dist/schedule/schedulePane.js.map +1 -0
  73. package/dist/sharing/sharingPane.js +36 -32
  74. package/dist/sharing/sharingPane.js.map +1 -1
  75. package/dist/slideshow/slideshowPane.js +80 -0
  76. package/dist/slideshow/slideshowPane.js.map +1 -0
  77. package/dist/socialPane.js +430 -0
  78. package/dist/socialPane.js.map +1 -0
  79. package/dist/tabbed/tabbedPane.js +54 -51
  80. package/dist/tabbed/tabbedPane.js.map +1 -1
  81. package/dist/tableViewPane.js +57 -0
  82. package/dist/tableViewPane.js.map +1 -0
  83. package/dist/transaction/pane.js +478 -0
  84. package/dist/transaction/pane.js.map +1 -0
  85. package/dist/transaction/period.js +324 -0
  86. package/dist/transaction/period.js.map +1 -0
  87. package/dist/trip/tripPane.js +175 -0
  88. package/dist/trip/tripPane.js.map +1 -0
  89. package/dist/trustedApplications/trustedApplications.dom.js +134 -146
  90. package/dist/trustedApplications/trustedApplications.dom.js.map +1 -1
  91. package/dist/trustedApplications/trustedApplications.utils.js +20 -20
  92. package/dist/trustedApplications/trustedApplications.utils.js.map +1 -1
  93. package/dist/trustedApplications/trustedApplications.view.js +51 -57
  94. package/dist/trustedApplications/trustedApplications.view.js.map +1 -1
  95. package/dist/types.js +5 -1
  96. package/dist/types.js.map +1 -1
  97. package/dist/ui/pane.js +147 -0
  98. package/dist/ui/pane.js.map +1 -0
  99. package/dist/versionInfo.js +35 -29
  100. package/dist/versionInfo.js.map +1 -1
  101. package/dist/video/videoPane.js +43 -0
  102. package/dist/video/videoPane.js.map +1 -0
  103. package/package.json +4 -3
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RDFXMLPane = void 0;
7
+ var UI = _interopRequireWildcard(require("solid-ui"));
8
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
9
+ /* RDF/XML content Pane
10
+ **
11
+ ** This pane shows the content of a particular RDF resource
12
+ ** or at least the RDF semantics we attribute to that resource,
13
+ ** in generated N3 syntax.
14
+ */
15
+
16
+ const ns = UI.ns;
17
+ const RDFXMLPane = exports.RDFXMLPane = {
18
+ icon: UI.icons.originalIconBase + '22-text-xml4.png',
19
+ name: 'RDFXML',
20
+ audience: [ns.solid('Developer')],
21
+ label: function (subject, context) {
22
+ const store = context.session.store;
23
+ if ('http://www.w3.org/2007/ont/link#ProtocolEvent' in store.findTypeURIs(subject)) {
24
+ return null;
25
+ }
26
+ const n = store.statementsMatching(undefined, undefined, undefined, subject).length;
27
+ if (n === 0) return null;
28
+ return 'As RDF/XML (' + n + ')';
29
+ },
30
+ render: function (subject, context) {
31
+ const myDocument = context.dom;
32
+ const kb = context.session.store;
33
+ const div = myDocument.createElement('div');
34
+ div.setAttribute('class', 'RDFXMLPane');
35
+ // Because of smushing etc, this will not be a copy of the original source
36
+ // We could instead either fetch and re-parse the source,
37
+ // or we could keep all the pre-smushed triples.
38
+ const sts = kb.statementsMatching(undefined, undefined, undefined, subject); // @@ slow with current store!
39
+ /*
40
+ var kludge = kb.formula([]) // No features
41
+ for (var i=0; i< sts.length; i++) {
42
+ s = sts[i]
43
+ kludge.add(s.subject, s.predicate, s.object)
44
+ }
45
+ */
46
+ const sz = UI.rdf.Serializer(kb);
47
+ sz.suggestNamespaces(kb.namespaces);
48
+ sz.setBase(subject.uri);
49
+ const str = sz.statementsToXML(sts);
50
+ const pre = myDocument.createElement('PRE');
51
+ pre.appendChild(myDocument.createTextNode(str));
52
+ div.appendChild(pre);
53
+ return div;
54
+ }
55
+ };
56
+
57
+ // ends
58
+ //# sourceMappingURL=RDFXMLPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RDFXMLPane.js","names":["UI","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","RDFXMLPane","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","store","session","findTypeURIs","statementsMatching","undefined","length","render","myDocument","dom","kb","div","createElement","setAttribute","sts","sz","rdf","Serializer","suggestNamespaces","namespaces","setBase","uri","str","statementsToXML","pre","appendChild","createTextNode"],"sources":["../src/RDFXMLPane.js"],"sourcesContent":["/* RDF/XML 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 ** in generated N3 syntax.\n */\n\nimport * as UI from 'solid-ui'\nconst ns = UI.ns\n\nexport const RDFXMLPane = {\n icon: UI.icons.originalIconBase + '22-text-xml4.png',\n\n name: 'RDFXML',\n\n audience: [ns.solid('Developer')],\n\n label: function (subject, context) {\n const store = context.session.store\n if (\n 'http://www.w3.org/2007/ont/link#ProtocolEvent' in\n store.findTypeURIs(subject)\n ) {\n return null\n }\n\n const n = store.statementsMatching(undefined, undefined, undefined, subject)\n .length\n if (n === 0) return null\n return 'As RDF/XML (' + n + ')'\n },\n\n render: function (subject, context) {\n const myDocument = context.dom\n const kb = context.session.store\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'RDFXMLPane')\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 var kludge = kb.formula([]) // No features\n for (var i=0; i< sts.length; i++) {\n s = sts[i]\n kludge.add(s.subject, s.predicate, s.object)\n }\n */\n const sz = UI.rdf.Serializer(kb)\n sz.suggestNamespaces(kb.namespaces)\n sz.setBase(subject.uri)\n const str = sz.statementsToXML(sts)\n const pre = myDocument.createElement('PRE')\n pre.appendChild(myDocument.createTextNode(str))\n div.appendChild(pre)\n return div\n }\n}\n\n// ends\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _solidLogic = require("solid-logic");
8
+ var UI = _interopRequireWildcard(require("solid-ui"));
9
+ var panes = _interopRequireWildcard(require("pane-registry"));
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ /* View argument Pane
12
+ **
13
+ ** This pane shows a position and optionally the positions which
14
+ ** support or oppose it.
15
+ ** @@ Unfinsihed.
16
+ ** Should allow editing the data too
17
+
18
+ */
19
+ // console.log('@@@ argument pane icon at ' + (module.__dirname || __dirname) + '/icon_argument.png')
20
+ var _default = exports.default = {
21
+ icon: (module.__dirname || __dirname) + '/icon_argument.png',
22
+ // @@ fix fro mashlib version
23
+
24
+ name: 'argument',
25
+ label: function (subject) {
26
+ const kb = _solidLogic.store;
27
+ const t = kb.findTypeURIs(subject);
28
+ if (t[UI.ns.arg('Position').uri]) return 'Argument';
29
+ return null;
30
+ },
31
+ // View the data in a file in user-friendly way
32
+ render: function (subject, dom) {
33
+ const outliner = panes.getOutliner(dom);
34
+ const kb = _solidLogic.store;
35
+ const arg = UI.ns.arg;
36
+ subject = kb.canon(subject);
37
+ // var types = kb.findTypeURIs(subject)
38
+
39
+ const div = dom.createElement('div');
40
+ div.setAttribute('class', 'argumentPane');
41
+
42
+ // var title = kb.any(subject, UI.ns.dc('title'))
43
+
44
+ const comment = kb.any(subject, UI.ns.rdfs('comment'));
45
+ if (comment) {
46
+ const para = dom.createElement('p');
47
+ para.setAttribute('style', 'margin-left: 2em; font-style: italic;');
48
+ div.appendChild(para);
49
+ para.textContent = comment.value;
50
+ }
51
+ div.appendChild(dom.createElement('hr'));
52
+ let plist = kb.statementsMatching(subject, arg('support'));
53
+ outliner.appendPropertyTRs(div, plist, false);
54
+ div.appendChild(dom.createElement('hr'));
55
+ plist = kb.statementsMatching(subject, arg('opposition'));
56
+ outliner.appendPropertyTRs(div, plist, false);
57
+ div.appendChild(dom.createElement('hr'));
58
+ return div;
59
+ }
60
+ }; // ends
61
+ //# sourceMappingURL=argumentPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argumentPane.js","names":["_solidLogic","require","UI","_interopRequireWildcard","panes","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_default","exports","icon","module","__dirname","name","label","subject","kb","store","findTypeURIs","ns","arg","uri","render","dom","outliner","getOutliner","canon","div","createElement","setAttribute","comment","any","rdfs","para","appendChild","textContent","value","plist","statementsMatching","appendPropertyTRs"],"sources":["../../src/argument/argumentPane.js"],"sourcesContent":["/* View argument Pane\n**\n** This pane shows a position and optionally the positions which\n** support or oppose it.\n** @@ Unfinsihed.\n** Should allow editing the data too\n\n*/\nimport { store } from 'solid-logic'\nimport * as UI from 'solid-ui'\nimport * as panes from 'pane-registry'\n\n// console.log('@@@ argument pane icon at ' + (module.__dirname || __dirname) + '/icon_argument.png')\nexport default {\n icon: (module.__dirname || __dirname) + '/icon_argument.png', // @@ fix fro mashlib version\n\n name: 'argument',\n\n label: function (subject) {\n const kb = store\n const t = kb.findTypeURIs(subject)\n\n if (t[UI.ns.arg('Position').uri]) return 'Argument'\n\n return null\n },\n\n // View the data in a file in user-friendly way\n render: function (subject, dom) {\n const outliner = panes.getOutliner(dom)\n const kb = store\n const arg = UI.ns.arg\n\n subject = kb.canon(subject)\n // var types = kb.findTypeURIs(subject)\n\n const div = dom.createElement('div')\n div.setAttribute('class', 'argumentPane')\n\n // var title = kb.any(subject, UI.ns.dc('title'))\n\n const comment = kb.any(subject, UI.ns.rdfs('comment'))\n if (comment) {\n const para = dom.createElement('p')\n para.setAttribute('style', 'margin-left: 2em; font-style: italic;')\n div.appendChild(para)\n para.textContent = comment.value\n }\n\n div.appendChild(dom.createElement('hr'))\n\n let plist = kb.statementsMatching(subject, arg('support'))\n outliner.appendPropertyTRs(div, plist, false)\n\n div.appendChild(dom.createElement('hr'))\n\n plist = kb.statementsMatching(subject, arg('opposition'))\n outliner.appendPropertyTRs(div, plist, false)\n\n div.appendChild(dom.createElement('hr'))\n return div\n }\n}\n\n// ends\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,394 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var UI = _interopRequireWildcard(require("solid-ui"));
8
+ var $rdf = _interopRequireWildcard(require("rdflib"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ /* Attachment Pane
11
+ **
12
+ ** - Attach a document to a thing
13
+ ** - View attachments
14
+ ** - Look at all unattached Supporting Documents.
15
+ ** - Drag a document onto the pane to attach it @@
16
+ **
17
+ **
18
+ */
19
+ var _default = exports.default = {
20
+ icon: UI.icons.iconBase + 'noun_25830.svg',
21
+ // noun_25830
22
+
23
+ name: 'attachments',
24
+ // Does the subject deserve an attachments pane?
25
+ //
26
+ // In this case we will render any thing which is in any subclass of
27
+ // certain classes, or also the certain classes themselves, as a
28
+ // triage tool for correlating many attachees with attachments.
29
+ // We also offer the pane for anything of any class which just has an attachment already.
30
+ //
31
+ label: function (subject, context) {
32
+ const kb = context.session.store;
33
+ const t = kb.findTypeURIs(subject);
34
+ const QU = $rdf.Namespace('http://www.w3.org/2000/10/swap/pim/qif#');
35
+ const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#');
36
+ if (t['http://www.w3.org/ns/pim/trip#Trip'] ||
37
+ // If in any subclass
38
+ subject.uri === 'http://www.w3.org/ns/pim/trip#Trip' || t['http://www.w3.org/2005/01/wf/flow#Task'] || t['http://www.w3.org/2000/10/swap/pim/qif#Transaction'] ||
39
+ // subject.uri == 'http://www.w3.org/2000/10/swap/pim/qif#Transaction' ||
40
+ QU('Transaction') in kb.findSuperClassesNT(subject) || kb.holds(subject, WF('attachment'))) {
41
+ return 'attachments';
42
+ }
43
+ return null;
44
+ },
45
+ render: function (subject, context) {
46
+ const dom = context.dom;
47
+ const kb = context.session.store;
48
+ const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#');
49
+ const QU = $rdf.Namespace('http://www.w3.org/2000/10/swap/pim/qif#');
50
+
51
+ // ////////////////////////////////////////////////////////////////////////////
52
+
53
+ const complain = function complain(message) {
54
+ const pre = dom.createElement('pre');
55
+ pre.setAttribute('style', 'background-color: pink');
56
+ div.appendChild(pre);
57
+ pre.appendChild(dom.createTextNode(message));
58
+ };
59
+
60
+ // Where can we write about this thing?
61
+ //
62
+ // Returns term for document or null
63
+ const findStore = function (kb, subject) {
64
+ if (kb.updater.editable(subject.doc(), kb)) return subject.doc();
65
+ const store = kb.any(subject.doc(), QU('annotationStore'));
66
+ return store;
67
+ };
68
+ const div = dom.createElement('div');
69
+ const esc = UI.utils.escapeForXML;
70
+ div.setAttribute('class', 'attachPane');
71
+ div.innerHTML = '<h1>' + esc(UI.utils.label(subject, true)) + ' attachments</h1>'; //
72
+
73
+ const predicate = WF('attachment');
74
+ const range = QU('SupportingDocument');
75
+ let subjects, multi;
76
+ const options = {};
77
+ let currentMode = 0; // 0 -> Show all; 1 -> Attached; 2 -> unattached
78
+ let currentSubject = null;
79
+ let currentObject = null;
80
+ const objectType = QU('SupportingDocument');
81
+
82
+ // Find all members of the class which we know about
83
+ // and sort them by an appropriate property. @@ Move to library
84
+ //
85
+
86
+ const getSortKeySimple = function (_c) {
87
+ const uriMap = {
88
+ 'http://www.w3.org/2005/01/wf/flow#Task': 'http://purl.org/dc/elements/1.1/created',
89
+ 'http://www.w3.org/ns/pim/trip#Trip': 'http://www.w3.org/2002/12/cal/ical#dtstart',
90
+ 'http://www.w3.org/2000/10/swap/pim/qif#Transaction': 'http://www.w3.org/2000/10/swap/pim/qif#date',
91
+ 'http://www.w3.org/2000/10/swap/pim/qif#SupportingDocument': 'http://purl.org/dc/elements/1.1/date'
92
+ };
93
+ const uri = uriMap[subject.uri];
94
+ return uri ? kb.sym(uri) : kb.any(subject, UI.ns.ui('sortBy'));
95
+ };
96
+ const getSortKey = function (c) {
97
+ let k = getSortKeySimple(c.uri);
98
+ if (k) return k;
99
+ const sup = kb.findSuperClassesNT(c);
100
+ for (const cl in sup) {
101
+ // note unordered -- could be closest first
102
+ k = getSortKeySimple(kb.fromNT(cl).uri);
103
+ if (k) return k;
104
+ }
105
+ return undefined; // failure
106
+ };
107
+ const getMembersAndSort = function (subject) {
108
+ const sortBy = getSortKey(subject);
109
+ let u, x, key;
110
+ const uriHash = kb.findMemberURIs(subject);
111
+ const pairs = [];
112
+ const subjects = [];
113
+ for (u in uriHash) {
114
+ // @@ TODO: Write away the need for exception on next line
115
+
116
+ if (Object.prototype.hasOwnProperty.call(uriHash, u)) {
117
+ x = kb.sym(u);
118
+ if (sortBy) {
119
+ key = kb.any(x, sortBy);
120
+ if (!key) {
121
+ // complain("No key "+key+" sortby "+sortBy+" for "+x)
122
+ key = '8888-12-31';
123
+ } else {
124
+ key = key.value;
125
+ }
126
+ } else {
127
+ complain('No sortby ' + sortBy + ' for ' + x);
128
+ key = '9999-12-31';
129
+ }
130
+ // key = (sortBy && kb.any(x, sortBy)) || kb.literal("9999-12-31") // Undated appear future
131
+ // if (!key) complain("Sort: '"+key+"' No "+sortBy+" for "+x) // Assume just not in this year
132
+ pairs.push([key, x]);
133
+ }
134
+ }
135
+ pairs.sort();
136
+ pairs.reverse(); // @@ Descending order .. made a toggle?
137
+ for (let i = 0; i < pairs.length; i++) {
138
+ subjects.push(pairs[i][1]);
139
+ }
140
+ return subjects;
141
+ };
142
+
143
+ // Set up a triage of many class members against documents or just one
144
+ if (subject.uri === 'http://www.w3.org/ns/pim/trip#Trip' || QU('Transaction') in kb.findSuperClassesNT(subject)
145
+ // subject.uri == 'http://www.w3.org/2000/10/swap/pim/qif#Transaction'
146
+ ) {
147
+ multi = true;
148
+ subjects = getMembersAndSort(subject);
149
+ } else {
150
+ currentSubject = subject;
151
+ currentMode = 1; // Show attached only.
152
+ subjects = [subject];
153
+ multi = false;
154
+ }
155
+
156
+ // var store = findStore(kb, subject)
157
+ // if (!store) complain("There is no annotation store for: "+subject.uri)
158
+
159
+ // var objects = kb.each(undefined, ns.rdf('type'), range)
160
+ const objects = getMembersAndSort(range);
161
+ if (!objects) complain('objects:' + objects.length);
162
+ const deselectObject = function () {
163
+ currentObject = null;
164
+ preview.innerHTML = '';
165
+ };
166
+ const showFiltered = function (mode) {
167
+ const filtered = mode === 0 ? objects : getFiltered();
168
+ // eslint-enable
169
+ UI.widgets.selectorPanelRefresh(objectList, dom, kb, objectType, predicate, true, filtered, options, showObject, linkClicked);
170
+ if (filtered.length === 1) {
171
+ currentObject = filtered[0];
172
+ showObject(currentObject, null, true); // @@ (Sure?) if only one select it.
173
+ } else {
174
+ deselectObject();
175
+ }
176
+ function getFiltered() {
177
+ return mode === 1 ? currentSubject === null ? objects.filter(y => !!kb.holds(undefined, predicate, y)) : objects.filter(y => !!kb.holds(currentSubject, predicate, y)) : objects.filter(y => kb.each(undefined, predicate, y).length === 0);
178
+ }
179
+ };
180
+ const setAttachment = function (x, y, value, refresh) {
181
+ if (kb.holds(x, predicate, y) === value) return;
182
+ const verb = value ? 'attach' : 'detach';
183
+ // complain("Info: starting to "+verb+" " + y.uri + " to "+x.uri+ ":\n")
184
+ const linkDone3 = function (uri, ok, body) {
185
+ if (ok) {
186
+ // complain("Success "+verb+" "+y.uri+" to "+x.uri+ ":\n"+ body)
187
+ refresh();
188
+ } else {
189
+ complain('Error: Unable to ' + verb + ' ' + y.uri + ' to ' + x.uri + ':\n' + body);
190
+ }
191
+ };
192
+ const store = findStore(kb, x);
193
+ if (!store) {
194
+ complain('There is no annotation store for: ' + x.uri);
195
+ } else {
196
+ const sts = [$rdf.st(x, predicate, y, store)];
197
+ if (value) {
198
+ kb.updater.update([], sts, linkDone3);
199
+ } else {
200
+ kb.updater.update(sts, [], linkDone3);
201
+ }
202
+ }
203
+ };
204
+ const linkClicked = function (x, event, inverse, refresh) {
205
+ let s, o;
206
+ if (inverse) {
207
+ // Objectlist
208
+ if (!currentSubject) {
209
+ complain('No subject for the link has been selected');
210
+ return;
211
+ } else {
212
+ s = currentSubject;
213
+ o = x;
214
+ }
215
+ } else {
216
+ // Subjectlist
217
+ if (!currentObject) {
218
+ complain('No object for the link has been selected');
219
+ return;
220
+ } else {
221
+ s = x;
222
+ o = currentObject;
223
+ }
224
+ }
225
+ setAttachment(s, o, !kb.holds(s, predicate, o), refresh); // @@ toggle
226
+ };
227
+
228
+ // When you click on a subject, filter the objects connected to the subject in Mode 1
229
+ const showSubject = function (x, event, selected) {
230
+ if (selected) {
231
+ currentSubject = x;
232
+ } else {
233
+ currentSubject = null;
234
+ if (currentMode === 1) deselectObject();
235
+ } // If all are displayed, refresh would just annoy:
236
+ if (currentMode !== 0) showFiltered(currentMode); // Refresh the objects
237
+ };
238
+ if (multi) {
239
+ const subjectList = UI.widgets.selectorPanel(dom, kb, subject, predicate, false, subjects, options, showSubject, linkClicked);
240
+ subjectList.setAttribute('style', 'background-color: white; width: 25em; height: 100%; padding: 0 em; overflow:scroll; float:left');
241
+ div.appendChild(subjectList);
242
+ }
243
+ const showObject = function (x, event, selected) {
244
+ if (!selected) {
245
+ deselectObject();
246
+ preview.innerHTML = ''; // Clean out what is there
247
+ // complain("Show object "+x.uri)
248
+ return;
249
+ }
250
+ currentObject = x;
251
+ try {
252
+ /*
253
+ var dispalyable = function (kb, x) {
254
+ var cts = kb.fetcher.getHeader(x, 'content-type')
255
+ if (cts) {
256
+ var displayables = ['text/html', 'image/png', 'application/pdf']
257
+ for (var j = 0; j < cts.length; j++) {
258
+ for (var k = 0; k < displayables.length; k++) {
259
+ if (cts[j].indexOf(displayables[k]) >= 0) {
260
+ return true
261
+ }
262
+ }
263
+ }
264
+ }
265
+ return false
266
+ }
267
+ */
268
+ preview.innerHTML = 'Loading ....';
269
+ if (x.uri) {
270
+ kb.fetcher.load(x.uri).then(() => {
271
+ const outliner = context.getOutliner(dom);
272
+ const display = outliner.propertyTable(x); // ,table, pane
273
+ preview.innerHTML = '';
274
+ preview.appendChild(display);
275
+ }).catch(err => {
276
+ preview.textContent = 'Error loading ' + x.uri + ': ' + err;
277
+ });
278
+ }
279
+ /*
280
+ if (dispalyable(kb, x) || x.uri.slice(-4) == ".pdf" || x.uri.slice(-4) == ".png" || x.uri.slice(-5) == ".html" ||
281
+ x.uri.slice(-5) == ".jpeg") { // @@@@@@ MAJOR KLUDGE! use metadata after HEAD
282
+ preview.innerHTML = '<iframe height="100%" width="100%"src="'
283
+ + x.uri + '">' + x.uri + '</iframe>'
284
+ } else {
285
+ }
286
+ */
287
+ } catch (e) {
288
+ preview.innerHTML = '<span style="background-color: pink;">' + 'Error:' + e + '</span>'; // @@ enc
289
+ }
290
+ };
291
+ div.setAttribute('style', 'background-color: white; width:40cm; height:20cm;');
292
+ const headerButtons = function (dom, labels, intial, callback) {
293
+ const head = dom.createElement('table');
294
+ let current = intial;
295
+ head.setAttribute('style', 'float: left; width: 30em; padding: 0.5em; height: 1.5em; background-color: #ddd; color: #444; font-weight: bold');
296
+ const tr = dom.createElement('tr');
297
+ const style0 = 'border-radius: 0.6em; text-align: center;';
298
+ const style1 = style0 + 'background-color: #ccc; color: black;';
299
+ head.appendChild(tr);
300
+ const setStyles = function () {
301
+ for (i = 0; i < labels.length; i++) {
302
+ buttons[i].setAttribute('style', i === current ? style1 : style0);
303
+ }
304
+ };
305
+ let i, b;
306
+ const buttons = [];
307
+ for (i = 0; i < labels.length; i++) {
308
+ b = buttons[i] = dom.createElement('td');
309
+ b.textContent = labels[i];
310
+ tr.appendChild(buttons[i]);
311
+ const listen = function (b, i) {
312
+ b.addEventListener('click', function (_e) {
313
+ current = i;
314
+ setStyles();
315
+ callback(i);
316
+ });
317
+ };
318
+ listen(b, i);
319
+ }
320
+ setStyles();
321
+ return head;
322
+ };
323
+ const setMode = function (mode) {
324
+ if (mode !== currentMode) {
325
+ currentMode = mode;
326
+ deselectObject();
327
+ showFiltered(mode);
328
+ }
329
+ };
330
+ const wrapper = dom.createElement('div');
331
+ wrapper.setAttribute('style', ' width: 30em; height: 100%; padding: 0em; float:left;');
332
+ // wrapper.appendChild(head)
333
+ div.appendChild(wrapper);
334
+ wrapper.appendChild(headerButtons(dom, ['all', 'attached', 'not attached'], currentMode, setMode));
335
+ const objectList = UI.widgets.selectorPanel(dom, kb, objectType, predicate, true, objects, options, showObject, linkClicked);
336
+ objectList.setAttribute('style', 'background-color: #ffe; width: 30em; height: 100%; padding: 0em; overflow:scroll;'); // float:left
337
+ wrapper.appendChild(objectList);
338
+
339
+ // objectList.insertBefore(head, objectList.firstChild)
340
+
341
+ const preview = dom.createElement('div');
342
+ preview.setAttribute('style', /* background-color: black; */'padding: 0em; margin: 0; height: 100%; overflow:scroll;');
343
+ div.appendChild(preview);
344
+ showFiltered(currentMode);
345
+ if (subjects.length > 0 && multi) {
346
+ const stores = {};
347
+ for (let k = 0; k < subjects.length; k++) {
348
+ const store = findStore(kb, subjects[k]);
349
+ if (store) stores[store.uri] = subjects[k];
350
+ // if (!store) complain("No store for "+subjects[k].uri)
351
+ }
352
+ for (const storeURI in stores) {
353
+ // var store = findStore(kb,subjects[subjectList.length-1])
354
+ const store = kb.sym(storeURI);
355
+ const mintBox = dom.createElement('div');
356
+ mintBox.setAttribute('style', 'clear: left; width: 20em; margin-top:2em; background-color:#ccc; border-radius: 1em; padding: 1em; font-weight: bold;');
357
+ mintBox.textContent = '+ New ' + UI.utils.label(subject);
358
+ mintBox.textContent += ' in ' + UI.utils.label(store);
359
+ const storeLab = dom.createElement('span');
360
+ storeLab.setAttribute('style', 'font-weight: normal; font-size: 80%; color: #777;');
361
+ storeLab.textContent = storeURI;
362
+ mintBox.appendChild(dom.createElement('br'));
363
+ mintBox.appendChild(storeLab);
364
+ /*
365
+ var mintButton = dom.createElement('img')
366
+ mintBox.appendChild(mintButton)
367
+ mintButton.setAttribute('src', ...); @@ Invokes master handler
368
+ */
369
+ mintBox.addEventListener('click', function (_event) {
370
+ const thisForm = UI.widgets.promptForNew(dom, kb, subject, predicate, subject, null, store, function (ok, _body) {
371
+ if (!ok) {
372
+ // callback(ok, body); // @@ if ok, need some form of refresh of the select for the new thing
373
+ } else {
374
+ // Refresh @@
375
+ }
376
+ });
377
+ try {
378
+ div.insertBefore(thisForm, mintBox.nextSibling); // Sigh no insertAfter
379
+ } catch (e) {
380
+ div.appendChild(thisForm);
381
+ }
382
+ // var newObject = thisForm.AJAR_subject
383
+ }, false);
384
+ div.appendChild(mintBox);
385
+ }
386
+ }
387
+
388
+ // if (!me) complain("(You do not have your Web Id set. Set your Web ID to make changes.)")
389
+
390
+ return div;
391
+ }
392
+ }; // pane object
393
+ // ends
394
+ //# sourceMappingURL=attachPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachPane.js","names":["UI","_interopRequireWildcard","require","$rdf","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_default","exports","icon","icons","iconBase","name","label","subject","context","kb","session","store","findTypeURIs","QU","Namespace","WF","uri","findSuperClassesNT","holds","render","dom","complain","message","pre","createElement","setAttribute","div","appendChild","createTextNode","findStore","updater","editable","doc","any","esc","utils","escapeForXML","innerHTML","predicate","range","subjects","multi","options","currentMode","currentSubject","currentObject","objectType","getSortKeySimple","_c","uriMap","sym","ns","ui","getSortKey","c","k","sup","cl","fromNT","undefined","getMembersAndSort","sortBy","u","x","key","uriHash","findMemberURIs","pairs","prototype","value","push","sort","reverse","length","objects","deselectObject","preview","showFiltered","mode","filtered","getFiltered","widgets","selectorPanelRefresh","objectList","showObject","linkClicked","filter","y","each","setAttachment","refresh","verb","linkDone3","ok","body","sts","st","update","event","inverse","s","showSubject","selected","subjectList","selectorPanel","fetcher","load","then","outliner","getOutliner","display","propertyTable","catch","err","textContent","headerButtons","labels","intial","callback","head","current","tr","style0","style1","setStyles","buttons","b","listen","addEventListener","_e","setMode","wrapper","stores","storeURI","mintBox","storeLab","_event","thisForm","promptForNew","_body","insertBefore","nextSibling"],"sources":["../../src/attach/attachPane.js"],"sourcesContent":["/* Attachment Pane\n **\n ** - Attach a document to a thing\n ** - View attachments\n ** - Look at all unattached Supporting Documents.\n ** - Drag a document onto the pane to attach it @@\n **\n **\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\n\nexport default {\n icon: UI.icons.iconBase + 'noun_25830.svg', // noun_25830\n\n name: 'attachments',\n\n // Does the subject deserve an attachments pane?\n //\n // In this case we will render any thing which is in any subclass of\n // certain classes, or also the certain classes themselves, as a\n // triage tool for correlating many attachees with attachments.\n // We also offer the pane for anything of any class which just has an attachment already.\n //\n label: function (subject, context) {\n const kb = context.session.store\n const t = kb.findTypeURIs(subject)\n const QU = $rdf.Namespace('http://www.w3.org/2000/10/swap/pim/qif#')\n const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n if (\n t['http://www.w3.org/ns/pim/trip#Trip'] || // If in any subclass\n subject.uri === 'http://www.w3.org/ns/pim/trip#Trip' ||\n t['http://www.w3.org/2005/01/wf/flow#Task'] ||\n t['http://www.w3.org/2000/10/swap/pim/qif#Transaction'] ||\n // subject.uri == 'http://www.w3.org/2000/10/swap/pim/qif#Transaction' ||\n QU('Transaction') in kb.findSuperClassesNT(subject) ||\n kb.holds(subject, WF('attachment'))\n ) {\n return 'attachments'\n }\n return null\n },\n\n render: function (subject, context) {\n const dom = context.dom\n const kb = context.session.store\n const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const QU = $rdf.Namespace('http://www.w3.org/2000/10/swap/pim/qif#')\n\n // ////////////////////////////////////////////////////////////////////////////\n\n const complain = function complain (message) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', 'background-color: pink')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n\n // Where can we write about this thing?\n //\n // Returns term for document or null\n const findStore = function (kb, subject) {\n if (kb.updater.editable(subject.doc(), kb)) return subject.doc()\n const store = kb.any(subject.doc(), QU('annotationStore'))\n return store\n }\n\n const div = dom.createElement('div')\n const esc = UI.utils.escapeForXML\n div.setAttribute('class', 'attachPane')\n div.innerHTML =\n '<h1>' + esc(UI.utils.label(subject, true)) + ' attachments</h1>' //\n\n const predicate = WF('attachment')\n const range = QU('SupportingDocument')\n\n let subjects, multi\n const options = {}\n let currentMode = 0 // 0 -> Show all; 1 -> Attached; 2 -> unattached\n let currentSubject = null\n let currentObject = null\n const objectType = QU('SupportingDocument')\n\n // Find all members of the class which we know about\n // and sort them by an appropriate property. @@ Move to library\n //\n\n const getSortKeySimple = function (_c) {\n const uriMap = {\n 'http://www.w3.org/2005/01/wf/flow#Task': 'http://purl.org/dc/elements/1.1/created',\n 'http://www.w3.org/ns/pim/trip#Trip': 'http://www.w3.org/2002/12/cal/ical#dtstart',\n 'http://www.w3.org/2000/10/swap/pim/qif#Transaction': 'http://www.w3.org/2000/10/swap/pim/qif#date',\n 'http://www.w3.org/2000/10/swap/pim/qif#SupportingDocument': 'http://purl.org/dc/elements/1.1/date'\n }\n const uri = uriMap[subject.uri]\n return uri ? kb.sym(uri) : kb.any(subject, UI.ns.ui('sortBy'))\n }\n\n const getSortKey = function (c) {\n let k = getSortKeySimple(c.uri)\n if (k) return k\n const sup = kb.findSuperClassesNT(c)\n for (const cl in sup) {\n // note unordered -- could be closest first\n k = getSortKeySimple(kb.fromNT(cl).uri)\n if (k) return k\n }\n return undefined // failure\n }\n\n const getMembersAndSort = function (subject) {\n const sortBy = getSortKey(subject)\n let u, x, key\n const uriHash = kb.findMemberURIs(subject)\n const pairs = []\n const subjects = []\n for (u in uriHash) {\n // @@ TODO: Write away the need for exception on next line\n\n if (Object.prototype.hasOwnProperty.call(uriHash, u)) {\n x = kb.sym(u)\n if (sortBy) {\n key = kb.any(x, sortBy)\n if (!key) {\n // complain(\"No key \"+key+\" sortby \"+sortBy+\" for \"+x)\n key = '8888-12-31'\n } else {\n key = key.value\n }\n } else {\n complain('No sortby ' + sortBy + ' for ' + x)\n key = '9999-12-31'\n }\n // key = (sortBy && kb.any(x, sortBy)) || kb.literal(\"9999-12-31\") // Undated appear future\n // if (!key) complain(\"Sort: '\"+key+\"' No \"+sortBy+\" for \"+x) // Assume just not in this year\n pairs.push([key, x])\n }\n }\n pairs.sort()\n pairs.reverse() // @@ Descending order .. made a toggle?\n for (let i = 0; i < pairs.length; i++) {\n subjects.push(pairs[i][1])\n }\n return subjects\n }\n\n // Set up a triage of many class members against documents or just one\n if (\n subject.uri === 'http://www.w3.org/ns/pim/trip#Trip' ||\n QU('Transaction') in kb.findSuperClassesNT(subject)\n // subject.uri == 'http://www.w3.org/2000/10/swap/pim/qif#Transaction'\n ) {\n multi = true\n subjects = getMembersAndSort(subject)\n } else {\n currentSubject = subject\n currentMode = 1 // Show attached only.\n subjects = [subject]\n multi = false\n }\n\n // var store = findStore(kb, subject)\n // if (!store) complain(\"There is no annotation store for: \"+subject.uri)\n\n // var objects = kb.each(undefined, ns.rdf('type'), range)\n const objects = getMembersAndSort(range)\n if (!objects) complain('objects:' + objects.length)\n\n const deselectObject = function () {\n currentObject = null\n preview.innerHTML = ''\n }\n\n const showFiltered = function (mode) {\n const filtered = mode === 0 ? objects : getFiltered()\n // eslint-enable\n UI.widgets.selectorPanelRefresh(\n objectList,\n dom,\n kb,\n objectType,\n predicate,\n true,\n filtered,\n options,\n showObject,\n linkClicked\n )\n if (filtered.length === 1) {\n currentObject = filtered[0]\n showObject(currentObject, null, true) // @@ (Sure?) if only one select it.\n } else {\n deselectObject()\n }\n\n function getFiltered () {\n return mode === 1\n ? currentSubject === null\n ? objects.filter(y => !!kb.holds(undefined, predicate, y))\n : objects.filter(y => !!kb.holds(currentSubject, predicate, y))\n : objects.filter(y => kb.each(undefined, predicate, y).length === 0)\n }\n }\n\n const setAttachment = function (x, y, value, refresh) {\n if (kb.holds(x, predicate, y) === value) return\n const verb = value ? 'attach' : 'detach'\n // complain(\"Info: starting to \"+verb+\" \" + y.uri + \" to \"+x.uri+ \":\\n\")\n const linkDone3 = function (uri, ok, body) {\n if (ok) {\n // complain(\"Success \"+verb+\" \"+y.uri+\" to \"+x.uri+ \":\\n\"+ body)\n refresh()\n } else {\n complain(\n 'Error: Unable to ' +\n verb +\n ' ' +\n y.uri +\n ' to ' +\n x.uri +\n ':\\n' +\n body\n )\n }\n }\n\n const store = findStore(kb, x)\n if (!store) {\n complain('There is no annotation store for: ' + x.uri)\n } else {\n const sts = [$rdf.st(x, predicate, y, store)]\n if (value) {\n kb.updater.update([], sts, linkDone3)\n } else {\n kb.updater.update(sts, [], linkDone3)\n }\n }\n }\n\n const linkClicked = function (x, event, inverse, refresh) {\n let s, o\n if (inverse) {\n // Objectlist\n if (!currentSubject) {\n complain('No subject for the link has been selected')\n return\n } else {\n s = currentSubject\n o = x\n }\n } else {\n // Subjectlist\n if (!currentObject) {\n complain('No object for the link has been selected')\n return\n } else {\n s = x\n o = currentObject\n }\n }\n setAttachment(s, o, !kb.holds(s, predicate, o), refresh) // @@ toggle\n }\n\n // When you click on a subject, filter the objects connected to the subject in Mode 1\n const showSubject = function (x, event, selected) {\n if (selected) {\n currentSubject = x\n } else {\n currentSubject = null\n if (currentMode === 1) deselectObject()\n } // If all are displayed, refresh would just annoy:\n if (currentMode !== 0) showFiltered(currentMode) // Refresh the objects\n }\n\n if (multi) {\n const subjectList = UI.widgets.selectorPanel(\n dom,\n kb,\n subject,\n predicate,\n false,\n subjects,\n options,\n showSubject,\n linkClicked\n )\n subjectList.setAttribute(\n 'style',\n 'background-color: white; width: 25em; height: 100%; padding: 0 em; overflow:scroll; float:left'\n )\n div.appendChild(subjectList)\n }\n\n const showObject = function (x, event, selected) {\n if (!selected) {\n deselectObject()\n preview.innerHTML = '' // Clean out what is there\n // complain(\"Show object \"+x.uri)\n return\n }\n currentObject = x\n try {\n /*\n var dispalyable = function (kb, x) {\n var cts = kb.fetcher.getHeader(x, 'content-type')\n if (cts) {\n var displayables = ['text/html', 'image/png', 'application/pdf']\n for (var j = 0; j < cts.length; j++) {\n for (var k = 0; k < displayables.length; k++) {\n if (cts[j].indexOf(displayables[k]) >= 0) {\n return true\n }\n }\n }\n }\n return false\n }\n */\n preview.innerHTML = 'Loading ....'\n if (x.uri) {\n kb.fetcher\n .load(x.uri)\n .then(() => {\n const outliner = context.getOutliner(dom)\n const display = outliner.propertyTable(x) // ,table, pane\n preview.innerHTML = ''\n preview.appendChild(display)\n })\n .catch(err => {\n preview.textContent = 'Error loading ' + x.uri + ': ' + err\n })\n }\n /*\n if (dispalyable(kb, x) || x.uri.slice(-4) == \".pdf\" || x.uri.slice(-4) == \".png\" || x.uri.slice(-5) == \".html\" ||\n x.uri.slice(-5) == \".jpeg\") { // @@@@@@ MAJOR KLUDGE! use metadata after HEAD\n preview.innerHTML = '<iframe height=\"100%\" width=\"100%\"src=\"'\n + x.uri + '\">' + x.uri + '</iframe>'\n } else {\n }\n */\n } catch (e) {\n preview.innerHTML =\n '<span style=\"background-color: pink;\">' + 'Error:' + e + '</span>' // @@ enc\n }\n }\n\n div.setAttribute(\n 'style',\n 'background-color: white; width:40cm; height:20cm;'\n )\n\n const headerButtons = function (dom, labels, intial, callback) {\n const head = dom.createElement('table')\n let current = intial\n head.setAttribute(\n 'style',\n 'float: left; width: 30em; padding: 0.5em; height: 1.5em; background-color: #ddd; color: #444; font-weight: bold'\n )\n const tr = dom.createElement('tr')\n const style0 = 'border-radius: 0.6em; text-align: center;'\n const style1 = style0 + 'background-color: #ccc; color: black;'\n head.appendChild(tr)\n const setStyles = function () {\n for (i = 0; i < labels.length; i++) {\n buttons[i].setAttribute('style', i === current ? style1 : style0)\n }\n }\n let i, b\n const buttons = []\n for (i = 0; i < labels.length; i++) {\n b = buttons[i] = dom.createElement('td')\n b.textContent = labels[i]\n tr.appendChild(buttons[i])\n const listen = function (b, i) {\n b.addEventListener('click', function (_e) {\n current = i\n setStyles()\n callback(i)\n })\n }\n listen(b, i)\n }\n setStyles()\n return head\n }\n\n const setMode = function (mode) {\n if (mode !== currentMode) {\n currentMode = mode\n deselectObject()\n showFiltered(mode)\n }\n }\n\n const wrapper = dom.createElement('div')\n wrapper.setAttribute(\n 'style',\n ' width: 30em; height: 100%; padding: 0em; float:left;'\n )\n // wrapper.appendChild(head)\n div.appendChild(wrapper)\n wrapper.appendChild(\n headerButtons(\n dom,\n ['all', 'attached', 'not attached'],\n currentMode,\n setMode\n )\n )\n\n const objectList = UI.widgets.selectorPanel(\n dom,\n kb,\n objectType,\n predicate,\n true,\n objects,\n options,\n showObject,\n linkClicked\n )\n objectList.setAttribute(\n 'style',\n 'background-color: #ffe; width: 30em; height: 100%; padding: 0em; overflow:scroll;'\n ) // float:left\n wrapper.appendChild(objectList)\n\n // objectList.insertBefore(head, objectList.firstChild)\n\n const preview = dom.createElement('div')\n preview.setAttribute(\n 'style',\n /* background-color: black; */ 'padding: 0em; margin: 0; height: 100%; overflow:scroll;'\n )\n div.appendChild(preview)\n showFiltered(currentMode)\n\n if (subjects.length > 0 && multi) {\n const stores = {}\n for (let k = 0; k < subjects.length; k++) {\n const store = findStore(kb, subjects[k])\n if (store) stores[store.uri] = subjects[k]\n // if (!store) complain(\"No store for \"+subjects[k].uri)\n }\n for (const storeURI in stores) {\n // var store = findStore(kb,subjects[subjectList.length-1])\n const store = kb.sym(storeURI)\n const mintBox = dom.createElement('div')\n mintBox.setAttribute(\n 'style',\n 'clear: left; width: 20em; margin-top:2em; background-color:#ccc; border-radius: 1em; padding: 1em; font-weight: bold;'\n )\n mintBox.textContent = '+ New ' + UI.utils.label(subject)\n\n mintBox.textContent += ' in ' + UI.utils.label(store)\n const storeLab = dom.createElement('span')\n storeLab.setAttribute(\n 'style',\n 'font-weight: normal; font-size: 80%; color: #777;'\n )\n storeLab.textContent = storeURI\n mintBox.appendChild(dom.createElement('br'))\n mintBox.appendChild(storeLab)\n /*\n var mintButton = dom.createElement('img')\n mintBox.appendChild(mintButton)\n mintButton.setAttribute('src', ...); @@ Invokes master handler\n */\n mintBox.addEventListener(\n 'click',\n function (_event) {\n const thisForm = UI.widgets.promptForNew(\n dom,\n kb,\n subject,\n predicate,\n subject,\n null,\n store,\n function (ok, _body) {\n if (!ok) {\n // callback(ok, body); // @@ if ok, need some form of refresh of the select for the new thing\n } else {\n // Refresh @@\n }\n }\n )\n try {\n div.insertBefore(thisForm, mintBox.nextSibling) // Sigh no insertAfter\n } catch (e) {\n div.appendChild(thisForm)\n }\n // var newObject = thisForm.AJAR_subject\n },\n false\n )\n div.appendChild(mintBox)\n }\n }\n\n // if (!me) complain(\"(You do not have your Web Id set. Set your Web ID to make changes.)\")\n\n return div\n }\n} // pane object\n\n// ends\n"],"mappings":"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","ignoreList":[]}