contacts-pane 3.0.2 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -1
- package/dist/contactsPane.js +6487 -763
- package/dist/contactsPane.js.map +1 -1
- package/dist/contactsPane.min.js +2 -0
- package/dist/contactsPane.min.js.map +1 -0
- package/dist/styles/contactsPane.css +602 -0
- package/dist/styles/contactsRDFFormsEnforced.css +513 -0
- package/dist/styles/groupMembership.css +115 -0
- package/dist/styles/individual.css +12 -0
- package/dist/styles/localUtils.css +49 -0
- package/dist/styles/mugshotGallery.css +17 -0
- package/dist/styles/toolsPane.css +43 -0
- package/dist/styles/utilities.css +69 -0
- package/dist/styles/webidControl.css +90 -0
- package/package.json +23 -17
- package/dist/autocompleteBar.d.ts +0 -3
- package/dist/autocompleteBar.d.ts.map +0 -1
- package/dist/autocompleteBar.js +0 -90
- package/dist/autocompleteBar.js.map +0 -1
- package/dist/autocompleteField.d.ts +0 -20
- package/dist/autocompleteField.d.ts.map +0 -1
- package/dist/autocompleteField.js +0 -165
- package/dist/autocompleteField.js.map +0 -1
- package/dist/autocompletePicker.d.ts +0 -15
- package/dist/autocompletePicker.d.ts.map +0 -1
- package/dist/autocompletePicker.js +0 -253
- package/dist/autocompletePicker.js.map +0 -1
- package/dist/contactLogic.js +0 -223
- package/dist/contactLogic.js.map +0 -1
- package/dist/groupMembershipControl.js +0 -107
- package/dist/groupMembershipControl.js.map +0 -1
- package/dist/individual.js +0 -115
- package/dist/individual.js.map +0 -1
- package/dist/mintNewAddressBook.js +0 -145
- package/dist/mintNewAddressBook.js.map +0 -1
- package/dist/mugshotGallery.js +0 -264
- package/dist/mugshotGallery.js.map +0 -1
- package/dist/publicData.d.ts +0 -82
- package/dist/publicData.d.ts.map +0 -1
- package/dist/publicData.js +0 -421
- package/dist/publicData.js.map +0 -1
- package/dist/toolsPane.js +0 -671
- package/dist/toolsPane.js.map +0 -1
- package/dist/webidControl.js +0 -320
- package/dist/webidControl.js.map +0 -1
package/dist/mugshotGallery.js
DELETED
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.renderMugshotGallery = renderMugshotGallery;
|
|
7
|
-
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
8
|
-
var _solidLogic = require("solid-logic");
|
|
9
|
-
var _mimeTypes = _interopRequireDefault(require("mime-types"));
|
|
10
|
-
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
11
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
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); }
|
|
13
|
-
const ns = UI.ns;
|
|
14
|
-
const utils = UI.utils;
|
|
15
|
-
const kb = _solidLogic.store;
|
|
16
|
-
|
|
17
|
-
/* Mugshot Gallery
|
|
18
|
-
*
|
|
19
|
-
* A widget for managing a set of images.
|
|
20
|
-
* Make this a form field?
|
|
21
|
-
*/
|
|
22
|
-
function renderMugshotGallery(dom, subject) {
|
|
23
|
-
function complain(message) {
|
|
24
|
-
console.log(message);
|
|
25
|
-
galleryDiv.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'));
|
|
26
|
-
}
|
|
27
|
-
async function linkToPicture(subject, pic, remove) {
|
|
28
|
-
const link = [$rdf.st(subject, ns.vcard('hasPhoto'), pic, subject.doc())];
|
|
29
|
-
try {
|
|
30
|
-
if (remove) {
|
|
31
|
-
await kb.updater.update(link, []);
|
|
32
|
-
} else {
|
|
33
|
-
await kb.updater.update([], link);
|
|
34
|
-
}
|
|
35
|
-
} catch (err) {
|
|
36
|
-
const msg = ' Write back image link FAIL ' + pic + ', Error: ' + err;
|
|
37
|
-
console.log(msg);
|
|
38
|
-
alert(msg);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function handleDroppedThing(thing) {
|
|
42
|
-
kb.fetcher.nowOrWhenFetched(thing.doc(), function (ok, mess) {
|
|
43
|
-
if (!ok) {
|
|
44
|
-
console.log('Error looking up dropped thing ' + thing + ': ' + mess);
|
|
45
|
-
} else {
|
|
46
|
-
const types = kb.findTypeURIs(thing);
|
|
47
|
-
for (const ty in types) {
|
|
48
|
-
console.log(' drop object type includes: ' + ty); // @@ Allow email addresses and phone numbers to be dropped?
|
|
49
|
-
}
|
|
50
|
-
console.log('Default: assume web page ' + thing); // icon was: UI.icons.iconBase + 'noun_25830.svg'
|
|
51
|
-
kb.add(subject, ns.wf('attachment'), thing, subject.doc());
|
|
52
|
-
// @@ refresh UI
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
function uploadFileToContact(filename, contentType, data) {
|
|
57
|
-
// const fileExtension = filename.split('.').pop() // .toLowerCase()
|
|
58
|
-
const extension = _mimeTypes.default.extension(contentType);
|
|
59
|
-
if (contentType !== _mimeTypes.default.lookup(filename)) {
|
|
60
|
-
filename += '_.' + extension;
|
|
61
|
-
console.log('MIME TYPE MISMATCH -- adding extension: ' + filename);
|
|
62
|
-
}
|
|
63
|
-
let prefix, predicate;
|
|
64
|
-
const isImage = contentType.startsWith('image');
|
|
65
|
-
if (isImage) {
|
|
66
|
-
prefix = 'image_';
|
|
67
|
-
predicate = ns.vcard('hasPhoto');
|
|
68
|
-
} else {
|
|
69
|
-
prefix = 'attachment_';
|
|
70
|
-
predicate = ns.wf('attachment');
|
|
71
|
-
}
|
|
72
|
-
let n, pic;
|
|
73
|
-
for (n = 0;; n++) {
|
|
74
|
-
// Check filename is not used or invent new one
|
|
75
|
-
pic = kb.sym(subject.dir().uri + filename);
|
|
76
|
-
if (!kb.holds(subject, ns.vcard('hasPhoto'), pic)) {
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
filename = prefix + n + '.' + extension;
|
|
80
|
-
}
|
|
81
|
-
console.log('Putting ' + data.byteLength + ' bytes of ' + contentType + ' to ' + pic);
|
|
82
|
-
kb.fetcher.webOperation('PUT', pic.uri, {
|
|
83
|
-
data,
|
|
84
|
-
contentType
|
|
85
|
-
}).then(function (response) {
|
|
86
|
-
if (!response.ok) {
|
|
87
|
-
complain('Error uploading ' + pic + ':' + response.status);
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
console.log(' Upload: put OK: ' + pic);
|
|
91
|
-
kb.add(subject, predicate, pic, subject.doc());
|
|
92
|
-
kb.fetcher.putBack(subject.doc(), {
|
|
93
|
-
contentType: 'text/turtle'
|
|
94
|
-
}).then(function (_response) {
|
|
95
|
-
if (isImage) {
|
|
96
|
-
mugshotDiv.refresh();
|
|
97
|
-
}
|
|
98
|
-
}, function (err) {
|
|
99
|
-
console.log(' Write back image link FAIL ' + pic + ', Error: ' + err);
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// When a set of URIs are dropped on
|
|
105
|
-
async function handleURIsDroppedOnMugshot(uris) {
|
|
106
|
-
for (const u of uris) {
|
|
107
|
-
let thing = $rdf.sym(u); // Attachment needs text label to disinguish I think not icon.
|
|
108
|
-
console.log('Dropped on mugshot thing ' + thing); // icon was: UI.icons.iconBase + 'noun_25830.svg'
|
|
109
|
-
if (u.startsWith('http') && u.indexOf('#') < 0) {
|
|
110
|
-
// Plain document
|
|
111
|
-
// Take a copy of a photo on the web:
|
|
112
|
-
if (u.startsWith('http:')) {
|
|
113
|
-
// because of browser mixed content stuff can't read http:
|
|
114
|
-
thing = $rdf.sym('https:' + u.slice(5));
|
|
115
|
-
}
|
|
116
|
-
const options = {
|
|
117
|
-
withCredentials: false,
|
|
118
|
-
credentials: 'omit'
|
|
119
|
-
};
|
|
120
|
-
let result;
|
|
121
|
-
try {
|
|
122
|
-
result = await kb.fetcher.webOperation('GET', thing.uri, options);
|
|
123
|
-
} catch (err) {
|
|
124
|
-
complain(`Gallery: fetch error trying to read picture ${thing} data: ${err}`);
|
|
125
|
-
handleDroppedThing(thing);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
const contentType = result.headers.get('Content-Type');
|
|
129
|
-
let pathEnd = thing.uri.split('/').slice(-1)[0]; // last segment as putative filename
|
|
130
|
-
pathEnd = pathEnd.split('?')[0]; // chop off any query params
|
|
131
|
-
const data = await result.arrayBuffer();
|
|
132
|
-
if (!result.ok) {
|
|
133
|
-
alert('Cant download, so will link image. ' + thing + ':' + result.status);
|
|
134
|
-
handleDroppedThing(thing);
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
uploadFileToContact(pathEnd, contentType, data);
|
|
138
|
-
return;
|
|
139
|
-
} else {
|
|
140
|
-
alert('Not a web document URI, cannot copy as picture: ' + thing);
|
|
141
|
-
}
|
|
142
|
-
handleDroppedThing(thing);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Drop an image file to set up the mugshot
|
|
147
|
-
function droppedFileHandler(files) {
|
|
148
|
-
for (let i = 0; i < files.length; i++) {
|
|
149
|
-
const f = files[i];
|
|
150
|
-
console.log(' contacts: Filename: ' + f.name + ', type: ' + (f.type || 'n/a') + ' size: ' + f.size + ' bytes, last modified: ' + (f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a')); // See e.g. https://www.html5rocks.com/en/tutorials/file/dndfiles/
|
|
151
|
-
|
|
152
|
-
// @@ Add: progress bar(s)
|
|
153
|
-
const reader = new FileReader();
|
|
154
|
-
reader.onload = function (theFile) {
|
|
155
|
-
return function (e) {
|
|
156
|
-
const data = e.target.result;
|
|
157
|
-
console.log(' File read byteLength : ' + data.byteLength);
|
|
158
|
-
const filename = encodeURIComponent(theFile.name);
|
|
159
|
-
const contentType = theFile.type;
|
|
160
|
-
uploadFileToContact(filename, contentType, data);
|
|
161
|
-
};
|
|
162
|
-
}(f);
|
|
163
|
-
reader.readAsArrayBuffer(f);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
function elementForImage(image) {
|
|
167
|
-
const img = dom.createElement('img');
|
|
168
|
-
img.setAttribute('style', 'max-height: 10em; border-radius: 1em; margin: 0.7em;');
|
|
169
|
-
UI.widgets.makeDropTarget(img, handleURIsDroppedOnMugshot, droppedFileHandler);
|
|
170
|
-
if (image) {
|
|
171
|
-
// img.setAttribute('src', image.uri) use token and works with NSS but not with CSS
|
|
172
|
-
// we need to get image with authenticated fetch
|
|
173
|
-
_solidLogic.store.fetcher._fetch(image.uri).then(function (response) {
|
|
174
|
-
return response.blob();
|
|
175
|
-
}).then(function (myBlob) {
|
|
176
|
-
const objectURL = URL.createObjectURL(myBlob);
|
|
177
|
-
img.setAttribute('src', objectURL);
|
|
178
|
-
});
|
|
179
|
-
UI.widgets.makeDraggable(img, image);
|
|
180
|
-
}
|
|
181
|
-
return img;
|
|
182
|
-
}
|
|
183
|
-
function syncMugshots() {
|
|
184
|
-
let images = kb.each(subject, ns.vcard('hasPhoto')); // Priviledge vcard ones
|
|
185
|
-
images.sort(); // arbitrary consistency
|
|
186
|
-
images = images.slice(0, 5); // max number for the space
|
|
187
|
-
if (images.length === 0) {
|
|
188
|
-
mugshotDiv.innerHTML = ''; // strictly, don't remove it if already there
|
|
189
|
-
if (editable) {
|
|
190
|
-
mugshotDiv.appendChild(placeholder); // A head image to drop pictures on
|
|
191
|
-
} // otherwise leave gallery empty .. nothing to see here folks
|
|
192
|
-
} else {
|
|
193
|
-
utils.syncTableToArray(mugshotDiv, images, elementForImage);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// Good URI for a Camera picture
|
|
198
|
-
function getImageDoc() {
|
|
199
|
-
const imageDoc = kb.sym(subject.dir().uri + 'Image_' + Date.now() + '.png');
|
|
200
|
-
return imageDoc;
|
|
201
|
-
}
|
|
202
|
-
// Store picture
|
|
203
|
-
async function tookPicture(imageDoc) {
|
|
204
|
-
if (imageDoc) {
|
|
205
|
-
await linkToPicture(subject, imageDoc);
|
|
206
|
-
syncMugshots();
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
function trashCan() {
|
|
210
|
-
const button = UI.widgets.button(dom, UI.icons.iconBase + 'noun_925021.svg', 'Drag here to delete');
|
|
211
|
-
async function droppedURIHandler(uris) {
|
|
212
|
-
const images = kb.each(subject, ns.vcard('hasPhoto')).map(x => x.uri);
|
|
213
|
-
for (const uri of uris) {
|
|
214
|
-
if (!images.includes(uri)) {
|
|
215
|
-
alert('Only drop images in this contact onto this trash can.');
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
if (confirm(`Permanently DELETE image ${uri} completely?`)) {
|
|
219
|
-
console.log('Unlinking image file ' + uri);
|
|
220
|
-
await linkToPicture(subject, kb.sym(uri), true);
|
|
221
|
-
try {
|
|
222
|
-
console.log('Deleting image file ' + uri);
|
|
223
|
-
await kb.fetcher.webOperation('DELETE', uri);
|
|
224
|
-
} catch (err) {
|
|
225
|
-
alert('Unable to delete picture! ' + err);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
syncMugshots();
|
|
230
|
-
}
|
|
231
|
-
UI.widgets.makeDropTarget(button, droppedURIHandler, null);
|
|
232
|
-
return button;
|
|
233
|
-
}
|
|
234
|
-
function renderImageTools() {
|
|
235
|
-
const imageToolTable = dom.createElement('table');
|
|
236
|
-
const row = imageToolTable.appendChild(dom.createElement('tr'));
|
|
237
|
-
const left = row.appendChild(dom.createElement('td'));
|
|
238
|
-
const middle = row.appendChild(dom.createElement('td'));
|
|
239
|
-
const right = row.appendChild(dom.createElement('td'));
|
|
240
|
-
left.appendChild(UI.media.cameraButton(dom, kb, getImageDoc, tookPicture)); // 20190812
|
|
241
|
-
try {
|
|
242
|
-
middle.appendChild(UI.widgets.fileUploadButtonDiv(dom, droppedFileHandler));
|
|
243
|
-
} catch (e) {
|
|
244
|
-
console.log('ignore fileUploadButtonDiv error for now', e);
|
|
245
|
-
}
|
|
246
|
-
right.appendChild(trashCan());
|
|
247
|
-
return imageToolTable;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// Body of renderMugshotGallery
|
|
251
|
-
|
|
252
|
-
const editable = kb.updater.editable(subject.doc().uri, kb);
|
|
253
|
-
const galleryDiv = dom.createElement('div');
|
|
254
|
-
const mugshotDiv = galleryDiv.appendChild(dom.createElement('div'));
|
|
255
|
-
const placeholder = elementForImage();
|
|
256
|
-
UI.widgets.setImage(placeholder, subject); // Fallback icon or get from web
|
|
257
|
-
syncMugshots();
|
|
258
|
-
mugshotDiv.refresh = syncMugshots;
|
|
259
|
-
if (editable) {
|
|
260
|
-
galleryDiv.appendChild(renderImageTools());
|
|
261
|
-
}
|
|
262
|
-
return galleryDiv;
|
|
263
|
-
}
|
|
264
|
-
//# sourceMappingURL=mugshotGallery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mugshotGallery.js","names":["UI","_interopRequireWildcard","require","_solidLogic","_mimeTypes","_interopRequireDefault","$rdf","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","utils","kb","store","renderMugshotGallery","dom","subject","complain","message","console","log","galleryDiv","appendChild","widgets","errorMessageBlock","linkToPicture","pic","remove","link","st","vcard","doc","updater","update","err","msg","alert","handleDroppedThing","thing","fetcher","nowOrWhenFetched","ok","mess","types","findTypeURIs","ty","add","wf","uploadFileToContact","filename","contentType","data","extension","mime","lookup","prefix","predicate","isImage","startsWith","sym","dir","uri","holds","byteLength","webOperation","then","response","status","putBack","_response","mugshotDiv","refresh","handleURIsDroppedOnMugshot","uris","u","indexOf","slice","options","withCredentials","credentials","result","headers","pathEnd","split","arrayBuffer","droppedFileHandler","files","length","name","type","size","lastModifiedDate","toLocaleDateString","reader","FileReader","onload","theFile","target","encodeURIComponent","readAsArrayBuffer","elementForImage","image","img","createElement","setAttribute","makeDropTarget","_fetch","blob","myBlob","objectURL","URL","createObjectURL","makeDraggable","syncMugshots","images","each","sort","innerHTML","editable","placeholder","syncTableToArray","getImageDoc","imageDoc","Date","now","tookPicture","trashCan","button","icons","iconBase","droppedURIHandler","map","x","includes","confirm","renderImageTools","imageToolTable","row","left","middle","right","media","cameraButton","fileUploadButtonDiv","setImage"],"sources":["../src/mugshotGallery.js"],"sourcesContent":["import * as UI from 'solid-ui'\nimport { store } from 'solid-logic'\nimport mime from 'mime-types'\nimport * as $rdf from 'rdflib'\n\nconst ns = UI.ns\nconst utils = UI.utils\nconst kb = store\n\n/* Mugshot Gallery\n*\n* A widget for managing a set of images.\n* Make this a form field?\n*/\nexport function renderMugshotGallery (dom, subject) {\n function complain (message) {\n console.log(message)\n galleryDiv.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'))\n }\n\n async function linkToPicture (subject, pic, remove) {\n const link = [\n $rdf.st(subject, ns.vcard('hasPhoto'), pic, subject.doc())\n ]\n try {\n if (remove) {\n await kb.updater.update(link, [])\n } else {\n await kb.updater.update([], link)\n }\n } catch (err) {\n const msg = ' Write back image link FAIL ' + pic + ', Error: ' + err\n console.log(msg)\n alert(msg)\n }\n }\n\n function handleDroppedThing (thing) {\n kb.fetcher.nowOrWhenFetched(thing.doc(), function (ok, mess) {\n if (!ok) {\n console.log('Error looking up dropped thing ' + thing + ': ' + mess)\n } else {\n const types = kb.findTypeURIs(thing)\n for (const ty in types) {\n console.log(' drop object type includes: ' + ty) // @@ Allow email addresses and phone numbers to be dropped?\n }\n console.log('Default: assume web page ' + thing) // icon was: UI.icons.iconBase + 'noun_25830.svg'\n kb.add(subject, ns.wf('attachment'), thing, subject.doc())\n // @@ refresh UI\n }\n })\n }\n\n function uploadFileToContact (filename, contentType, data) {\n // const fileExtension = filename.split('.').pop() // .toLowerCase()\n const extension = mime.extension(contentType)\n if (contentType !== mime.lookup(filename)) {\n filename += '_.' + extension\n console.log('MIME TYPE MISMATCH -- adding extension: ' + filename)\n }\n let prefix, predicate\n const isImage = contentType.startsWith('image')\n if (isImage) {\n prefix = 'image_'\n predicate = ns.vcard('hasPhoto')\n } else {\n prefix = 'attachment_'\n predicate = ns.wf('attachment')\n }\n\n let n, pic\n for (n = 0; ; n++) {\n // Check filename is not used or invent new one\n pic = kb.sym(subject.dir().uri + filename)\n if (!kb.holds(subject, ns.vcard('hasPhoto'), pic)) {\n break\n }\n filename = prefix + n + '.' + extension\n }\n console.log(\n 'Putting ' +\n data.byteLength +\n ' bytes of ' +\n contentType +\n ' to ' +\n pic\n )\n kb.fetcher\n .webOperation('PUT', pic.uri, {\n data,\n contentType\n })\n .then(function (response) {\n if (!response.ok) {\n complain('Error uploading ' + pic + ':' + response.status)\n return\n }\n console.log(' Upload: put OK: ' + pic)\n kb.add(subject, predicate, pic, subject.doc())\n kb.fetcher\n .putBack(subject.doc(), { contentType: 'text/turtle' })\n .then(\n function (_response) {\n if (isImage) {\n mugshotDiv.refresh()\n }\n },\n function (err) {\n console.log(\n ' Write back image link FAIL ' + pic + ', Error: ' + err\n )\n }\n )\n })\n }\n\n // When a set of URIs are dropped on\n async function handleURIsDroppedOnMugshot (uris) {\n for (const u of uris) {\n let thing = $rdf.sym(u) // Attachment needs text label to disinguish I think not icon.\n console.log('Dropped on mugshot thing ' + thing) // icon was: UI.icons.iconBase + 'noun_25830.svg'\n if (u.startsWith('http') && u.indexOf('#') < 0) {\n // Plain document\n // Take a copy of a photo on the web:\n if (u.startsWith('http:')) { // because of browser mixed content stuff can't read http:\n thing = $rdf.sym('https:' + u.slice(5))\n }\n const options = { withCredentials: false, credentials: 'omit' }\n let result\n try {\n result = await kb.fetcher.webOperation('GET', thing.uri, options)\n } catch (err) {\n complain(\n `Gallery: fetch error trying to read picture ${thing} data: ${err}`\n )\n handleDroppedThing(thing)\n return\n }\n const contentType = result.headers.get('Content-Type')\n let pathEnd = thing.uri.split('/').slice(-1)[0] // last segment as putative filename\n pathEnd = pathEnd.split('?')[0] // chop off any query params\n const data = await result.arrayBuffer()\n if (!result.ok) {\n alert('Cant download, so will link image. ' + thing + ':' + result.status)\n handleDroppedThing(thing)\n return\n }\n uploadFileToContact(pathEnd, contentType, data)\n return\n } else {\n alert(\n 'Not a web document URI, cannot copy as picture: ' + thing\n )\n }\n handleDroppedThing(thing)\n }\n }\n\n // Drop an image file to set up the mugshot\n function droppedFileHandler (files) {\n for (let i = 0; i < files.length; i++) {\n const f = files[i]\n console.log(\n ' contacts: Filename: ' +\n f.name +\n ', type: ' +\n (f.type || 'n/a') +\n ' size: ' +\n f.size +\n ' bytes, last modified: ' +\n (f.lastModifiedDate\n ? f.lastModifiedDate.toLocaleDateString()\n : 'n/a')\n ) // See e.g. https://www.html5rocks.com/en/tutorials/file/dndfiles/\n\n // @@ Add: progress bar(s)\n const reader = new FileReader()\n reader.onload = (function (theFile) {\n return function (e) {\n const data = e.target.result\n console.log(' File read byteLength : ' + data.byteLength)\n const filename = encodeURIComponent(theFile.name)\n const contentType = theFile.type\n uploadFileToContact(filename, contentType, data)\n }\n })(f)\n reader.readAsArrayBuffer(f)\n }\n }\n\n function elementForImage (image) {\n const img = dom.createElement('img')\n img.setAttribute(\n 'style',\n 'max-height: 10em; border-radius: 1em; margin: 0.7em;'\n )\n UI.widgets.makeDropTarget(\n img,\n handleURIsDroppedOnMugshot,\n droppedFileHandler\n )\n if (image) {\n // img.setAttribute('src', image.uri) use token and works with NSS but not with CSS\n // we need to get image with authenticated fetch\n store.fetcher._fetch(image.uri)\n .then(function (response) {\n return response.blob()\n })\n .then(function (myBlob) {\n const objectURL = URL.createObjectURL(myBlob)\n img.setAttribute('src', objectURL)\n })\n UI.widgets.makeDraggable(img, image)\n }\n return img\n }\n\n function syncMugshots () {\n let images = kb.each(subject, ns.vcard('hasPhoto')) // Priviledge vcard ones\n images.sort() // arbitrary consistency\n images = images.slice(0, 5) // max number for the space\n if (images.length === 0) {\n mugshotDiv.innerHTML = '' // strictly, don't remove it if already there\n if (editable) {\n mugshotDiv.appendChild(placeholder) // A head image to drop pictures on\n } // otherwise leave gallery empty .. nothing to see here folks\n } else {\n utils.syncTableToArray(mugshotDiv, images, elementForImage)\n }\n }\n\n // Good URI for a Camera picture\n function getImageDoc () {\n const imageDoc = kb.sym(\n subject.dir().uri + 'Image_' + Date.now() + '.png'\n )\n return imageDoc\n }\n // Store picture\n async function tookPicture (imageDoc) {\n if (imageDoc) {\n await linkToPicture(subject, imageDoc)\n syncMugshots()\n }\n }\n\n function trashCan () {\n const button = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_925021.svg',\n 'Drag here to delete'\n )\n async function droppedURIHandler (uris) {\n const images = kb\n .each(subject, ns.vcard('hasPhoto'))\n .map(x => x.uri)\n for (const uri of uris) {\n if (!images.includes(uri)) {\n alert('Only drop images in this contact onto this trash can.')\n return\n }\n if (confirm(`Permanently DELETE image ${uri} completely?`)) {\n console.log('Unlinking image file ' + uri)\n await linkToPicture(subject, kb.sym(uri), true)\n try {\n console.log('Deleting image file ' + uri)\n await kb.fetcher.webOperation('DELETE', uri)\n } catch (err) {\n alert('Unable to delete picture! ' + err)\n }\n }\n }\n syncMugshots()\n }\n UI.widgets.makeDropTarget(button, droppedURIHandler, null)\n return button\n }\n\n function renderImageTools () {\n const imageToolTable = dom.createElement('table')\n const row = imageToolTable.appendChild(dom.createElement('tr'))\n const left = row.appendChild(dom.createElement('td'))\n const middle = row.appendChild(dom.createElement('td'))\n const right = row.appendChild(dom.createElement('td'))\n\n left.appendChild(\n UI.media.cameraButton(dom, kb, getImageDoc, tookPicture)\n ) // 20190812\n try {\n middle.appendChild(\n UI.widgets.fileUploadButtonDiv(dom, droppedFileHandler)\n )\n } catch (e) {\n console.log('ignore fileUploadButtonDiv error for now', e)\n }\n right.appendChild(trashCan())\n return imageToolTable\n }\n\n // Body of renderMugshotGallery\n\n const editable = kb.updater.editable(subject.doc().uri, kb)\n const galleryDiv = dom.createElement('div')\n const mugshotDiv = galleryDiv.appendChild(dom.createElement('div'))\n const placeholder = elementForImage()\n UI.widgets.setImage(placeholder, subject) // Fallback icon or get from web\n syncMugshots()\n mugshotDiv.refresh = syncMugshots\n if (editable) {\n galleryDiv.appendChild(renderImageTools())\n }\n return galleryDiv\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/publicData.d.ts
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { NamedNode } from 'rdflib';
|
|
2
|
-
export declare const AUTOCOMPLETE_LIMIT = 3000;
|
|
3
|
-
interface Term {
|
|
4
|
-
type: string;
|
|
5
|
-
value: string;
|
|
6
|
-
}
|
|
7
|
-
interface Binding {
|
|
8
|
-
subject: Term;
|
|
9
|
-
name?: Term;
|
|
10
|
-
location?: Term;
|
|
11
|
-
coordinates?: Term;
|
|
12
|
-
}
|
|
13
|
-
type Bindings = Binding[];
|
|
14
|
-
export type QueryParameters = {
|
|
15
|
-
label: string;
|
|
16
|
-
logo: string;
|
|
17
|
-
searchByNameQuery?: string;
|
|
18
|
-
searchByNameURI?: string;
|
|
19
|
-
insitituteDetailsQuery?: string;
|
|
20
|
-
endpoint?: string;
|
|
21
|
-
class: object;
|
|
22
|
-
};
|
|
23
|
-
export declare const wikidataClasses: {
|
|
24
|
-
Corporation: string;
|
|
25
|
-
EducationalOrganization: string;
|
|
26
|
-
GovernmentOrganization: string;
|
|
27
|
-
MedicalOrganization: string;
|
|
28
|
-
MusicGroup: string;
|
|
29
|
-
NGO: string;
|
|
30
|
-
Occupation: string;
|
|
31
|
-
Project: string;
|
|
32
|
-
SportsOrganization: string;
|
|
33
|
-
};
|
|
34
|
-
export declare function getPreferredLanguages(): Promise<string[]>;
|
|
35
|
-
export declare const escoParameters: QueryParameters;
|
|
36
|
-
export declare const dbpediaParameters: QueryParameters;
|
|
37
|
-
export declare const wikidataParameters: {
|
|
38
|
-
label: string;
|
|
39
|
-
logo: string;
|
|
40
|
-
endpoint: string;
|
|
41
|
-
class: {
|
|
42
|
-
AcademicInsitution: string;
|
|
43
|
-
Enterprise: string;
|
|
44
|
-
Business: string;
|
|
45
|
-
NGO: string;
|
|
46
|
-
CharitableOrganization: string;
|
|
47
|
-
Insitute: string;
|
|
48
|
-
};
|
|
49
|
-
searchByNameQuery: string;
|
|
50
|
-
insitituteDetailsQuery: string;
|
|
51
|
-
};
|
|
52
|
-
export declare function filterByLanguage(bindings: Bindings, languagePrefs: string[]): Bindings;
|
|
53
|
-
export declare var wikidataClassMap: {
|
|
54
|
-
'http://www.wikidata.org/entity/Q15936437': any;
|
|
55
|
-
'http://www.wikidata.org/entity/Q1664720': any;
|
|
56
|
-
'http://www.wikidata.org/entity/Q43229': any;
|
|
57
|
-
'http://www.wikidata.org/entity/Q3918': any;
|
|
58
|
-
'http://www.wikidata.org/entity/Q170584': any;
|
|
59
|
-
'http://www.wikidata.org/entity/Q327333': any;
|
|
60
|
-
'http://www.wikidata.org/entity/Q2221906': any;
|
|
61
|
-
};
|
|
62
|
-
export declare var predMap: {
|
|
63
|
-
class: any;
|
|
64
|
-
sealImage: any;
|
|
65
|
-
shortName: any;
|
|
66
|
-
subsidiary: any;
|
|
67
|
-
};
|
|
68
|
-
export declare function loadFromBindings(kb: any, solidSubject: NamedNode, bindings: any, doc: any): void;
|
|
69
|
-
export declare function queryESCODataByName(filter: string, theClass: NamedNode, queryTarget: QueryParameters): Promise<Bindings>;
|
|
70
|
-
export declare function queryPublicDataByName(filter: string, theClass: NamedNode, queryTarget: QueryParameters): Promise<Bindings>;
|
|
71
|
-
export declare function queryPublicDataSelect(sparql: string, queryTarget: QueryParameters): Promise<Bindings>;
|
|
72
|
-
export declare function queryPublicDataConstruct(sparql: string, publicId: NamedNode, queryTarget: QueryParameters): Promise<void>;
|
|
73
|
-
export declare function loadPublicDataThing(kb: any, subject: NamedNode, publicDataID: NamedNode): Promise<any>;
|
|
74
|
-
export declare function getWikidataDetails(kb: any, solidSubject: NamedNode, publicDataID: NamedNode): Promise<void>;
|
|
75
|
-
export declare function getWikidataDetailsOld(kb: any, solidSubject: NamedNode, publicDataID: NamedNode): Promise<void>;
|
|
76
|
-
export declare function getWikidataLocation(kb: any, solidSubject: NamedNode, publicDataID: NamedNode): Promise<void>;
|
|
77
|
-
export declare function getDbpediaDetails(kb: any, solidSubject: NamedNode, publicDataID: NamedNode): Promise<{
|
|
78
|
-
uri: string;
|
|
79
|
-
name: string | undefined;
|
|
80
|
-
}[]>;
|
|
81
|
-
export {};
|
|
82
|
-
//# sourceMappingURL=publicData.d.ts.map
|
package/dist/publicData.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publicData.d.ts","sourceRoot":"","sources":["../src/publicData.ts"],"names":[],"mappings":"AAIA,OAAO,EAAW,SAAS,EAAS,MAAM,QAAQ,CAAA;AAKlD,eAAO,MAAM,kBAAkB,OAAO,CAAA;AAItC,UAAU,IAAI;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,OAAO;IACf,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB;AAED,KAAK,QAAQ,GAAG,OAAO,EAAE,CAAA;AAEzB,MAAM,MAAM,eAAe,GAC3B;IACE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAID,eAAO,MAAM,eAAe;;;;;;;;;;CAW3B,CAAA;AAED,wBAAsB,qBAAqB,sBAE1C;AACD,eAAO,MAAM,cAAc,EAAC,eAO3B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAC,eAS9B,CAAA;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;CAqC9B,CAAA;AAMD,wBAAgB,gBAAgB,CAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,QAAQ,CAuBvF;AAED,eAAO,IAAI,gBAAgB;;;;;;;;CAS1B,CAAA;AACD,eAAO,IAAI,OAAO;;;;;CAOjB,CAAA;AAED,wBAAgB,gBAAgB,CAAE,EAAE,KAAA,EAAE,YAAY,EAAC,SAAS,EAAE,QAAQ,KAAA,EAAE,GAAG,KAAA,QAoD1E;AAOD,wBAAsB,mBAAmB,CAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,SAAS,EAAE,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+B9H;AAID,wBAAsB,qBAAqB,CAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,SAAS,EAAE,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAOhI;AAED,wBAAsB,qBAAqB,CAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuB5G;AAED,wBAAsB,wBAAwB,CAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBhI;AAED,wBAAsB,mBAAmB,CAAE,EAAE,KAAA,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,gBAmBzF;AAED,wBAAsB,kBAAkB,CAAE,EAAE,KAAA,EAAE,YAAY,EAAC,SAAS,EAAE,YAAY,EAAC,SAAS,iBAK3F;AAED,wBAAsB,qBAAqB,CAAE,EAAE,KAAA,EAAE,YAAY,EAAC,SAAS,EAAE,YAAY,EAAC,SAAS,iBAiB9F;AAED,wBAAsB,mBAAmB,CAAE,EAAE,KAAA,EAAE,YAAY,EAAC,SAAS,EAAE,YAAY,EAAC,SAAS,iBAgB5F;AAED,wBAAsB,iBAAiB,CAAE,EAAE,KAAA,EAAE,YAAY,EAAC,SAAS,EAAE,YAAY,EAAC,SAAS;;;KA0B1F"}
|