solid-ui 2.4.15-348f23a8 → 2.4.15-alpha
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/LICENSE.md +0 -0
- package/README.md +0 -0
- package/lib/acl/access-controller.d.ts +0 -0
- package/lib/acl/access-controller.d.ts.map +0 -0
- package/lib/acl/access-controller.js +0 -0
- package/lib/acl/access-controller.js.map +0 -0
- package/lib/acl/access-groups.d.ts +0 -0
- package/lib/acl/access-groups.d.ts.map +0 -0
- package/lib/acl/access-groups.js +0 -0
- package/lib/acl/access-groups.js.map +0 -0
- package/lib/acl/acl-control.d.ts +0 -0
- package/lib/acl/acl-control.d.ts.map +0 -0
- package/lib/acl/acl-control.js +0 -0
- package/lib/acl/acl-control.js.map +0 -0
- package/lib/acl/acl.d.ts +0 -0
- package/lib/acl/acl.d.ts.map +0 -0
- package/lib/acl/acl.js +0 -0
- package/lib/acl/acl.js.map +0 -0
- package/lib/acl/add-agent-buttons.d.ts +0 -0
- package/lib/acl/add-agent-buttons.d.ts.map +0 -0
- package/lib/acl/add-agent-buttons.js +0 -0
- package/lib/acl/add-agent-buttons.js.map +0 -0
- package/lib/acl/index.d.ts +0 -0
- package/lib/acl/index.d.ts.map +0 -0
- package/lib/acl/index.js +0 -0
- package/lib/acl/index.js.map +0 -0
- package/lib/acl/styles.d.ts +0 -0
- package/lib/acl/styles.d.ts.map +0 -0
- package/lib/acl/styles.js +0 -0
- package/lib/acl/styles.js.map +0 -0
- package/lib/acl/types.d.ts +0 -0
- package/lib/acl/types.d.ts.map +0 -0
- package/lib/acl/types.js +0 -0
- package/lib/acl/types.js.map +0 -0
- package/lib/authn/authSession.d.ts +0 -0
- package/lib/authn/authSession.d.ts.map +0 -0
- package/lib/authn/authSession.js +0 -0
- package/lib/authn/authSession.js.map +0 -0
- package/lib/authn/authn.d.ts +0 -0
- package/lib/authn/authn.d.ts.map +0 -0
- package/lib/authn/authn.js +0 -0
- package/lib/authn/authn.js.map +0 -0
- package/lib/authn/config-default.js +0 -0
- package/lib/authn/config-default.js.map +0 -0
- package/lib/authn/index.d.ts +0 -0
- package/lib/authn/index.d.ts.map +0 -0
- package/lib/authn/index.js +0 -0
- package/lib/authn/index.js.map +0 -0
- package/lib/authn/signup.js +0 -0
- package/lib/authn/signup.js.map +0 -0
- package/lib/authn/types.d.ts +0 -0
- package/lib/authn/types.d.ts.map +0 -0
- package/lib/authn/types.js +0 -0
- package/lib/authn/types.js.map +0 -0
- package/lib/chat/bookmarks.js +17 -17
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +5 -5
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +0 -0
- package/lib/chat/dateFolder.js.map +0 -0
- package/lib/chat/infinite.js +25 -25
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +0 -0
- package/lib/chat/message.js.map +0 -0
- package/lib/chat/messageTools.js +5 -5
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +0 -0
- package/lib/chat/thread.js.map +0 -0
- package/lib/create/create.d.ts +0 -0
- package/lib/create/create.d.ts.map +0 -0
- package/lib/create/create.js +0 -0
- package/lib/create/create.js.map +0 -0
- package/lib/create/index.d.ts +0 -0
- package/lib/create/index.d.ts.map +0 -0
- package/lib/create/index.js +0 -0
- package/lib/create/index.js.map +0 -0
- package/lib/create/types.d.ts +0 -0
- package/lib/create/types.d.ts.map +0 -0
- package/lib/create/types.js +0 -0
- package/lib/create/types.js.map +0 -0
- package/lib/debug.d.ts +0 -0
- package/lib/debug.d.ts.map +0 -0
- package/lib/debug.js +0 -0
- package/lib/debug.js.map +0 -0
- package/lib/folders.js +0 -0
- package/lib/folders.js.map +0 -0
- package/lib/footer/index.d.ts +0 -0
- package/lib/footer/index.d.ts.map +0 -0
- package/lib/footer/index.js +0 -0
- package/lib/footer/index.js.map +0 -0
- package/lib/footer/styleMap.d.ts +0 -0
- package/lib/footer/styleMap.d.ts.map +0 -0
- package/lib/footer/styleMap.js +0 -0
- package/lib/footer/styleMap.js.map +0 -0
- package/lib/header/empty-profile.d.ts +0 -0
- package/lib/header/empty-profile.d.ts.map +0 -0
- package/lib/header/empty-profile.js +0 -0
- package/lib/header/empty-profile.js.map +0 -0
- package/lib/header/index.d.ts +0 -0
- package/lib/header/index.d.ts.map +0 -0
- package/lib/header/index.js +0 -0
- package/lib/header/index.js.map +0 -0
- package/lib/header/styleMap.d.ts +0 -0
- package/lib/header/styleMap.d.ts.map +0 -0
- package/lib/header/styleMap.js +0 -0
- package/lib/header/styleMap.js.map +0 -0
- package/lib/iconBase.d.ts +0 -0
- package/lib/iconBase.d.ts.map +0 -0
- package/lib/iconBase.js +0 -0
- package/lib/iconBase.js.map +0 -0
- package/lib/icons/solid_logo.d.ts +0 -0
- package/lib/icons/solid_logo.d.ts.map +0 -0
- package/lib/icons/solid_logo.js +0 -0
- package/lib/icons/solid_logo.js.map +0 -0
- package/lib/index.d.ts +0 -0
- package/lib/index.d.ts.map +0 -0
- package/lib/index.js +0 -0
- package/lib/index.js.map +0 -0
- package/lib/jss/index.d.ts +0 -0
- package/lib/jss/index.d.ts.map +0 -0
- package/lib/jss/index.js +0 -0
- package/lib/jss/index.js.map +0 -0
- package/lib/log.d.ts +0 -0
- package/lib/log.d.ts.map +0 -0
- package/lib/log.js +0 -0
- package/lib/log.js.map +0 -0
- package/lib/logic.d.ts +0 -0
- package/lib/logic.d.ts.map +0 -0
- package/lib/logic.js +0 -0
- package/lib/logic.js.map +1 -1
- package/lib/matrix/index.d.ts +0 -0
- package/lib/matrix/index.d.ts.map +0 -0
- package/lib/matrix/index.js +0 -0
- package/lib/matrix/index.js.map +0 -0
- package/lib/matrix/matrix.d.ts +0 -0
- package/lib/matrix/matrix.d.ts.map +0 -0
- package/lib/matrix/matrix.js +0 -0
- package/lib/matrix/matrix.js.map +0 -0
- package/lib/matrix/types.d.ts +0 -0
- package/lib/matrix/types.d.ts.map +0 -0
- package/lib/matrix/types.js +0 -0
- package/lib/matrix/types.js.map +0 -0
- package/lib/media/index.d.ts +0 -0
- package/lib/media/index.d.ts.map +0 -0
- package/lib/media/index.js +0 -0
- package/lib/media/index.js.map +0 -0
- package/lib/media/media-capture.d.ts +0 -0
- package/lib/media/media-capture.d.ts.map +0 -0
- package/lib/media/media-capture.js +0 -0
- package/lib/media/media-capture.js.map +0 -0
- package/lib/messageArea.js +0 -0
- package/lib/messageArea.js.map +0 -0
- package/lib/noun_Camera_1618446_000000.js +0 -0
- package/lib/noun_Camera_1618446_000000.js.map +0 -0
- package/lib/ns.js +0 -0
- package/lib/ns.js.map +0 -0
- package/lib/pad.d.ts +0 -0
- package/lib/pad.d.ts.map +0 -0
- package/lib/pad.js +0 -0
- package/lib/pad.js.map +0 -0
- package/lib/participation.d.ts +0 -0
- package/lib/participation.d.ts.map +0 -0
- package/lib/participation.js +0 -0
- package/lib/participation.js.map +0 -0
- package/lib/preferences.js +0 -0
- package/lib/preferences.js.map +0 -0
- package/lib/stories/decorators.js +0 -0
- package/lib/stories/decorators.js.map +0 -0
- package/lib/style.js +0 -0
- package/lib/style.js.map +0 -0
- package/lib/table.js +0 -0
- package/lib/table.js.map +0 -0
- package/lib/tabs.d.ts +0 -0
- package/lib/tabs.d.ts.map +0 -0
- package/lib/tabs.js +0 -0
- package/lib/tabs.js.map +0 -0
- package/lib/typings.d.js +0 -0
- package/lib/typings.d.js.map +0 -0
- package/lib/utils/headerFooterHelpers.d.ts +0 -0
- package/lib/utils/headerFooterHelpers.d.ts.map +0 -0
- package/lib/utils/headerFooterHelpers.js +0 -0
- package/lib/utils/headerFooterHelpers.js.map +0 -0
- package/lib/utils/index.js +0 -0
- package/lib/utils/index.js.map +0 -0
- package/lib/utils/label.d.ts +0 -0
- package/lib/utils/label.d.ts.map +0 -0
- package/lib/utils/label.js +0 -0
- package/lib/utils/label.js.map +0 -0
- package/lib/versionInfo.d.ts +0 -0
- package/lib/versionInfo.d.ts.map +0 -0
- package/lib/versionInfo.js +9 -9
- package/lib/versionInfo.js.map +1 -1
- package/lib/webpack-bundle.js +61 -61
- package/lib/webpack-bundle.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.d.ts +0 -0
- package/lib/widgets/buttons/iconLinks.d.ts.map +0 -0
- package/lib/widgets/buttons/iconLinks.js +0 -0
- package/lib/widgets/buttons/iconLinks.js.map +0 -0
- package/lib/widgets/buttons.d.ts +0 -0
- package/lib/widgets/buttons.d.ts.map +0 -0
- package/lib/widgets/buttons.js +0 -0
- package/lib/widgets/buttons.js.map +0 -0
- package/lib/widgets/dragAndDrop.js +0 -0
- package/lib/widgets/dragAndDrop.js.map +0 -0
- package/lib/widgets/error.d.ts +0 -0
- package/lib/widgets/error.d.ts.map +0 -0
- package/lib/widgets/error.js +0 -0
- package/lib/widgets/error.js.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -0
- package/lib/widgets/forms/autocomplete/language.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/language.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/language.js +0 -0
- package/lib/widgets/forms/autocomplete/language.js.map +0 -0
- package/lib/widgets/forms/autocomplete/publicData.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/publicData.js +0 -0
- package/lib/widgets/forms/autocomplete/publicData.js.map +0 -0
- package/lib/widgets/forms/basic.d.ts +0 -0
- package/lib/widgets/forms/basic.d.ts.map +0 -0
- package/lib/widgets/forms/basic.js +0 -0
- package/lib/widgets/forms/basic.js.map +0 -0
- package/lib/widgets/forms/comment.d.ts +0 -0
- package/lib/widgets/forms/comment.d.ts.map +0 -0
- package/lib/widgets/forms/comment.js +0 -0
- package/lib/widgets/forms/comment.js.map +0 -0
- package/lib/widgets/forms/fieldFunction.d.ts +0 -0
- package/lib/widgets/forms/fieldFunction.d.ts.map +0 -0
- package/lib/widgets/forms/fieldFunction.js +0 -0
- package/lib/widgets/forms/fieldFunction.js.map +0 -0
- package/lib/widgets/forms/fieldParams.d.ts +0 -0
- package/lib/widgets/forms/fieldParams.d.ts.map +0 -0
- package/lib/widgets/forms/fieldParams.js +0 -0
- package/lib/widgets/forms/fieldParams.js.map +0 -0
- package/lib/widgets/forms/formStyle.d.ts +0 -0
- package/lib/widgets/forms/formStyle.d.ts.map +0 -0
- package/lib/widgets/forms/formStyle.js +0 -0
- package/lib/widgets/forms/formStyle.js.map +0 -0
- package/lib/widgets/forms.js +0 -0
- package/lib/widgets/forms.js.map +0 -0
- package/lib/widgets/index.js +0 -0
- package/lib/widgets/index.js.map +0 -0
- package/lib/widgets/peoplePicker.js +0 -0
- package/lib/widgets/peoplePicker.js.map +0 -0
- package/lib/widgets/widgetHelpers.d.ts +0 -0
- package/lib/widgets/widgetHelpers.d.ts.map +0 -0
- package/lib/widgets/widgetHelpers.js +0 -0
- package/lib/widgets/widgetHelpers.js.map +0 -0
- package/package.json +3 -3
package/LICENSE.md
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/lib/acl/access-groups.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/acl/acl-control.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/acl/acl-control.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/acl/acl.d.ts
CHANGED
|
File without changes
|
package/lib/acl/acl.d.ts.map
CHANGED
|
File without changes
|
package/lib/acl/acl.js
CHANGED
|
File without changes
|
package/lib/acl/acl.js.map
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/lib/acl/index.d.ts
CHANGED
|
File without changes
|
package/lib/acl/index.d.ts.map
CHANGED
|
File without changes
|
package/lib/acl/index.js
CHANGED
|
File without changes
|
package/lib/acl/index.js.map
CHANGED
|
File without changes
|
package/lib/acl/styles.d.ts
CHANGED
|
File without changes
|
package/lib/acl/styles.d.ts.map
CHANGED
|
File without changes
|
package/lib/acl/styles.js
CHANGED
|
File without changes
|
package/lib/acl/styles.js.map
CHANGED
|
File without changes
|
package/lib/acl/types.d.ts
CHANGED
|
File without changes
|
package/lib/acl/types.d.ts.map
CHANGED
|
File without changes
|
package/lib/acl/types.js
CHANGED
|
File without changes
|
package/lib/acl/types.js.map
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/lib/authn/authSession.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/authn/authn.d.ts
CHANGED
|
File without changes
|
package/lib/authn/authn.d.ts.map
CHANGED
|
File without changes
|
package/lib/authn/authn.js
CHANGED
|
File without changes
|
package/lib/authn/authn.js.map
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/lib/authn/index.d.ts
CHANGED
|
File without changes
|
package/lib/authn/index.d.ts.map
CHANGED
|
File without changes
|
package/lib/authn/index.js
CHANGED
|
File without changes
|
package/lib/authn/index.js.map
CHANGED
|
File without changes
|
package/lib/authn/signup.js
CHANGED
|
File without changes
|
package/lib/authn/signup.js.map
CHANGED
|
File without changes
|
package/lib/authn/types.d.ts
CHANGED
|
File without changes
|
package/lib/authn/types.d.ts.map
CHANGED
|
File without changes
|
package/lib/authn/types.js
CHANGED
|
File without changes
|
package/lib/authn/types.js.map
CHANGED
|
File without changes
|
package/lib/chat/bookmarks.js
CHANGED
|
@@ -280,7 +280,7 @@ function toggleBookmark(_x4, _x5, _x6) {
|
|
|
280
280
|
}
|
|
281
281
|
|
|
282
282
|
function _toggleBookmark() {
|
|
283
|
-
_toggleBookmark = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(userContext, target,
|
|
283
|
+
_toggleBookmark = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(userContext, target, bookmarkButton) {
|
|
284
284
|
var bookmarks, i, bookmark;
|
|
285
285
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
286
286
|
while (1) {
|
|
@@ -318,7 +318,7 @@ function _toggleBookmark() {
|
|
|
318
318
|
return updatePromise(_logic.store.connectedStatements(bookmarks[i]), []);
|
|
319
319
|
|
|
320
320
|
case 11:
|
|
321
|
-
|
|
321
|
+
bookmarkButton.style.backgroundColor = 'white';
|
|
322
322
|
debug.log('Bookmark deleted: ' + bookmarks[i]);
|
|
323
323
|
_context3.next = 19;
|
|
324
324
|
break;
|
|
@@ -344,7 +344,7 @@ function _toggleBookmark() {
|
|
|
344
344
|
|
|
345
345
|
case 26:
|
|
346
346
|
bookmark = _context3.sent;
|
|
347
|
-
|
|
347
|
+
bookmarkButton.style.backgroundColor = 'yellow';
|
|
348
348
|
debug.log('Bookmark added: ' + bookmark);
|
|
349
349
|
|
|
350
350
|
case 29:
|
|
@@ -363,14 +363,14 @@ function renderBookmarksButton(_x7, _x8) {
|
|
|
363
363
|
|
|
364
364
|
function _renderBookmarksButton() {
|
|
365
365
|
_renderBookmarksButton = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(userContext, target) {
|
|
366
|
-
var
|
|
366
|
+
var setBookmarkButtonColor, _setBookmarkButtonColor, bookmarkButton;
|
|
367
367
|
|
|
368
368
|
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
369
369
|
while (1) {
|
|
370
370
|
switch (_context5.prev = _context5.next) {
|
|
371
371
|
case 0:
|
|
372
|
-
|
|
373
|
-
|
|
372
|
+
_setBookmarkButtonColor = function _setBookmarkButtonCol2() {
|
|
373
|
+
_setBookmarkButtonColor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(bookmarkButton) {
|
|
374
374
|
var bookmarked;
|
|
375
375
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
376
376
|
while (1) {
|
|
@@ -380,9 +380,9 @@ function _renderBookmarksButton() {
|
|
|
380
380
|
return _logic.store.fetcher.load(userContext.bookmarkDocument);
|
|
381
381
|
|
|
382
382
|
case 2:
|
|
383
|
-
bookmarked = _logic.store.any(null, BOOK('recalls'),
|
|
384
|
-
|
|
385
|
-
if (bookmarked)
|
|
383
|
+
bookmarked = _logic.store.any(null, BOOK('recalls'), bookmarkButton.target, userContext.bookmarkDocument);
|
|
384
|
+
bookmarkButton.style = UI.style.buttonStyle;
|
|
385
|
+
if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow';
|
|
386
386
|
|
|
387
387
|
case 5:
|
|
388
388
|
case "end":
|
|
@@ -391,11 +391,11 @@ function _renderBookmarksButton() {
|
|
|
391
391
|
}
|
|
392
392
|
}, _callee4);
|
|
393
393
|
}));
|
|
394
|
-
return
|
|
394
|
+
return _setBookmarkButtonColor.apply(this, arguments);
|
|
395
395
|
};
|
|
396
396
|
|
|
397
|
-
|
|
398
|
-
return
|
|
397
|
+
setBookmarkButtonColor = function _setBookmarkButtonCol(_x9) {
|
|
398
|
+
return _setBookmarkButtonColor.apply(this, arguments);
|
|
399
399
|
};
|
|
400
400
|
|
|
401
401
|
if (!userContext.bookmarkDocument) {
|
|
@@ -403,15 +403,15 @@ function _renderBookmarksButton() {
|
|
|
403
403
|
break;
|
|
404
404
|
}
|
|
405
405
|
|
|
406
|
-
|
|
407
|
-
toggleBookmark(userContext, target,
|
|
406
|
+
bookmarkButton = UI.widgets.button(dom, UI.icons.iconBase + BOOKMARK_ICON, label(BOOK('Bookmark')), function () {
|
|
407
|
+
toggleBookmark(userContext, target, bookmarkButton);
|
|
408
408
|
});
|
|
409
|
-
|
|
409
|
+
bookmarkButton.target = target;
|
|
410
410
|
_context5.next = 7;
|
|
411
|
-
return
|
|
411
|
+
return setBookmarkButtonColor(bookmarkButton);
|
|
412
412
|
|
|
413
413
|
case 7:
|
|
414
|
-
return _context5.abrupt("return",
|
|
414
|
+
return _context5.abrupt("return", bookmarkButton);
|
|
415
415
|
|
|
416
416
|
case 8:
|
|
417
417
|
case "end":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chat/bookmarks.js"],"names":["UI","authn","icons","ns","media","pad","rdf","store","style","utils","widgets","$rdf","BOOK","Namespace","BOOKMARK_ICON","label","dom","window","document","createIfNotExists","doc","Promise","resolve","reject","fetcher","load","then","response","debug","log","err","status","webOperation","uri","data","contentType","requested","updatePromise","del","ins","updater","update","ok","errorBody","Error","findBookmarkDocument","userContext","theClass","fileTail","isPublic","findAppInstances","instances","length","bookmarkDocument","alert","publicProfile","newBookmarkFile","sym","dir","error","registerInTypeIndex","addBookmark","context","target","title","me","currentUser","author","any","foaf","anyValue","sioc","slice","bookmarkDoc","bookmark","newThing","st","dct","Date","msg","toggleBookmark","bookmarstoreutton","bookmarks","each","confirm","i","connectedStatements","backgroundColor","renderBookmarksButton","setBookmarstoreuttonColor","bookmarked","buttonStyle","button","iconBase"],"mappings":"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","sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\n/* global alert confirm */\nimport { authn } from '../authn/index'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store } from '../logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst UI = { authn, icons, ns, media, pad, rdf, store, style, utils, widgets }\nconst $rdf = UI.rdf\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n/** Create a resource if it really does not exist\n * Be absolutely sure something does not exist before creating a new empty file\n * as otherwise existing could be deleted.\n * @param doc {NamedNode} - The resource\n */\nfunction createIfNotExists (doc) {\n return new Promise(function (resolve, reject) {\n store.fetcher.load(doc).then(\n response => {\n debug.log('createIfNotExists doc exists, all good ' + doc)\n // store.fetcher.webOperation('HEAD', doc.uri).then(response => {\n resolve(response)\n },\n err => {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists doc does NOT exist, will create... ' + doc\n )\n\n store.fetcher\n .webOperation('PUT', doc.uri, {\n data: '',\n contentType: 'text/turtle'\n })\n .then(\n response => {\n // fetcher.requested[doc.uri] = 'done' // do not need to read ?? but no headers\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n debug.log('createIfNotExists doc created ok ' + doc)\n resolve(response)\n },\n err => {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n reject(err)\n }\n )\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n reject(err)\n }\n }\n )\n })\n}\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n// export findBookmarkDocument,\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await UI.authn.findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n alert('More than one bookmark file! ' + userContext.instances)\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await createIfNotExists(newBookmarkFile)\n } catch (e) {\n alert.error(\"Can't make fresh bookmark file:\" + e)\n return userContext\n }\n await UI.authn.registerInTypeIndex(\n userContext,\n newBookmarkFile,\n theClass,\n true\n ) // public\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n alert('You seem to have no bookmark file and not even a profile file.')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = UI.authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n alert.error(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarstoreutton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarstoreutton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n alert('Cant delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarstoreutton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarstoreuttonColor (bookmarstoreutton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarstoreutton.target,\n userContext.bookmarkDocument\n )\n bookmarstoreutton.style = UI.style.buttonStyle\n if (bookmarked) bookmarstoreutton.style.backgroundColor = 'yellow'\n }\n\n let bookmarstoreutton\n if (userContext.bookmarkDocument) {\n bookmarstoreutton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarstoreutton)\n }\n )\n bookmarstoreutton.target = target\n await setBookmarstoreuttonColor(bookmarstoreutton)\n return bookmarstoreutton\n }\n}\n"],"file":"bookmarks.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/chat/bookmarks.js"],"names":["UI","authn","icons","ns","media","pad","rdf","store","style","utils","widgets","$rdf","BOOK","Namespace","BOOKMARK_ICON","label","dom","window","document","createIfNotExists","doc","Promise","resolve","reject","fetcher","load","then","response","debug","log","err","status","webOperation","uri","data","contentType","requested","updatePromise","del","ins","updater","update","ok","errorBody","Error","findBookmarkDocument","userContext","theClass","fileTail","isPublic","findAppInstances","instances","length","bookmarkDocument","alert","publicProfile","newBookmarkFile","sym","dir","error","registerInTypeIndex","addBookmark","context","target","title","me","currentUser","author","any","foaf","anyValue","sioc","slice","bookmarkDoc","bookmark","newThing","st","dct","Date","msg","toggleBookmark","bookmarkButton","bookmarks","each","confirm","i","connectedStatements","backgroundColor","renderBookmarksButton","setBookmarkButtonColor","bookmarked","buttonStyle","button","iconBase"],"mappings":"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","sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\n/* global alert confirm */\nimport { authn } from '../authn/index'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store } from '../logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst UI = { authn, icons, ns, media, pad, rdf, store, style, utils, widgets }\nconst $rdf = UI.rdf\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n/** Create a resource if it really does not exist\n * Be absolutely sure something does not exist before creating a new empty file\n * as otherwise existing could be deleted.\n * @param doc {NamedNode} - The resource\n */\nfunction createIfNotExists (doc) {\n return new Promise(function (resolve, reject) {\n store.fetcher.load(doc).then(\n response => {\n debug.log('createIfNotExists doc exists, all good ' + doc)\n // store.fetcher.webOperation('HEAD', doc.uri).then(response => {\n resolve(response)\n },\n err => {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists doc does NOT exist, will create... ' + doc\n )\n\n store.fetcher\n .webOperation('PUT', doc.uri, {\n data: '',\n contentType: 'text/turtle'\n })\n .then(\n response => {\n // fetcher.requested[doc.uri] = 'done' // do not need to read ?? but no headers\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n debug.log('createIfNotExists doc created ok ' + doc)\n resolve(response)\n },\n err => {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n reject(err)\n }\n )\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n reject(err)\n }\n }\n )\n })\n}\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n// export findBookmarkDocument,\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await UI.authn.findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n alert('More than one bookmark file! ' + userContext.instances)\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await createIfNotExists(newBookmarkFile)\n } catch (e) {\n alert.error(\"Can't make fresh bookmark file:\" + e)\n return userContext\n }\n await UI.authn.registerInTypeIndex(\n userContext,\n newBookmarkFile,\n theClass,\n true\n ) // public\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n alert('You seem to have no bookmark file and not even a profile file.')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = UI.authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n alert.error(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n alert('Cant delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n"],"file":"bookmarks.js"}
|
package/lib/chat/chatLogic.js
CHANGED
|
@@ -55,8 +55,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
55
55
|
* Common code for a chat (discussion area of messages about something)
|
|
56
56
|
* This version runs over a series of files for different time periods
|
|
57
57
|
*
|
|
58
|
-
* Parameters for the whole chat
|
|
59
|
-
* index.ttl#this and the
|
|
58
|
+
* Parameters for the whole chat like its title are stored on
|
|
59
|
+
* index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl
|
|
60
60
|
*
|
|
61
61
|
*/
|
|
62
62
|
var ChatChannel = /*#__PURE__*/function () {
|
|
@@ -98,7 +98,7 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
98
98
|
}()
|
|
99
99
|
/* Store a new message in the web,
|
|
100
100
|
as a replacement for an existing one.
|
|
101
|
-
The old one
|
|
101
|
+
The old one iis left, and the two are linked
|
|
102
102
|
*/
|
|
103
103
|
|
|
104
104
|
}, {
|
|
@@ -132,7 +132,7 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
132
132
|
me = _index.authn.currentUser(); // If already logged on
|
|
133
133
|
|
|
134
134
|
if (oldMsg) {
|
|
135
|
-
//
|
|
135
|
+
// edit message replaces old one
|
|
136
136
|
sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument));
|
|
137
137
|
|
|
138
138
|
if (deleteIt) {
|
|
@@ -184,7 +184,7 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
184
184
|
return updateMessage;
|
|
185
185
|
}()
|
|
186
186
|
/* Mark a message as deleted
|
|
187
|
-
*
|
|
187
|
+
* Wee add a new version of the message,m witha deletion flag (deletion date)
|
|
188
188
|
* so that the deletion can be revoked by adding another non-deleted update
|
|
189
189
|
*/
|
|
190
190
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chat/chatLogic.js"],"names":["ChatChannel","channel","options","channelRoot","doc","dateFolder","DateFolder","div","text","updateMessage","oldMsg","deleteIt","sts","now","Date","timestamp","getTime","dateStamp","$rdf","term","chatDocument","leafDocumentFromDate","message","store","sym","uri","me","authn","currentUser","push","st","mostRecentVersion","ns","dct","schema","wf","sioc","literal","foaf","updater","update","msg","debug","warn","alert","Error","originalVersion","any","isDeleted","holds","isReplaced","isHidden","nick","person","s","value","utils","label","_createIfNotExists","contentType","data","fetcher","load","response","status","log","webOperation","requested"],"mappings":"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","sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { authn } from '../authn/index'\nimport { DateFolder } from './dateFolder'\nimport { store } from '../logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat -- like its title -- are stored at\n * index.ttl#this and the chat messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one is left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n if (oldMsg) { // edited message replaces old one\n sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument))\n if (deleteIt) {\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n }\n try {\n await store.updater.update([], sts)\n } catch (err) {\n const msg = 'Error saving chat message: ' + err\n debug.warn(msg)\n alert(msg)\n throw new Error(msg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * We add a new version of the message, with a deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n} // class ChatChannel\n\nexport function originalVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport function mostRecentVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n\nexport async function _createIfNotExists (doc, contentType = 'text/turtle', data = '') {\n let response\n try {\n response = await store.fetcher.load(doc)\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + doc\n )\n try {\n response = await store.fetcher.webOperation('PUT', doc.uri, {\n data,\n contentType\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return response\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n throw err\n }\n }\n // debug.log('createIfNotExists: doc exists, all good: ' + doc)\n return response\n}\n// ends\n"],"file":"chatLogic.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/chat/chatLogic.js"],"names":["ChatChannel","channel","options","channelRoot","doc","dateFolder","DateFolder","div","text","updateMessage","oldMsg","deleteIt","sts","now","Date","timestamp","getTime","dateStamp","$rdf","term","chatDocument","leafDocumentFromDate","message","store","sym","uri","me","authn","currentUser","push","st","mostRecentVersion","ns","dct","schema","wf","sioc","literal","foaf","updater","update","msg","debug","warn","alert","Error","originalVersion","any","isDeleted","holds","isReplaced","isHidden","nick","person","s","value","utils","label","_createIfNotExists","contentType","data","fetcher","load","response","status","log","webOperation","requested"],"mappings":"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","sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { authn } from '../authn/index'\nimport { DateFolder } from './dateFolder'\nimport { store } from '../logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one iis left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n if (oldMsg) { // edit message replaces old one\n sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument))\n if (deleteIt) {\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n }\n try {\n await store.updater.update([], sts)\n } catch (err) {\n const msg = 'Error saving chat message: ' + err\n debug.warn(msg)\n alert(msg)\n throw new Error(msg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * Wee add a new version of the message,m witha deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n} // class ChatChannel\n\nexport function originalVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport function mostRecentVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n\nexport async function _createIfNotExists (doc, contentType = 'text/turtle', data = '') {\n let response\n try {\n response = await store.fetcher.load(doc)\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + doc\n )\n try {\n response = await store.fetcher.webOperation('PUT', doc.uri, {\n data,\n contentType\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return response\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n throw err\n }\n }\n // debug.log('createIfNotExists: doc exists, all good: ' + doc)\n return response\n}\n// ends\n"],"file":"chatLogic.js"}
|
package/lib/chat/dateFolder.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/chat/infinite.js
CHANGED
|
@@ -452,7 +452,7 @@ function _infiniteMessageArea() {
|
|
|
452
452
|
};
|
|
453
453
|
|
|
454
454
|
renderMessageTable = function _renderMessageTable(date, live) {
|
|
455
|
-
var
|
|
455
|
+
var scrollBackbutton;
|
|
456
456
|
var scrollForwardButton; /// ///////////////// Scroll down adding more above
|
|
457
457
|
|
|
458
458
|
function extendBackwards() {
|
|
@@ -473,10 +473,10 @@ function _infiniteMessageArea() {
|
|
|
473
473
|
done = _context.sent;
|
|
474
474
|
|
|
475
475
|
if (done) {
|
|
476
|
-
if (
|
|
477
|
-
|
|
476
|
+
if (scrollBackbutton) {
|
|
477
|
+
scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg'); // T
|
|
478
478
|
|
|
479
|
-
|
|
479
|
+
scrollBackbutton.disabled = true;
|
|
480
480
|
}
|
|
481
481
|
|
|
482
482
|
messageTable.initial = true;
|
|
@@ -484,7 +484,7 @@ function _infiniteMessageArea() {
|
|
|
484
484
|
messageTable.extendedBack = true;
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
-
|
|
487
|
+
setScrollBackbuttonIcon();
|
|
488
488
|
return _context.abrupt("return", done);
|
|
489
489
|
|
|
490
490
|
case 6:
|
|
@@ -497,27 +497,27 @@ function _infiniteMessageArea() {
|
|
|
497
497
|
return _extendBackwards.apply(this, arguments);
|
|
498
498
|
}
|
|
499
499
|
|
|
500
|
-
function
|
|
501
|
-
if (!
|
|
500
|
+
function setScrollBackbuttonIcon() {
|
|
501
|
+
if (!scrollBackbutton) {
|
|
502
502
|
return;
|
|
503
503
|
}
|
|
504
504
|
|
|
505
505
|
var sense = messageTable.extendedBack ? !newestFirst : newestFirst;
|
|
506
506
|
var scrollBackIcon = messageTable.initial ? 'noun_T-Block_1114655_000000.svg' : getScrollbackIcon(sense);
|
|
507
|
-
|
|
507
|
+
scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollBackIcon);
|
|
508
508
|
|
|
509
509
|
function getScrollbackIcon(sense) {
|
|
510
510
|
return sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
|
|
511
511
|
}
|
|
512
512
|
}
|
|
513
513
|
|
|
514
|
-
function
|
|
515
|
-
return
|
|
514
|
+
function scrollBackbuttonHandler(_x8) {
|
|
515
|
+
return _scrollBackbuttonHandler.apply(this, arguments);
|
|
516
516
|
} /// ////////////// Scroll up adding more below
|
|
517
517
|
|
|
518
518
|
|
|
519
|
-
function
|
|
520
|
-
|
|
519
|
+
function _scrollBackbuttonHandler() {
|
|
520
|
+
_scrollBackbuttonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_event) {
|
|
521
521
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
522
522
|
while (1) {
|
|
523
523
|
switch (_context2.prev = _context2.next) {
|
|
@@ -529,7 +529,7 @@ function _infiniteMessageArea() {
|
|
|
529
529
|
|
|
530
530
|
removePreviousMessages(true, messageTable);
|
|
531
531
|
messageTable.extendedBack = false;
|
|
532
|
-
|
|
532
|
+
setScrollBackbuttonIcon();
|
|
533
533
|
_context2.next = 8;
|
|
534
534
|
break;
|
|
535
535
|
|
|
@@ -544,7 +544,7 @@ function _infiniteMessageArea() {
|
|
|
544
544
|
}
|
|
545
545
|
}, _callee2);
|
|
546
546
|
}));
|
|
547
|
-
return
|
|
547
|
+
return _scrollBackbuttonHandler.apply(this, arguments);
|
|
548
548
|
}
|
|
549
549
|
|
|
550
550
|
function extendForwards() {
|
|
@@ -677,24 +677,24 @@ function _infiniteMessageArea() {
|
|
|
677
677
|
|
|
678
678
|
|
|
679
679
|
if (options.infinite) {
|
|
680
|
-
var
|
|
681
|
-
var
|
|
680
|
+
var scrollBackbuttonTR = dom.createElement('tr');
|
|
681
|
+
var scrollBackbuttonCell = scrollBackbuttonTR.appendChild(dom.createElement('td')); // up traingles: noun_1369237.svg
|
|
682
682
|
// down triangles: noun_1369241.svg
|
|
683
683
|
|
|
684
684
|
var scrollBackIcon = newestFirst ? 'noun_1369241.svg' : 'noun_1369237.svg'; // down and up arrows respoctively
|
|
685
685
|
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
686
|
+
scrollBackbutton = widgets.button(dom, _iconBase.icons.iconBase + scrollBackIcon, 'Previous messages ...');
|
|
687
|
+
scrollBackbuttonCell.style = 'width:3em; height:3em;';
|
|
688
|
+
scrollBackbutton.addEventListener('click', scrollBackbuttonHandler, false);
|
|
689
689
|
messageTable.extendedBack = false;
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
var dateCell =
|
|
690
|
+
scrollBackbuttonCell.appendChild(scrollBackbutton);
|
|
691
|
+
setScrollBackbuttonIcon();
|
|
692
|
+
var dateCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
|
|
693
693
|
dateCell.style = 'text-align: center; vertical-align: middle; color: #888; font-style: italic;';
|
|
694
694
|
dateCell.textContent = widgets.shortDate(date.toISOString(), true); // no time, only date
|
|
695
695
|
// @@@@@@@@@@@ todo move this button to other end of message cell, o
|
|
696
696
|
|
|
697
|
-
var scrollForwardButtonCell =
|
|
697
|
+
var scrollForwardButtonCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
|
|
698
698
|
var scrollForwardIcon = newestFirst ? 'noun_1369241.svg' : 'noun_1369237.svg'; // down and up arrows respoctively
|
|
699
699
|
|
|
700
700
|
scrollForwardButton = widgets.button(dom, _iconBase.icons.iconBase + scrollForwardIcon, 'Later messages ...');
|
|
@@ -707,9 +707,9 @@ function _infiniteMessageArea() {
|
|
|
707
707
|
|
|
708
708
|
if (!newestFirst) {
|
|
709
709
|
// opposite end from the entry field
|
|
710
|
-
messageTable.insertBefore(
|
|
710
|
+
messageTable.insertBefore(scrollBackbuttonTR, messageTable.firstChild); // If not newestFirst
|
|
711
711
|
} else {
|
|
712
|
-
messageTable.appendChild(
|
|
712
|
+
messageTable.appendChild(scrollBackbuttonTR); // newestFirst
|
|
713
713
|
}
|
|
714
714
|
}
|
|
715
715
|
|