solid-ui 2.4.27-fd5a7172 → 2.4.28-11faa597

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 (66) hide show
  1. package/dist/805.solid-ui.min.js +1 -1
  2. package/dist/805.solid-ui.min.js.map +1 -1
  3. package/dist/solid-ui.js +2048 -1307
  4. package/dist/solid-ui.js.map +1 -1
  5. package/dist/solid-ui.min.js +1 -1
  6. package/dist/solid-ui.min.js.map +1 -1
  7. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +1938 -1938
  8. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +1 -1
  9. package/lib/chat/bookmarks.js +6 -7
  10. package/lib/chat/bookmarks.js.map +1 -1
  11. package/lib/chat/chatLogic.js +251 -74
  12. package/lib/chat/chatLogic.js.map +1 -1
  13. package/lib/chat/dateFolder.js +129 -126
  14. package/lib/chat/dateFolder.js.map +1 -1
  15. package/lib/chat/infinite.js +637 -423
  16. package/lib/chat/infinite.js.map +1 -1
  17. package/lib/chat/keys.d.ts.map +1 -1
  18. package/lib/chat/keys.js +9 -9
  19. package/lib/chat/keys.js.map +1 -1
  20. package/lib/chat/message.js +358 -194
  21. package/lib/chat/message.js.map +1 -1
  22. package/lib/chat/messageTools.js +463 -277
  23. package/lib/chat/messageTools.js.map +1 -1
  24. package/lib/chat/signature.d.ts +0 -1
  25. package/lib/chat/signature.d.ts.map +1 -1
  26. package/lib/chat/signature.js +3 -4
  27. package/lib/chat/signature.js.map +1 -1
  28. package/lib/chat/thread.js +299 -209
  29. package/lib/chat/thread.js.map +1 -1
  30. package/lib/header/index.js +5 -0
  31. package/lib/header/index.js.map +1 -1
  32. package/lib/log.js +5 -5
  33. package/lib/log.js.map +1 -1
  34. package/lib/login/login.js +24 -1
  35. package/lib/login/login.js.map +1 -1
  36. package/lib/pad.js +4 -1
  37. package/lib/pad.js.map +1 -1
  38. package/lib/participation.js +2 -1
  39. package/lib/participation.js.map +1 -1
  40. package/lib/preferences.js +4 -0
  41. package/lib/preferences.js.map +1 -1
  42. package/lib/utils/headerFooterHelpers.js +2 -0
  43. package/lib/utils/headerFooterHelpers.js.map +1 -1
  44. package/lib/utils/keyHelpers/accessData.d.ts +3 -4
  45. package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
  46. package/lib/utils/keyHelpers/accessData.js +73 -165
  47. package/lib/utils/keyHelpers/accessData.js.map +1 -1
  48. package/lib/utils/keyHelpers/otherHelpers.d.ts +3 -0
  49. package/lib/utils/keyHelpers/otherHelpers.d.ts.map +1 -0
  50. package/lib/utils/keyHelpers/otherHelpers.js +23 -0
  51. package/lib/utils/keyHelpers/otherHelpers.js.map +1 -0
  52. package/lib/versionInfo.js +3 -3
  53. package/lib/versionInfo.js.map +1 -1
  54. package/lib/widgets/buttons.js +0 -2
  55. package/lib/widgets/buttons.js.map +1 -1
  56. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -1
  57. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  58. package/lib/widgets/forms/autocomplete/autocompletePicker.js +8 -3
  59. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  60. package/lib/widgets/forms/autocomplete/language.js +5 -0
  61. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  62. package/lib/widgets/forms.js +4 -1
  63. package/lib/widgets/forms.js.map +1 -1
  64. package/lib/widgets/peoplePicker.js +11 -0
  65. package/lib/widgets/peoplePicker.js.map +1 -1
  66. package/package.json +3 -2
package/dist/solid-ui.js CHANGED
@@ -2249,8 +2249,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
2249
2249
  * @packageDocumentation
2250
2250
  */
2251
2251
 
2252
- /* global alert confirm */
2253
-
2254
2252
  // pull in first avoid cross-refs
2255
2253
 
2256
2254
  var UI = {
@@ -2343,7 +2341,8 @@ function _findBookmarkDocument() {
2343
2341
  }
2344
2342
  userContext.bookmarkDocument = userContext.instances[0];
2345
2343
  if (userContext.instances.length > 1) {
2346
- alert('More than one bookmark file! ' + userContext.instances);
2344
+ debug.warn('More than one bookmark file! ' + userContext.instances); // @@ todo - deal with > 1
2345
+ // Note: should pick up community bookmarks as well
2347
2346
  }
2348
2347
  _context.next = 28;
2349
2348
  break;
@@ -2364,7 +2363,7 @@ function _findBookmarkDocument() {
2364
2363
  case 18:
2365
2364
  _context.prev = 18;
2366
2365
  _context.t0 = _context["catch"](12);
2367
- alert.error("Can't make fresh bookmark file:" + _context.t0);
2366
+ debug.warn("Can't make fresh bookmark file:" + _context.t0);
2368
2367
  return _context.abrupt("return", userContext);
2369
2368
  case 22:
2370
2369
  _context.next = 24;
@@ -2374,7 +2373,7 @@ function _findBookmarkDocument() {
2374
2373
  _context.next = 28;
2375
2374
  break;
2376
2375
  case 27:
2377
- alert('You seem to have no bookmark file and not even a profile file.');
2376
+ debug.warn('You seem to have no bookmark file, nor even a profile file!');
2378
2377
  case 28:
2379
2378
  return _context.abrupt("return", userContext);
2380
2379
  case 29:
@@ -2429,7 +2428,7 @@ function _addBookmark() {
2429
2428
  _context2.prev = 14;
2430
2429
  _context2.t0 = _context2["catch"](9);
2431
2430
  msg = 'Making bookmark: ' + _context2.t0;
2432
- alert.error(msg);
2431
+ debug.warn(msg);
2433
2432
  return _context2.abrupt("return", null);
2434
2433
  case 19:
2435
2434
  return _context2.abrupt("return", bookmark);
@@ -2482,7 +2481,7 @@ function _toggleBookmark() {
2482
2481
  _context3.prev = 15;
2483
2482
  _context3.t0 = _context3["catch"](8);
2484
2483
  debug.error('Cant delete bookmark:' + _context3.t0);
2485
- alert('Cant delete bookmark:' + _context3.t0);
2484
+ debug.warn('Cannot delete bookmark:' + _context3.t0);
2486
2485
  case 19:
2487
2486
  i++;
2488
2487
  _context3.next = 7;
@@ -2577,6 +2576,7 @@ Object.defineProperty(exports, "__esModule", ({
2577
2576
  }));
2578
2577
  exports.ChatChannel = void 0;
2579
2578
  exports._createIfNotExists = _createIfNotExists;
2579
+ exports.allVersions = allVersions;
2580
2580
  exports.isDeleted = isDeleted;
2581
2581
  exports.isHidden = isHidden;
2582
2582
  exports.isReplaced = isReplaced;
@@ -2654,8 +2654,9 @@ var ChatChannel = /*#__PURE__*/function () {
2654
2654
  var _this = this;
2655
2655
  var oldMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2656
2656
  var deleteIt = arguments.length > 2 ? arguments[2] : undefined;
2657
+ var thread = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
2657
2658
  return /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
2658
- var sts, now, timestamp, dateStamp, chatDocument, message, me, msg, oldMsgMaker, errMsg, privateKey, sig, _errMsg;
2659
+ var sts, now, timestamp, dateStamp, chatDocument, message, me, msg, oldMsgMaker, oldMsgMostRecentVersion, oldMsgThread, errMsg, privateKey, sig, _errMsg;
2659
2660
  return _regenerator["default"].wrap(function _callee2$(_context2) {
2660
2661
  while (1) switch (_context2.prev = _context2.next) {
2661
2662
  case 0:
@@ -2669,80 +2670,88 @@ var ChatChannel = /*#__PURE__*/function () {
2669
2670
  msg = (0, _signature.getBlankMsg)();
2670
2671
  msg.id = message.uri;
2671
2672
  if (!oldMsg) {
2672
- _context2.next = 22;
2673
+ _context2.next = 27;
2673
2674
  break;
2674
2675
  }
2675
2676
  // edit message replaces old one
2676
2677
  oldMsgMaker = _solidLogic.store.any(oldMsg, ns.foaf('maker')); // may not be needed here, but needed on READ
2677
2678
  if (!(oldMsgMaker.uri === me.uri)) {
2678
- _context2.next = 16;
2679
+ _context2.next = 21;
2679
2680
  break;
2680
2681
  }
2681
- sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument));
2682
+ _context2.next = 14;
2683
+ return mostRecentVersion(oldMsg);
2684
+ case 14:
2685
+ oldMsgMostRecentVersion = _context2.sent;
2686
+ sts.push($rdf.st(oldMsgMostRecentVersion, ns.dct('isReplacedBy'), message, chatDocument));
2687
+ // if oldMsg has_reply => add has_reply to message
2688
+ oldMsgThread = _solidLogic.store.any(oldMsgMostRecentVersion, ns.sioc('has_reply'));
2689
+ if (oldMsgThread) {
2690
+ sts.push($rdf.st(message, ns.sioc('has_reply'), oldMsgThread, chatDocument));
2691
+ }
2682
2692
  if (deleteIt) {
2683
2693
  // we need to add a specific signature, else anyone can delete a msg ?
2684
2694
  sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument));
2685
- // msg.dateDeleted = dateStamp
2686
2695
  }
2687
- _context2.next = 20;
2696
+ _context2.next = 25;
2688
2697
  break;
2689
- case 16:
2698
+ case 21:
2690
2699
  errMsg = 'Error you cannot delete/edit a message from someone else : \n' + oldMsgMaker.uri;
2691
2700
  debug.warn(errMsg);
2692
2701
  alert(errMsg);
2693
2702
  throw new Error(errMsg);
2694
- case 20:
2695
- _context2.next = 23;
2703
+ case 25:
2704
+ _context2.next = 28;
2696
2705
  break;
2697
- case 22:
2706
+ case 27:
2698
2707
  // link new message to channel
2699
2708
  sts.push($rdf.st(_this.channel, ns.wf('message'), message, chatDocument));
2700
- case 23:
2709
+ case 28:
2701
2710
  sts.push($rdf.st(message, ns.sioc('content'), _solidLogic.store.literal(text), chatDocument));
2702
2711
  msg.content = text;
2703
2712
  sts.push($rdf.st(message, ns.dct('created'), dateStamp, chatDocument));
2704
2713
  msg.created = dateStamp.value;
2705
2714
  if (!me) {
2706
- _context2.next = 35;
2715
+ _context2.next = 40;
2707
2716
  break;
2708
2717
  }
2709
2718
  sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument));
2710
2719
  msg.maker = me.uri;
2711
2720
  // privateKey the cached private key of me, cached in store
2712
- _context2.next = 32;
2721
+ _context2.next = 37;
2713
2722
  return (0, _keys.getPrivateKey)(me);
2714
- case 32:
2723
+ case 37:
2715
2724
  privateKey = _context2.sent;
2716
2725
  // me.uri)
2717
- // const privateKey0 = 'a11bc5d2eee6cdb3b37f5473a712cad905ccfb13fb2ccdbf1be0a1ac4fdc7d2a'
2718
- sig = (0, _signature.signMsg)(msg, privateKey); // const pubKey0 = '023a9da707bee1302f66083c9d95673ff969b41607a66f52686fa774d64ceb87'
2719
- /* const pubKey = await getPublicKey(me)
2720
- const verify = verifySignature(sig, msg, pubKey) // alain to remove
2721
- debug.warn('sig ' + sig)
2722
- debug.warn('verifySign ' + verify)
2723
- debug.warn(msg) */
2724
- sts.push($rdf.st(message, $rdf.sym("".concat(_signature.SEC, "Proof")), $rdf.lit(sig), chatDocument));
2725
- case 35:
2726
- _context2.prev = 35;
2727
- _context2.next = 38;
2728
- return _solidLogic.store.updater.update([], sts);
2729
- case 38:
2730
- _context2.next = 46;
2731
- break;
2726
+ sig = (0, _signature.signMsg)(msg, privateKey);
2727
+ sts.push($rdf.st(message, $rdf.sym("".concat(_signature.SEC, "proofValue")), $rdf.lit(sig), chatDocument));
2732
2728
  case 40:
2733
- _context2.prev = 40;
2734
- _context2.t0 = _context2["catch"](35);
2729
+ if (thread) {
2730
+ sts.push($rdf.st(thread, ns.sioc('has_member'), message, chatDocument));
2731
+ if (!thread.doc().sameTerm(message.doc())) {
2732
+ sts.push($rdf.st(thread, ns.sioc('has_member'), message, thread.doc()));
2733
+ }
2734
+ }
2735
+ _context2.prev = 41;
2736
+ _context2.next = 44;
2737
+ return _solidLogic.store.updater.updateMany([], sts);
2738
+ case 44:
2739
+ _context2.next = 52;
2740
+ break;
2741
+ case 46:
2742
+ _context2.prev = 46;
2743
+ _context2.t0 = _context2["catch"](41);
2735
2744
  _errMsg = 'Error saving chat message: ' + _context2.t0;
2736
2745
  debug.warn(_errMsg);
2737
2746
  alert(_errMsg);
2738
2747
  throw new Error(_errMsg);
2739
- case 46:
2748
+ case 52:
2740
2749
  return _context2.abrupt("return", message);
2741
- case 47:
2750
+ case 53:
2742
2751
  case "end":
2743
2752
  return _context2.stop();
2744
2753
  }
2745
- }, _callee2, null, [[35, 40]]);
2754
+ }, _callee2, null, [[41, 46]]);
2746
2755
  })();
2747
2756
  });
2748
2757
  function updateMessage(_x2) {
@@ -2772,26 +2781,187 @@ var ChatChannel = /*#__PURE__*/function () {
2772
2781
  return _deleteMessage.apply(this, arguments);
2773
2782
  }
2774
2783
  return deleteMessage;
2784
+ }() // Create a new thread of replies to the thread root message
2785
+ // or return one which already exists
2786
+ }, {
2787
+ key: "createThread",
2788
+ value: function () {
2789
+ var _createThread = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(threadRoot) {
2790
+ var already, thread, insert;
2791
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
2792
+ while (1) switch (_context4.prev = _context4.next) {
2793
+ case 0:
2794
+ already = _solidLogic.store.each(threadRoot, ns.sioc('has_reply'), null, threadRoot.doc()).filter(function (thread) {
2795
+ return _solidLogic.store.holds(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc());
2796
+ });
2797
+ if (!(already.length > 0)) {
2798
+ _context4.next = 3;
2799
+ break;
2800
+ }
2801
+ return _context4.abrupt("return", already[0]);
2802
+ case 3:
2803
+ thread = $rdf.sym(threadRoot.uri + '-thread');
2804
+ insert = [$rdf.st(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()), $rdf.st(threadRoot, ns.sioc('has_reply'), thread, thread.doc())];
2805
+ _context4.next = 7;
2806
+ return _solidLogic.store.updater.update([], insert);
2807
+ case 7:
2808
+ return _context4.abrupt("return", thread);
2809
+ case 8:
2810
+ case "end":
2811
+ return _context4.stop();
2812
+ }
2813
+ }, _callee4);
2814
+ }));
2815
+ function createThread(_x4) {
2816
+ return _createThread.apply(this, arguments);
2817
+ }
2818
+ return createThread;
2775
2819
  }()
2776
2820
  }]);
2777
2821
  return ChatChannel;
2778
2822
  }(); // class ChatChannel
2823
+ // ////////// Utility functions
2824
+ // Have to not loop forever if fed loops
2779
2825
  exports.ChatChannel = ChatChannel;
2780
- function originalVersion(message) {
2781
- var msg = message;
2782
- while (msg) {
2783
- message = msg;
2784
- msg = _solidLogic.store.any(null, ns.dct('isReplacedBy'), message, message.doc());
2785
- }
2786
- return message;
2826
+ function allVersions(_x5) {
2827
+ return _allVersions.apply(this, arguments);
2787
2828
  }
2788
- function mostRecentVersion(message) {
2789
- var msg = message;
2790
- while (msg) {
2791
- message = msg;
2792
- msg = _solidLogic.store.any(message, ns.dct('isReplacedBy'), null, message.doc());
2793
- }
2794
- return message;
2829
+ function _allVersions() {
2830
+ _allVersions = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(message) {
2831
+ var versions, done, m, prev, next;
2832
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
2833
+ while (1) switch (_context5.prev = _context5.next) {
2834
+ case 0:
2835
+ versions = [message];
2836
+ done = {};
2837
+ done[message.uri] = true;
2838
+ m = message;
2839
+ case 4:
2840
+ if (false) {}
2841
+ // earlier?
2842
+ prev = _solidLogic.store.any(null, ns.dct('isReplacedBy'), m, m.doc());
2843
+ if (!(!prev || done[prev.uri])) {
2844
+ _context5.next = 8;
2845
+ break;
2846
+ }
2847
+ return _context5.abrupt("break", 15);
2848
+ case 8:
2849
+ _context5.next = 10;
2850
+ return _solidLogic.store.fetcher.load(prev);
2851
+ case 10:
2852
+ versions.unshift(prev);
2853
+ done[prev.uri] = true;
2854
+ m = prev;
2855
+ _context5.next = 4;
2856
+ break;
2857
+ case 15:
2858
+ m = message;
2859
+ case 16:
2860
+ if (false) {}
2861
+ // later?
2862
+ next = _solidLogic.store.any(m, ns.dct('isReplacedBy'), null, m.doc());
2863
+ if (!(!next || done[next.uri])) {
2864
+ _context5.next = 20;
2865
+ break;
2866
+ }
2867
+ return _context5.abrupt("break", 25);
2868
+ case 20:
2869
+ versions.push(next);
2870
+ done[next.uri] = true;
2871
+ m = next;
2872
+ _context5.next = 16;
2873
+ break;
2874
+ case 25:
2875
+ return _context5.abrupt("return", versions);
2876
+ case 26:
2877
+ case "end":
2878
+ return _context5.stop();
2879
+ }
2880
+ }, _callee5);
2881
+ }));
2882
+ return _allVersions.apply(this, arguments);
2883
+ }
2884
+ function originalVersion(_x6) {
2885
+ return _originalVersion.apply(this, arguments);
2886
+ }
2887
+ function _originalVersion() {
2888
+ _originalVersion = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(message) {
2889
+ var msg, done;
2890
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
2891
+ while (1) switch (_context6.prev = _context6.next) {
2892
+ case 0:
2893
+ msg = message;
2894
+ done = {}; // done[message.uri] = true
2895
+ case 2:
2896
+ if (!msg) {
2897
+ _context6.next = 13;
2898
+ break;
2899
+ }
2900
+ if (!done[msg.uri]) {
2901
+ _context6.next = 6;
2902
+ break;
2903
+ }
2904
+ debug.error('originalVersion: verion loop' + message);
2905
+ return _context6.abrupt("return", message);
2906
+ case 6:
2907
+ done[msg.uri] = true;
2908
+ message = msg;
2909
+ _context6.next = 10;
2910
+ return _solidLogic.store.fetcher.load(message);
2911
+ case 10:
2912
+ msg = _solidLogic.store.any(null, ns.dct('isReplacedBy'), message, message.doc());
2913
+ _context6.next = 2;
2914
+ break;
2915
+ case 13:
2916
+ return _context6.abrupt("return", message);
2917
+ case 14:
2918
+ case "end":
2919
+ return _context6.stop();
2920
+ }
2921
+ }, _callee6);
2922
+ }));
2923
+ return _originalVersion.apply(this, arguments);
2924
+ }
2925
+ function mostRecentVersion(_x7) {
2926
+ return _mostRecentVersion.apply(this, arguments);
2927
+ }
2928
+ function _mostRecentVersion() {
2929
+ _mostRecentVersion = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(message) {
2930
+ var msg, done;
2931
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
2932
+ while (1) switch (_context7.prev = _context7.next) {
2933
+ case 0:
2934
+ msg = message;
2935
+ done = {};
2936
+ case 2:
2937
+ if (!msg) {
2938
+ _context7.next = 13;
2939
+ break;
2940
+ }
2941
+ if (!done[msg.uri]) {
2942
+ _context7.next = 6;
2943
+ break;
2944
+ }
2945
+ debug.error('mostRecentVersion: verion loop' + message);
2946
+ return _context7.abrupt("return", message);
2947
+ case 6:
2948
+ done[msg.uri] = true;
2949
+ message = msg;
2950
+ _context7.next = 10;
2951
+ return _solidLogic.store.fetcher.load(message);
2952
+ case 10:
2953
+ msg = _solidLogic.store.any(message, ns.dct('isReplacedBy'), null, message.doc());
2954
+ _context7.next = 2;
2955
+ break;
2956
+ case 13:
2957
+ return _context7.abrupt("return", message);
2958
+ case 14:
2959
+ case "end":
2960
+ return _context7.stop();
2961
+ }
2962
+ }, _callee7);
2963
+ }));
2964
+ return _mostRecentVersion.apply(this, arguments);
2795
2965
  }
2796
2966
  function isDeleted(message) {
2797
2967
  return _solidLogic.store.holds(message, ns.schema('dateDeleted'), null, message.doc());
@@ -2810,62 +2980,62 @@ function nick(person) {
2810
2980
  if (s) return '' + s.value;
2811
2981
  return '' + utils.label(person);
2812
2982
  }
2813
- function _createIfNotExists(_x4) {
2983
+ function _createIfNotExists(_x8) {
2814
2984
  return _createIfNotExists2.apply(this, arguments);
2815
2985
  } // ends
2816
2986
  function _createIfNotExists2() {
2817
2987
  _createIfNotExists2 = (0, _asyncToGenerator2["default"])(function (doc) {
2818
2988
  var contentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text/turtle';
2819
2989
  var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
2820
- return /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
2990
+ return /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
2821
2991
  var response;
2822
- return _regenerator["default"].wrap(function _callee4$(_context4) {
2823
- while (1) switch (_context4.prev = _context4.next) {
2992
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
2993
+ while (1) switch (_context8.prev = _context8.next) {
2824
2994
  case 0:
2825
- _context4.prev = 0;
2826
- _context4.next = 3;
2995
+ _context8.prev = 0;
2996
+ _context8.next = 3;
2827
2997
  return _solidLogic.store.fetcher.load(doc);
2828
2998
  case 3:
2829
- response = _context4.sent;
2830
- _context4.next = 26;
2999
+ response = _context8.sent;
3000
+ _context8.next = 26;
2831
3001
  break;
2832
3002
  case 6:
2833
- _context4.prev = 6;
2834
- _context4.t0 = _context4["catch"](0);
2835
- if (!(_context4.t0.response.status === 404)) {
2836
- _context4.next = 24;
3003
+ _context8.prev = 6;
3004
+ _context8.t0 = _context8["catch"](0);
3005
+ if (!(_context8.t0.response.status === 404)) {
3006
+ _context8.next = 24;
2837
3007
  break;
2838
3008
  }
2839
3009
  debug.log('createIfNotExists: doc does NOT exist, will create... ' + doc);
2840
- _context4.prev = 10;
2841
- _context4.next = 13;
3010
+ _context8.prev = 10;
3011
+ _context8.next = 13;
2842
3012
  return _solidLogic.store.fetcher.webOperation('PUT', doc.uri, {
2843
3013
  data: data,
2844
3014
  contentType: contentType
2845
3015
  });
2846
3016
  case 13:
2847
- response = _context4.sent;
2848
- _context4.next = 20;
3017
+ response = _context8.sent;
3018
+ _context8.next = 20;
2849
3019
  break;
2850
3020
  case 16:
2851
- _context4.prev = 16;
2852
- _context4.t1 = _context4["catch"](10);
2853
- debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + _context4.t1);
2854
- throw _context4.t1;
3021
+ _context8.prev = 16;
3022
+ _context8.t1 = _context8["catch"](10);
3023
+ debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + _context8.t1);
3024
+ throw _context8.t1;
2855
3025
  case 20:
2856
3026
  delete _solidLogic.store.fetcher.requested[doc.uri]; // delete cached 404 error
2857
3027
  // debug.log('createIfNotExists doc created ok ' + doc)
2858
- return _context4.abrupt("return", response);
3028
+ return _context8.abrupt("return", response);
2859
3029
  case 24:
2860
- debug.log('createIfNotExists doc load error NOT 404: ' + doc + ': ' + _context4.t0);
2861
- throw _context4.t0;
3030
+ debug.log('createIfNotExists doc load error NOT 404: ' + doc + ': ' + _context8.t0);
3031
+ throw _context8.t0;
2862
3032
  case 26:
2863
- return _context4.abrupt("return", response);
3033
+ return _context8.abrupt("return", response);
2864
3034
  case 27:
2865
3035
  case "end":
2866
- return _context4.stop();
3036
+ return _context8.stop();
2867
3037
  }
2868
- }, _callee4, null, [[0, 6], [10, 16]]);
3038
+ }, _callee8, null, [[0, 6], [10, 16]]);
2869
3039
  })();
2870
3040
  });
2871
3041
  return _createIfNotExists2.apply(this, arguments);
@@ -2889,10 +3059,11 @@ Object.defineProperty(exports, "__esModule", ({
2889
3059
  value: true
2890
3060
  }));
2891
3061
  exports.DateFolder = void 0;
3062
+ exports.emptyLeaf = emptyLeaf;
2892
3063
  var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"));
2893
- var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
2894
3064
  var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"));
2895
3065
  var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"));
3066
+ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
2896
3067
  var debug = _interopRequireWildcard(__webpack_require__(/*! ../debug */ "./lib/debug.js"));
2897
3068
  var _solidLogic = __webpack_require__(/*! solid-logic */ "./node_modules/solid-logic/lib/index.js");
2898
3069
  var ns = _interopRequireWildcard(__webpack_require__(/*! ../ns */ "./lib/ns.js"));
@@ -2905,9 +3076,29 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
2905
3076
  *
2906
3077
  */
2907
3078
  // pull in first avoid cross-refs
3079
+ function emptyLeaf(_x) {
3080
+ return _emptyLeaf.apply(this, arguments);
3081
+ }
2908
3082
  /**
2909
3083
  * Track back through the YYYY/MM/DD tree to find the previous/next day
2910
3084
  */
3085
+ function _emptyLeaf() {
3086
+ _emptyLeaf = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(leafDocument) {
3087
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
3088
+ while (1) switch (_context5.prev = _context5.next) {
3089
+ case 0:
3090
+ _context5.next = 2;
3091
+ return _solidLogic.store.fetcher.load(leafDocument);
3092
+ case 2:
3093
+ return _context5.abrupt("return", !(_solidLogic.store.statementsMatching(null, ns.dct('created'), null, leafDocument).length > 0));
3094
+ case 3:
3095
+ case "end":
3096
+ return _context5.stop();
3097
+ }
3098
+ }, _callee5);
3099
+ }));
3100
+ return _emptyLeaf.apply(this, arguments);
3101
+ }
2911
3102
  var DateFolder = /*#__PURE__*/function () {
2912
3103
  function DateFolder(rootThing, leafFileName, membershipProperty) {
2913
3104
  (0, _classCallCheck2["default"])(this, DateFolder);
@@ -2946,61 +3137,22 @@ var DateFolder = /*#__PURE__*/function () {
2946
3137
  }, {
2947
3138
  key: "loadPrevious",
2948
3139
  value: function () {
2949
- var _loadPrevious = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(date, backwards) {
2950
- var thisDateFolder, previousPeriod, _previousPeriod, folder, found, doc;
2951
- return _regenerator["default"].wrap(function _callee3$(_context3) {
2952
- while (1) switch (_context3.prev = _context3.next) {
3140
+ var _loadPrevious = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(date, backwards) {
3141
+ var previousPeriod, _previousPeriod, folder, found, leafDocument, nextDate;
3142
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
3143
+ while (1) switch (_context2.prev = _context2.next) {
2953
3144
  case 0:
2954
3145
  _previousPeriod = function _previousPeriod3() {
2955
- _previousPeriod = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(file, level) {
2956
- var younger, suitable, lastNonEmpty, _lastNonEmpty, parent, siblings, _folder, uncle, cousins, result;
2957
- return _regenerator["default"].wrap(function _callee2$(_context2) {
2958
- while (1) switch (_context2.prev = _context2.next) {
3146
+ _previousPeriod = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(file, level) {
3147
+ var younger, suitable, lastOrFirst, parent, siblings, _folder, uncle, cousins, result;
3148
+ return _regenerator["default"].wrap(function _callee$(_context) {
3149
+ while (1) switch (_context.prev = _context.next) {
2959
3150
  case 0:
2960
- _lastNonEmpty = function _lastNonEmpty3() {
2961
- _lastNonEmpty = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(siblings) {
2962
- var _folder2, leafDocument;
2963
- return _regenerator["default"].wrap(function _callee$(_context) {
2964
- while (1) switch (_context.prev = _context.next) {
2965
- case 0:
2966
- siblings = siblings.filter(suitable);
2967
- siblings.sort(); // chronological order
2968
- if (!backwards) siblings.reverse();
2969
- if (!(level !== 3)) {
2970
- _context.next = 5;
2971
- break;
2972
- }
2973
- return _context.abrupt("return", siblings.pop());
2974
- case 5:
2975
- if (!siblings.length) {
2976
- _context.next = 14;
2977
- break;
2978
- }
2979
- _folder2 = siblings.pop();
2980
- leafDocument = _solidLogic.store.sym(_folder2.uri + thisDateFolder.leafFileName);
2981
- _context.next = 10;
2982
- return _solidLogic.store.fetcher.load(leafDocument);
2983
- case 10:
2984
- if (!(_solidLogic.store.statementsMatching(null, ns.dct('created'), null, leafDocument).length > 0)) {
2985
- _context.next = 12;
2986
- break;
2987
- }
2988
- return _context.abrupt("return", _folder2);
2989
- case 12:
2990
- _context.next = 5;
2991
- break;
2992
- case 14:
2993
- return _context.abrupt("return", null);
2994
- case 15:
2995
- case "end":
2996
- return _context.stop();
2997
- }
2998
- }, _callee);
2999
- }));
3000
- return _lastNonEmpty.apply(this, arguments);
3001
- };
3002
- lastNonEmpty = function _lastNonEmpty2(_x5) {
3003
- return _lastNonEmpty.apply(this, arguments);
3151
+ lastOrFirst = function _lastOrFirst(siblings) {
3152
+ siblings = siblings.filter(suitable);
3153
+ siblings.sort(); // chronological order
3154
+ if (!backwards) siblings.reverse();
3155
+ return siblings.pop(); // date folder
3004
3156
  };
3005
3157
  suitable = function _suitable(x) {
3006
3158
  var tail = x.uri.slice(0, -1).split('/').slice(-1)[0];
@@ -3013,97 +3165,115 @@ var DateFolder = /*#__PURE__*/function () {
3013
3165
  };
3014
3166
  // debug.log(' previousPeriod level' + level + ' file ' + file)
3015
3167
  parent = file.dir();
3016
- _context2.prev = 5;
3017
- _context2.next = 8;
3168
+ _context.prev = 4;
3169
+ _context.next = 7;
3018
3170
  return _solidLogic.store.fetcher.load(parent);
3019
- case 8:
3171
+ case 7:
3020
3172
  siblings = _solidLogic.store.each(parent, ns.ldp('contains'));
3021
3173
  siblings = siblings.filter(younger);
3022
- _context2.next = 12;
3023
- return lastNonEmpty(siblings);
3024
- case 12:
3025
- _folder = _context2.sent;
3174
+ _folder = lastOrFirst(siblings);
3026
3175
  if (!_folder) {
3027
- _context2.next = 15;
3176
+ _context.next = 12;
3028
3177
  break;
3029
3178
  }
3030
- return _context2.abrupt("return", _folder);
3031
- case 15:
3032
- _context2.next = 25;
3179
+ return _context.abrupt("return", _folder);
3180
+ case 12:
3181
+ debug.log(' parent no suitable offspring ' + parent);
3182
+ _context.next = 23;
3033
3183
  break;
3034
- case 17:
3035
- _context2.prev = 17;
3036
- _context2.t0 = _context2["catch"](5);
3037
- if (!(_context2.t0.response && _context2.t0.response.status && _context2.t0.response.status === 404)) {
3038
- _context2.next = 23;
3184
+ case 15:
3185
+ _context.prev = 15;
3186
+ _context.t0 = _context["catch"](4);
3187
+ if (!(_context.t0.response && _context.t0.response.status && _context.t0.response.status === 404)) {
3188
+ _context.next = 21;
3039
3189
  break;
3040
3190
  }
3041
3191
  debug.log('Error 404 for chat parent file ' + parent);
3042
- _context2.next = 25;
3192
+ _context.next = 23;
3043
3193
  break;
3044
- case 23:
3194
+ case 21:
3045
3195
  debug.log('*** Error NON 404 for chat parent file ' + parent);
3046
3196
  // statusTR.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))
3047
- throw new Error("*** ".concat(_context2.t0.message, " for chat folder ").concat(parent));
3048
- case 25:
3197
+ throw new Error("*** ".concat(_context.t0.message, " for chat folder ").concat(parent));
3198
+ case 23:
3049
3199
  if (!(level === 0)) {
3050
- _context2.next = 27;
3200
+ _context.next = 26;
3051
3201
  break;
3052
3202
  }
3053
- return _context2.abrupt("return", null);
3054
- case 27:
3055
- _context2.next = 29;
3203
+ debug.log('loadPrevious: returning as level is zero');
3204
+ return _context.abrupt("return", null);
3205
+ case 26:
3206
+ _context.next = 28;
3056
3207
  return previousPeriod(parent, level - 1);
3057
- case 29:
3058
- uncle = _context2.sent;
3208
+ case 28:
3209
+ uncle = _context.sent;
3059
3210
  if (uncle) {
3060
- _context2.next = 32;
3211
+ _context.next = 32;
3061
3212
  break;
3062
3213
  }
3063
- return _context2.abrupt("return", null);
3214
+ debug.log(' previousPeriod: nothing left before. ', parent);
3215
+ return _context.abrupt("return", null);
3064
3216
  case 32:
3065
- _context2.next = 34;
3217
+ _context.next = 34;
3066
3218
  return _solidLogic.store.fetcher.load(uncle);
3067
3219
  case 34:
3068
3220
  cousins = _solidLogic.store.each(uncle, ns.ldp('contains'));
3069
- _context2.next = 37;
3070
- return lastNonEmpty(cousins);
3071
- case 37:
3072
- result = _context2.sent;
3073
- return _context2.abrupt("return", result);
3221
+ result = lastOrFirst(cousins);
3222
+ debug.log(' previousPeriod: returning cousins at level ' + level, cousins);
3223
+ debug.log(' previousPeriod: returning result at level ' + level, result);
3224
+ return _context.abrupt("return", result);
3074
3225
  case 39:
3075
3226
  case "end":
3076
- return _context2.stop();
3227
+ return _context.stop();
3077
3228
  }
3078
- }, _callee2, null, [[5, 17]]);
3229
+ }, _callee, null, [[4, 15]]);
3079
3230
  }));
3080
3231
  return _previousPeriod.apply(this, arguments);
3081
3232
  };
3082
- previousPeriod = function _previousPeriod2(_x3, _x4) {
3233
+ previousPeriod = function _previousPeriod2(_x4, _x5) {
3083
3234
  return _previousPeriod.apply(this, arguments);
3084
- };
3085
- thisDateFolder = this;
3086
- // previousPeriod
3235
+ }; // previousPeriod
3087
3236
  folder = this.leafDocumentFromDate(date).dir();
3088
- _context3.next = 6;
3237
+ case 3:
3238
+ if (false) {}
3239
+ _context2.next = 6;
3089
3240
  return previousPeriod(folder, 3);
3090
3241
  case 6:
3091
- found = _context3.sent;
3242
+ found = _context2.sent;
3092
3243
  if (!found) {
3093
- _context3.next = 10;
3244
+ _context2.next = 22;
3094
3245
  break;
3095
3246
  }
3096
- doc = _solidLogic.store.sym(found.uri + this.leafFileName);
3097
- return _context3.abrupt("return", this.dateFromLeafDocument(doc));
3098
- case 10:
3099
- return _context3.abrupt("return", null);
3100
- case 11:
3247
+ leafDocument = _solidLogic.store.sym(found.uri + this.leafFileName);
3248
+ nextDate = this.dateFromLeafDocument(leafDocument);
3249
+ _context2.next = 12;
3250
+ return emptyLeaf(leafDocument);
3251
+ case 12:
3252
+ if (_context2.sent) {
3253
+ _context2.next = 16;
3254
+ break;
3255
+ }
3256
+ return _context2.abrupt("return", nextDate);
3257
+ case 16:
3258
+ debug.log(' loadPrevious: skipping empty ' + leafDocument);
3259
+ date = nextDate;
3260
+ folder = this.leafDocumentFromDate(date).dir();
3261
+ debug.log(' loadPrevious: moved back to ' + folder);
3262
+ case 20:
3263
+ _context2.next = 23;
3264
+ break;
3265
+ case 22:
3266
+ return _context2.abrupt("return", null);
3267
+ case 23:
3268
+ _context2.next = 3;
3269
+ break;
3270
+ case 25:
3101
3271
  case "end":
3102
- return _context3.stop();
3272
+ return _context2.stop();
3103
3273
  }
3104
- }, _callee3, this);
3274
+ }, _callee2, this);
3105
3275
  }));
3106
- function loadPrevious(_x, _x2) {
3276
+ function loadPrevious(_x2, _x3) {
3107
3277
  return _loadPrevious.apply(this, arguments);
3108
3278
  }
3109
3279
  return loadPrevious;
@@ -3111,16 +3281,16 @@ var DateFolder = /*#__PURE__*/function () {
3111
3281
  }, {
3112
3282
  key: "firstLeaf",
3113
3283
  value: function () {
3114
- var _firstLeaf = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(backwards) {
3284
+ var _firstLeaf = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(backwards) {
3115
3285
  var folderStore, folderFetcher, earliestSubfolder, _earliestSubfolder, y, month, d, leafDocument, leafObjects, msg, sortMe;
3116
- return _regenerator["default"].wrap(function _callee5$(_context5) {
3117
- while (1) switch (_context5.prev = _context5.next) {
3286
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
3287
+ while (1) switch (_context4.prev = _context4.next) {
3118
3288
  case 0:
3119
3289
  _earliestSubfolder = function _earliestSubfolder3() {
3120
- _earliestSubfolder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(parent) {
3290
+ _earliestSubfolder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(parent) {
3121
3291
  var suitable, kids;
3122
- return _regenerator["default"].wrap(function _callee4$(_context4) {
3123
- while (1) switch (_context4.prev = _context4.next) {
3292
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
3293
+ while (1) switch (_context3.prev = _context3.next) {
3124
3294
  case 0:
3125
3295
  suitable = function _suitable2(x) {
3126
3296
  var tail = x.uri.slice(0, -1).split('/').slice(-1)[0];
@@ -3130,7 +3300,7 @@ var DateFolder = /*#__PURE__*/function () {
3130
3300
  debug.log(' parent ' + parent);
3131
3301
  delete folderFetcher.requested[parent.uri];
3132
3302
  // try {
3133
- _context4.next = 5;
3303
+ _context3.next = 5;
3134
3304
  return folderFetcher.load(parent, {
3135
3305
  force: true
3136
3306
  });
@@ -3141,19 +3311,19 @@ var DateFolder = /*#__PURE__*/function () {
3141
3311
  kids = folderStore.each(parent, ns.ldp('contains'));
3142
3312
  kids = kids.filter(suitable);
3143
3313
  if (!(kids.length === 0)) {
3144
- _context4.next = 9;
3314
+ _context3.next = 9;
3145
3315
  break;
3146
3316
  }
3147
3317
  throw new Error(' @@@ No children to parent2 ' + parent);
3148
3318
  case 9:
3149
3319
  kids.sort();
3150
3320
  if (backwards) kids.reverse();
3151
- return _context4.abrupt("return", kids[0]);
3321
+ return _context3.abrupt("return", kids[0]);
3152
3322
  case 12:
3153
3323
  case "end":
3154
- return _context4.stop();
3324
+ return _context3.stop();
3155
3325
  }
3156
- }, _callee4);
3326
+ }, _callee3);
3157
3327
  }));
3158
3328
  return _earliestSubfolder.apply(this, arguments);
3159
3329
  };
@@ -3163,25 +3333,25 @@ var DateFolder = /*#__PURE__*/function () {
3163
3333
  // backwards -> last leafObject
3164
3334
  folderStore = $rdf.graph();
3165
3335
  folderFetcher = new $rdf.Fetcher(folderStore);
3166
- _context5.next = 6;
3336
+ _context4.next = 6;
3167
3337
  return earliestSubfolder(this.root.dir());
3168
3338
  case 6:
3169
- y = _context5.sent;
3170
- _context5.next = 9;
3339
+ y = _context4.sent;
3340
+ _context4.next = 9;
3171
3341
  return earliestSubfolder(y);
3172
3342
  case 9:
3173
- month = _context5.sent;
3174
- _context5.next = 12;
3343
+ month = _context4.sent;
3344
+ _context4.next = 12;
3175
3345
  return earliestSubfolder(month);
3176
3346
  case 12:
3177
- d = _context5.sent;
3347
+ d = _context4.sent;
3178
3348
  leafDocument = $rdf.sym(d.uri + 'chat.ttl');
3179
- _context5.next = 16;
3349
+ _context4.next = 16;
3180
3350
  return folderFetcher.load(leafDocument);
3181
3351
  case 16:
3182
3352
  leafObjects = folderStore.each(this.root, this.membershipProperty, null, leafDocument);
3183
3353
  if (!(leafObjects.length === 0)) {
3184
- _context5.next = 21;
3354
+ _context4.next = 21;
3185
3355
  break;
3186
3356
  }
3187
3357
  msg = ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument;
@@ -3194,12 +3364,12 @@ var DateFolder = /*#__PURE__*/function () {
3194
3364
  sortMe.sort();
3195
3365
  if (backwards) sortMe.reverse();
3196
3366
  debug.log((backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]);
3197
- return _context5.abrupt("return", sortMe[0][1]);
3367
+ return _context4.abrupt("return", sortMe[0][1]);
3198
3368
  case 26:
3199
3369
  case "end":
3200
- return _context5.stop();
3370
+ return _context4.stop();
3201
3371
  }
3202
- }, _callee5, this);
3372
+ }, _callee4, this);
3203
3373
  }));
3204
3374
  function firstLeaf(_x6) {
3205
3375
  return _firstLeaf.apply(this, arguments);
@@ -3243,19 +3413,17 @@ var _chatLogic = __webpack_require__(/*! ./chatLogic */ "./lib/chat/chatLogic.js
3243
3413
  var _message = __webpack_require__(/*! ./message */ "./lib/chat/message.js");
3244
3414
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
3245
3415
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
3246
- /**
3247
- * Contains the [[infiniteMessageArea]] class
3248
- * @packageDocumentation
3249
- */
3250
- // import { findBookmarkDocument } from './bookmarks'
3416
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
3417
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
3418
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /**
3419
+ * Contains the [[infiniteMessageArea]] class
3420
+ * @packageDocumentation
3421
+ */ // import { findBookmarkDocument } from './bookmarks'
3251
3422
  // pull in first avoid cross-refs
3252
-
3253
3423
  // import * as style from '../style'
3254
3424
  // import * as utils from '../utils'
3255
-
3256
3425
  // import * as pad from '../pad'
3257
3426
  // import { DateFolder } from './dateFolder'
3258
-
3259
3427
  // const UI = { authn, icons, ns, media, pad, $rdf, store, style, utils, widgets }
3260
3428
 
3261
3429
  function desktopNotification(str) {
@@ -3283,34 +3451,9 @@ function desktopNotification(str) {
3283
3451
  /**
3284
3452
  * Renders a chat message inside a `messageTable`
3285
3453
  */
3286
- function insertMessageIntoTable(channelObject, messageTable, message, fresh, options, userContext) {
3287
- var messageRow = (0, _message.renderMessageRow)(channelObject, message, fresh, options, userContext);
3288
-
3289
- // const message = messageRow.AJAR_subject
3290
- if (options.selectedMessage && options.selectedMessage.sameTerm(message)) {
3291
- messageRow.style.backgroundColor = 'yellow';
3292
- options.selectedElement = messageRow;
3293
- messageTable.selectedElement = messageRow;
3294
- }
3295
- var done = false;
3296
- for (var ele = messageTable.firstChild;; ele = ele.nextSibling) {
3297
- if (!ele) {
3298
- // empty
3299
- break;
3300
- }
3301
- var newestFirst = options.newestfirst === true;
3302
- var dateString = messageRow.AJAR_date;
3303
- if (dateString > ele.AJAR_date && newestFirst || dateString < ele.AJAR_date && !newestFirst) {
3304
- messageTable.insertBefore(messageRow, ele);
3305
- done = true;
3306
- break;
3307
- }
3308
- }
3309
- if (!done) {
3310
- messageTable.appendChild(messageRow);
3311
- }
3454
+ function insertMessageIntoTable(_x, _x2, _x3, _x4, _x5, _x6) {
3455
+ return _insertMessageIntoTable.apply(this, arguments);
3312
3456
  }
3313
-
3314
3457
  /**
3315
3458
  * Common code for a chat (discussion area of messages about something)
3316
3459
  * This version runs over a series of files for different time periods
@@ -3333,20 +3476,70 @@ function insertMessageIntoTable(channelObject, messageTable, message, fresh, opt
3333
3476
  - inlineImageHeightEms: The height (in ems) of images expaned from their URIs in the chat.
3334
3477
 
3335
3478
  */
3336
- function infiniteMessageArea(_x, _x2, _x3, _x4) {
3479
+ function _insertMessageIntoTable() {
3480
+ _insertMessageIntoTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(channelObject, messageTable, message, fresh, options, userContext) {
3481
+ var messageRow, done, ele, newestFirst, dateString;
3482
+ return _regenerator["default"].wrap(function _callee$(_context) {
3483
+ while (1) switch (_context.prev = _context.next) {
3484
+ case 0:
3485
+ _context.next = 2;
3486
+ return (0, _message.renderMessageRow)(channelObject, message, fresh, options, userContext);
3487
+ case 2:
3488
+ messageRow = _context.sent;
3489
+ // const message = messageRow.AJAR_subject
3490
+ if (options.selectedMessage && options.selectedMessage.sameTerm(message)) {
3491
+ messageRow.style.backgroundColor = 'yellow';
3492
+ options.selectedElement = messageRow;
3493
+ messageTable.selectedElement = messageRow;
3494
+ }
3495
+ done = false;
3496
+ ele = messageTable.firstChild;
3497
+ case 6:
3498
+ if (ele) {
3499
+ _context.next = 8;
3500
+ break;
3501
+ }
3502
+ return _context.abrupt("break", 17);
3503
+ case 8:
3504
+ newestFirst = options.newestfirst === true;
3505
+ dateString = messageRow.AJAR_date;
3506
+ if (!(dateString > ele.AJAR_date && newestFirst || dateString < ele.AJAR_date && !newestFirst)) {
3507
+ _context.next = 14;
3508
+ break;
3509
+ }
3510
+ messageTable.insertBefore(messageRow, ele);
3511
+ done = true;
3512
+ return _context.abrupt("break", 17);
3513
+ case 14:
3514
+ ele = ele.nextSibling;
3515
+ _context.next = 6;
3516
+ break;
3517
+ case 17:
3518
+ if (!done) {
3519
+ messageTable.appendChild(messageRow);
3520
+ }
3521
+ case 18:
3522
+ case "end":
3523
+ return _context.stop();
3524
+ }
3525
+ }, _callee);
3526
+ }));
3527
+ return _insertMessageIntoTable.apply(this, arguments);
3528
+ }
3529
+ function infiniteMessageArea(_x7, _x8, _x9, _x10) {
3337
3530
  return _infiniteMessageArea.apply(this, arguments);
3338
3531
  }
3339
3532
  function _infiniteMessageArea() {
3340
- _infiniteMessageArea = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(dom, wasStore, chatChannel, options) {
3341
- var syncMessages, addMessage, insertPreviousMessages, _insertPreviousMessages, removePreviousMessages, createMessageTable, _createMessageTable, renderMessageTable, addNewChatDocumentIfNewDay, _addNewChatDocumentIfNewDay, appendCurrentMessages, _appendCurrentMessages, loadMoreWhereNeeded, _loadMoreWhereNeeded, loadInitialContent, _loadInitialContent, newestFirst, channelObject, dateFolder, div, statusArea, userContext, liveMessageTable, earliest, latest, lock;
3342
- return _regenerator["default"].wrap(function _callee12$(_context12) {
3343
- while (1) switch (_context12.prev = _context12.next) {
3533
+ _infiniteMessageArea = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15(dom, wasStore, chatChannel, options) {
3534
+ var syncMessages, _syncMessages, addMessage, _addMessage, insertPreviousMessages, _insertPreviousMessages, removePreviousMessages, createMessageTable, _createMessageTable, renderMessageTable, _renderMessageTable, addNewChatDocumentIfNewDay, _addNewChatDocumentIfNewDay, appendCurrentMessages, _appendCurrentMessages, loadMoreWhereNeeded, _loadMoreWhereNeeded, loadInitialContent, _loadInitialContent, newestFirst, channelObject, dateFolder, div, statusArea, userContext, liveMessageTable, threadRootMessage, earliest, latest, thread, threadTime, lock;
3535
+ return _regenerator["default"].wrap(function _callee15$(_context15) {
3536
+ while (1) switch (_context15.prev = _context15.next) {
3344
3537
  case 0:
3345
3538
  _loadInitialContent = function _loadInitialContent3() {
3346
- _loadInitialContent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
3347
- var yank, fixScroll, live, selectedDocument, now, todayDocument, selectedMessageTable, selectedDate;
3348
- return _regenerator["default"].wrap(function _callee11$(_context11) {
3349
- while (1) switch (_context11.prev = _context11.next) {
3539
+ _loadInitialContent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14() {
3540
+ var yank, fixScroll, live, selectedDocument, threadRootDocument, initialDocment, now, todayDocument, selectedMessageTable, selectedDate;
3541
+ return _regenerator["default"].wrap(function _callee14$(_context14) {
3542
+ while (1) switch (_context14.prev = _context14.next) {
3350
3543
  case 0:
3351
3544
  fixScroll = function _fixScroll() {
3352
3545
  if (options.selectedElement) {
@@ -3360,51 +3553,59 @@ function _infiniteMessageArea() {
3360
3553
  }
3361
3554
  };
3362
3555
  yank = function _yank() {
3363
- selectedMessageTable.selectedElement.scrollIntoView({
3364
- block: 'center'
3365
- });
3366
- };
3556
+ if (selectedMessageTable && selectedMessageTable.selectedElement) {
3557
+ selectedMessageTable.selectedElement.scrollIntoView({
3558
+ block: 'center'
3559
+ });
3560
+ }
3561
+ }; // During initial load ONLY keep scroll to selected thing or bottom
3367
3562
  if (options.selectedMessage) {
3368
3563
  selectedDocument = options.selectedMessage.doc();
3564
+ }
3565
+ if (threadRootMessage) {
3566
+ threadRootDocument = threadRootMessage.doc();
3567
+ }
3568
+ initialDocment = selectedDocument || threadRootDocument;
3569
+ if (initialDocment) {
3369
3570
  now = new Date();
3370
3571
  todayDocument = dateFolder.leafDocumentFromDate(now);
3371
- live = todayDocument.sameTerm(selectedDocument);
3572
+ live = todayDocument.sameTerm(initialDocment);
3372
3573
  }
3373
- if (!(options.selectedMessage && !live)) {
3374
- _context11.next = 15;
3574
+ if (!(initialDocment && !live)) {
3575
+ _context14.next = 18;
3375
3576
  break;
3376
3577
  }
3377
- selectedDate = dateFolder.dateFromLeafDocument(selectedDocument);
3378
- _context11.next = 7;
3578
+ selectedDate = dateFolder.dateFromLeafDocument(initialDocment);
3579
+ _context14.next = 10;
3379
3580
  return createMessageTable(selectedDate, live);
3380
- case 7:
3381
- selectedMessageTable = _context11.sent;
3581
+ case 10:
3582
+ selectedMessageTable = _context14.sent;
3382
3583
  div.appendChild(selectedMessageTable);
3383
3584
  earliest.messageTable = selectedMessageTable;
3384
3585
  latest.messageTable = selectedMessageTable;
3385
3586
  yank();
3386
3587
  setTimeout(yank, 1000); // @@ kludge - restore position distubed by other cHANGES
3387
- _context11.next = 19;
3588
+ _context14.next = 22;
3388
3589
  break;
3389
- case 15:
3390
- _context11.next = 17;
3590
+ case 18:
3591
+ _context14.next = 20;
3391
3592
  return appendCurrentMessages();
3392
- case 17:
3593
+ case 20:
3393
3594
  earliest.messageTable = liveMessageTable;
3394
3595
  latest.messageTable = liveMessageTable;
3395
- case 19:
3396
- _context11.next = 21;
3596
+ case 22:
3597
+ _context14.next = 24;
3397
3598
  return loadMoreWhereNeeded(null, fixScroll);
3398
- case 21:
3599
+ case 24:
3399
3600
  div.addEventListener('scroll', loadMoreWhereNeeded);
3400
3601
  if (options.solo) {
3401
3602
  document.body.addEventListener('scroll', loadMoreWhereNeeded);
3402
3603
  }
3403
- case 23:
3604
+ case 26:
3404
3605
  case "end":
3405
- return _context11.stop();
3606
+ return _context14.stop();
3406
3607
  }
3407
- }, _callee11);
3608
+ }, _callee14);
3408
3609
  }));
3409
3610
  return _loadInitialContent.apply(this, arguments);
3410
3611
  };
@@ -3412,16 +3613,16 @@ function _infiniteMessageArea() {
3412
3613
  return _loadInitialContent.apply(this, arguments);
3413
3614
  };
3414
3615
  _loadMoreWhereNeeded = function _loadMoreWhereNeeded3() {
3415
- _loadMoreWhereNeeded = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(event, fixScroll) {
3616
+ _loadMoreWhereNeeded = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13(event, fixScroll) {
3416
3617
  var freeze, magicZone, done, scrollBottom, scrollTop;
3417
- return _regenerator["default"].wrap(function _callee10$(_context10) {
3418
- while (1) switch (_context10.prev = _context10.next) {
3618
+ return _regenerator["default"].wrap(function _callee13$(_context13) {
3619
+ while (1) switch (_context13.prev = _context13.next) {
3419
3620
  case 0:
3420
3621
  if (!lock) {
3421
- _context10.next = 2;
3622
+ _context13.next = 2;
3422
3623
  break;
3423
3624
  }
3424
- return _context10.abrupt("return");
3625
+ return _context13.abrupt("return");
3425
3626
  case 2:
3426
3627
  lock = true;
3427
3628
  freeze = !fixScroll;
@@ -3429,36 +3630,36 @@ function _infiniteMessageArea() {
3429
3630
  // const bottom = div.scrollHeight - top - div.clientHeight
3430
3631
  case 5:
3431
3632
  if (!(div.scrollTop < magicZone && earliest.messageTable && !earliest.messageTable.initial && earliest.messageTable.extendBackwards)) {
3432
- _context10.next = 21;
3633
+ _context13.next = 21;
3433
3634
  break;
3434
3635
  }
3435
3636
  if (!(div.scrollHeight === 0)) {
3436
- _context10.next = 10;
3637
+ _context13.next = 10;
3437
3638
  break;
3438
3639
  }
3439
- // console.log(' chat/loadMoreWhereNeeded: trying later...')
3640
+ // debug.log(' chat/loadMoreWhereNeeded: trying later...')
3440
3641
  setTimeout(loadMoreWhereNeeded, 2000); // couple be less
3441
3642
  lock = false;
3442
- return _context10.abrupt("return");
3643
+ return _context13.abrupt("return");
3443
3644
  case 10:
3444
- // console.log(' chat/loadMoreWhereNeeded: Going now')
3645
+ // debug.log(' chat/loadMoreWhereNeeded: Going now')
3445
3646
  scrollBottom = div.scrollHeight - div.scrollTop;
3446
3647
  debug.log('infinite scroll: adding above: top ' + div.scrollTop);
3447
- _context10.next = 14;
3648
+ _context13.next = 14;
3448
3649
  return earliest.messageTable.extendBackwards();
3449
3650
  case 14:
3450
- done = _context10.sent;
3651
+ done = _context13.sent;
3451
3652
  if (freeze) {
3452
3653
  div.scrollTop = div.scrollHeight - scrollBottom;
3453
3654
  }
3454
3655
  if (fixScroll) fixScroll();
3455
3656
  if (!done) {
3456
- _context10.next = 19;
3657
+ _context13.next = 19;
3457
3658
  break;
3458
3659
  }
3459
- return _context10.abrupt("break", 21);
3660
+ return _context13.abrupt("break", 21);
3460
3661
  case 19:
3461
- _context10.next = 5;
3662
+ _context13.next = 5;
3462
3663
  break;
3463
3664
  case 21:
3464
3665
  if (!(options.selectedMessage &&
@@ -3468,15 +3669,15 @@ function _infiniteMessageArea() {
3468
3669
  latest.messageTable && !latest.messageTable["final"] &&
3469
3670
  // there is more data to come
3470
3671
  latest.messageTable.extendForwards)) {
3471
- _context10.next = 33;
3672
+ _context13.next = 33;
3472
3673
  break;
3473
3674
  }
3474
3675
  scrollTop = div.scrollTop;
3475
3676
  debug.log('infinite scroll: adding below: bottom: ' + (div.scrollHeight - div.scrollTop - div.clientHeight));
3476
- _context10.next = 26;
3677
+ _context13.next = 26;
3477
3678
  return latest.messageTable.extendForwards();
3478
3679
  case 26:
3479
- done = _context10.sent;
3680
+ done = _context13.sent;
3480
3681
  // then add more data on the bottom
3481
3682
  if (freeze) {
3482
3683
  div.scrollTop = scrollTop; // while adding below keep same things in view
@@ -3484,63 +3685,66 @@ function _infiniteMessageArea() {
3484
3685
 
3485
3686
  if (fixScroll) fixScroll();
3486
3687
  if (!done) {
3487
- _context10.next = 31;
3688
+ _context13.next = 31;
3488
3689
  break;
3489
3690
  }
3490
- return _context10.abrupt("break", 33);
3691
+ return _context13.abrupt("break", 33);
3491
3692
  case 31:
3492
- _context10.next = 21;
3693
+ _context13.next = 21;
3493
3694
  break;
3494
3695
  case 33:
3495
3696
  lock = false;
3496
3697
  case 34:
3497
3698
  case "end":
3498
- return _context10.stop();
3699
+ return _context13.stop();
3499
3700
  }
3500
- }, _callee10);
3701
+ }, _callee13);
3501
3702
  }));
3502
3703
  return _loadMoreWhereNeeded.apply(this, arguments);
3503
3704
  };
3504
- loadMoreWhereNeeded = function _loadMoreWhereNeeded2(_x10, _x11) {
3705
+ loadMoreWhereNeeded = function _loadMoreWhereNeeded2(_x20, _x21) {
3505
3706
  return _loadMoreWhereNeeded.apply(this, arguments);
3506
3707
  };
3507
3708
  _appendCurrentMessages = function _appendCurrentMessage2() {
3508
- _appendCurrentMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
3709
+ _appendCurrentMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
3509
3710
  var now, chatDocument, messageTable;
3510
- return _regenerator["default"].wrap(function _callee9$(_context9) {
3511
- while (1) switch (_context9.prev = _context9.next) {
3711
+ return _regenerator["default"].wrap(function _callee12$(_context12) {
3712
+ while (1) switch (_context12.prev = _context12.next) {
3512
3713
  case 0:
3513
3714
  now = new Date();
3514
3715
  chatDocument = dateFolder.leafDocumentFromDate(now); /// ///////////////////////////////////////////////////////////
3515
- _context9.next = 4;
3716
+ _context12.next = 4;
3516
3717
  return createMessageTable(now, true);
3517
3718
  case 4:
3518
- messageTable = _context9.sent;
3719
+ messageTable = _context12.sent;
3519
3720
  div.appendChild(messageTable);
3520
- div.refresh = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
3521
- return _regenerator["default"].wrap(function _callee8$(_context8) {
3522
- while (1) switch (_context8.prev = _context8.next) {
3721
+ div.refresh = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
3722
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
3723
+ while (1) switch (_context11.prev = _context11.next) {
3523
3724
  case 0:
3524
- _context8.next = 2;
3725
+ _context11.next = 2;
3525
3726
  return addNewChatDocumentIfNewDay(new Date());
3526
3727
  case 2:
3527
- syncMessages(chatChannel, messageTable); // @@ livemessagetable??
3528
- desktopNotification(chatChannel);
3728
+ _context11.next = 4;
3729
+ return syncMessages(chatChannel, messageTable);
3529
3730
  case 4:
3731
+ // @@ livemessagetable??
3732
+ desktopNotification(chatChannel);
3733
+ case 5:
3530
3734
  case "end":
3531
- return _context8.stop();
3735
+ return _context11.stop();
3532
3736
  }
3533
- }, _callee8);
3737
+ }, _callee11);
3534
3738
  })); // The short chat version the live update listening is done in the pane but we do it in the widget @@
3535
3739
  _solidLogic.store.updater.addDownstreamChangeListener(chatDocument, div.refresh); // Live update
3536
3740
  liveMessageTable = messageTable;
3537
3741
  latest.messageTable = liveMessageTable;
3538
- return _context9.abrupt("return", messageTable);
3742
+ return _context12.abrupt("return", messageTable);
3539
3743
  case 11:
3540
3744
  case "end":
3541
- return _context9.stop();
3745
+ return _context12.stop();
3542
3746
  }
3543
- }, _callee9);
3747
+ }, _callee12);
3544
3748
  }));
3545
3749
  return _appendCurrentMessages.apply(this, arguments);
3546
3750
  };
@@ -3548,15 +3752,15 @@ function _infiniteMessageArea() {
3548
3752
  return _appendCurrentMessages.apply(this, arguments);
3549
3753
  };
3550
3754
  _addNewChatDocumentIfNewDay = function _addNewChatDocumentIf2() {
3551
- _addNewChatDocumentIfNewDay = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
3755
+ _addNewChatDocumentIfNewDay = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
3552
3756
  var newChatDocument, oldChatDocument, sts;
3553
- return _regenerator["default"].wrap(function _callee7$(_context7) {
3554
- while (1) switch (_context7.prev = _context7.next) {
3757
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
3758
+ while (1) switch (_context10.prev = _context10.next) {
3555
3759
  case 0:
3556
3760
  // @@ Remove listener from previous table as it is now static
3557
3761
  newChatDocument = dateFolder.leafDocumentFromDate(new Date());
3558
3762
  if (newChatDocument.sameTerm(latest.messageTable.chatDocument)) {
3559
- _context7.next = 7;
3763
+ _context10.next = 7;
3560
3764
  break;
3561
3765
  }
3562
3766
  // It is a new day
@@ -3565,7 +3769,7 @@ function _infiniteMessageArea() {
3565
3769
  delete liveMessageTable.inputRow;
3566
3770
  }
3567
3771
  oldChatDocument = latest.messageTable.chatDocument;
3568
- _context7.next = 6;
3772
+ _context10.next = 6;
3569
3773
  return appendCurrentMessages();
3570
3774
  case 6:
3571
3775
  // Adding a link in the document will ping listeners to add the new block too
@@ -3579,286 +3783,323 @@ function _infiniteMessageArea() {
3579
3783
  }
3580
3784
  case 7:
3581
3785
  case "end":
3582
- return _context7.stop();
3786
+ return _context10.stop();
3583
3787
  }
3584
- }, _callee7);
3788
+ }, _callee10);
3585
3789
  }));
3586
3790
  return _addNewChatDocumentIfNewDay.apply(this, arguments);
3587
3791
  };
3588
3792
  addNewChatDocumentIfNewDay = function _addNewChatDocumentIf() {
3589
3793
  return _addNewChatDocumentIfNewDay.apply(this, arguments);
3590
3794
  };
3591
- renderMessageTable = function _renderMessageTable(date, live) {
3592
- var scrollBackbutton;
3593
- var scrollForwardButton;
3594
-
3595
- /// ///////////////// Scroll down adding more above
3596
- function extendBackwards() {
3597
- return _extendBackwards.apply(this, arguments);
3598
- }
3599
- function _extendBackwards() {
3600
- _extendBackwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
3601
- var done;
3602
- return _regenerator["default"].wrap(function _callee$(_context) {
3603
- while (1) switch (_context.prev = _context.next) {
3604
- case 0:
3605
- _context.next = 2;
3606
- return insertPreviousMessages(true);
3607
- case 2:
3608
- done = _context.sent;
3609
- if (done) {
3610
- if (scrollBackbutton) {
3611
- scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg'); // T
3612
- scrollBackbutton.disabled = true;
3613
- }
3614
- messageTable.initial = true;
3615
- } else {
3616
- messageTable.extendedBack = true;
3617
- }
3618
- setScrollBackbuttonIcon();
3619
- return _context.abrupt("return", done);
3620
- case 6:
3621
- case "end":
3622
- return _context.stop();
3623
- }
3624
- }, _callee);
3625
- }));
3626
- return _extendBackwards.apply(this, arguments);
3627
- }
3628
- function setScrollBackbuttonIcon() {
3629
- if (!scrollBackbutton) {
3630
- return;
3631
- }
3632
- var sense = messageTable.extendedBack ? !newestFirst : newestFirst;
3633
- var scrollBackIcon = messageTable.initial ? 'noun_T-Block_1114655_000000.svg' : getScrollbackIcon(sense);
3634
- scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollBackIcon);
3635
- function getScrollbackIcon(sense) {
3636
- return sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
3637
- }
3638
- }
3639
- function scrollBackbuttonHandler(_x8) {
3640
- return _scrollBackbuttonHandler.apply(this, arguments);
3641
- } /// ////////////// Scroll up adding more below
3642
- function _scrollBackbuttonHandler() {
3643
- _scrollBackbuttonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_event) {
3644
- return _regenerator["default"].wrap(function _callee2$(_context2) {
3645
- while (1) switch (_context2.prev = _context2.next) {
3646
- case 0:
3647
- if (!messageTable.extendedBack) {
3648
- _context2.next = 6;
3649
- break;
3795
+ _renderMessageTable = function _renderMessageTable3() {
3796
+ _renderMessageTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(date, live) {
3797
+ var scrollBackbutton, scrollForwardButton, extendBackwards, _extendBackwards, setScrollBackbuttonIcon, extendForwards, _extendForwards, setScrollForwardButtonIcon, scrollForwardButtonHandler, _scrollForwardButtonHandler, messageTable, chatDocument, tr, test, titleTR, scrollBackbuttonCell, dateCell, scrollForwardButtonCell, sts, _iterator2, _step2, st;
3798
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
3799
+ while (1) switch (_context9.prev = _context9.next) {
3800
+ case 0:
3801
+ _scrollForwardButtonHandler = function _scrollForwardButtonH2() {
3802
+ _scrollForwardButtonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(_event) {
3803
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
3804
+ while (1) switch (_context8.prev = _context8.next) {
3805
+ case 0:
3806
+ if (!messageTable.extendedForwards) {
3807
+ _context8.next = 6;
3808
+ break;
3809
+ }
3810
+ removePreviousMessages(false, messageTable);
3811
+ messageTable.extendedForwards = false;
3812
+ setScrollForwardButtonIcon();
3813
+ _context8.next = 9;
3814
+ break;
3815
+ case 6:
3816
+ _context8.next = 8;
3817
+ return extendForwards();
3818
+ case 8:
3819
+ // async
3820
+ latest.messageTable.scrollIntoView(newestFirst);
3821
+ case 9:
3822
+ case "end":
3823
+ return _context8.stop();
3824
+ }
3825
+ }, _callee8);
3826
+ }));
3827
+ return _scrollForwardButtonHandler.apply(this, arguments);
3828
+ };
3829
+ scrollForwardButtonHandler = function _scrollForwardButtonH(_x22) {
3830
+ return _scrollForwardButtonHandler.apply(this, arguments);
3831
+ };
3832
+ setScrollForwardButtonIcon = function _setScrollForwardButt() {
3833
+ if (!scrollForwardButton) return;
3834
+ var sense = messageTable.extendedForwards ? !newestFirst : newestFirst; // noun_T-Block_1114657_000000.svg
3835
+ var scrollForwardIcon = messageTable["final"] ? 'noun_T-Block_1114657_000000.svg' : getScrollForwardButtonIcon(sense);
3836
+ scrollForwardButton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollForwardIcon);
3837
+ function getScrollForwardButtonIcon(sense) {
3838
+ return !sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
3650
3839
  }
3651
- removePreviousMessages(true, messageTable);
3652
- messageTable.extendedBack = false;
3653
- setScrollBackbuttonIcon();
3654
- _context2.next = 8;
3655
- break;
3656
- case 6:
3657
- _context2.next = 8;
3658
- return extendBackwards();
3659
- case 8:
3660
- case "end":
3661
- return _context2.stop();
3662
- }
3663
- }, _callee2);
3664
- }));
3665
- return _scrollBackbuttonHandler.apply(this, arguments);
3666
- }
3667
- function extendForwards() {
3668
- return _extendForwards.apply(this, arguments);
3669
- }
3670
- function _extendForwards() {
3671
- _extendForwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
3672
- var done;
3673
- return _regenerator["default"].wrap(function _callee3$(_context3) {
3674
- while (1) switch (_context3.prev = _context3.next) {
3675
- case 0:
3676
- _context3.next = 2;
3677
- return insertPreviousMessages(false);
3678
- case 2:
3679
- done = _context3.sent;
3680
- if (done) {
3681
- scrollForwardButton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg');
3682
- scrollForwardButton.disabled = true;
3683
- messageTable["final"] = true;
3684
- } else {
3685
- messageTable.extendedForwards = true;
3840
+ };
3841
+ _extendForwards = function _extendForwards3() {
3842
+ _extendForwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
3843
+ var done;
3844
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
3845
+ while (1) switch (_context7.prev = _context7.next) {
3846
+ case 0:
3847
+ _context7.next = 2;
3848
+ return insertPreviousMessages(false);
3849
+ case 2:
3850
+ done = _context7.sent;
3851
+ return _context7.abrupt("return", done);
3852
+ case 4:
3853
+ case "end":
3854
+ return _context7.stop();
3855
+ }
3856
+ }, _callee7);
3857
+ }));
3858
+ return _extendForwards.apply(this, arguments);
3859
+ };
3860
+ extendForwards = function _extendForwards2() {
3861
+ return _extendForwards.apply(this, arguments);
3862
+ };
3863
+ setScrollBackbuttonIcon = function _setScrollBackbuttonI() {
3864
+ if (!scrollBackbutton) {
3865
+ return;
3686
3866
  }
3687
- setScrollForwardButtonIcon();
3688
- return _context3.abrupt("return", done);
3689
- case 6:
3690
- case "end":
3691
- return _context3.stop();
3692
- }
3693
- }, _callee3);
3694
- }));
3695
- return _extendForwards.apply(this, arguments);
3696
- }
3697
- function setScrollForwardButtonIcon() {
3698
- var sense = messageTable.extendedForwards ? !newestFirst : newestFirst; // noun_T-Block_1114657_000000.svg
3699
- var scrollForwardIcon = messageTable["final"] ? 'noun_T-Block_1114657_000000.svg' : getScrollForwardButtonIcon(sense);
3700
- scrollForwardButton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollForwardIcon);
3701
- function getScrollForwardButtonIcon(sense) {
3702
- return !sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
3703
- }
3704
- }
3705
- function scrollForwardButtonHandler(_x9) {
3706
- return _scrollForwardButtonHandler.apply(this, arguments);
3707
- } /// ///////////////////////
3708
- /*
3709
- options = options || {}
3710
- options.authorDateOnLeft = true
3711
- const newestFirst = options.newestFirst === '1' || options.newestFirst === true // hack for now
3712
- const channelObject = new ChatChannel(chatChannel, options)
3713
- const dateFolder = channelObject.dateFolder
3714
- const div = dom.createElement('div')
3715
- const statusArea = div.appendChild(dom.createElement('div'))
3716
- const userContext = { dom, statusArea, div: statusArea } // logged on state, pointers to user's stuff
3717
- */
3718
- function _scrollForwardButtonHandler() {
3719
- _scrollForwardButtonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(_event) {
3720
- return _regenerator["default"].wrap(function _callee4$(_context4) {
3721
- while (1) switch (_context4.prev = _context4.next) {
3722
- case 0:
3723
- if (!messageTable.extendedForwards) {
3724
- _context4.next = 6;
3725
- break;
3867
+ var sense = messageTable.extendedBack ? !newestFirst : newestFirst;
3868
+ var scrollBackIcon = messageTable.initial ? 'noun_T-Block_1114655_000000.svg' : getScrollbackIcon(sense);
3869
+ scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollBackIcon);
3870
+ function getScrollbackIcon(sense) {
3871
+ return sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
3726
3872
  }
3727
- removePreviousMessages(false, messageTable);
3728
- messageTable.extendedForwards = false;
3729
- setScrollForwardButtonIcon();
3730
- _context4.next = 9;
3731
- break;
3732
- case 6:
3733
- _context4.next = 8;
3734
- return extendForwards();
3735
- case 8:
3736
- // async
3737
- latest.messageTable.scrollIntoView(newestFirst);
3738
- case 9:
3739
- case "end":
3740
- return _context4.stop();
3741
- }
3742
- }, _callee4);
3743
- }));
3744
- return _scrollForwardButtonHandler.apply(this, arguments);
3745
- }
3746
- var messageTable = dom.createElement('table');
3747
- messageTable.extendBackwards = extendBackwards; // Make function available to scroll stuff
3748
- messageTable.extendForwards = extendForwards; // Make function available to scroll stuff
3749
-
3750
- messageTable.date = date;
3751
- var chatDocument = dateFolder.leafDocumentFromDate(date);
3752
- messageTable.chatDocument = chatDocument;
3753
- messageTable.fresh = false;
3754
- messageTable.setAttribute('style', 'width: 100%;'); // fill that div!
3755
- if (live) {
3756
- messageTable["final"] = true;
3757
- liveMessageTable = messageTable;
3758
- latest.messageTable = messageTable;
3759
- var tr = (0, _message.renderMessageEditor)(channelObject, messageTable, userContext, options);
3760
- if (newestFirst) {
3761
- messageTable.insertBefore(tr, messageTable.firstChild); // If newestFirst
3762
- } else {
3763
- messageTable.appendChild(tr); // not newestFirst
3764
- }
3765
-
3766
- messageTable.inputRow = tr;
3767
- }
3873
+ };
3874
+ _extendBackwards = function _extendBackwards3() {
3875
+ _extendBackwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
3876
+ var done;
3877
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
3878
+ while (1) switch (_context6.prev = _context6.next) {
3879
+ case 0:
3880
+ _context6.next = 2;
3881
+ return insertPreviousMessages(true);
3882
+ case 2:
3883
+ done = _context6.sent;
3884
+ if (done) {
3885
+ if (scrollBackbutton) {
3886
+ scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg'); // T
3887
+ scrollBackbutton.disabled = true;
3888
+ }
3889
+ messageTable.initial = true;
3890
+ } else {
3891
+ messageTable.extendedBack = true;
3892
+ }
3893
+ setScrollBackbuttonIcon();
3894
+ return _context6.abrupt("return", done);
3895
+ case 6:
3896
+ case "end":
3897
+ return _context6.stop();
3898
+ }
3899
+ }, _callee6);
3900
+ }));
3901
+ return _extendBackwards.apply(this, arguments);
3902
+ };
3903
+ extendBackwards = function _extendBackwards2() {
3904
+ return _extendBackwards.apply(this, arguments);
3905
+ };
3906
+ scrollBackbutton = null; // was let
3907
+ scrollForwardButton = null; // was let
3908
+ /// ///////////////// Scroll down adding more above
3909
+ /// ////////////// Scroll up adding more below
3910
+ /// ///////////////////////
3911
+ /*
3912
+ options = options || {}
3913
+ options.authorDateOnLeft = true
3914
+ const newestFirst = options.newestFirst === '1' || options.newestFirst === true // hack for now
3915
+ const channelObject = new ChatChannel(chatChannel, options)
3916
+ const dateFolder = channelObject.dateFolder
3917
+ const div = dom.createElement('div')
3918
+ const statusArea = div.appendChild(dom.createElement('div'))
3919
+ const userContext = { dom, statusArea, div: statusArea } // logged on state, pointers to user's stuff
3920
+ */
3921
+ debug.log('Options for called message Area', options);
3922
+ messageTable = dom.createElement('table');
3923
+ messageTable.style.width = '100%'; // fill the pane div
3924
+ messageTable.extendBackwards = extendBackwards; // Make function available to scroll stuff
3925
+ messageTable.extendForwards = extendForwards; // Make function available to scroll stuff
3768
3926
 
3769
- /// ///// Infinite scroll
3770
- //
3771
- // @@ listen for swipe past end event not just button
3772
- if (options.infinite) {
3773
- var scrollBackbuttonTR = dom.createElement('tr');
3774
- var scrollBackbuttonCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
3775
- // up traingles: noun_1369237.svg
3776
- // down triangles: noun_1369241.svg
3777
- var scrollBackIcon = newestFirst ? 'noun_1369241.svg' : 'noun_1369237.svg'; // down and up arrows respoctively
3778
- scrollBackbutton = widgets.button(dom, _iconBase.icons.iconBase + scrollBackIcon, 'Previous messages ...');
3779
- scrollBackbuttonCell.style = 'width:3em; height:3em;';
3780
- scrollBackbutton.addEventListener('click', scrollBackbuttonHandler, false);
3781
- messageTable.extendedBack = false;
3782
- scrollBackbuttonCell.appendChild(scrollBackbutton);
3783
- setScrollBackbuttonIcon();
3784
- var dateCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
3785
- dateCell.style = 'text-align: center; vertical-align: middle; color: #888; font-style: italic;';
3786
- dateCell.textContent = widgets.shortDate(date.toISOString(), true); // no time, only date
3787
-
3788
- // @@@@@@@@@@@ todo move this button to other end of message cell, o
3789
- var scrollForwardButtonCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
3790
- var scrollForwardIcon = newestFirst ? 'noun_1369241.svg' : 'noun_1369237.svg'; // down and up arrows respoctively
3791
- scrollForwardButton = widgets.button(dom, _iconBase.icons.iconBase + scrollForwardIcon, 'Later messages ...');
3792
- scrollForwardButtonCell.appendChild(scrollForwardButton);
3793
- scrollForwardButtonCell.style = 'width:3em; height:3em;';
3794
- scrollForwardButton.addEventListener('click', scrollForwardButtonHandler, false);
3795
- messageTable.extendedForward = false;
3796
- setScrollForwardButtonIcon();
3797
- messageTable.extendedForwards = false;
3798
- if (!newestFirst) {
3799
- // opposite end from the entry field
3800
- messageTable.insertBefore(scrollBackbuttonTR, messageTable.firstChild); // If not newestFirst
3801
- } else {
3802
- messageTable.appendChild(scrollBackbuttonTR); // newestFirst
3803
- }
3804
- }
3927
+ messageTable.date = date;
3928
+ chatDocument = dateFolder.leafDocumentFromDate(date);
3929
+ messageTable.chatDocument = chatDocument;
3930
+ messageTable.fresh = false;
3931
+ messageTable.setAttribute('style', 'width: 100%;'); // fill that div!
3932
+ if (live) {
3933
+ messageTable["final"] = true;
3934
+ liveMessageTable = messageTable;
3935
+ latest.messageTable = messageTable;
3936
+ tr = (0, _message.renderMessageEditor)(channelObject, messageTable, userContext, options);
3937
+ if (newestFirst) {
3938
+ messageTable.insertBefore(tr, messageTable.firstChild); // If newestFirst
3939
+ } else {
3940
+ messageTable.appendChild(tr); // not newestFirst
3941
+ }
3805
3942
 
3806
- var sts = _solidLogic.store.statementsMatching(null, ns.wf('message'), null, chatDocument);
3807
- if (!live && sts.length === 0) {
3808
- // not todays
3809
- // no need buttomns at the moment
3810
- // messageTable.style.visibility = 'collapse' // Hide files with no messages
3811
- }
3812
- sts.forEach(function (st) {
3813
- addMessage(st.object, messageTable);
3814
- });
3815
- messageTable.fresh = true;
3943
+ messageTable.inputRow = tr;
3944
+ }
3816
3945
 
3817
- // loadMessageTable(messageTable, chatDocument)
3818
- messageTable.fresh = false;
3819
- return messageTable;
3946
+ /// ///// Infinite scroll
3947
+ //
3948
+ // @@ listen for swipe past end event not just button
3949
+ test = true;
3950
+ if (test) {
3951
+ // ws options.infinite but need for non-infinite
3952
+ titleTR = dom.createElement('tr');
3953
+ scrollBackbuttonCell = titleTR.appendChild(dom.createElement('td')); // up traingles: noun_1369237.svg
3954
+ // down triangles: noun_1369241.svg
3955
+ /*
3956
+ const scrollBackIcon = newestFirst
3957
+ ? 'noun_1369241.svg'
3958
+ : 'noun_1369237.svg' // down and up arrows respoctively
3959
+ scrollBackbutton = widgets.button(
3960
+ dom,
3961
+ icons.iconBase + scrollBackIcon,
3962
+ 'Previous messages ...'
3963
+ )
3964
+ scrollBackbuttonCell.style = 'width:3em; height:3em;'
3965
+ scrollBackbutton.addEventListener('click', scrollBackbuttonHandler, false)
3966
+ messageTable.extendedBack = false
3967
+ scrollBackbuttonCell.appendChild(scrollBackbutton)
3968
+ setScrollBackbuttonIcon()
3969
+ */
3970
+ dateCell = titleTR.appendChild(dom.createElement('td'));
3971
+ dateCell.style = 'text-align: center; vertical-align: middle; color: #888; font-style: italic;';
3972
+ dateCell.textContent = widgets.shortDate(date.toISOString(), true); // no time, only date
3973
+
3974
+ // @@@@@@@@@@@ todo move this button to other end of message cell, o
3975
+ scrollForwardButtonCell = titleTR.appendChild(dom.createElement('td'));
3976
+ if (options.includeRemoveButton) {
3977
+ scrollForwardButtonCell.appendChild(widgets.cancelButton(dom, function (_e) {
3978
+ div.parentNode.removeChild(div);
3979
+ }));
3980
+ }
3981
+ /*
3982
+ const scrollForwardIcon = newestFirst
3983
+ ? 'noun_1369241.svg'
3984
+ : 'noun_1369237.svg' // down and up arrows respoctively
3985
+ scrollForwardButton = widgets.button(
3986
+ dom,
3987
+ icons.iconBase + scrollForwardIcon,
3988
+ 'Later messages ...'
3989
+ )
3990
+ scrollForwardButtonCell.appendChild(scrollForwardButton)
3991
+ scrollForwardButtonCell.style = 'width:3em; height:3em;'
3992
+ scrollForwardButton.addEventListener(
3993
+ 'click',
3994
+ scrollForwardButtonHandler,
3995
+ false
3996
+ )
3997
+ messageTable.extendedForward = false
3998
+ setScrollForwardButtonIcon()
3999
+ */
4000
+ messageTable.extendedForwards = false;
4001
+ if (!newestFirst) {
4002
+ // opposite end from the entry field
4003
+ messageTable.insertBefore(titleTR, messageTable.firstChild); // If not newestFirst
4004
+ } else {
4005
+ messageTable.appendChild(titleTR); // newestFirst
4006
+ }
4007
+ }
4008
+ sts = _solidLogic.store.statementsMatching(null, ns.wf('message'), null, chatDocument);
4009
+ if (!live && sts.length === 0) {
4010
+ // not todays
4011
+ // no need buttomns at the moment
4012
+ // messageTable.style.visibility = 'collapse' // Hide files with no messages
4013
+ }
4014
+ _iterator2 = _createForOfIteratorHelper(sts);
4015
+ _context9.prev = 26;
4016
+ _iterator2.s();
4017
+ case 28:
4018
+ if ((_step2 = _iterator2.n()).done) {
4019
+ _context9.next = 34;
4020
+ break;
4021
+ }
4022
+ st = _step2.value;
4023
+ _context9.next = 32;
4024
+ return addMessage(st.object, messageTable);
4025
+ case 32:
4026
+ _context9.next = 28;
4027
+ break;
4028
+ case 34:
4029
+ _context9.next = 39;
4030
+ break;
4031
+ case 36:
4032
+ _context9.prev = 36;
4033
+ _context9.t0 = _context9["catch"](26);
4034
+ _iterator2.e(_context9.t0);
4035
+ case 39:
4036
+ _context9.prev = 39;
4037
+ _iterator2.f();
4038
+ return _context9.finish(39);
4039
+ case 42:
4040
+ messageTable.fresh = true;
4041
+
4042
+ // loadMessageTable(messageTable, chatDocument)
4043
+ messageTable.fresh = false;
4044
+ return _context9.abrupt("return", messageTable);
4045
+ case 45:
4046
+ case "end":
4047
+ return _context9.stop();
4048
+ }
4049
+ }, _callee9, null, [[26, 36, 39, 42]]);
4050
+ }));
4051
+ return _renderMessageTable.apply(this, arguments);
4052
+ };
4053
+ renderMessageTable = function _renderMessageTable2(_x18, _x19) {
4054
+ return _renderMessageTable.apply(this, arguments);
3820
4055
  };
3821
4056
  _createMessageTable = function _createMessageTable3() {
3822
- _createMessageTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(date, live) {
4057
+ _createMessageTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(date, live) {
3823
4058
  var chatDocument, messageTable, statusTR;
3824
- return _regenerator["default"].wrap(function _callee6$(_context6) {
3825
- while (1) switch (_context6.prev = _context6.next) {
4059
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
4060
+ while (1) switch (_context5.prev = _context5.next) {
3826
4061
  case 0:
3827
4062
  debug.log(' createMessageTable for ' + date);
3828
4063
  chatDocument = dateFolder.leafDocumentFromDate(date);
3829
- _context6.prev = 2;
3830
- _context6.next = 5;
4064
+ _context5.prev = 2;
4065
+ _context5.next = 5;
3831
4066
  return _solidLogic.store.fetcher.load(chatDocument);
3832
4067
  case 5:
3833
- _context6.next = 19;
4068
+ _context5.next = 21;
3834
4069
  break;
3835
4070
  case 7:
3836
- _context6.prev = 7;
3837
- _context6.t0 = _context6["catch"](2);
4071
+ _context5.prev = 7;
4072
+ _context5.t0 = _context5["catch"](2);
3838
4073
  messageTable = dom.createElement('table');
3839
4074
  statusTR = messageTable.appendChild(dom.createElement('tr')); // ### find status in exception
3840
- if (!(_context6.t0.response && _context6.t0.response.status && _context6.t0.response.status === 404)) {
3841
- _context6.next = 16;
4075
+ if (!(_context5.t0.response && _context5.t0.response.status && _context5.t0.response.status === 404)) {
4076
+ _context5.next = 18;
3842
4077
  break;
3843
4078
  }
3844
4079
  debug.log('Error 404 for chat file ' + chatDocument);
3845
- return _context6.abrupt("return", renderMessageTable(date, live));
3846
- case 16:
3847
- debug.log('*** Error NON 404 for chat file ' + chatDocument);
3848
- statusTR.appendChild(widgets.errorMessageBlock(dom, _context6.t0, 'pink'));
4080
+ _context5.next = 15;
4081
+ return renderMessageTable(date, live);
4082
+ case 15:
4083
+ return _context5.abrupt("return", _context5.sent);
3849
4084
  case 18:
3850
- return _context6.abrupt("return", statusTR);
3851
- case 19:
3852
- return _context6.abrupt("return", renderMessageTable(date, live));
4085
+ debug.log('*** Error NON 404 for chat file ' + chatDocument);
4086
+ statusTR.appendChild(widgets.errorMessageBlock(dom, _context5.t0, 'pink'));
3853
4087
  case 20:
4088
+ return _context5.abrupt("return", statusTR);
4089
+ case 21:
4090
+ _context5.next = 23;
4091
+ return renderMessageTable(date, live);
4092
+ case 23:
4093
+ return _context5.abrupt("return", _context5.sent);
4094
+ case 24:
3854
4095
  case "end":
3855
- return _context6.stop();
4096
+ return _context5.stop();
3856
4097
  }
3857
- }, _callee6, null, [[2, 7]]);
4098
+ }, _callee5, null, [[2, 7]]);
3858
4099
  }));
3859
4100
  return _createMessageTable.apply(this, arguments);
3860
4101
  };
3861
- createMessageTable = function _createMessageTable2(_x6, _x7) {
4102
+ createMessageTable = function _createMessageTable2(_x16, _x17) {
3862
4103
  return _createMessageTable.apply(this, arguments);
3863
4104
  };
3864
4105
  removePreviousMessages = function _removePreviousMessag(backwards, messageTable) {
@@ -3877,32 +4118,48 @@ function _infiniteMessageArea() {
3877
4118
  extr.messageTable = messageTable;
3878
4119
  };
3879
4120
  _insertPreviousMessages = function _insertPreviousMessag2() {
3880
- _insertPreviousMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(backwards) {
4121
+ _insertPreviousMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(backwards) {
3881
4122
  var extremity, date, live, todayDoc, doc, newMessageTable;
3882
- return _regenerator["default"].wrap(function _callee5$(_context5) {
3883
- while (1) switch (_context5.prev = _context5.next) {
4123
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
4124
+ while (1) switch (_context4.prev = _context4.next) {
3884
4125
  case 0:
3885
4126
  extremity = backwards ? earliest : latest;
3886
4127
  date = extremity.messageTable.date; // day in mssecs
3887
- _context5.next = 4;
4128
+ // Are we at the top of a thread?
4129
+ if (!(backwards && earliest.limit && date <= earliest.limit)) {
4130
+ _context4.next = 7;
4131
+ break;
4132
+ }
4133
+ if (liveMessageTable) {
4134
+ _context4.next = 6;
4135
+ break;
4136
+ }
4137
+ _context4.next = 6;
4138
+ return appendCurrentMessages();
4139
+ case 6:
4140
+ return _context4.abrupt("return", true);
4141
+ case 7:
4142
+ debug.log(' insertPreviousMessages: loadPrevious given date ' + date);
4143
+ _context4.next = 10;
3888
4144
  return dateFolder.loadPrevious(date, backwards);
3889
- case 4:
3890
- date = _context5.sent;
4145
+ case 10:
4146
+ date = _context4.sent;
3891
4147
  // backwards
4148
+ debug.log(' insertPreviousMessages: loadPrevious returns date ' + date);
3892
4149
  debug.log("insertPreviousMessages: from ".concat(backwards ? 'backwards' : 'forwards', " loadPrevious: ").concat(date));
3893
4150
  if (!(!date && !backwards && !liveMessageTable)) {
3894
- _context5.next = 9;
4151
+ _context4.next = 16;
3895
4152
  break;
3896
4153
  }
3897
- _context5.next = 9;
4154
+ _context4.next = 16;
3898
4155
  return appendCurrentMessages();
3899
- case 9:
4156
+ case 16:
3900
4157
  if (date) {
3901
- _context5.next = 11;
4158
+ _context4.next = 18;
3902
4159
  break;
3903
4160
  }
3904
- return _context5.abrupt("return", true);
3905
- case 11:
4161
+ return _context4.abrupt("return", true);
4162
+ case 18:
3906
4163
  // done
3907
4164
  live = false;
3908
4165
  if (!backwards) {
@@ -3910,10 +4167,10 @@ function _infiniteMessageArea() {
3910
4167
  doc = dateFolder.leafDocumentFromDate(date);
3911
4168
  live = doc.sameTerm(todayDoc); // Is this todays?
3912
4169
  }
3913
- _context5.next = 15;
4170
+ _context4.next = 22;
3914
4171
  return createMessageTable(date, live);
3915
- case 15:
3916
- newMessageTable = _context5.sent;
4172
+ case 22:
4173
+ newMessageTable = _context4.sent;
3917
4174
  extremity.messageTable = newMessageTable; // move pointer to earliest
3918
4175
  if (backwards ? newestFirst : !newestFirst) {
3919
4176
  // put on bottom or top
@@ -3922,64 +4179,181 @@ function _infiniteMessageArea() {
3922
4179
  // put on top as we scroll back
3923
4180
  div.insertBefore(newMessageTable, div.firstChild);
3924
4181
  }
3925
- return _context5.abrupt("return", live);
3926
- case 19:
4182
+ return _context4.abrupt("return", live);
4183
+ case 26:
3927
4184
  case "end":
3928
- return _context5.stop();
4185
+ return _context4.stop();
3929
4186
  }
3930
- }, _callee5);
4187
+ }, _callee4);
3931
4188
  }));
3932
4189
  return _insertPreviousMessages.apply(this, arguments);
3933
4190
  };
3934
- insertPreviousMessages = function _insertPreviousMessag(_x5) {
4191
+ insertPreviousMessages = function _insertPreviousMessag(_x15) {
3935
4192
  return _insertPreviousMessages.apply(this, arguments);
3936
4193
  };
3937
- addMessage = function _addMessage(message, messageTable) {
3938
- var latest = (0, _chatLogic.mostRecentVersion)(message);
3939
- // const content = store.any(latest, ns.sioc('content'))
3940
- if ((0, _chatLogic.isDeleted)(latest) && !options.showDeletedMessages) {
3941
- return; // ignore deleted messaged -- @@ could also leave a placeholder
3942
- }
3943
-
3944
- insertMessageIntoTable(channelObject, messageTable, message, messageTable.fresh, options, userContext); // fresh from elsewhere
4194
+ _addMessage = function _addMessage3() {
4195
+ _addMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(message, messageTable) {
4196
+ var thread, id;
4197
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
4198
+ while (1) switch (_context3.prev = _context3.next) {
4199
+ case 0:
4200
+ if (!((0, _chatLogic.isDeleted)(message) && !options.showDeletedMessages)) {
4201
+ _context3.next = 2;
4202
+ break;
4203
+ }
4204
+ return _context3.abrupt("return");
4205
+ case 2:
4206
+ /* if (isReplaced(message)) { //
4207
+ return // this is old version
4208
+ } */
4209
+ thread = _solidLogic.store.any(null, ns.sioc('has_member'), message, message.doc());
4210
+ id = _solidLogic.store.any(message, ns.sioc('id'), null, message.doc());
4211
+ if (id && !thread) {
4212
+ thread = _solidLogic.store.any(null, ns.sioc('has_member'), id, message.doc());
4213
+ }
4214
+ if (!options.thread) {
4215
+ _context3.next = 18;
4216
+ break;
4217
+ }
4218
+ if (!_solidLogic.store.holds(message, ns.sioc('has_reply'), options.thread)) {
4219
+ _context3.next = 10;
4220
+ break;
4221
+ }
4222
+ // root of thread
4223
+ debug.log(' addMessage: displaying root of thread ' + thread);
4224
+ _context3.next = 16;
4225
+ break;
4226
+ case 10:
4227
+ if (!(thread && thread.sameTerm(options.thread))) {
4228
+ _context3.next = 14;
4229
+ break;
4230
+ }
4231
+ debug.log(' addMessage: Displaying body of thread ' + message.uri.slice(-10));
4232
+ _context3.next = 16;
4233
+ break;
4234
+ case 14:
4235
+ debug.log(' addMessage: Suppress non-thread message in thread table ' + message.uri.slice(-10));
4236
+ return _context3.abrupt("return");
4237
+ case 16:
4238
+ _context3.next = 24;
4239
+ break;
4240
+ case 18:
4241
+ if (!thread) {
4242
+ _context3.next = 23;
4243
+ break;
4244
+ }
4245
+ debug.log(' addMessage: Suppress thread message in non-thread table ' + message.uri.slice(-10));
4246
+ return _context3.abrupt("return");
4247
+ case 23:
4248
+ debug.log(' addMessage: Normal non-thread message in non-thread table ' + message.uri.slice(-10));
4249
+ case 24:
4250
+ _context3.next = 26;
4251
+ return insertMessageIntoTable(channelObject, messageTable, message, messageTable.fresh, options, userContext);
4252
+ case 26:
4253
+ case "end":
4254
+ return _context3.stop();
4255
+ }
4256
+ }, _callee3);
4257
+ }));
4258
+ return _addMessage.apply(this, arguments);
3945
4259
  };
3946
- syncMessages = function _syncMessages(about, messageTable) {
3947
- var displayed = {};
3948
- var ele, ele2;
3949
- for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
3950
- if (ele.AJAR_subject) {
3951
- displayed[ele.AJAR_subject.uri] = true;
3952
- }
3953
- }
3954
- var messages = _solidLogic.store.statementsMatching(about, ns.wf('message'), null, messageTable.chatDocument).map(function (st) {
3955
- return st.object;
3956
- });
3957
- var stored = {};
3958
- messages.forEach(function (m) {
3959
- stored[m.uri] = true;
3960
- if (!displayed[m.uri]) {
3961
- addMessage(m, messageTable);
3962
- }
3963
- });
3964
-
3965
- // eslint-disable-next-line space-in-parens
3966
- for (ele = messageTable.firstChild; ele;) {
3967
- ele2 = ele.nextSibling;
3968
- if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {
3969
- messageTable.removeChild(ele);
3970
- }
3971
- ele = ele2;
3972
- }
3973
- for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
3974
- if (ele.AJAR_subject) {
3975
- // Refresh thumbs up etc
3976
- widgets.refreshTree(ele); // Things inside may have changed too
3977
- }
3978
- }
4260
+ addMessage = function _addMessage2(_x13, _x14) {
4261
+ return _addMessage.apply(this, arguments);
3979
4262
  };
3980
-
4263
+ _syncMessages = function _syncMessages3() {
4264
+ _syncMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(chatChannel, messageTable) {
4265
+ var displayed, ele, ele2, messages, stored, _iterator, _step, m;
4266
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
4267
+ while (1) switch (_context2.prev = _context2.next) {
4268
+ case 0:
4269
+ displayed = {};
4270
+ for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
4271
+ if (ele.AJAR_subject) {
4272
+ displayed[ele.AJAR_subject.uri] = true;
4273
+ }
4274
+ }
4275
+ messages = _solidLogic.store.each(chatChannel, ns.wf('message'), null, messageTable.chatDocument);
4276
+ stored = {};
4277
+ _iterator = _createForOfIteratorHelper(messages);
4278
+ _context2.prev = 5;
4279
+ _iterator.s();
4280
+ case 7:
4281
+ if ((_step = _iterator.n()).done) {
4282
+ _context2.next = 15;
4283
+ break;
4284
+ }
4285
+ m = _step.value;
4286
+ stored[m.uri] = true;
4287
+ if (displayed[m.uri]) {
4288
+ _context2.next = 13;
4289
+ break;
4290
+ }
4291
+ _context2.next = 13;
4292
+ return addMessage(m, messageTable);
4293
+ case 13:
4294
+ _context2.next = 7;
4295
+ break;
4296
+ case 15:
4297
+ _context2.next = 20;
4298
+ break;
4299
+ case 17:
4300
+ _context2.prev = 17;
4301
+ _context2.t0 = _context2["catch"](5);
4302
+ _iterator.e(_context2.t0);
4303
+ case 20:
4304
+ _context2.prev = 20;
4305
+ _iterator.f();
4306
+ return _context2.finish(20);
4307
+ case 23:
4308
+ // eslint-disable-next-line space-in-parens
4309
+ for (ele = messageTable.firstChild; ele;) {
4310
+ ele2 = ele.nextSibling;
4311
+ if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {
4312
+ messageTable.removeChild(ele);
4313
+ }
4314
+ ele = ele2;
4315
+ }
4316
+ for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
4317
+ if (ele.AJAR_subject) {
4318
+ // Refresh thumbs up etc
4319
+ widgets.refreshTree(ele); // Things inside may have changed too
4320
+ }
4321
+ }
4322
+ case 25:
4323
+ case "end":
4324
+ return _context2.stop();
4325
+ }
4326
+ }, _callee2, null, [[5, 17, 20, 23]]);
4327
+ }));
4328
+ return _syncMessages.apply(this, arguments);
4329
+ };
4330
+ syncMessages = function _syncMessages2(_x11, _x12) {
4331
+ return _syncMessages.apply(this, arguments);
4332
+ }; // ///////////////////////////////////////////////////////////////////////
4333
+ // syncMessages
4334
+ // Called once per original message displayed
4335
+ /* Add a new messageTable at the top/bottom
4336
+ */
4337
+ /* Remove message tables earlier than this one
4338
+ */
4339
+ /* Load and render message table
4340
+ ** @returns DOM element generates
4341
+ */
4342
+ // renderMessageTable
4343
+ /*
4344
+ function messageCount () {
4345
+ var n = 0
4346
+ const tables = div.children
4347
+ for (let i = 0; i < tables.length; i++) {
4348
+ n += tables[i].children.length - 1
4349
+ // debug.log(' table length:' + tables[i].children.length)
4350
+ }
4351
+ return n
4352
+ }
4353
+ */
4354
+ /* Add the live message block with entry field for today
4355
+ */
3981
4356
  // Body of main function
3982
-
3983
4357
  options = options || {};
3984
4358
  options.authorDateOnLeft = false; // @@ make a user optiosn
3985
4359
  newestFirst = options.newestFirst === '1' || options.newestFirst === true; // hack for now
@@ -3993,23 +4367,33 @@ function _infiniteMessageArea() {
3993
4367
  statusArea: statusArea,
3994
4368
  div: statusArea
3995
4369
  }; // logged on state, pointers to user's stuff
3996
- // const messageTable = dom.createElement('table') // @@ check does this go in renderMessageTable
3997
4370
  earliest = {
3998
4371
  messageTable: null
3999
4372
  }; // Stuff about each end of the loaded days
4000
4373
  latest = {
4001
4374
  messageTable: null
4002
4375
  };
4376
+ if (options.thread) {
4377
+ thread = options.thread;
4378
+ threadRootMessage = _solidLogic.store.any(null, ns.sioc('has_reply'), thread, thread.doc());
4379
+ if (threadRootMessage) {
4380
+ threadTime = _solidLogic.store.any(threadRootMessage, ns.dct('created'), null, threadRootMessage.doc());
4381
+ if (threadTime) {
4382
+ earliest.limit = new Date(threadTime.value);
4383
+ debug.log(' inifinite: thread start at ' + earliest.limit);
4384
+ }
4385
+ }
4386
+ }
4003
4387
  lock = false;
4004
- _context12.next = 30;
4388
+ _context15.next = 34;
4005
4389
  return loadInitialContent();
4006
- case 30:
4007
- return _context12.abrupt("return", div);
4008
- case 31:
4390
+ case 34:
4391
+ return _context15.abrupt("return", div);
4392
+ case 35:
4009
4393
  case "end":
4010
- return _context12.stop();
4394
+ return _context15.stop();
4011
4395
  }
4012
- }, _callee12);
4396
+ }, _callee15);
4013
4397
  }));
4014
4398
  return _infiniteMessageArea.apply(this, arguments);
4015
4399
  }
@@ -4040,7 +4424,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/r
4040
4424
  var debug = _interopRequireWildcard(__webpack_require__(/*! ../debug */ "./lib/debug.js"));
4041
4425
  var _secp256k = __webpack_require__(/*! @noble/curves/secp256k1 */ "./node_modules/@noble/curves/secp256k1.js");
4042
4426
  var _utils = __webpack_require__(/*! @noble/hashes/utils */ "./node_modules/@noble/hashes/utils.js");
4043
- var _signature = __webpack_require__(/*! ./signature */ "./lib/chat/signature.js");
4427
+ var ns = _interopRequireWildcard(__webpack_require__(/*! ../ns */ "./lib/ns.js"));
4044
4428
  var _solidLogic = __webpack_require__(/*! solid-logic */ "./node_modules/solid-logic/lib/index.js");
4045
4429
  var $rdf = _interopRequireWildcard(__webpack_require__(/*! rdflib */ "./node_modules/rdflib/esm/index.js"));
4046
4430
  var _accessData = __webpack_require__(/*! ../utils/keyHelpers/accessData */ "./lib/utils/keyHelpers/accessData.js");
@@ -4082,7 +4466,7 @@ function _getPublicKey() {
4082
4466
  return _solidLogic.store.fetcher.load(publicKeyDoc);
4083
4467
  case 8:
4084
4468
  // url.href)
4085
- key = _solidLogic.store.any(webId, _solidLogic.store.sym(_signature.CERT + 'PublicKey'));
4469
+ key = _solidLogic.store.any(webId, ns.solid('publicKey'));
4086
4470
  return _context2.abrupt("return", key === null || key === void 0 ? void 0 : key.value);
4087
4471
  case 12:
4088
4472
  _context2.prev = 12;
@@ -4136,14 +4520,14 @@ function _getPrivateKey() {
4136
4520
  break;
4137
4521
  }
4138
4522
  del = [];
4139
- add = []; // if (privateKey) del.push($rdf.st(webId, store.sym(CERT + 'PrivateKey'), $rdf.lit(privateKey), store.sym(privateKeyDoc)))
4523
+ add = [];
4140
4524
  if (privateKey) {
4141
4525
  _context3.next = 24;
4142
4526
  break;
4143
4527
  }
4144
4528
  // add = []
4145
4529
  privateKey = generatePrivateKey();
4146
- add = [$rdf.st(webId, _solidLogic.store.sym(_signature.CERT + 'PrivateKey'), $rdf.literal(privateKey), _solidLogic.store.sym(privateKeyDoc))];
4530
+ add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), _solidLogic.store.sym(privateKeyDoc))];
4147
4531
  _context3.next = 24;
4148
4532
  return saveKey(privateKeyDoc, [], add, webId.uri);
4149
4533
  case 24:
@@ -4154,12 +4538,12 @@ function _getPrivateKey() {
4154
4538
  del = [];
4155
4539
  // delete invalid public key
4156
4540
  if (publicKey) {
4157
- del = [$rdf.st(webId, _solidLogic.store.sym(_signature.CERT + 'PublicKey'), $rdf.lit(publicKey), _solidLogic.store.sym(publicKeyDoc))];
4541
+ del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey), _solidLogic.store.sym(publicKeyDoc))];
4158
4542
  debug.log(del);
4159
4543
  }
4160
4544
  // update new valid key
4161
4545
  newPublicKey = generatePublicKey(privateKey);
4162
- add = [$rdf.st(webId, _solidLogic.store.sym(_signature.CERT + 'PublicKey'), $rdf.literal(newPublicKey), _solidLogic.store.sym(publicKeyDoc))];
4546
+ add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), _solidLogic.store.sym(publicKeyDoc))];
4163
4547
  _context3.next = 31;
4164
4548
  return saveKey(publicKeyDoc, del, add);
4165
4549
  case 31:
@@ -4176,7 +4560,7 @@ function _getPrivateKey() {
4176
4560
  }));
4177
4561
  return _getPrivateKey.apply(this, arguments);
4178
4562
  }
4179
- var deleteKey = /*#__PURE__*/function () {
4563
+ var deleteKeyAcl = /*#__PURE__*/function () {
4180
4564
  var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(keyDoc) {
4181
4565
  var keyAclDoc, response;
4182
4566
  return _regenerator["default"].wrap(function _callee$(_context) {
@@ -4215,7 +4599,7 @@ var deleteKey = /*#__PURE__*/function () {
4215
4599
  }
4216
4600
  }, _callee, null, [[4, 11]]);
4217
4601
  }));
4218
- return function deleteKey(_x3) {
4602
+ return function deleteKeyAcl(_x3) {
4219
4603
  return _ref.apply(this, arguments);
4220
4604
  };
4221
4605
  }();
@@ -4237,7 +4621,7 @@ function _saveKey() {
4237
4621
  while (1) switch (_context4.prev = _context4.next) {
4238
4622
  case 0:
4239
4623
  _context4.next = 2;
4240
- return deleteKey(keyDoc);
4624
+ return deleteKeyAcl(keyDoc);
4241
4625
  case 2:
4242
4626
  _context4.next = 4;
4243
4627
  return _solidLogic.store.updater.updateMany(del, add);
@@ -4281,6 +4665,7 @@ exports.renderMessageEditor = renderMessageEditor;
4281
4665
  exports.renderMessageRow = renderMessageRow;
4282
4666
  exports.switchToEditor = switchToEditor;
4283
4667
  var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"));
4668
+ var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js"));
4284
4669
  var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
4285
4670
  var _infinite = __webpack_require__(/*! ./infinite */ "./lib/chat/infinite.js");
4286
4671
  var _messageTools = __webpack_require__(/*! ./messageTools */ "./lib/chat/messageTools.js");
@@ -4300,15 +4685,24 @@ var _signature = __webpack_require__(/*! ./signature */ "./lib/chat/signature.js
4300
4685
  var _keys = __webpack_require__(/*! ./keys */ "./lib/chat/keys.js");
4301
4686
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
4302
4687
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
4303
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
4688
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4689
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4690
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
4304
4691
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4305
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
4692
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /** UI code for individual messages: display them, edit them
4693
+ *
4694
+ * @packageDocumentation
4695
+ */ /* global $rdf */
4306
4696
  var dom = window.document;
4307
4697
  var messageBodyStyle = style.messageBodyStyle;
4308
4698
  var label = utils.label;
4309
4699
 
4310
4700
  /**
4701
+ * elementForImageURI
4311
4702
  * HTML component for an image
4703
+ * @param imageUri
4704
+ * @param options { inlineImageHeightEms }
4705
+ * @returns HTMLAnchorElement For Image
4312
4706
  */
4313
4707
  function elementForImageURI(imageUri, options) {
4314
4708
  var img = dom.createElement('img');
@@ -4338,21 +4732,27 @@ var anchor = function anchor(text, term) {
4338
4732
  a.textContent = text;
4339
4733
  return a;
4340
4734
  };
4341
- function nick(person) {
4735
+ function nickname(person) {
4342
4736
  var s = _solidLogic.store.any(person, ns.foaf('nick'));
4343
4737
  if (s) return '' + s.value;
4344
4738
  return '' + label(person);
4345
4739
  }
4346
4740
 
4347
4741
  /**
4742
+ * creatorAndDate
4348
4743
  * Displays creator and date for a chat message
4349
4744
  * inside the `td1` element
4745
+ * @param td1
4746
+ * @param creator
4747
+ * @param date
4748
+ * @param message
4749
+ * @returns HTMLAnchorElement For Image
4350
4750
  */
4351
4751
  function creatorAndDate(td1, creator, date, message) {
4352
- var nickAnchor = td1.appendChild(anchor(nick(creator), creator));
4752
+ var nickAnchor = td1.appendChild(anchor(nickname(creator), creator));
4353
4753
  if (creator.uri) {
4354
4754
  _solidLogic.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (_ok, _body) {
4355
- nickAnchor.textContent = nick(creator);
4755
+ nickAnchor.textContent = nickname(creator);
4356
4756
  });
4357
4757
  }
4358
4758
  td1.appendChild(dom.createElement('br'));
@@ -4360,14 +4760,20 @@ function creatorAndDate(td1, creator, date, message) {
4360
4760
  }
4361
4761
 
4362
4762
  /**
4763
+ * creatorAndDateHorizontal
4363
4764
  * Horizontally displays creator and date for a chat message
4364
4765
  * inside the `td1` element
4766
+ * @param td1
4767
+ * @param creator
4768
+ * @param date
4769
+ * @param message
4770
+ * @returns HTMLAnchorElement For Image
4365
4771
  */
4366
4772
  function creatorAndDateHorizontal(td1, creator, date, message) {
4367
4773
  var nickAnchor = td1.appendChild(anchor(label(creator), creator));
4368
4774
  if (creator.uri) {
4369
4775
  _solidLogic.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (_ok, _body) {
4370
- nickAnchor.textContent = nick(creator);
4776
+ nickAnchor.textContent = nickname(creator);
4371
4777
  });
4372
4778
  }
4373
4779
  var dateBit = td1.appendChild(anchor(date, message));
@@ -4377,156 +4783,284 @@ function creatorAndDateHorizontal(td1, creator, date, message) {
4377
4783
  }
4378
4784
 
4379
4785
  /**
4786
+ * renderMessageRow
4380
4787
  * Renders a chat message, read-only mode
4788
+ * @param channelObject
4789
+ * @param message
4790
+ * @param fresh
4791
+ * @param options
4792
+ * @param userContext
4793
+ * @returns Message Row HTML Table Element
4381
4794
  */
4382
- function renderMessageRow(channelObject, message, fresh, options, userContext) {
4383
- var colorizeByAuthor = options.colorizeByAuthor === '1' || options.colorizeByAuthor === true;
4384
- var creator = _solidLogic.store.any(message, ns.foaf('maker'));
4385
- var date = _solidLogic.store.any(message, ns.dct('created'));
4386
- var latestVersion = (0, _chatLogic.mostRecentVersion)(message);
4387
- var latestVersionCreator = _solidLogic.store.any(latestVersion, ns.foaf('maker'));
4388
-
4389
- // use latest content if same owner, else use original
4390
- var msgId = creator.uri === latestVersionCreator.uri ? latestVersion : message;
4391
- var content = _solidLogic.store.any(msgId, ns.sioc('content'));
4392
- var signature = _solidLogic.store.any(msgId, $rdf.sym("".concat(_signature.SEC, "Proof")));
4393
-
4394
- // set message object
4395
- var msg = (0, _signature.getBlankMsg)();
4396
- msg.id = msgId.uri;
4397
- msg.created = _solidLogic.store.any(msgId, ns.dct('created')).value;
4398
- msg.content = content.value;
4399
- msg.maker = creator.uri;
4400
-
4401
- // unsigned message
4402
- if (!(signature !== null && signature !== void 0 && signature.value)) debug.warn(msgId.uri + ' is unsigned'); // TODO replace with UI (colored message ?)
4403
-
4404
- // signed message, get public key and check signature
4405
- else {
4406
- (0, _keys.getPublicKey)(creator).then(function (publicKey) {
4407
- debug.log(creator.uri + '\n' + msg.created + '\n' + msg.id + '\n' + publicKey);
4408
- if (!publicKey) {
4409
- // TODO try to recreate the publicKey
4410
- // if(me.uri === creator.uri) await getPrivateKey(creator)
4411
- debug.warn('message is signed but ' + creator.uri + ' is missing publicKey');
4412
- }
4413
- // check that publicKey is a valid hex string
4414
- var regex = /[0-9A-Fa-f]{6}/g;
4415
- if (!(publicKey !== null && publicKey !== void 0 && publicKey.match(regex))) debug.warn('invalid publicKey hex string\n' + creator.uri + '\n' + publicKey);
4416
- // verify signature
4417
- else if (signature !== null && signature !== void 0 && signature.value && !(0, _signature.verifySignature)(signature === null || signature === void 0 ? void 0 : signature.value, msg, publicKey)) debug.warn('invalid signature\n' + msg.id);
4418
- });
4419
- }
4420
- var originalMessage = (0, _chatLogic.originalVersion)(message);
4421
- var edited = !message.sameTerm(originalMessage);
4422
- var sortDate = _solidLogic.store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()); // In message
4423
-
4424
- var messageRow = dom.createElement('tr');
4425
- messageRow.AJAR_date = sortDate.value;
4426
- messageRow.AJAR_subject = message;
4427
- var td1 = dom.createElement('td');
4428
- messageRow.appendChild(td1);
4429
- if (!options.authorDateOnLeft) {
4430
- var img = dom.createElement('img');
4431
- img.setAttribute('style', 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;');
4432
- widgets.setImage(img, creator);
4433
- td1.appendChild(img);
4434
- } else {
4435
- creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message);
4436
- }
4437
- var bothDates = widgets.shortDate(sortDate.value);
4438
- if (edited) {
4439
- bothDates += ' ... ' + widgets.shortDate(date.value);
4440
- }
4441
-
4442
- // Render the content ot the message itself
4443
- var td2 = messageRow.appendChild(dom.createElement('td'));
4444
- if (!options.authorDateOnLeft) {
4445
- creatorAndDateHorizontal(td2, creator, bothDates,
4446
- // widgets.shortDate(dateString)
4447
- message);
4448
- }
4449
- var text = content.value.trim();
4450
- var isURI = /^https?:\/[^ <>]*$/i.test(text);
4451
- var para = null;
4452
- if (isURI) {
4453
- var isImage = /\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text); // @@ Should use content-type not URI
4454
- if (isImage && options.expandImagesInline) {
4455
- var _img = elementForImageURI(text, options);
4456
- td2.appendChild(_img);
4457
- } else {
4458
- // Link but not Image
4459
- var anc = td2.appendChild(dom.createElement('a'));
4460
- para = anc.appendChild(dom.createElement('p'));
4461
- anc.href = text;
4462
- para.textContent = text;
4463
- td2.appendChild(anc);
4464
- }
4465
- } else {
4466
- // text
4467
- para = dom.createElement('p');
4468
- td2.appendChild(para);
4469
- para.textContent = text;
4470
- }
4471
- if (para) {
4472
- var bgcolor = colorizeByAuthor ? pad.lightColorHash(creator) : getBgColor(fresh);
4473
- para.setAttribute('style', messageBodyStyle + 'background-color: ' + bgcolor + ';');
4474
- }
4475
- function getBgColor(fresh) {
4476
- return fresh ? '#e8ffe8' : 'white';
4477
- }
4478
-
4479
- // Sentiment strip
4480
- var strip = (0, _messageTools.sentimentStripLinked)(message, message.doc());
4481
- if (strip.children.length) {
4482
- td2.appendChild(dom.createElement('br'));
4483
- td2.appendChild(strip);
4484
- }
4485
-
4486
- // Message tool bar button
4487
- var td3 = dom.createElement('td');
4488
- messageRow.appendChild(td3);
4489
- var toolsButton = widgets.button(dom, _iconBase.icons.iconBase + 'noun_243787.svg', '...');
4490
- td3.appendChild(toolsButton);
4491
- toolsButton.addEventListener('click', function (_event) {
4492
- if (messageRow.toolTR) {
4493
- // already got a toolbar? Toogle
4494
- messageRow.parentNode.removeChild(messageRow.toolTR);
4495
- delete messageRow.toolTR;
4496
- return;
4497
- }
4498
- var toolsTR = dom.createElement('tr');
4499
- var tools = (0, _messageTools.messageToolbar)(message, messageRow, userContext, channelObject);
4500
- tools.style = 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;'; // @@ fix
4501
- if (messageRow.nextSibling) {
4502
- messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling);
4503
- } else {
4504
- messageRow.parentElement.appendChild(toolsTR);
4505
- }
4506
- messageRow.toolTR = toolsTR;
4507
- toolsTR.appendChild(dom.createElement('td')); // left
4508
- var toolsTD = toolsTR.appendChild(dom.createElement('td'));
4509
- toolsTR.appendChild(dom.createElement('td')); // right
4510
- toolsTD.appendChild(tools);
4511
- });
4512
- return messageRow;
4513
- }
4514
- function switchToEditor(messageRow, message, channelObject, userContext) {
4515
- var messageTable = messageRow.parentNode;
4516
- var editRow = renderMessageEditor(channelObject, messageTable, userContext, channelObject.options, (0, _chatLogic.mostRecentVersion)(message));
4517
- messageTable.insertBefore(editRow, messageRow);
4518
- editRow.originalRow = messageRow;
4519
- messageRow.style.visibility = 'hidden'; // Hide the original message. unhide if user cancels edit
4520
- }
4521
- /* Control for a new message -- or editing an old message ***************
4795
+ function renderMessageRow(_x, _x2, _x3, _x4, _x5) {
4796
+ return _renderMessageRow.apply(this, arguments);
4797
+ } // END OF RENDERMESSAGE
4798
+ function _renderMessageRow() {
4799
+ _renderMessageRow = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(channelObject, message, fresh, options, userContext) {
4800
+ var unsignedMessage, colorizeByAuthor, creator, date, latestVersion, latestVersionCreator, msgId, content, versions, replies, thread, straightReplies, _iterator2, _step2, reply, signature, msg, originalMessage, edited, sortDate, messageRow, td1, img, bothDates, td2, text, isURI, para, isImage, _img, anc, bgcolor, getBgColor, strip, td3, toolsButton;
4801
+ return _regenerator["default"].wrap(function _callee9$(_context10) {
4802
+ while (1) switch (_context10.prev = _context10.next) {
4803
+ case 0:
4804
+ getBgColor = function _getBgColor(fresh) {
4805
+ return fresh ? '#e8ffe8' : 'white';
4806
+ };
4807
+ unsignedMessage = false;
4808
+ colorizeByAuthor = options.colorizeByAuthor === '1' || options.colorizeByAuthor === true; // const id = store.any(latestVersion, ns.sioc('id'))
4809
+ // const replies = store.each(latestVersion, ns.sioc('has_reply'))
4810
+ creator = _solidLogic.store.any(message, ns.foaf('maker'));
4811
+ date = _solidLogic.store.any(message, ns.dct('created'));
4812
+ _context10.next = 7;
4813
+ return (0, _chatLogic.mostRecentVersion)(message);
4814
+ case 7:
4815
+ latestVersion = _context10.sent;
4816
+ debug.log('@@@@ alain mostRecentVersion');
4817
+ debug.log(message);
4818
+ debug.log(latestVersion);
4819
+ latestVersionCreator = _solidLogic.store.any(latestVersion, ns.foaf('maker')); // use latest content if same owner, else use original
4820
+ // this is may be too strict. Should we find latest valid version if any ?
4821
+ debug.log('@@@@ alain creator');
4822
+ debug.log(creator);
4823
+ debug.log(latestVersionCreator);
4824
+ msgId = creator.uri === (latestVersionCreator === null || latestVersionCreator === void 0 ? void 0 : latestVersionCreator.uri) ? latestVersion : message;
4825
+ content = _solidLogic.store.any(msgId, ns.sioc('content'));
4826
+ _context10.next = 19;
4827
+ return (0, _chatLogic.allVersions)(msgId);
4828
+ case 19:
4829
+ versions = _context10.sent;
4830
+ if (versions.length > 1) {
4831
+ debug.log('renderMessageRow versions: ', versions.join(', '));
4832
+ }
4833
+ // be tolerant in accepting replies on any version of a message
4834
+ replies = versions.map(function (version) {
4835
+ return _solidLogic.store.each(version, ns.sioc('has_reply'));
4836
+ }).flat();
4837
+ thread = null;
4838
+ straightReplies = [];
4839
+ _iterator2 = _createForOfIteratorHelper(replies);
4840
+ try {
4841
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
4842
+ reply = _step2.value;
4843
+ if (_solidLogic.store.holds(reply, ns.rdf('type'), ns.sioc('Thread'))) {
4844
+ thread = reply;
4845
+ debug.log('renderMessageRow: found thread: ' + thread);
4846
+ } else {
4847
+ straightReplies.push(reply);
4848
+ }
4849
+ }
4850
+ } catch (err) {
4851
+ _iterator2.e(err);
4852
+ } finally {
4853
+ _iterator2.f();
4854
+ }
4855
+ if (straightReplies.length > 1) {
4856
+ debug.log('renderMessageRow: found normal replies: ', straightReplies);
4857
+ }
4858
+ debug.log('@@@@ is thread');
4859
+ if (!thread) {
4860
+ // thread = store.any(message, ns.sioc('has_reply'))
4861
+ thread = _solidLogic.store.any(null, ns.sioc('has_member'), message);
4862
+ }
4863
+ // get signature
4864
+ signature = _solidLogic.store.any(msgId, $rdf.sym("".concat(_signature.SEC, "proofValue"))); // set proof message object
4865
+ msg = (0, _signature.getBlankMsg)();
4866
+ msg.id = msgId.uri;
4867
+ msg.created = _solidLogic.store.any(msgId, ns.dct('created')).value;
4868
+ msg.content = content.value;
4869
+ msg.maker = creator.uri;
4870
+
4871
+ // verify signature
4872
+ if (!(signature !== null && signature !== void 0 && signature.value)) {
4873
+ // unsigned message
4874
+ unsignedMessage = true;
4875
+ debug.warn(msgId.uri + ' is unsigned'); // TODO replace with UI (colored message ?)
4876
+ } else {
4877
+ // signed message, get public key and check signature
4878
+ (0, _keys.getPublicKey)(creator).then(function (publicKey) {
4879
+ debug.log(creator.uri + '\n' + msg.created + '\n' + msg.id + '\n' + publicKey);
4880
+ if (!publicKey) {
4881
+ debug.warn('message is signed but ' + creator.uri + ' is missing publicKey');
4882
+ }
4883
+ // check that publicKey is a valid hex string
4884
+ var regex = /[0-9A-Fa-f]{6}/g;
4885
+ if (!(publicKey !== null && publicKey !== void 0 && publicKey.match(regex))) debug.warn('invalid publicKey hex string\n' + creator.uri + '\n' + publicKey);
4886
+ // verify signature
4887
+ else if (signature !== null && signature !== void 0 && signature.value && !(0, _signature.verifySignature)(signature === null || signature === void 0 ? void 0 : signature.value, msg, publicKey)) debug.warn('invalid signature\n' + msg.id);
4888
+ });
4889
+ }
4890
+ _context10.next = 38;
4891
+ return (0, _chatLogic.originalVersion)(message);
4892
+ case 38:
4893
+ originalMessage = _context10.sent;
4894
+ edited = !message.sameTerm(originalMessage); // @@ load it first @@ Or display the new data at the old date.
4895
+ // @@@ kludge!
4896
+ sortDate = _solidLogic.store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) || _solidLogic.store.the(message, ns.dct('created'), null, message.doc()); // In message
4897
+ messageRow = dom.createElement('tr');
4898
+ if (unsignedMessage) messageRow.setAttribute('style', 'background-color: red');
4899
+ messageRow.AJAR_date = sortDate.value;
4900
+ messageRow.AJAR_subject = message;
4901
+ td1 = dom.createElement('td');
4902
+ messageRow.appendChild(td1);
4903
+ if (!options.authorDateOnLeft) {
4904
+ img = dom.createElement('img');
4905
+ img.setAttribute('style', 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;');
4906
+ widgets.setImage(img, creator);
4907
+ td1.appendChild(img);
4908
+ } else {
4909
+ creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message);
4910
+ }
4911
+ bothDates = widgets.shortDate(sortDate.value);
4912
+ if (edited) {
4913
+ bothDates += ' ... ' + widgets.shortDate(date.value);
4914
+ }
4915
+
4916
+ // Render the content ot the message itself
4917
+ td2 = messageRow.appendChild(dom.createElement('td'));
4918
+ if (!options.authorDateOnLeft) {
4919
+ creatorAndDateHorizontal(td2, creator, bothDates,
4920
+ // widgets.shortDate(dateString)
4921
+ message);
4922
+ }
4923
+ text = content ? content.value.trim() : '??? no content?';
4924
+ isURI = /^https?:\/[^ <>]*$/i.test(text);
4925
+ para = null;
4926
+ if (isURI) {
4927
+ isImage = /\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text); // @@ Should use content-type not URI
4928
+ if (isImage && options.expandImagesInline) {
4929
+ _img = elementForImageURI(text, options);
4930
+ td2.appendChild(_img);
4931
+ } else {
4932
+ // Link but not Image
4933
+ anc = td2.appendChild(dom.createElement('a'));
4934
+ para = anc.appendChild(dom.createElement('p'));
4935
+ anc.href = text;
4936
+ para.textContent = text;
4937
+ td2.appendChild(anc);
4938
+ }
4939
+ } else {
4940
+ // text
4941
+ para = dom.createElement('p');
4942
+ td2.appendChild(para);
4943
+ para.textContent = text;
4944
+ }
4945
+ if (para) {
4946
+ bgcolor = colorizeByAuthor ? pad.lightColorHash(creator) : getBgColor(fresh);
4947
+ para.setAttribute('style', messageBodyStyle + 'background-color: ' + bgcolor + ';');
4948
+ }
4949
+ _context10.next = 59;
4950
+ return (0, _messageTools.sentimentStripLinked)(message, message.doc());
4951
+ case 59:
4952
+ strip = _context10.sent;
4953
+ if (strip.children.length) {
4954
+ td2.appendChild(dom.createElement('br'));
4955
+ td2.appendChild(strip);
4956
+ }
4957
+
4958
+ // Message tool bar button
4959
+ td3 = dom.createElement('td');
4960
+ messageRow.appendChild(td3);
4961
+ toolsButton = widgets.button(dom, _iconBase.icons.iconBase + 'noun_243787.svg', '...');
4962
+ td3.appendChild(toolsButton);
4963
+ toolsButton.addEventListener('click', /*#__PURE__*/function () {
4964
+ var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(_event) {
4965
+ var toolsTR, tools, toolsTD;
4966
+ return _regenerator["default"].wrap(function _callee8$(_context9) {
4967
+ while (1) switch (_context9.prev = _context9.next) {
4968
+ case 0:
4969
+ if (!messageRow.toolTR) {
4970
+ _context9.next = 4;
4971
+ break;
4972
+ }
4973
+ // already got a toolbar? Toogle
4974
+ messageRow.parentNode.removeChild(messageRow.toolTR);
4975
+ delete messageRow.toolTR;
4976
+ return _context9.abrupt("return");
4977
+ case 4:
4978
+ toolsTR = dom.createElement('tr');
4979
+ _context9.next = 7;
4980
+ return (0, _messageTools.messageToolbar)(message, messageRow, _objectSpread(_objectSpread({}, userContext), {}, {
4981
+ chatOptions: options
4982
+ }), channelObject);
4983
+ case 7:
4984
+ tools = _context9.sent;
4985
+ tools.style = 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;'; // @@ fix
4986
+ if (messageRow.nextSibling) {
4987
+ messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling);
4988
+ } else {
4989
+ messageRow.parentElement.appendChild(toolsTR);
4990
+ }
4991
+ messageRow.toolTR = toolsTR;
4992
+ toolsTR.appendChild(dom.createElement('td')); // left
4993
+ toolsTD = toolsTR.appendChild(dom.createElement('td'));
4994
+ toolsTR.appendChild(dom.createElement('td')); // right
4995
+ toolsTD.appendChild(tools);
4996
+ case 15:
4997
+ case "end":
4998
+ return _context9.stop();
4999
+ }
5000
+ }, _callee8);
5001
+ }));
5002
+ return function (_x20) {
5003
+ return _ref4.apply(this, arguments);
5004
+ };
5005
+ }());
5006
+ if (thread && options.showThread) {
5007
+ debug.log(' message has thread ' + thread);
5008
+ td3.appendChild(widgets.button(dom, _iconBase.icons.iconBase + 'noun_1180164.svg',
5009
+ // right arrow .. @@ think of stg better
5010
+ 'see thread', function (_e) {
5011
+ debug.log('@@@@ Calling showThread thread ' + thread);
5012
+ options.showThread(thread, options);
5013
+ }));
5014
+ }
5015
+ return _context10.abrupt("return", messageRow);
5016
+ case 68:
5017
+ case "end":
5018
+ return _context10.stop();
5019
+ }
5020
+ }, _callee9);
5021
+ }));
5022
+ return _renderMessageRow.apply(this, arguments);
5023
+ }
5024
+ function switchToEditor(_x6, _x7, _x8, _x9) {
5025
+ return _switchToEditor.apply(this, arguments);
5026
+ }
5027
+ /* Control for a new message -- or editing an old message ***************
4522
5028
  *
4523
5029
  */
5030
+ function _switchToEditor() {
5031
+ _switchToEditor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(messageRow, message, channelObject, userContext) {
5032
+ var messageTable, editRow;
5033
+ return _regenerator["default"].wrap(function _callee10$(_context11) {
5034
+ while (1) switch (_context11.prev = _context11.next) {
5035
+ case 0:
5036
+ messageTable = messageRow.parentNode;
5037
+ _context11.t0 = renderMessageEditor;
5038
+ _context11.t1 = channelObject;
5039
+ _context11.t2 = messageTable;
5040
+ _context11.t3 = userContext;
5041
+ _context11.t4 = channelObject.options;
5042
+ _context11.next = 8;
5043
+ return (0, _chatLogic.mostRecentVersion)(message);
5044
+ case 8:
5045
+ _context11.t5 = _context11.sent;
5046
+ editRow = (0, _context11.t0)(_context11.t1, _context11.t2, _context11.t3, _context11.t4, _context11.t5);
5047
+ messageTable.insertBefore(editRow, messageRow);
5048
+ editRow.originalRow = messageRow;
5049
+ messageRow.style.visibility = 'hidden'; // Hide the original message. unhide if user cancels edit
5050
+ case 13:
5051
+ case "end":
5052
+ return _context11.stop();
5053
+ }
5054
+ }, _callee10);
5055
+ }));
5056
+ return _switchToEditor.apply(this, arguments);
5057
+ }
4524
5058
  function renderMessageEditor(channelObject, messageTable, userContext, options, originalMessage) {
4525
5059
  function revertEditing(messageEditor) {
4526
5060
  messageEditor.originalRow.style.visibility = 'visible'; // restore read-only version
4527
5061
  messageEditor.parentNode.removeChild(messageEditor);
4528
5062
  }
4529
- function handleFieldInput(_x) {
5063
+ function handleFieldInput(_x10) {
4530
5064
  return _handleFieldInput.apply(this, arguments);
4531
5065
  }
4532
5066
  function _handleFieldInput() {
@@ -4544,72 +5078,86 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
4544
5078
  }));
4545
5079
  return _handleFieldInput.apply(this, arguments);
4546
5080
  }
4547
- function sendMessage(_x2, _x3) {
5081
+ function sendMessage(_x11, _x12) {
4548
5082
  return _sendMessage.apply(this, arguments);
4549
5083
  } // sendMessage
4550
5084
  // DRAG AND DROP
4551
5085
  function _sendMessage() {
4552
- _sendMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(text, fromMainField) {
4553
- var sendComplete, message, statusArea;
4554
- return _regenerator["default"].wrap(function _callee6$(_context7) {
4555
- while (1) switch (_context7.prev = _context7.next) {
5086
+ _sendMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(text, fromMainField) {
5087
+ var sendComplete, _sendComplete, message, statusArea;
5088
+ return _regenerator["default"].wrap(function _callee7$(_context8) {
5089
+ while (1) switch (_context8.prev = _context8.next) {
4556
5090
  case 0:
4557
- sendComplete = function _sendComplete(message, _text2) {
4558
- // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())
4559
- // const content = $rdf.literal(text2)
4560
- (0, _infinite.insertMessageIntoTable)(channelObject, messageTable, message, false, options, userContext); // not green
4561
-
4562
- if (originalMessage) {
4563
- // editing another message
4564
- var oldRow = messageEditor.originalRow;
4565
- // oldRow.style.display = '' // restore read-only version, re-attack
4566
- if (oldRow.parentNode) {
4567
- oldRow.parentNode.removeChild(oldRow); // No longer needed old version
4568
- } else {
4569
- debug.warn('No parentNode on old message ' + oldRow.textContent);
4570
- oldRow.style.backgroundColor = '#fee';
4571
- oldRow.style.visibility = 'hidden'; // @@ FIX THIS AND REMOVE FROM DOM INSTEAD
4572
- }
5091
+ _sendComplete = function _sendComplete3() {
5092
+ _sendComplete = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(message, _text2) {
5093
+ var oldRow;
5094
+ return _regenerator["default"].wrap(function _callee6$(_context7) {
5095
+ while (1) switch (_context7.prev = _context7.next) {
5096
+ case 0:
5097
+ _context7.next = 2;
5098
+ return (0, _infinite.insertMessageIntoTable)(channelObject, messageTable, message, false, options, userContext);
5099
+ case 2:
5100
+ // not green
4573
5101
 
4574
- messageEditor.parentNode.removeChild(messageEditor); // no longer need editor
4575
- } else {
4576
- if (fromMainField) {
4577
- field.value = ''; // clear from out for reuse
4578
- field.setAttribute('style', messageBodyStyle);
4579
- field.disabled = false;
4580
- field.scrollIntoView(options.newestFirst); // allign bottom (top)
4581
- field.focus(); // Start typing next line immediately
4582
- field.select();
4583
- }
4584
- }
4585
- // await channelObject.div.refresh() // Add new day if nec @@ add back
4586
- };
5102
+ if (originalMessage) {
5103
+ // editing another message
5104
+ oldRow = messageEditor.originalRow; // oldRow.style.display = '' // restore read-only version, re-attack
5105
+ if (oldRow.parentNode) {
5106
+ oldRow.parentNode.removeChild(oldRow); // No longer needed old version
5107
+ } else {
5108
+ debug.warn('No parentNode on old message ' + oldRow.textContent);
5109
+ oldRow.style.backgroundColor = '#fee';
5110
+ oldRow.style.visibility = 'hidden'; // @@ FIX THIS AND REMOVE FROM DOM INSTEAD
5111
+ }
4587
5112
 
4588
- // const me = authn.currentUser() // Must be logged on or wuld have got login button
5113
+ messageEditor.parentNode.removeChild(messageEditor); // no longer need editor
5114
+ } else {
5115
+ if (fromMainField) {
5116
+ field.value = ''; // clear from out for reuse
5117
+ field.setAttribute('style', messageBodyStyle);
5118
+ field.disabled = false;
5119
+ field.scrollIntoView(options.newestFirst); // allign bottom (top)
5120
+ field.focus(); // Start typing next line immediately
5121
+ field.select();
5122
+ }
5123
+ }
5124
+ // await channelObject.div.refresh() // Add new day if nec @@ add back
5125
+ case 3:
5126
+ case "end":
5127
+ return _context7.stop();
5128
+ }
5129
+ }, _callee6);
5130
+ }));
5131
+ return _sendComplete.apply(this, arguments);
5132
+ };
5133
+ sendComplete = function _sendComplete2(_x18, _x19) {
5134
+ return _sendComplete.apply(this, arguments);
5135
+ }; // const me = authn.currentUser() // Must be logged on or wuld have got login button
4589
5136
  if (fromMainField) {
4590
5137
  field.setAttribute('style', messageBodyStyle + 'color: #bbb;'); // pendingedit
4591
5138
  field.disabled = true;
4592
5139
  }
4593
- _context7.prev = 2;
4594
- _context7.next = 5;
4595
- return channelObject.updateMessage(text, originalMessage);
4596
- case 5:
4597
- message = _context7.sent;
4598
- _context7.next = 13;
5140
+ _context8.prev = 3;
5141
+ _context8.next = 6;
5142
+ return channelObject.updateMessage(text, originalMessage, null, options.thread);
5143
+ case 6:
5144
+ message = _context8.sent;
5145
+ _context8.next = 14;
4599
5146
  break;
4600
- case 8:
4601
- _context7.prev = 8;
4602
- _context7.t0 = _context7["catch"](2);
5147
+ case 9:
5148
+ _context8.prev = 9;
5149
+ _context8.t0 = _context8["catch"](3);
4603
5150
  statusArea = userContext.statusArea || messageEditor;
4604
- statusArea.appendChild(widgets.errorMessageBlock(dom, 'Error writing message: ' + _context7.t0));
4605
- return _context7.abrupt("return");
4606
- case 13:
4607
- sendComplete(message, text);
5151
+ statusArea.appendChild(widgets.errorMessageBlock(dom, 'Error writing message: ' + _context8.t0));
5152
+ return _context8.abrupt("return");
4608
5153
  case 14:
5154
+ _context8.next = 16;
5155
+ return sendComplete(message, text);
5156
+ case 16:
4609
5157
  case "end":
4610
- return _context7.stop();
5158
+ return _context8.stop();
4611
5159
  }
4612
- }, _callee6, null, [[2, 8]]);
5160
+ }, _callee7, null, [[3, 9]]);
4613
5161
  }));
4614
5162
  return _sendMessage.apply(this, arguments);
4615
5163
  }
@@ -4628,7 +5176,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
4628
5176
  }
4629
5177
  }, _callee);
4630
5178
  }));
4631
- return function (_x4, _x5) {
5179
+ return function (_x13, _x14) {
4632
5180
  return _ref.apply(this, arguments);
4633
5181
  };
4634
5182
  }());
@@ -4672,7 +5220,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
4672
5220
  }
4673
5221
  }, _callee2, null, [[1, 11, 14, 17]]);
4674
5222
  }));
4675
- return function droppedURIHandler(_x6) {
5223
+ return function droppedURIHandler(_x15) {
4676
5224
  return _ref2.apply(this, arguments);
4677
5225
  };
4678
5226
  }();
@@ -4683,7 +5231,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
4683
5231
  imageDoc = $rdf.sym(chatDocument.dir().uri + 'Image_' + Date.now() + '.png');
4684
5232
  return imageDoc;
4685
5233
  }
4686
- function tookPicture(_x7) {
5234
+ function tookPicture(_x16) {
4687
5235
  return _tookPicture.apply(this, arguments);
4688
5236
  } // Body of turnOnInput
4689
5237
  function _tookPicture() {
@@ -4760,7 +5308,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
4760
5308
  }
4761
5309
  }, _callee3);
4762
5310
  }));
4763
- return function (_x8) {
5311
+ return function (_x17) {
4764
5312
  return _ref3.apply(this, arguments);
4765
5313
  };
4766
5314
  }(), false);
@@ -4822,7 +5370,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
4822
5370
  turnOnInput();
4823
5371
  Object.assign(context, userContext);
4824
5372
  (0, _bookmarks.findBookmarkDocument)(context).then(function (_context) {
4825
- // console.log('Bookmark file: ' + context.bookmarkDocument)
5373
+ // debug.log('Bookmark file: ' + context.bookmarkDocument)
4826
5374
  });
4827
5375
  });
4828
5376
  return messageEditor;
@@ -4845,12 +5393,15 @@ var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_m
4845
5393
  Object.defineProperty(exports, "__esModule", ({
4846
5394
  value: true
4847
5395
  }));
5396
+ exports.ActionClassFromEmoji = ActionClassFromEmoji;
5397
+ exports.emojiFromAction = emojiFromAction;
5398
+ exports.emojiFromActionClass = emojiFromActionClass;
4848
5399
  exports.messageToolbar = messageToolbar;
4849
5400
  exports.sentimentStrip = sentimentStrip;
4850
5401
  exports.sentimentStripLinked = sentimentStripLinked;
4851
5402
  var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"));
4852
- var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
4853
5403
  var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "./node_modules/@babel/runtime/helpers/slicedToArray.js"));
5404
+ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
4854
5405
  var debug = _interopRequireWildcard(__webpack_require__(/*! ../debug */ "./lib/debug.js"));
4855
5406
  var _iconBase = __webpack_require__(/*! ../iconBase */ "./lib/iconBase.js");
4856
5407
  var ns = _interopRequireWildcard(__webpack_require__(/*! ../ns */ "./lib/ns.js"));
@@ -4878,7 +5429,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
4878
5429
  // import * as pad from '../pad'
4879
5430
  // pull in first avoid cross-refs
4880
5431
  // import * as style from '../style'
4881
-
4882
5432
  var dom = window.document;
4883
5433
 
4884
5434
  // THE UNUSED ICONS are here as reminders for possible future functionality
@@ -4891,30 +5441,46 @@ var PENCIL_ICON = 'noun_253504.svg'; // edit a message
4891
5441
  // const SPANNER_ICON = 'noun_344563.svg' -> settings
4892
5442
  var THUMBS_UP_ICON = 'noun_1384132.svg';
4893
5443
  var THUMBS_DOWN_ICON = 'noun_1384135.svg';
5444
+ var REPLY_ICON = 'noun-reply-5506924.svg';
4894
5445
  /**
4895
5446
  * Emoji in Unicode
4896
5447
  */
4897
- var emoji = {};
4898
- emoji[ns.schema('AgreeAction')] = '👍';
4899
- emoji[ns.schema('DisagreeAction')] = '👎';
4900
- emoji[ns.schema('EndorseAction')] = '⭐️';
4901
- emoji[ns.schema('LikeAction')] = '❤️';
5448
+ var emojiMap = {};
5449
+ emojiMap[ns.schema('AgreeAction')] = '👍';
5450
+ emojiMap[ns.schema('DisagreeAction')] = '👎';
5451
+ emojiMap[ns.schema('EndorseAction')] = '⭐️';
5452
+ emojiMap[ns.schema('LikeAction')] = '❤️';
5453
+ function emojiFromActionClass(action) {
5454
+ return emojiMap[action] || null;
5455
+ }
5456
+ function ActionClassFromEmoji(emoji) {
5457
+ for (var a in emojiMap) {
5458
+ if (emojiMap[a] === emoji) {
5459
+ return rdf.sym(a.slice(1, -1)); // remove < >
5460
+ }
5461
+ }
5462
+
5463
+ return null;
5464
+ }
5465
+
5466
+ // Allow the action to give its own emoji as content,
5467
+ // or get the emoji from the class of action.
5468
+ function emojiFromAction(action) {
5469
+ var content = _solidLogic.store.any(action, ns.sioc('content'), null, action.doc());
5470
+ if (content) return content;
5471
+ var klass = _solidLogic.store.any(action, ns.rdf('type'), null, action.doc());
5472
+ if (klass) {
5473
+ var em = emojiFromActionClass(klass);
5474
+ if (em) return em;
5475
+ }
5476
+ return '⬜️';
5477
+ }
4902
5478
 
4903
5479
  /**
4904
5480
  * Create strip of sentiments expressed
4905
5481
  */
4906
- function sentimentStrip(target, doc) {
4907
- // alain seems not used
4908
- var latest = (0, _chatLogic.mostRecentVersion)(target);
4909
- var actions = _solidLogic.store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? _solidLogic.store.each(null, ns.schema('target'), target, doc) : [];
4910
- var sentiments = actions.map(function (a) {
4911
- return _solidLogic.store.any(a, ns.rdf('type'), null, doc);
4912
- });
4913
- sentiments.sort();
4914
- var strings = sentiments.map(function (x) {
4915
- return emoji[x] || '';
4916
- });
4917
- return dom.createTextNode(strings.join(' '));
5482
+ function sentimentStrip(_x, _x2) {
5483
+ return _sentimentStrip.apply(this, arguments);
4918
5484
  }
4919
5485
  /**
4920
5486
  * Create strip of sentiments expressed, with hyperlinks
@@ -4922,276 +5488,444 @@ function sentimentStrip(target, doc) {
4922
5488
  * @param target {NamedNode} - The thing about which they are expressed
4923
5489
  * @param doc {NamedNode} - The document in which they are expressed
4924
5490
  */
4925
- function sentimentStripLinked(target, doc) {
4926
- var strip = dom.createElement('span');
4927
- function refresh() {
4928
- strip.innerHTML = '';
4929
- var actions = (0, _chatLogic.mostRecentVersion)(target).uri !== ns.schema('dateDeleted').uri ? _solidLogic.store.each(null, ns.schema('target'), target, doc) : [];
4930
- var sentiments = actions.map(function (a) {
4931
- return [_solidLogic.store.any(a, ns.rdf('type'), null, doc), _solidLogic.store.any(a, ns.schema('agent'), null, doc)];
4932
- });
4933
- sentiments.sort();
4934
- sentiments.forEach(function (ss) {
4935
- var _ss = (0, _slicedToArray2["default"])(ss, 2),
4936
- theClass = _ss[0],
4937
- agent = _ss[1];
4938
- var res;
4939
- if (agent) {
4940
- res = dom.createElement('a');
4941
- res.setAttribute('href', agent.uri);
4942
- } else {
4943
- res = dom.createTextNode('');
5491
+ function _sentimentStrip() {
5492
+ _sentimentStrip = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(target, doc) {
5493
+ var versions, actions, strings;
5494
+ return _regenerator["default"].wrap(function _callee$(_context) {
5495
+ while (1) switch (_context.prev = _context.next) {
5496
+ case 0:
5497
+ _context.next = 2;
5498
+ return (0, _chatLogic.allVersions)(target);
5499
+ case 2:
5500
+ versions = _context.sent;
5501
+ debug.log('sentimentStrip Versions for ' + target, versions);
5502
+ actions = versions.map(function (version) {
5503
+ return _solidLogic.store.each(null, ns.schema('target'), version, doc);
5504
+ }).flat();
5505
+ debug.log('sentimentStrip: Actions for ' + target, actions);
5506
+ strings = actions.map(function (action) {
5507
+ return emojiFromAction(action) || '';
5508
+ });
5509
+ return _context.abrupt("return", dom.createTextNode(strings.join(' ')));
5510
+ case 8:
5511
+ case "end":
5512
+ return _context.stop();
4944
5513
  }
4945
- res.textContent = emoji[theClass] || '*';
4946
- strip.appendChild(res);
4947
- });
4948
- }
4949
- refresh();
4950
- strip.refresh = refresh;
4951
- return strip;
5514
+ }, _callee);
5515
+ }));
5516
+ return _sentimentStrip.apply(this, arguments);
5517
+ }
5518
+ function sentimentStripLinked(_x3, _x4) {
5519
+ return _sentimentStripLinked.apply(this, arguments);
4952
5520
  }
4953
5521
  /**
4954
5522
  * Creates a message toolbar component
4955
5523
  */
4956
- function messageToolbar(message, messageRow, userContext, channelObject) {
4957
- function deleteMessage() {
4958
- return _deleteMessage.apply(this, arguments);
4959
- }
4960
- function _deleteMessage() {
4961
- _deleteMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
4962
- var author, msg, area;
4963
- return _regenerator["default"].wrap(function _callee2$(_context2) {
4964
- while (1) switch (_context2.prev = _context2.next) {
4965
- case 0:
4966
- author = _solidLogic.store.any(message, ns.foaf('maker'));
4967
- if (me) {
4968
- _context2.next = 5;
4969
- break;
5524
+ function _sentimentStripLinked() {
5525
+ _sentimentStripLinked = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(target, doc) {
5526
+ var strip, refresh, _refresh;
5527
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
5528
+ while (1) switch (_context3.prev = _context3.next) {
5529
+ case 0:
5530
+ _refresh = function _refresh3() {
5531
+ _refresh = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
5532
+ var versions, actions, sentiments;
5533
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
5534
+ while (1) switch (_context2.prev = _context2.next) {
5535
+ case 0:
5536
+ strip.innerHTML = '';
5537
+ if (!(0, _chatLogic.isDeleted)(target)) {
5538
+ _context2.next = 3;
5539
+ break;
5540
+ }
5541
+ return _context2.abrupt("return", strip);
5542
+ case 3:
5543
+ _context2.next = 5;
5544
+ return (0, _chatLogic.allVersions)(target);
5545
+ case 5:
5546
+ versions = _context2.sent;
5547
+ debug.log('sentimentStripLinked: Versions for ' + target, versions);
5548
+ actions = versions.map(function (version) {
5549
+ return _solidLogic.store.each(null, ns.schema('target'), version, doc);
5550
+ }).flat();
5551
+ debug.log('sentimentStripLinked: Actions for ' + target, actions);
5552
+ if (!(actions.length === 0)) {
5553
+ _context2.next = 11;
5554
+ break;
5555
+ }
5556
+ return _context2.abrupt("return", strip);
5557
+ case 11:
5558
+ sentiments = actions.map(function (a) {
5559
+ return [_solidLogic.store.any(a, ns.rdf('type'), null, doc), _solidLogic.store.any(a, ns.sioc('content'), null, doc), _solidLogic.store.any(a, ns.schema('agent'), null, doc)];
5560
+ });
5561
+ debug.log(' Actions sentiments ', sentiments);
5562
+ sentiments.sort();
5563
+ sentiments.forEach(function (ss) {
5564
+ var _ss = (0, _slicedToArray2["default"])(ss, 3),
5565
+ theClass = _ss[0],
5566
+ content = _ss[1],
5567
+ agent = _ss[2];
5568
+ var res;
5569
+ if (agent) {
5570
+ res = dom.createElement('a');
5571
+ res.setAttribute('href', agent.uri);
5572
+ } else {
5573
+ res = dom.createTextNode('');
5574
+ }
5575
+ res.textContent = content || emojiMap[theClass] || '⬜️';
5576
+ strip.appendChild(res);
5577
+ });
5578
+ debug.log(' Actions strip ', strip);
5579
+ case 16:
5580
+ case "end":
5581
+ return _context2.stop();
5582
+ }
5583
+ }, _callee2);
5584
+ }));
5585
+ return _refresh.apply(this, arguments);
5586
+ };
5587
+ refresh = function _refresh2() {
5588
+ return _refresh.apply(this, arguments);
5589
+ };
5590
+ strip = dom.createElement('span');
5591
+ refresh().then(debug.log('sentimentStripLinked: sentimentStripLinked async refreshed'));
5592
+ strip.refresh = refresh;
5593
+ return _context3.abrupt("return", strip);
5594
+ case 6:
5595
+ case "end":
5596
+ return _context3.stop();
5597
+ }
5598
+ }, _callee3);
5599
+ }));
5600
+ return _sentimentStripLinked.apply(this, arguments);
5601
+ }
5602
+ function messageToolbar(_x5, _x6, _x7, _x8) {
5603
+ return _messageToolbar.apply(this, arguments);
5604
+ }
5605
+ function _messageToolbar() {
5606
+ _messageToolbar = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(message, messageRow, userContext, channelObject) {
5607
+ var deleteMessage, _deleteMessage, editMessage, _editMessage, replyInThread, _replyInThread, div, closeToolbar, deleteThingThen, _deleteThingThen, me, sentimentButton, context1, cancelButton;
5608
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
5609
+ while (1) switch (_context10.prev = _context10.next) {
5610
+ case 0:
5611
+ sentimentButton = function _sentimentButton(context, target, icon, actionClass, doc, mutuallyExclusive) {
5612
+ function setColor() {
5613
+ button.style.backgroundColor = action ? 'yellow' : 'white';
4970
5614
  }
4971
- alert('You can\'t delete the message, you are not logged in.');
4972
- _context2.next = 22;
4973
- break;
4974
- case 5:
4975
- if (!me.sameTerm(author)) {
4976
- _context2.next = 21;
4977
- break;
5615
+ var button = widgets.button(dom, icon, utils.label(actionClass), /*#__PURE__*/function () {
5616
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(_event) {
5617
+ var insertMe, dirty, i, a;
5618
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
5619
+ while (1) switch (_context4.prev = _context4.next) {
5620
+ case 0:
5621
+ if (!action) {
5622
+ _context4.next = 7;
5623
+ break;
5624
+ }
5625
+ _context4.next = 3;
5626
+ return deleteThingThen(action);
5627
+ case 3:
5628
+ action = null;
5629
+ setColor();
5630
+ _context4.next = 25;
5631
+ break;
5632
+ case 7:
5633
+ // no action
5634
+ action = widgets.newThing(doc);
5635
+ insertMe = [rdf.st(action, ns.schema('agent'), context.me, doc), rdf.st(action, ns.rdf('type'), actionClass, doc), rdf.st(action, ns.schema('target'), target, doc)];
5636
+ _context4.next = 11;
5637
+ return _solidLogic.store.updater.update([], insertMe);
5638
+ case 11:
5639
+ setColor();
5640
+ if (!mutuallyExclusive) {
5641
+ _context4.next = 25;
5642
+ break;
5643
+ }
5644
+ // Delete incompative sentiments
5645
+ dirty = false;
5646
+ i = 0;
5647
+ case 15:
5648
+ if (!(i < mutuallyExclusive.length)) {
5649
+ _context4.next = 24;
5650
+ break;
5651
+ }
5652
+ a = existingAction(mutuallyExclusive[i]);
5653
+ if (!a) {
5654
+ _context4.next = 21;
5655
+ break;
5656
+ }
5657
+ _context4.next = 20;
5658
+ return deleteThingThen(a);
5659
+ case 20:
5660
+ // but how refresh? refreshTree the parent?
5661
+ dirty = true;
5662
+ case 21:
5663
+ i++;
5664
+ _context4.next = 15;
5665
+ break;
5666
+ case 24:
5667
+ if (dirty) {
5668
+ // widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings
5669
+ widgets.refreshTree(messageRow); // requires them all to be immediate siblings
5670
+ }
5671
+ case 25:
5672
+ case "end":
5673
+ return _context4.stop();
5674
+ }
5675
+ }, _callee4);
5676
+ }));
5677
+ return function (_x11) {
5678
+ return _ref.apply(this, arguments);
5679
+ };
5680
+ }());
5681
+ function existingAction(actionClass) {
5682
+ var actions = _solidLogic.store.each(null, ns.schema('agent'), context.me, doc).filter(function (x) {
5683
+ return _solidLogic.store.holds(x, ns.rdf('type'), actionClass, doc);
5684
+ }).filter(function (x) {
5685
+ return _solidLogic.store.holds(x, ns.schema('target'), target, doc);
5686
+ });
5687
+ return actions.length ? actions[0] : null;
4978
5688
  }
4979
- _context2.prev = 6;
4980
- _context2.next = 9;
4981
- return channelObject.deleteMessage(message);
4982
- case 9:
4983
- _context2.next = 18;
4984
- break;
4985
- case 11:
4986
- _context2.prev = 11;
4987
- _context2.t0 = _context2["catch"](6);
4988
- msg = 'Error deleting messaage ' + _context2.t0;
4989
- debug.warn(msg);
4990
- alert(msg);
4991
- area = userContext.statusArea || messageRow.parentNode;
4992
- area.appendChild(widgets.errorMessageBlock(dom, msg));
4993
- case 18:
4994
- messageRow.parentNode.removeChild(messageRow);
4995
- _context2.next = 22;
4996
- break;
4997
- case 21:
4998
- alert('You can\'t delete the message, you are not logged in as the author, ' + author);
4999
- case 22:
5000
- closeToolbar();
5001
- case 23:
5002
- case "end":
5003
- return _context2.stop();
5004
- }
5005
- }, _callee2, null, [[6, 11]]);
5006
- }));
5007
- return _deleteMessage.apply(this, arguments);
5008
- }
5009
- function editMessage(_x) {
5010
- return _editMessage.apply(this, arguments);
5011
- } // alain TODO allow chat owner to fully delete message + sentiments and replacing messages
5012
- function _editMessage() {
5013
- _editMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(messageRow) {
5014
- return _regenerator["default"].wrap(function _callee3$(_context3) {
5015
- while (1) switch (_context3.prev = _context3.next) {
5016
- case 0:
5017
- if (me.value === _solidLogic.store.any(message, ns.foaf('maker')).value) {
5018
- closeToolbar(); // edit is a one-off action
5019
- (0, _message.switchToEditor)(messageRow, message, channelObject, userContext);
5689
+ function refresh() {
5690
+ action = existingAction(actionClass);
5691
+ setColor();
5020
5692
  }
5021
- case 1:
5022
- case "end":
5023
- return _context3.stop();
5024
- }
5025
- }, _callee3);
5026
- }));
5027
- return _editMessage.apply(this, arguments);
5028
- }
5029
- var div = dom.createElement('div');
5030
- // is message deleted ?
5031
- if ((0, _chatLogic.mostRecentVersion)(message).value === ns.schema('dateDeleted').value) return div;
5032
- function closeToolbar() {
5033
- div.parentElement.parentElement.removeChild(div.parentElement); // remive the TR
5034
- }
5035
- function deleteThingThen(_x2) {
5036
- return _deleteThingThen.apply(this, arguments);
5037
- } // Things only the original author can do
5038
- function _deleteThingThen() {
5039
- _deleteThingThen = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(x) {
5040
- return _regenerator["default"].wrap(function _callee4$(_context4) {
5041
- while (1) switch (_context4.prev = _context4.next) {
5042
- case 0:
5043
- _context4.next = 2;
5044
- return _solidLogic.store.updater.update(_solidLogic.store.connectedStatements(x), []);
5045
- case 2:
5046
- case "end":
5047
- return _context4.stop();
5048
- }
5049
- }, _callee4);
5050
- }));
5051
- return _deleteThingThen.apply(this, arguments);
5052
- }
5053
- var me = _solidLogic.authn.currentUser(); // If already logged on
5054
- if (me && _solidLogic.store.holds(message, ns.foaf('maker'), me)) {
5055
- // button to delete the message
5056
- div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage));
5057
- // button to edit the message
5058
- div.appendChild(widgets.button(dom, _iconBase.icons.iconBase + PENCIL_ICON, 'edit', function () {
5059
- return editMessage(messageRow);
5060
- }));
5061
- } // if mine
5062
- // Things anyone can do if they have a bookmark list async
5063
- /*
5064
- var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)
5065
- if (bookmarkButton) {
5066
- div.appendChild(bookmarkButton)
5067
- }
5068
- */
5069
- // Things anyone can do if they have a bookmark list
5693
+ var action;
5694
+ button.refresh = refresh; // If the file changes, refresh live
5695
+ refresh();
5696
+ return button;
5697
+ };
5698
+ _deleteThingThen = function _deleteThingThen3() {
5699
+ _deleteThingThen = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(x) {
5700
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
5701
+ while (1) switch (_context9.prev = _context9.next) {
5702
+ case 0:
5703
+ _context9.next = 2;
5704
+ return _solidLogic.store.updater.update(_solidLogic.store.connectedStatements(x), []);
5705
+ case 2:
5706
+ case "end":
5707
+ return _context9.stop();
5708
+ }
5709
+ }, _callee9);
5710
+ }));
5711
+ return _deleteThingThen.apply(this, arguments);
5712
+ };
5713
+ deleteThingThen = function _deleteThingThen2(_x10) {
5714
+ return _deleteThingThen.apply(this, arguments);
5715
+ };
5716
+ closeToolbar = function _closeToolbar() {
5717
+ div.parentElement.parentElement.removeChild(div.parentElement); // remive the TR
5718
+ };
5719
+ _replyInThread = function _replyInThread3() {
5720
+ _replyInThread = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
5721
+ var thread, options;
5722
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
5723
+ while (1) switch (_context8.prev = _context8.next) {
5724
+ case 0:
5725
+ _context8.next = 2;
5726
+ return channelObject.createThread(message);
5727
+ case 2:
5728
+ thread = _context8.sent;
5729
+ options = userContext.chatOptions;
5730
+ if (options) {
5731
+ _context8.next = 6;
5732
+ break;
5733
+ }
5734
+ throw new Error('replyInThread: missing options');
5735
+ case 6:
5736
+ options.showThread(thread, options);
5737
+ closeToolbar(); // a one-off action
5738
+ case 8:
5739
+ case "end":
5740
+ return _context8.stop();
5741
+ }
5742
+ }, _callee8);
5743
+ }));
5744
+ return _replyInThread.apply(this, arguments);
5745
+ };
5746
+ replyInThread = function _replyInThread2() {
5747
+ return _replyInThread.apply(this, arguments);
5748
+ };
5749
+ _editMessage = function _editMessage3() {
5750
+ _editMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(messageRow) {
5751
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
5752
+ while (1) switch (_context7.prev = _context7.next) {
5753
+ case 0:
5754
+ if (!(me.value === _solidLogic.store.any(message, ns.foaf('maker')).value)) {
5755
+ _context7.next = 4;
5756
+ break;
5757
+ }
5758
+ closeToolbar(); // edit is a one-off action
5759
+ _context7.next = 4;
5760
+ return (0, _message.switchToEditor)(messageRow, message, channelObject, userContext);
5761
+ case 4:
5762
+ case "end":
5763
+ return _context7.stop();
5764
+ }
5765
+ }, _callee7);
5766
+ }));
5767
+ return _editMessage.apply(this, arguments);
5768
+ };
5769
+ editMessage = function _editMessage2(_x9) {
5770
+ return _editMessage.apply(this, arguments);
5771
+ };
5772
+ _deleteMessage = function _deleteMessage3() {
5773
+ _deleteMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
5774
+ var author, msg, area;
5775
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
5776
+ while (1) switch (_context6.prev = _context6.next) {
5777
+ case 0:
5778
+ author = _solidLogic.store.any(message, ns.foaf('maker'));
5779
+ if (me) {
5780
+ _context6.next = 5;
5781
+ break;
5782
+ }
5783
+ alert('You can\'t delete the message, you are not logged in.');
5784
+ _context6.next = 22;
5785
+ break;
5786
+ case 5:
5787
+ if (!me.sameTerm(author)) {
5788
+ _context6.next = 21;
5789
+ break;
5790
+ }
5791
+ _context6.prev = 6;
5792
+ _context6.next = 9;
5793
+ return channelObject.deleteMessage(message);
5794
+ case 9:
5795
+ _context6.next = 18;
5796
+ break;
5797
+ case 11:
5798
+ _context6.prev = 11;
5799
+ _context6.t0 = _context6["catch"](6);
5800
+ msg = 'Error deleting messaage ' + _context6.t0;
5801
+ debug.warn(msg);
5802
+ alert(msg);
5803
+ area = userContext.statusArea || messageRow.parentNode;
5804
+ area.appendChild(widgets.errorMessageBlock(dom, msg));
5805
+ case 18:
5806
+ messageRow.parentNode.removeChild(messageRow);
5807
+ _context6.next = 22;
5808
+ break;
5809
+ case 21:
5810
+ alert('You can\'t delete the message, you are not logged in as the author, ' + author);
5811
+ case 22:
5812
+ closeToolbar();
5813
+ case 23:
5814
+ case "end":
5815
+ return _context6.stop();
5816
+ }
5817
+ }, _callee6, null, [[6, 11]]);
5818
+ }));
5819
+ return _deleteMessage.apply(this, arguments);
5820
+ };
5821
+ deleteMessage = function _deleteMessage2() {
5822
+ return _deleteMessage.apply(this, arguments);
5823
+ }; // alain: TODO allow chat owner to fully delete message + sentiments and replacing messages
5824
+ div = dom.createElement('div'); // is message deleted ?
5825
+ _context10.next = 13;
5826
+ return (0, _chatLogic.mostRecentVersion)(message).value;
5827
+ case 13:
5828
+ _context10.t0 = _context10.sent;
5829
+ _context10.t1 = ns.schema('dateDeleted').value;
5830
+ if (!(_context10.t0 === _context10.t1)) {
5831
+ _context10.next = 17;
5832
+ break;
5833
+ }
5834
+ return _context10.abrupt("return", div);
5835
+ case 17:
5836
+ // Things only the original author can do
5837
+ me = _solidLogic.authn.currentUser(); // If already logged on
5838
+ if (me && _solidLogic.store.holds(message, ns.foaf('maker'), me)) {
5839
+ // button to delete the message
5840
+ div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage));
5841
+ // button to edit the message
5842
+ div.appendChild(widgets.button(dom, _iconBase.icons.iconBase + PENCIL_ICON, 'edit', function () {
5843
+ return editMessage(messageRow);
5844
+ }));
5845
+ } // if mine
5846
+ // Things anyone can do if they have a bookmark list async
5847
+ /*
5848
+ var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)
5849
+ if (bookmarkButton) {
5850
+ div.appendChild(bookmarkButton)
5851
+ }
5852
+ */
5853
+ // Things anyone can do if they have a bookmark list
5070
5854
 
5071
- (0, _bookmarks.renderBookmarksButton)(userContext).then(function (bookmarkButton) {
5072
- if (bookmarkButton) div.appendChild(bookmarkButton);
5073
- });
5855
+ (0, _bookmarks.renderBookmarksButton)(userContext).then(function (bookmarkButton) {
5856
+ if (bookmarkButton) div.appendChild(bookmarkButton);
5857
+ });
5074
5858
 
5075
- /** Button to allow user to express a sentiment (like, endorse, etc) about a target
5076
- *
5077
- * @param context {Object} - Provide dom and me
5078
- * @param target {NamedNode} - The thing the user expresses an opnion about
5079
- * @param icon {uristring} - The icon to be used for the button
5080
- * @param actionClass {NamedNode} - The RDF class - typically a subclass of schema:Action
5081
- * @param doc - {NamedNode} - the Solid document iunto which the data should be written
5082
- * @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive
5083
- */
5084
- function sentimentButton(context, target, icon, actionClass, doc, mutuallyExclusive) {
5085
- function setColor() {
5086
- button.style.backgroundColor = action ? 'yellow' : 'white';
5087
- }
5088
- var button = widgets.button(dom, icon, utils.label(actionClass), /*#__PURE__*/function () {
5089
- var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_event) {
5090
- var insertMe, dirty, i, a;
5091
- return _regenerator["default"].wrap(function _callee$(_context) {
5092
- while (1) switch (_context.prev = _context.next) {
5093
- case 0:
5094
- if (!action) {
5095
- _context.next = 7;
5096
- break;
5097
- }
5098
- _context.next = 3;
5099
- return deleteThingThen(action);
5100
- case 3:
5101
- action = null;
5102
- setColor();
5103
- _context.next = 25;
5104
- break;
5105
- case 7:
5106
- // no action
5107
- action = widgets.newThing(doc);
5108
- insertMe = [rdf.st(action, ns.schema('agent'), context.me, doc), rdf.st(action, ns.rdf('type'), actionClass, doc), rdf.st(action, ns.schema('target'), target, doc)];
5109
- _context.next = 11;
5110
- return _solidLogic.store.updater.update([], insertMe);
5111
- case 11:
5112
- setColor();
5113
- if (!mutuallyExclusive) {
5114
- _context.next = 25;
5115
- break;
5116
- }
5117
- // Delete incompative sentiments
5118
- dirty = false;
5119
- i = 0;
5120
- case 15:
5121
- if (!(i < mutuallyExclusive.length)) {
5122
- _context.next = 24;
5123
- break;
5124
- }
5125
- a = existingAction(mutuallyExclusive[i]);
5126
- if (!a) {
5127
- _context.next = 21;
5128
- break;
5129
- }
5130
- _context.next = 20;
5131
- return deleteThingThen(a);
5132
- case 20:
5133
- // but how refresh? refreshTree the parent?
5134
- dirty = true;
5135
- case 21:
5136
- i++;
5137
- _context.next = 15;
5138
- break;
5139
- case 24:
5140
- if (dirty) {
5141
- // widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings
5142
- widgets.refreshTree(messageRow); // requires them all to be immediate siblings
5143
- }
5144
- case 25:
5145
- case "end":
5146
- return _context.stop();
5859
+ /** Button to allow user to express a sentiment (like, endorse, etc) about a target
5860
+ *
5861
+ * @param context {Object} - Provide dom and me
5862
+ * @param target {NamedNode} - The thing the user expresses an opnion about
5863
+ * @param icon {uristring} - The icon to be used for the button
5864
+ * @param actionClass {NamedNode} - The RDF class - typically a subclass of schema:Action
5865
+ * @param doc - {NamedNode} - the Solid document iunto which the data should be written
5866
+ * @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive
5867
+ */
5868
+
5869
+ // THUMBS_UP_ICON
5870
+ // https://schema.org/AgreeAction
5871
+ me = _solidLogic.authn.currentUser(); // If already logged on
5872
+ _context10.t2 = me;
5873
+ if (!_context10.t2) {
5874
+ _context10.next = 28;
5875
+ break;
5147
5876
  }
5148
- }, _callee);
5149
- }));
5150
- return function (_x3) {
5151
- return _ref.apply(this, arguments);
5152
- };
5153
- }());
5154
- function existingAction(actionClass) {
5155
- var actions = _solidLogic.store.each(null, ns.schema('agent'), context.me, doc).filter(function (x) {
5156
- return _solidLogic.store.holds(x, ns.rdf('type'), actionClass, doc);
5157
- }).filter(function (x) {
5158
- return _solidLogic.store.holds(x, ns.schema('target'), target, doc);
5159
- });
5160
- return actions.length ? actions[0] : null;
5161
- }
5162
- function refresh() {
5163
- action = existingAction(actionClass);
5164
- setColor();
5165
- }
5166
- var action;
5167
- button.refresh = refresh; // If the file changes, refresh live
5168
- refresh();
5169
- return button;
5170
- }
5171
-
5172
- // THUMBS_UP_ICON
5173
- // https://schema.org/AgreeAction
5174
- me = _solidLogic.authn.currentUser(); // If already logged on
5175
- // debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))
5877
+ _context10.next = 25;
5878
+ return (0, _chatLogic.mostRecentVersion)(message).value;
5879
+ case 25:
5880
+ _context10.t3 = _context10.sent;
5881
+ _context10.t4 = ns.schema('dateDeleted').value;
5882
+ _context10.t2 = _context10.t3 !== _context10.t4;
5883
+ case 28:
5884
+ if (!_context10.t2) {
5885
+ _context10.next = 32;
5886
+ break;
5887
+ }
5888
+ context1 = {
5889
+ me: me,
5890
+ dom: dom,
5891
+ div: div
5892
+ };
5893
+ div.appendChild(sentimentButton(context1, message,
5894
+ // @@ TODO use widgets.sentimentButton
5895
+ _iconBase.icons.iconBase + THUMBS_UP_ICON, ns.schema('AgreeAction'), message.doc(), [ns.schema('DisagreeAction')]));
5896
+ // Thumbs down
5897
+ div.appendChild(sentimentButton(context1, message, _iconBase.icons.iconBase + THUMBS_DOWN_ICON, ns.schema('DisagreeAction'), message.doc(), [ns.schema('AgreeAction')]));
5898
+ case 32:
5899
+ // Reply buttton
5176
5900
 
5177
- if (me && (0, _chatLogic.mostRecentVersion)(message).value !== ns.schema('dateDeleted').value) {
5178
- var context1 = {
5179
- me: me,
5180
- dom: dom,
5181
- div: div
5182
- };
5183
- div.appendChild(sentimentButton(context1, message,
5184
- // @@ TODO use widgets.sentimentButton
5185
- _iconBase.icons.iconBase + THUMBS_UP_ICON, ns.schema('AgreeAction'), message.doc(), [ns.schema('DisagreeAction')]));
5186
- // Thumbs down
5187
- div.appendChild(sentimentButton(context1, message, _iconBase.icons.iconBase + THUMBS_DOWN_ICON, ns.schema('DisagreeAction'), message.doc(), [ns.schema('AgreeAction')]));
5188
- }
5189
- // X button to remove the tool UI itself
5190
- var cancelButton = div.appendChild(widgets.cancelButton(dom));
5191
- cancelButton.style["float"] = 'right';
5192
- cancelButton.firstChild.style.opacity = '0.3';
5193
- cancelButton.addEventListener('click', closeToolbar);
5194
- return div;
5901
+ if (_solidLogic.store.any(message, ns.dct('created'))) {
5902
+ // Looks like a messsage? Bar can be used for other things
5903
+ div.appendChild(widgets.button(dom, _iconBase.icons.iconBase + REPLY_ICON, 'Reply in thread', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
5904
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
5905
+ while (1) switch (_context5.prev = _context5.next) {
5906
+ case 0:
5907
+ _context5.next = 2;
5908
+ return replyInThread();
5909
+ case 2:
5910
+ case "end":
5911
+ return _context5.stop();
5912
+ }
5913
+ }, _callee5);
5914
+ }))));
5915
+ }
5916
+ // X button to remove the tool UI itself
5917
+ cancelButton = div.appendChild(widgets.cancelButton(dom));
5918
+ cancelButton.style["float"] = 'right';
5919
+ cancelButton.firstChild.style.opacity = '0.3';
5920
+ cancelButton.addEventListener('click', closeToolbar);
5921
+ return _context10.abrupt("return", div);
5922
+ case 38:
5923
+ case "end":
5924
+ return _context10.stop();
5925
+ }
5926
+ }, _callee10);
5927
+ }));
5928
+ return _messageToolbar.apply(this, arguments);
5195
5929
  }
5196
5930
  //# sourceMappingURL=messageTools.js.map
5197
5931
 
@@ -5209,7 +5943,7 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
5209
5943
  Object.defineProperty(exports, "__esModule", ({
5210
5944
  value: true
5211
5945
  }));
5212
- exports.SEC = exports.CERT = void 0;
5946
+ exports.SEC = void 0;
5213
5947
  exports.getBlankMsg = getBlankMsg;
5214
5948
  exports.getMsgHash = getMsgHash;
5215
5949
  exports.serializeMsg = serializeMsg;
@@ -5227,8 +5961,7 @@ exports.utf8Decoder = utf8Decoder;
5227
5961
  var utf8Encoder = new TextEncoder();
5228
5962
  exports.utf8Encoder = utf8Encoder;
5229
5963
  var SEC = 'https://w3id.org/security#'; // Proof, VerificationMethod
5230
- exports.SEC = SEC;
5231
- var CERT = 'http://www.w3.org/ns/auth/cert#'; // PrivateKey, PublicKey
5964
+ // export const CERT = 'http://www.w3.org/ns/auth/cert#' // PrivateKey, PublicKey, key
5232
5965
 
5233
5966
  /* eslint-disable no-unused-vars */
5234
5967
  /* export enum Kind {
@@ -5254,7 +5987,7 @@ var CERT = 'http://www.w3.org/ns/auth/cert#'; // PrivateKey, PublicKey
5254
5987
  ProfileBadge = 30009,
5255
5988
  Article = 30023
5256
5989
  } */
5257
- exports.CERT = CERT;
5990
+ exports.SEC = SEC;
5258
5991
  function getBlankMsg() {
5259
5992
  return {
5260
5993
  id: '',
@@ -5855,6 +6588,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
5855
6588
  */
5856
6589
  var DEFAULT_HELP_MENU_ICON = _index.icons.iconBase + 'noun_help.svg';
5857
6590
  var DEFAUL_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg';
6591
+
6592
+ /*
6593
+ HeaderOptions allow for customizing the logo and menu list. If a logo is not provided the default
6594
+ is solid. Menulist will always show a link to logout and to the users profile.
6595
+ */
5858
6596
  /**
5859
6597
  * Initialize header component, the header object returned depends on whether the user is authenticated.
5860
6598
  * @param store the data store
@@ -6528,10 +7266,7 @@ var TDEBUG = 32;
6528
7266
  var TALL = 63;
6529
7267
 
6530
7268
  /** @internal */
6531
- var LogLevel;
6532
- /** @internal */
6533
- exports.LogLevel = LogLevel;
6534
- (function (LogLevel) {
7269
+ var LogLevel = /*#__PURE__*/function (LogLevel) {
6535
7270
  LogLevel[LogLevel["Error"] = 1] = "Error";
6536
7271
  LogLevel[LogLevel["Warning"] = 2] = "Warning";
6537
7272
  LogLevel[LogLevel["Message"] = 4] = "Message";
@@ -6539,7 +7274,10 @@ exports.LogLevel = LogLevel;
6539
7274
  LogLevel[LogLevel["Info"] = 16] = "Info";
6540
7275
  LogLevel[LogLevel["Debug"] = 32] = "Debug";
6541
7276
  LogLevel[LogLevel["All"] = 63] = "All";
6542
- })(LogLevel || (exports.LogLevel = LogLevel = {}));
7277
+ return LogLevel;
7278
+ }({});
7279
+ /** @internal */
7280
+ exports.LogLevel = LogLevel;
6543
7281
  var _level = TERROR + TWARN + TMESG;
6544
7282
  /** @internal */
6545
7283
  var _ascending = false;
@@ -6748,7 +7486,30 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
6748
7486
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
6749
7487
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
6750
7488
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6751
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
7489
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* eslint-disable camelcase */ /**
7490
+ * Signing in, signing up, profile and preferences reloading
7491
+ * Type index management
7492
+ *
7493
+ * Many functions in this module take a context object which
7494
+ * holds various RDF symbols, add to it, and return a promise of it.
7495
+ *
7496
+ * * `me` RDF symbol for the user's WebID
7497
+ * * `publicProfile` The user's public profile, iff loaded
7498
+ * * `preferencesFile` The user's personal preference file, iff loaded
7499
+ * * `index.public` The user's public type index file
7500
+ * * `index.private` The user's private type index file
7501
+ *
7502
+ * Not RDF symbols:
7503
+ * * `noun` A string in english for the type of thing -- like "address book"
7504
+ * * `instance` An array of nodes which are existing instances
7505
+ * * `containers` An array of nodes of containers of instances
7506
+ * * `div` A DOM element where UI can be displayed
7507
+ * * `statusArea` A DOM element (opt) progress stuff can be displayed, or error messages
7508
+ * *
7509
+ * * Vocabulary: "load" loads a file if it exists;
7510
+ * * 'Ensure" CREATES the file if it does not exist (if it can) and then loads it.
7511
+ * @packageDocumentation
7512
+ */ // eslint-disable-next-line camelcase
6752
7513
  var store = _solidLogic.solidLogicSingleton.store;
6753
7514
  var _solidLogicSingleton$ = _solidLogic.solidLogicSingleton.profile,
6754
7515
  loadPreferences = _solidLogicSingleton$.loadPreferences,
@@ -8865,7 +9626,10 @@ var _participation = __webpack_require__(/*! ./participation */ "./lib/participa
8865
9626
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
8866
9627
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
8867
9628
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
8868
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
9629
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** **************
9630
+ * Notepad Widget
9631
+ */ /** @module pad
9632
+ */
8869
9633
  var store = _solidLogic.solidLogicSingleton.store;
8870
9634
  var PAD = (0, _rdflib.Namespace)('http://www.w3.org/ns/pim/pad#');
8871
9635
  /**
@@ -9686,7 +10450,8 @@ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol
9686
10450
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9687
10451
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9688
10452
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
9689
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
10453
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /* Manage a UI for the particpation of a person in any thing
10454
+ */ // import { currentUser } from './authn/authn'
9690
10455
  var ParticipationTableElement = /*#__PURE__*/function (_HTMLTableElement) {
9691
10456
  (0, _inherits2["default"])(ParticipationTableElement, _HTMLTableElement);
9692
10457
  var _super = _createSuper(ParticipationTableElement);
@@ -9946,6 +10711,10 @@ function recordSharedPreferences(subject, context) {
9946
10711
  return new Promise(function (resolve, reject) {
9947
10712
  var sharedPreferences = kb.any(subject, ns.ui('sharedPreferences'));
9948
10713
  if (!sharedPreferences) {
10714
+ if (!kb.updater.editable(subject.doc())) {
10715
+ debug.log(" Cant make shared preferences, may not change ".concat(subject.doc));
10716
+ resolve(context);
10717
+ }
9949
10718
  var sp = $rdf.sym(subject.doc().uri + '#SharedPreferences');
9950
10719
  var ins = [$rdf.st(subject, ns.ui('sharedPreferences'), sp, subject.doc())];
9951
10720
  debug.log('Creating shared preferences ' + sp);
@@ -12545,6 +13314,8 @@ var _ = __webpack_require__(/*! .. */ "./lib/index.js");
12545
13314
  Copied from mashlib/src/global/metadata.ts
12546
13315
  */
12547
13316
 
13317
+ /* @ts-ignore no-console */
13318
+
12548
13319
  /**
12549
13320
  * @ignore exporting this only for the unit test
12550
13321
  */
@@ -13255,218 +14026,126 @@ Object.defineProperty(exports, "__esModule", ({
13255
14026
  exports.getExistingPrivateKey = getExistingPrivateKey;
13256
14027
  exports.getExistingPublicKey = getExistingPublicKey;
13257
14028
  exports.getKeyIfExists = getKeyIfExists;
13258
- exports.pubKeyUrl = exports.privKeyUrl = exports.getPodRoot = void 0;
14029
+ exports.pubKeyUrl = exports.privKeyUrl = void 0;
13259
14030
  var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"));
13260
14031
  var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
13261
14032
  var debug = _interopRequireWildcard(__webpack_require__(/*! ../../debug */ "./lib/debug.js"));
13262
- var _signature = __webpack_require__(/*! ../../chat/signature */ "./lib/chat/signature.js");
13263
14033
  var _solidLogic = __webpack_require__(/*! solid-logic */ "./node_modules/solid-logic/lib/index.js");
13264
14034
  var ns = _interopRequireWildcard(__webpack_require__(/*! ../../ns */ "./lib/ns.js"));
14035
+ var _otherHelpers = __webpack_require__(/*! ./otherHelpers */ "./lib/utils/keyHelpers/otherHelpers.js");
13265
14036
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13266
14037
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13267
- var getPodRoot = /*#__PURE__*/function () {
13268
- var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(webId) {
13269
- var _podRoot;
13270
- var webIdURL, storages, podRoot, path, _res$headers$get, res;
13271
- return _regenerator["default"].wrap(function _callee$(_context) {
13272
- while (1) switch (_context.prev = _context.next) {
13273
- case 0:
13274
- webIdURL = new URL(webId.uri); // find storages in webId document
13275
- _context.next = 3;
13276
- return _solidLogic.store.fetcher.load(webId.uri);
13277
- case 3:
13278
- storages = _solidLogic.store.each(webId, ns.space('storage'), null, webId.doc());
13279
- if (storages !== null && storages !== void 0 && storages.length) {
13280
- _context.next = 19;
13281
- break;
13282
- }
13283
- // find storage recursively in webId URL
13284
- path = webIdURL.pathname;
13285
- case 6:
13286
- if (!path.length) {
13287
- _context.next = 17;
13288
- break;
13289
- }
13290
- path = path.substring(0, path.lastIndexOf('/'));
13291
- podRoot = _solidLogic.store.sym(webIdURL.origin + path + '/');
13292
- _context.next = 11;
13293
- return _solidLogic.store.fetcher.webOperation('HEAD', podRoot.uri);
13294
- case 11:
13295
- res = _context.sent;
13296
- if (!((_res$headers$get = res.headers.get('link')) !== null && _res$headers$get !== void 0 && _res$headers$get.includes(ns.space('Storage').value))) {
13297
- _context.next = 14;
13298
- break;
13299
- }
13300
- return _context.abrupt("break", 17);
13301
- case 14:
13302
- if (!path) debug.warn("Current user storage not found for\n".concat(webId));
13303
- _context.next = 6;
13304
- break;
13305
- case 17:
13306
- _context.next = 21;
13307
- break;
13308
- case 19:
13309
- // give preference to storage in webId root
13310
- podRoot = storages.find(function (storage) {
13311
- return webIdURL.origin === new URL(storage.value).origin;
13312
- });
13313
- if (!podRoot) podRoot = storages[0];
13314
- case 21:
13315
- return _context.abrupt("return", (_podRoot = podRoot) === null || _podRoot === void 0 ? void 0 : _podRoot.value);
13316
- case 22:
13317
- case "end":
13318
- return _context.stop();
13319
- }
13320
- }, _callee);
13321
- }));
13322
- return function getPodRoot(_x) {
13323
- return _ref.apply(this, arguments);
13324
- };
13325
- }();
13326
- exports.getPodRoot = getPodRoot;
13327
- var pubKeyUrl = /*#__PURE__*/function () {
13328
- var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(webId) {
13329
- return _regenerator["default"].wrap(function _callee2$(_context2) {
13330
- while (1) switch (_context2.prev = _context2.next) {
13331
- case 0:
13332
- _context2.prev = 0;
13333
- _context2.next = 3;
13334
- return getPodRoot(webId);
13335
- case 3:
13336
- _context2.t0 = _context2.sent;
13337
- return _context2.abrupt("return", _context2.t0 + 'profile/keys/publicKey.ttl');
13338
- case 7:
13339
- _context2.prev = 7;
13340
- _context2.t1 = _context2["catch"](0);
13341
- throw new Error(_context2.t1);
13342
- case 10:
13343
- case "end":
13344
- return _context2.stop();
13345
- }
13346
- }, _callee2, null, [[0, 7]]);
13347
- }));
13348
- return function pubKeyUrl(_x2) {
13349
- return _ref2.apply(this, arguments);
13350
- };
13351
- }();
14038
+ var pubKeyUrl = function pubKeyUrl(webId) {
14039
+ var url;
14040
+ try {
14041
+ var root = (0, _otherHelpers.getRootIfPreferencesExist)(webId);
14042
+ url = "".concat(root, "/profile/keys/publicKey.ttl");
14043
+ } catch (err) {
14044
+ debug.error(err);
14045
+ }
14046
+ return url;
14047
+ };
13352
14048
  exports.pubKeyUrl = pubKeyUrl;
13353
- function getExistingPublicKey(_x3, _x4) {
14049
+ var privKeyUrl = function privKeyUrl(webId) {
14050
+ var url;
14051
+ try {
14052
+ var root = (0, _otherHelpers.getRootIfPreferencesExist)(webId);
14053
+ url = "".concat(root, "/keys/privateKey.ttl");
14054
+ } catch (err) {
14055
+ debug.error(err);
14056
+ }
14057
+ return url;
14058
+ };
14059
+ exports.privKeyUrl = privKeyUrl;
14060
+ function getExistingPublicKey(_x, _x2) {
13354
14061
  return _getExistingPublicKey.apply(this, arguments);
13355
14062
  }
13356
14063
  function _getExistingPublicKey() {
13357
- _getExistingPublicKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(webId, publicKeyUrl) {
13358
- return _regenerator["default"].wrap(function _callee4$(_context4) {
13359
- while (1) switch (_context4.prev = _context4.next) {
14064
+ _getExistingPublicKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(webId, publicKeyUrl) {
14065
+ return _regenerator["default"].wrap(function _callee$(_context) {
14066
+ while (1) switch (_context.prev = _context.next) {
13360
14067
  case 0:
13361
- _context4.next = 2;
13362
- return getKeyIfExists(webId, publicKeyUrl, 'PublicKey');
14068
+ _context.next = 2;
14069
+ return getKeyIfExists(webId, publicKeyUrl, 'publicKey');
13363
14070
  case 2:
13364
- return _context4.abrupt("return", _context4.sent);
14071
+ return _context.abrupt("return", _context.sent);
13365
14072
  case 3:
13366
14073
  case "end":
13367
- return _context4.stop();
14074
+ return _context.stop();
13368
14075
  }
13369
- }, _callee4);
14076
+ }, _callee);
13370
14077
  }));
13371
14078
  return _getExistingPublicKey.apply(this, arguments);
13372
14079
  }
13373
- var privKeyUrl = /*#__PURE__*/function () {
13374
- var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(webId) {
13375
- return _regenerator["default"].wrap(function _callee3$(_context3) {
13376
- while (1) switch (_context3.prev = _context3.next) {
13377
- case 0:
13378
- _context3.prev = 0;
13379
- _context3.next = 3;
13380
- return getPodRoot(webId);
13381
- case 3:
13382
- _context3.t0 = _context3.sent;
13383
- return _context3.abrupt("return", _context3.t0 + 'profile/keys/privateKey.ttl');
13384
- case 7:
13385
- _context3.prev = 7;
13386
- _context3.t1 = _context3["catch"](0);
13387
- throw new Error(_context3.t1);
13388
- case 10:
13389
- case "end":
13390
- return _context3.stop();
13391
- }
13392
- }, _callee3, null, [[0, 7]]);
13393
- }));
13394
- return function privKeyUrl(_x5) {
13395
- return _ref3.apply(this, arguments);
13396
- };
13397
- }();
13398
- exports.privKeyUrl = privKeyUrl;
13399
- function getExistingPrivateKey(_x6, _x7) {
14080
+ function getExistingPrivateKey(_x3, _x4) {
13400
14081
  return _getExistingPrivateKey.apply(this, arguments);
13401
14082
  }
13402
14083
  function _getExistingPrivateKey() {
13403
- _getExistingPrivateKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(webId, privateKeyUrl) {
13404
- return _regenerator["default"].wrap(function _callee5$(_context5) {
13405
- while (1) switch (_context5.prev = _context5.next) {
14084
+ _getExistingPrivateKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(webId, privateKeyUrl) {
14085
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
14086
+ while (1) switch (_context2.prev = _context2.next) {
13406
14087
  case 0:
13407
- _context5.next = 2;
13408
- return getKeyIfExists(webId, privateKeyUrl, 'PrivateKey');
14088
+ _context2.next = 2;
14089
+ return getKeyIfExists(webId, privateKeyUrl, 'privateKey');
13409
14090
  case 2:
13410
- return _context5.abrupt("return", _context5.sent);
14091
+ return _context2.abrupt("return", _context2.sent);
13411
14092
  case 3:
13412
14093
  case "end":
13413
- return _context5.stop();
14094
+ return _context2.stop();
13414
14095
  }
13415
- }, _callee5);
14096
+ }, _callee2);
13416
14097
  }));
13417
14098
  return _getExistingPrivateKey.apply(this, arguments);
13418
14099
  }
13419
- function getKeyIfExists(_x8, _x9, _x10) {
14100
+ function getKeyIfExists(_x5, _x6, _x7) {
13420
14101
  return _getKeyIfExists.apply(this, arguments);
13421
14102
  }
13422
14103
  function _getKeyIfExists() {
13423
- _getKeyIfExists = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(webId, keyUrl, keyType) {
13424
- var key, _err$response, data, contentType, response;
13425
- return _regenerator["default"].wrap(function _callee6$(_context6) {
13426
- while (1) switch (_context6.prev = _context6.next) {
14104
+ _getKeyIfExists = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(webId, keyUrl, keyType) {
14105
+ var key;
14106
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
14107
+ while (1) switch (_context3.prev = _context3.next) {
13427
14108
  case 0:
13428
- _context6.prev = 0;
13429
- _context6.next = 3;
14109
+ _context3.prev = 0;
14110
+ _context3.next = 3;
13430
14111
  return _solidLogic.store.fetcher.load(keyUrl);
13431
14112
  case 3:
13432
- key = _solidLogic.store.any(webId, _solidLogic.store.sym(_signature.CERT + keyType));
13433
- return _context6.abrupt("return", key === null || key === void 0 ? void 0 : key.value);
14113
+ key = _solidLogic.store.any(webId, ns.solid(keyType)); // store.sym(CERT + keyType))
14114
+ return _context3.abrupt("return", key === null || key === void 0 ? void 0 : key.value);
13434
14115
  case 7:
13435
- _context6.prev = 7;
13436
- _context6.t0 = _context6["catch"](0);
13437
- if (!((_context6.t0 === null || _context6.t0 === void 0 ? void 0 : (_err$response = _context6.t0.response) === null || _err$response === void 0 ? void 0 : _err$response.status) === 404)) {
13438
- _context6.next = 24;
14116
+ _context3.prev = 7;
14117
+ _context3.t0 = _context3["catch"](0);
14118
+ if (!(_context3.t0.response.status === 404)) {
14119
+ _context3.next = 24;
13439
14120
  break;
13440
14121
  }
13441
- _context6.prev = 10;
13442
- // create resource
13443
- data = '';
13444
- contentType = 'text/turtle';
13445
- _context6.next = 15;
14122
+ debug.log('createIfNotExists: doc does NOT exist, will create... ' + keyUrl);
14123
+ _context3.prev = 11;
14124
+ _context3.next = 14;
13446
14125
  return _solidLogic.store.fetcher.webOperation('PUT', keyUrl, {
13447
- data: data,
13448
- contentType: contentType
14126
+ data: '',
14127
+ contentType: 'text/turtle'
13449
14128
  });
13450
- case 15:
13451
- response = _context6.sent;
13452
- _context6.next = 22;
14129
+ case 14:
14130
+ _context3.next = 20;
13453
14131
  break;
13454
- case 18:
13455
- _context6.prev = 18;
13456
- _context6.t1 = _context6["catch"](10);
13457
- debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + _context6.t1);
13458
- throw _context6.t1;
13459
- case 22:
14132
+ case 16:
14133
+ _context3.prev = 16;
14134
+ _context3.t1 = _context3["catch"](11);
14135
+ debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + _context3.t1);
14136
+ throw _context3.t1;
14137
+ case 20:
13460
14138
  delete _solidLogic.store.fetcher.requested[keyUrl]; // delete cached 404 error
13461
- return _context6.abrupt("return", undefined);
14139
+ // debug.log('createIfNotExists doc created ok ' + doc)
14140
+ return _context3.abrupt("return", undefined);
13462
14141
  case 24:
13463
- debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + _context6.t0);
13464
- throw _context6.t0;
14142
+ debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + _context3.t0);
14143
+ throw _context3.t0;
13465
14144
  case 26:
13466
14145
  case "end":
13467
- return _context6.stop();
14146
+ return _context3.stop();
13468
14147
  }
13469
- }, _callee6, null, [[0, 7], [10, 18]]);
14148
+ }, _callee3, null, [[0, 7], [11, 16]]);
13470
14149
  }));
13471
14150
  return _getKeyIfExists.apply(this, arguments);
13472
14151
  }
@@ -13577,6 +14256,39 @@ exports.keyAclBody = keyAclBody;
13577
14256
 
13578
14257
  /***/ }),
13579
14258
 
14259
+ /***/ "./lib/utils/keyHelpers/otherHelpers.js":
14260
+ /*!**********************************************!*\
14261
+ !*** ./lib/utils/keyHelpers/otherHelpers.js ***!
14262
+ \**********************************************/
14263
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
14264
+
14265
+ "use strict";
14266
+
14267
+
14268
+ var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js");
14269
+ Object.defineProperty(exports, "__esModule", ({
14270
+ value: true
14271
+ }));
14272
+ exports.getRootIfPreferencesExist = void 0;
14273
+ var _solidLogic = __webpack_require__(/*! solid-logic */ "./node_modules/solid-logic/lib/index.js");
14274
+ var ns = _interopRequireWildcard(__webpack_require__(/*! ../../ns */ "./lib/ns.js"));
14275
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14276
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14277
+ // Will rename this file later. We will probably be using solid-logic anyway
14278
+ // moved it out so I can mock
14279
+
14280
+ var getRootIfPreferencesExist = function getRootIfPreferencesExist(webId) {
14281
+ var _store$any, _root;
14282
+ var root = (_store$any = _solidLogic.store.any(webId, ns.space('preferencesFile'), null, webId.doc())) === null || _store$any === void 0 ? void 0 : _store$any.value;
14283
+ root = (_root = root) === null || _root === void 0 ? void 0 : _root.split('/').slice(0, -2).join('/');
14284
+ if (!root) throw new Error("prefererencesFile is expected to exist in ".concat(webId));
14285
+ return root;
14286
+ };
14287
+ exports.getRootIfPreferencesExist = getRootIfPreferencesExist;
14288
+ //# sourceMappingURL=otherHelpers.js.map
14289
+
14290
+ /***/ }),
14291
+
13580
14292
  /***/ "./lib/utils/label.js":
13581
14293
  /*!****************************!*\
13582
14294
  !*** ./lib/utils/label.js ***!
@@ -13705,10 +14417,10 @@ Object.defineProperty(exports, "__esModule", ({
13705
14417
  }));
13706
14418
  exports.versionInfo = void 0;
13707
14419
  var versionInfo = {
13708
- buildTime: '2023-05-17T23:36:37Z',
13709
- commit: 'fd5a7172c8e5cef746d9812d555a274590b70866',
14420
+ buildTime: '2023-06-01T22:20:16Z',
14421
+ commit: '11faa5972b5ac00437261d7b73eea3d1fdbfee9e',
13710
14422
  npmInfo: {
13711
- 'solid-ui': '2.4.27',
14423
+ 'solid-ui': '2.4.28',
13712
14424
  npm: '8.19.4',
13713
14425
  node: '16.20.0',
13714
14426
  v8: '9.4.146.26-node.26',
@@ -13808,9 +14520,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
13808
14520
  * UI Widgets such as buttons
13809
14521
  * @packageDocumentation
13810
14522
  */
13811
-
13812
14523
  /* global alert */
13813
-
13814
14524
  var iconBase = _iconBase.icons.iconBase;
13815
14525
  var cancelIconURI = iconBase + 'noun_1180156.svg'; // black X
13816
14526
  var checkIconURI = iconBase + 'noun_1180158.svg'; // green checkmark; Continue
@@ -15493,7 +16203,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
15493
16203
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15494
16204
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
15495
16205
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15496
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16206
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* F O R M S
16207
+ *
16208
+ * A Vanilla Dom implementation of the form language
16209
+ */ /* eslint-disable multiline-ternary */ /* global alert */ // Note default export
15497
16210
  var checkMarkCharacter = "\u2713";
15498
16211
  var cancelCharacter = "\u2715";
15499
16212
  var dashCharacter = '-';
@@ -17489,7 +18202,14 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
17489
18202
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17490
18203
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
17491
18204
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17492
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18205
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* The Autocomplete Control with decorations
18206
+
18207
+ This control has the buttons which control the state between editing, viewing, searching, accepting
18208
+ and so on. See the state diagram in the documentation. The AUtocomplete Picker does the main work.
18209
+
18210
+ */
18211
+ // dbpediaParameters
18212
+
17493
18213
  var WEBID_NOUN = 'Solid ID';
17494
18214
  var GREEN_PLUS = _iconBase.icons.iconBase + 'noun_34653_green.svg';
17495
18215
  var SEARCH_ICON = _iconBase.icons.iconBase + 'noun_Search_875351.svg';
@@ -18035,7 +18755,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
18035
18755
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18036
18756
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
18037
18757
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
18038
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18758
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* Autocomplete Picker: Create and edit data using public data
18759
+ **
18760
+ ** As the data source is passed as a parameter, all kinds of APIa and query services can be used
18761
+ **
18762
+ */
18039
18763
  var AUTOCOMPLETE_THRESHOLD = 4; // don't check until this many characters typed
18040
18764
  var AUTOCOMPLETE_ROWS = 20; // 20?
18041
18765
  var AUTOCOMPLETE_ROWS_STRETCH = 40;
@@ -18135,7 +18859,8 @@ function _renderAutoComplete() {
18135
18859
  };
18136
18860
  }());
18137
18861
  return row;
18138
- };
18862
+ }; // console.log('@@ refreshList called')
18863
+ // rowForBinding
18139
18864
  if (!inputEventHandlerLock) {
18140
18865
  _context7.next = 5;
18141
18866
  break;
@@ -18388,7 +19113,7 @@ function _renderAutoComplete() {
18388
19113
  // errorMessageBlock will log the stack to the console
18389
19114
  style.setStyle(errorRow, 'autocompleteRowStyle');
18390
19115
  errorRow.style.padding = '1em';
18391
- };
19116
+ }; // refreshList
18392
19117
  // initialiize
18393
19118
  // const queryParams: QueryParameters = acOptions.queryParams
18394
19119
  targetClass = acOptions.targetClass;
@@ -18488,6 +19213,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
18488
19213
  // import * as logic from '../index'
18489
19214
  // import { authn } from '../../../authn/index'
18490
19215
 
19216
+ // import { Binding } from '../widgets/forms/autocomplete/publicData'
19217
+ // import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'
19218
+
19219
+ // const { currentUser } = logic.authn
19220
+
18491
19221
  var languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/'; /// @@ unsupported on the web (2021)
18492
19222
  exports.languageCodeURIBase = languageCodeURIBase;
18493
19223
  var defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar'];
@@ -20598,6 +21328,17 @@ var _iconBase = __webpack_require__(/*! ../iconBase */ "./lib/iconBase.js");
20598
21328
  var ns = _interopRequireWildcard(__webpack_require__(/*! ../ns */ "./lib/ns.js"));
20599
21329
  var _solidLogic = __webpack_require__(/*! solid-logic */ "./node_modules/solid-logic/lib/index.js");
20600
21330
  var _templateObject;
21331
+ /**
21332
+ *
21333
+ * People Picker Pane
21334
+ *
21335
+ * This pane offers a mechanism for selecting a set of individuals, groups, or
21336
+ * organizations to take some action on.
21337
+ *
21338
+ * Assumptions
21339
+ * - Assumes that the user has a type index entry for vcard:AddressBook. @@ bad assuption
21340
+ *
21341
+ */
20601
21342
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20602
21343
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20603
21344
  var kb = _solidLogic.solidLogicSingleton.store;