solid-ui 2.4.30 → 2.4.31-13dc2247

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 (74) 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 +6264 -2826
  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.LICENSE.txt +1 -1
  7. package/dist/solid-ui.min.js.map +1 -1
  8. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +1965 -1965
  9. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +1 -1
  10. package/lib/chat/bookmarks.js +6 -7
  11. package/lib/chat/bookmarks.js.map +1 -1
  12. package/lib/chat/chatLogic.js +251 -66
  13. package/lib/chat/chatLogic.js.map +1 -1
  14. package/lib/chat/dateFolder.js +131 -126
  15. package/lib/chat/dateFolder.js.map +1 -1
  16. package/lib/chat/infinite.js +611 -416
  17. package/lib/chat/infinite.js.map +1 -1
  18. package/lib/chat/message.js +328 -191
  19. package/lib/chat/message.js.map +1 -1
  20. package/lib/chat/messageTools.js +462 -276
  21. package/lib/chat/messageTools.js.map +1 -1
  22. package/lib/chat/thread.js +299 -208
  23. package/lib/chat/thread.js.map +1 -1
  24. package/lib/login/login.d.ts.map +1 -1
  25. package/lib/login/login.js +14 -18
  26. package/lib/login/login.js.map +1 -1
  27. package/lib/media/media-capture.d.ts +2 -2
  28. package/lib/media/media-capture.d.ts.map +1 -1
  29. package/lib/media/media-capture.js +11 -15
  30. package/lib/media/media-capture.js.map +1 -1
  31. package/lib/pad.d.ts +2 -2
  32. package/lib/pad.d.ts.map +1 -1
  33. package/lib/pad.js +15 -39
  34. package/lib/pad.js.map +1 -1
  35. package/lib/participation.d.ts +7 -7
  36. package/lib/participation.d.ts.map +1 -1
  37. package/lib/participation.js +26 -24
  38. package/lib/participation.js.map +1 -1
  39. package/lib/preferences.js +4 -0
  40. package/lib/preferences.js.map +1 -1
  41. package/lib/style.js +93 -85
  42. package/lib/style.js.map +1 -1
  43. package/lib/styleConstants.js +35 -0
  44. package/lib/styleConstants.js.map +1 -0
  45. package/lib/tabs.d.ts +0 -125
  46. package/lib/tabs.d.ts.map +1 -1
  47. package/lib/tabs.js +15 -8
  48. package/lib/tabs.js.map +1 -1
  49. package/lib/utils/keyHelpers/accessData.d.ts +2 -2
  50. package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
  51. package/lib/utils/keyHelpers/accessData.js +59 -115
  52. package/lib/utils/keyHelpers/accessData.js.map +1 -1
  53. package/lib/utils/keyHelpers/otherHelpers.d.ts +3 -0
  54. package/lib/utils/keyHelpers/otherHelpers.d.ts.map +1 -0
  55. package/lib/utils/keyHelpers/otherHelpers.js +22 -0
  56. package/lib/utils/keyHelpers/otherHelpers.js.map +1 -0
  57. package/lib/versionInfo.js +3 -3
  58. package/lib/versionInfo.js.map +1 -1
  59. package/lib/widgets/dragAndDrop.js +11 -19
  60. package/lib/widgets/dragAndDrop.js.map +1 -1
  61. package/lib/widgets/error.d.ts.map +1 -1
  62. package/lib/widgets/error.js +9 -2
  63. package/lib/widgets/error.js.map +1 -1
  64. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +1 -1
  65. package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -1
  66. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  67. package/lib/widgets/forms/basic.d.ts.map +1 -1
  68. package/lib/widgets/forms/basic.js +5 -4
  69. package/lib/widgets/forms/basic.js.map +1 -1
  70. package/lib/widgets/forms/fieldParams.js +2 -2
  71. package/lib/widgets/forms/fieldParams.js.map +1 -1
  72. package/lib/widgets/forms.js +9 -8
  73. package/lib/widgets/forms.js.map +1 -1
  74. package/package.json +5 -5
@@ -20,19 +20,17 @@ var _chatLogic = require("./chatLogic");
20
20
  var _message = require("./message");
21
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
22
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
23
- /**
23
+ 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; } } }; }
24
+ 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); }
25
+ 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; } /**
24
26
  * Contains the [[infiniteMessageArea]] class
25
27
  * @packageDocumentation
26
- */
27
- // import { findBookmarkDocument } from './bookmarks'
28
+ */ // import { findBookmarkDocument } from './bookmarks'
28
29
  // pull in first avoid cross-refs
29
-
30
30
  // import * as style from '../style'
31
31
  // import * as utils from '../utils'
32
-
33
32
  // import * as pad from '../pad'
34
33
  // import { DateFolder } from './dateFolder'
35
-
36
34
  // const UI = { authn, icons, ns, media, pad, $rdf, store, style, utils, widgets }
37
35
 
38
36
  function desktopNotification(str) {
@@ -60,34 +58,9 @@ function desktopNotification(str) {
60
58
  /**
61
59
  * Renders a chat message inside a `messageTable`
62
60
  */
63
- function insertMessageIntoTable(channelObject, messageTable, message, fresh, options, userContext) {
64
- var messageRow = (0, _message.renderMessageRow)(channelObject, message, fresh, options, userContext);
65
-
66
- // const message = messageRow.AJAR_subject
67
- if (options.selectedMessage && options.selectedMessage.sameTerm(message)) {
68
- messageRow.style.backgroundColor = 'yellow';
69
- options.selectedElement = messageRow;
70
- messageTable.selectedElement = messageRow;
71
- }
72
- var done = false;
73
- for (var ele = messageTable.firstChild;; ele = ele.nextSibling) {
74
- if (!ele) {
75
- // empty
76
- break;
77
- }
78
- var newestFirst = options.newestfirst === true;
79
- var dateString = messageRow.AJAR_date;
80
- if (dateString > ele.AJAR_date && newestFirst || dateString < ele.AJAR_date && !newestFirst) {
81
- messageTable.insertBefore(messageRow, ele);
82
- done = true;
83
- break;
84
- }
85
- }
86
- if (!done) {
87
- messageTable.appendChild(messageRow);
88
- }
61
+ function insertMessageIntoTable(_x, _x2, _x3, _x4, _x5, _x6) {
62
+ return _insertMessageIntoTable.apply(this, arguments);
89
63
  }
90
-
91
64
  /**
92
65
  * Common code for a chat (discussion area of messages about something)
93
66
  * This version runs over a series of files for different time periods
@@ -110,20 +83,70 @@ function insertMessageIntoTable(channelObject, messageTable, message, fresh, opt
110
83
  - inlineImageHeightEms: The height (in ems) of images expaned from their URIs in the chat.
111
84
 
112
85
  */
113
- function infiniteMessageArea(_x, _x2, _x3, _x4) {
86
+ function _insertMessageIntoTable() {
87
+ _insertMessageIntoTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(channelObject, messageTable, message, fresh, options, userContext) {
88
+ var messageRow, done, ele, newestFirst, dateString;
89
+ return _regenerator["default"].wrap(function _callee$(_context) {
90
+ while (1) switch (_context.prev = _context.next) {
91
+ case 0:
92
+ _context.next = 2;
93
+ return (0, _message.renderMessageRow)(channelObject, message, fresh, options, userContext);
94
+ case 2:
95
+ messageRow = _context.sent;
96
+ // const message = messageRow.AJAR_subject
97
+ if (options.selectedMessage && options.selectedMessage.sameTerm(message)) {
98
+ messageRow.style.backgroundColor = 'yellow';
99
+ options.selectedElement = messageRow;
100
+ messageTable.selectedElement = messageRow;
101
+ }
102
+ done = false;
103
+ ele = messageTable.firstChild;
104
+ case 6:
105
+ if (ele) {
106
+ _context.next = 8;
107
+ break;
108
+ }
109
+ return _context.abrupt("break", 17);
110
+ case 8:
111
+ newestFirst = options.newestfirst === true;
112
+ dateString = messageRow.AJAR_date;
113
+ if (!(dateString > ele.AJAR_date && newestFirst || dateString < ele.AJAR_date && !newestFirst)) {
114
+ _context.next = 14;
115
+ break;
116
+ }
117
+ messageTable.insertBefore(messageRow, ele);
118
+ done = true;
119
+ return _context.abrupt("break", 17);
120
+ case 14:
121
+ ele = ele.nextSibling;
122
+ _context.next = 6;
123
+ break;
124
+ case 17:
125
+ if (!done) {
126
+ messageTable.appendChild(messageRow);
127
+ }
128
+ case 18:
129
+ case "end":
130
+ return _context.stop();
131
+ }
132
+ }, _callee);
133
+ }));
134
+ return _insertMessageIntoTable.apply(this, arguments);
135
+ }
136
+ function infiniteMessageArea(_x7, _x8, _x9, _x10) {
114
137
  return _infiniteMessageArea.apply(this, arguments);
115
138
  }
116
139
  function _infiniteMessageArea() {
117
- _infiniteMessageArea = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(dom, wasStore, chatChannel, options) {
118
- 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;
119
- return _regenerator["default"].wrap(function _callee12$(_context12) {
120
- while (1) switch (_context12.prev = _context12.next) {
140
+ _infiniteMessageArea = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15(dom, wasStore, chatChannel, options) {
141
+ 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;
142
+ return _regenerator["default"].wrap(function _callee15$(_context15) {
143
+ while (1) switch (_context15.prev = _context15.next) {
121
144
  case 0:
122
145
  _loadInitialContent = function _loadInitialContent3() {
123
- _loadInitialContent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
124
- var yank, fixScroll, live, selectedDocument, now, todayDocument, selectedMessageTable, selectedDate;
125
- return _regenerator["default"].wrap(function _callee11$(_context11) {
126
- while (1) switch (_context11.prev = _context11.next) {
146
+ _loadInitialContent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14() {
147
+ var yank, fixScroll, live, selectedDocument, threadRootDocument, initialDocment, now, todayDocument, selectedMessageTable, selectedDate;
148
+ return _regenerator["default"].wrap(function _callee14$(_context14) {
149
+ while (1) switch (_context14.prev = _context14.next) {
127
150
  case 0:
128
151
  fixScroll = function _fixScroll() {
129
152
  if (options.selectedElement) {
@@ -137,51 +160,59 @@ function _infiniteMessageArea() {
137
160
  }
138
161
  };
139
162
  yank = function _yank() {
140
- selectedMessageTable.selectedElement.scrollIntoView({
141
- block: 'center'
142
- });
163
+ if (selectedMessageTable && selectedMessageTable.selectedElement) {
164
+ selectedMessageTable.selectedElement.scrollIntoView({
165
+ block: 'center'
166
+ });
167
+ }
143
168
  }; // During initial load ONLY keep scroll to selected thing or bottom
144
169
  if (options.selectedMessage) {
145
170
  selectedDocument = options.selectedMessage.doc();
171
+ }
172
+ if (threadRootMessage) {
173
+ threadRootDocument = threadRootMessage.doc();
174
+ }
175
+ initialDocment = selectedDocument || threadRootDocument;
176
+ if (initialDocment) {
146
177
  now = new Date();
147
178
  todayDocument = dateFolder.leafDocumentFromDate(now);
148
- live = todayDocument.sameTerm(selectedDocument);
179
+ live = todayDocument.sameTerm(initialDocment);
149
180
  }
150
- if (!(options.selectedMessage && !live)) {
151
- _context11.next = 15;
181
+ if (!(initialDocment && !live)) {
182
+ _context14.next = 18;
152
183
  break;
153
184
  }
154
- selectedDate = dateFolder.dateFromLeafDocument(selectedDocument);
155
- _context11.next = 7;
185
+ selectedDate = dateFolder.dateFromLeafDocument(initialDocment);
186
+ _context14.next = 10;
156
187
  return createMessageTable(selectedDate, live);
157
- case 7:
158
- selectedMessageTable = _context11.sent;
188
+ case 10:
189
+ selectedMessageTable = _context14.sent;
159
190
  div.appendChild(selectedMessageTable);
160
191
  earliest.messageTable = selectedMessageTable;
161
192
  latest.messageTable = selectedMessageTable;
162
193
  yank();
163
194
  setTimeout(yank, 1000); // @@ kludge - restore position distubed by other cHANGES
164
- _context11.next = 19;
195
+ _context14.next = 22;
165
196
  break;
166
- case 15:
167
- _context11.next = 17;
197
+ case 18:
198
+ _context14.next = 20;
168
199
  return appendCurrentMessages();
169
- case 17:
200
+ case 20:
170
201
  earliest.messageTable = liveMessageTable;
171
202
  latest.messageTable = liveMessageTable;
172
- case 19:
173
- _context11.next = 21;
203
+ case 22:
204
+ _context14.next = 24;
174
205
  return loadMoreWhereNeeded(null, fixScroll);
175
- case 21:
206
+ case 24:
176
207
  div.addEventListener('scroll', loadMoreWhereNeeded);
177
208
  if (options.solo) {
178
209
  document.body.addEventListener('scroll', loadMoreWhereNeeded);
179
210
  }
180
- case 23:
211
+ case 26:
181
212
  case "end":
182
- return _context11.stop();
213
+ return _context14.stop();
183
214
  }
184
- }, _callee11);
215
+ }, _callee14);
185
216
  }));
186
217
  return _loadInitialContent.apply(this, arguments);
187
218
  };
@@ -189,16 +220,16 @@ function _infiniteMessageArea() {
189
220
  return _loadInitialContent.apply(this, arguments);
190
221
  };
191
222
  _loadMoreWhereNeeded = function _loadMoreWhereNeeded3() {
192
- _loadMoreWhereNeeded = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(event, fixScroll) {
223
+ _loadMoreWhereNeeded = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13(event, fixScroll) {
193
224
  var freeze, magicZone, done, scrollBottom, scrollTop;
194
- return _regenerator["default"].wrap(function _callee10$(_context10) {
195
- while (1) switch (_context10.prev = _context10.next) {
225
+ return _regenerator["default"].wrap(function _callee13$(_context13) {
226
+ while (1) switch (_context13.prev = _context13.next) {
196
227
  case 0:
197
228
  if (!lock) {
198
- _context10.next = 2;
229
+ _context13.next = 2;
199
230
  break;
200
231
  }
201
- return _context10.abrupt("return");
232
+ return _context13.abrupt("return");
202
233
  case 2:
203
234
  lock = true;
204
235
  freeze = !fixScroll;
@@ -206,36 +237,36 @@ function _infiniteMessageArea() {
206
237
  // const bottom = div.scrollHeight - top - div.clientHeight
207
238
  case 5:
208
239
  if (!(div.scrollTop < magicZone && earliest.messageTable && !earliest.messageTable.initial && earliest.messageTable.extendBackwards)) {
209
- _context10.next = 21;
240
+ _context13.next = 21;
210
241
  break;
211
242
  }
212
243
  if (!(div.scrollHeight === 0)) {
213
- _context10.next = 10;
244
+ _context13.next = 10;
214
245
  break;
215
246
  }
216
- // console.log(' chat/loadMoreWhereNeeded: trying later...')
247
+ // debug.log(' chat/loadMoreWhereNeeded: trying later...')
217
248
  setTimeout(loadMoreWhereNeeded, 2000); // couple be less
218
249
  lock = false;
219
- return _context10.abrupt("return");
250
+ return _context13.abrupt("return");
220
251
  case 10:
221
- // console.log(' chat/loadMoreWhereNeeded: Going now')
252
+ // debug.log(' chat/loadMoreWhereNeeded: Going now')
222
253
  scrollBottom = div.scrollHeight - div.scrollTop;
223
254
  debug.log('infinite scroll: adding above: top ' + div.scrollTop);
224
- _context10.next = 14;
255
+ _context13.next = 14;
225
256
  return earliest.messageTable.extendBackwards();
226
257
  case 14:
227
- done = _context10.sent;
258
+ done = _context13.sent;
228
259
  if (freeze) {
229
260
  div.scrollTop = div.scrollHeight - scrollBottom;
230
261
  }
231
262
  if (fixScroll) fixScroll();
232
263
  if (!done) {
233
- _context10.next = 19;
264
+ _context13.next = 19;
234
265
  break;
235
266
  }
236
- return _context10.abrupt("break", 21);
267
+ return _context13.abrupt("break", 21);
237
268
  case 19:
238
- _context10.next = 5;
269
+ _context13.next = 5;
239
270
  break;
240
271
  case 21:
241
272
  if (!(options.selectedMessage &&
@@ -245,78 +276,81 @@ function _infiniteMessageArea() {
245
276
  latest.messageTable && !latest.messageTable["final"] &&
246
277
  // there is more data to come
247
278
  latest.messageTable.extendForwards)) {
248
- _context10.next = 33;
279
+ _context13.next = 33;
249
280
  break;
250
281
  }
251
282
  scrollTop = div.scrollTop;
252
283
  debug.log('infinite scroll: adding below: bottom: ' + (div.scrollHeight - div.scrollTop - div.clientHeight));
253
- _context10.next = 26;
284
+ _context13.next = 26;
254
285
  return latest.messageTable.extendForwards();
255
286
  case 26:
256
- done = _context10.sent;
287
+ done = _context13.sent;
257
288
  // then add more data on the bottom
258
289
  if (freeze) {
259
290
  div.scrollTop = scrollTop; // while adding below keep same things in view
260
291
  }
261
292
  if (fixScroll) fixScroll();
262
293
  if (!done) {
263
- _context10.next = 31;
294
+ _context13.next = 31;
264
295
  break;
265
296
  }
266
- return _context10.abrupt("break", 33);
297
+ return _context13.abrupt("break", 33);
267
298
  case 31:
268
- _context10.next = 21;
299
+ _context13.next = 21;
269
300
  break;
270
301
  case 33:
271
302
  lock = false;
272
303
  case 34:
273
304
  case "end":
274
- return _context10.stop();
305
+ return _context13.stop();
275
306
  }
276
- }, _callee10);
307
+ }, _callee13);
277
308
  }));
278
309
  return _loadMoreWhereNeeded.apply(this, arguments);
279
310
  };
280
- loadMoreWhereNeeded = function _loadMoreWhereNeeded2(_x10, _x11) {
311
+ loadMoreWhereNeeded = function _loadMoreWhereNeeded2(_x20, _x21) {
281
312
  return _loadMoreWhereNeeded.apply(this, arguments);
282
313
  };
283
314
  _appendCurrentMessages = function _appendCurrentMessage2() {
284
- _appendCurrentMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
315
+ _appendCurrentMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
285
316
  var now, chatDocument, messageTable;
286
- return _regenerator["default"].wrap(function _callee9$(_context9) {
287
- while (1) switch (_context9.prev = _context9.next) {
317
+ return _regenerator["default"].wrap(function _callee12$(_context12) {
318
+ while (1) switch (_context12.prev = _context12.next) {
288
319
  case 0:
289
320
  now = new Date();
290
321
  chatDocument = dateFolder.leafDocumentFromDate(now); /// ///////////////////////////////////////////////////////////
291
- _context9.next = 4;
322
+ _context12.next = 4;
292
323
  return createMessageTable(now, true);
293
324
  case 4:
294
- messageTable = _context9.sent;
325
+ messageTable = _context12.sent;
295
326
  div.appendChild(messageTable);
296
- div.refresh = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
297
- return _regenerator["default"].wrap(function _callee8$(_context8) {
298
- while (1) switch (_context8.prev = _context8.next) {
327
+ div.refresh = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
328
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
329
+ while (1) switch (_context11.prev = _context11.next) {
299
330
  case 0:
300
- _context8.next = 2;
331
+ _context11.next = 2;
301
332
  return addNewChatDocumentIfNewDay(new Date());
302
333
  case 2:
303
- syncMessages(chatChannel, messageTable); // @@ livemessagetable??
304
- desktopNotification(chatChannel);
334
+ _context11.next = 4;
335
+ return syncMessages(chatChannel, messageTable);
305
336
  case 4:
337
+ // @@ livemessagetable??
338
+ desktopNotification(chatChannel);
339
+ case 5:
306
340
  case "end":
307
- return _context8.stop();
341
+ return _context11.stop();
308
342
  }
309
- }, _callee8);
343
+ }, _callee11);
310
344
  })); // The short chat version the live update listening is done in the pane but we do it in the widget @@
311
345
  _solidLogic.store.updater.addDownstreamChangeListener(chatDocument, div.refresh); // Live update
312
346
  liveMessageTable = messageTable;
313
347
  latest.messageTable = liveMessageTable;
314
- return _context9.abrupt("return", messageTable);
348
+ return _context12.abrupt("return", messageTable);
315
349
  case 11:
316
350
  case "end":
317
- return _context9.stop();
351
+ return _context12.stop();
318
352
  }
319
- }, _callee9);
353
+ }, _callee12);
320
354
  }));
321
355
  return _appendCurrentMessages.apply(this, arguments);
322
356
  };
@@ -324,15 +358,15 @@ function _infiniteMessageArea() {
324
358
  return _appendCurrentMessages.apply(this, arguments);
325
359
  };
326
360
  _addNewChatDocumentIfNewDay = function _addNewChatDocumentIf2() {
327
- _addNewChatDocumentIfNewDay = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
361
+ _addNewChatDocumentIfNewDay = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
328
362
  var newChatDocument, oldChatDocument, sts;
329
- return _regenerator["default"].wrap(function _callee7$(_context7) {
330
- while (1) switch (_context7.prev = _context7.next) {
363
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
364
+ while (1) switch (_context10.prev = _context10.next) {
331
365
  case 0:
332
366
  // @@ Remove listener from previous table as it is now static
333
367
  newChatDocument = dateFolder.leafDocumentFromDate(new Date());
334
368
  if (newChatDocument.sameTerm(latest.messageTable.chatDocument)) {
335
- _context7.next = 7;
369
+ _context10.next = 7;
336
370
  break;
337
371
  }
338
372
  // It is a new day
@@ -341,7 +375,7 @@ function _infiniteMessageArea() {
341
375
  delete liveMessageTable.inputRow;
342
376
  }
343
377
  oldChatDocument = latest.messageTable.chatDocument;
344
- _context7.next = 6;
378
+ _context10.next = 6;
345
379
  return appendCurrentMessages();
346
380
  case 6:
347
381
  // Adding a link in the document will ping listeners to add the new block too
@@ -355,284 +389,322 @@ function _infiniteMessageArea() {
355
389
  }
356
390
  case 7:
357
391
  case "end":
358
- return _context7.stop();
392
+ return _context10.stop();
359
393
  }
360
- }, _callee7);
394
+ }, _callee10);
361
395
  }));
362
396
  return _addNewChatDocumentIfNewDay.apply(this, arguments);
363
397
  };
364
398
  addNewChatDocumentIfNewDay = function _addNewChatDocumentIf() {
365
399
  return _addNewChatDocumentIfNewDay.apply(this, arguments);
366
400
  };
367
- renderMessageTable = function _renderMessageTable(date, live) {
368
- var scrollBackbutton;
369
- var scrollForwardButton;
370
-
371
- /// ///////////////// Scroll down adding more above
372
- function extendBackwards() {
373
- return _extendBackwards.apply(this, arguments);
374
- }
375
- function _extendBackwards() {
376
- _extendBackwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
377
- var done;
378
- return _regenerator["default"].wrap(function _callee$(_context) {
379
- while (1) switch (_context.prev = _context.next) {
380
- case 0:
381
- _context.next = 2;
382
- return insertPreviousMessages(true);
383
- case 2:
384
- done = _context.sent;
385
- if (done) {
386
- if (scrollBackbutton) {
387
- scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg'); // T
388
- scrollBackbutton.disabled = true;
389
- }
390
- messageTable.initial = true;
391
- } else {
392
- messageTable.extendedBack = true;
401
+ _renderMessageTable = function _renderMessageTable3() {
402
+ _renderMessageTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(date, live) {
403
+ var scrollBackbutton, scrollForwardButton, extendBackwards, _extendBackwards, setScrollBackbuttonIcon, extendForwards, _extendForwards, setScrollForwardButtonIcon, scrollForwardButtonHandler, _scrollForwardButtonHandler, messageTable, chatDocument, tr, test, titleTR, scrollBackbuttonCell, dateCell, scrollForwardButtonCell, sts, _iterator2, _step2, st;
404
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
405
+ while (1) switch (_context9.prev = _context9.next) {
406
+ case 0:
407
+ _scrollForwardButtonHandler = function _scrollForwardButtonH2() {
408
+ _scrollForwardButtonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(_event) {
409
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
410
+ while (1) switch (_context8.prev = _context8.next) {
411
+ case 0:
412
+ if (!messageTable.extendedForwards) {
413
+ _context8.next = 6;
414
+ break;
415
+ }
416
+ removePreviousMessages(false, messageTable);
417
+ messageTable.extendedForwards = false;
418
+ setScrollForwardButtonIcon();
419
+ _context8.next = 9;
420
+ break;
421
+ case 6:
422
+ _context8.next = 8;
423
+ return extendForwards();
424
+ case 8:
425
+ // async
426
+ latest.messageTable.scrollIntoView(newestFirst);
427
+ case 9:
428
+ case "end":
429
+ return _context8.stop();
430
+ }
431
+ }, _callee8);
432
+ }));
433
+ return _scrollForwardButtonHandler.apply(this, arguments);
434
+ };
435
+ scrollForwardButtonHandler = function _scrollForwardButtonH(_x22) {
436
+ return _scrollForwardButtonHandler.apply(this, arguments);
437
+ };
438
+ setScrollForwardButtonIcon = function _setScrollForwardButt() {
439
+ if (!scrollForwardButton) return;
440
+ var sense = messageTable.extendedForwards ? !newestFirst : newestFirst; // noun_T-Block_1114657_000000.svg
441
+ var scrollForwardIcon = messageTable["final"] ? 'noun_T-Block_1114657_000000.svg' : getScrollForwardButtonIcon(sense);
442
+ scrollForwardButton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollForwardIcon);
443
+ function getScrollForwardButtonIcon(sense) {
444
+ return !sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
393
445
  }
394
- setScrollBackbuttonIcon();
395
- return _context.abrupt("return", done);
396
- case 6:
397
- case "end":
398
- return _context.stop();
399
- }
400
- }, _callee);
401
- }));
402
- return _extendBackwards.apply(this, arguments);
403
- }
404
- function setScrollBackbuttonIcon() {
405
- if (!scrollBackbutton) {
406
- return;
407
- }
408
- var sense = messageTable.extendedBack ? !newestFirst : newestFirst;
409
- var scrollBackIcon = messageTable.initial ? 'noun_T-Block_1114655_000000.svg' : getScrollbackIcon(sense);
410
- scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollBackIcon);
411
- function getScrollbackIcon(sense) {
412
- return sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
413
- }
414
- }
415
- function scrollBackbuttonHandler(_x8) {
416
- return _scrollBackbuttonHandler.apply(this, arguments);
417
- } /// ////////////// Scroll up adding more below
418
- function _scrollBackbuttonHandler() {
419
- _scrollBackbuttonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_event) {
420
- return _regenerator["default"].wrap(function _callee2$(_context2) {
421
- while (1) switch (_context2.prev = _context2.next) {
422
- case 0:
423
- if (!messageTable.extendedBack) {
424
- _context2.next = 6;
425
- break;
446
+ };
447
+ _extendForwards = function _extendForwards3() {
448
+ _extendForwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
449
+ var done;
450
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
451
+ while (1) switch (_context7.prev = _context7.next) {
452
+ case 0:
453
+ _context7.next = 2;
454
+ return insertPreviousMessages(false);
455
+ case 2:
456
+ done = _context7.sent;
457
+ return _context7.abrupt("return", done);
458
+ case 4:
459
+ case "end":
460
+ return _context7.stop();
461
+ }
462
+ }, _callee7);
463
+ }));
464
+ return _extendForwards.apply(this, arguments);
465
+ };
466
+ extendForwards = function _extendForwards2() {
467
+ return _extendForwards.apply(this, arguments);
468
+ };
469
+ setScrollBackbuttonIcon = function _setScrollBackbuttonI() {
470
+ if (!scrollBackbutton) {
471
+ return;
426
472
  }
427
- removePreviousMessages(true, messageTable);
428
- messageTable.extendedBack = false;
429
- setScrollBackbuttonIcon();
430
- _context2.next = 8;
431
- break;
432
- case 6:
433
- _context2.next = 8;
434
- return extendBackwards();
435
- case 8:
436
- case "end":
437
- return _context2.stop();
438
- }
439
- }, _callee2);
440
- }));
441
- return _scrollBackbuttonHandler.apply(this, arguments);
442
- }
443
- function extendForwards() {
444
- return _extendForwards.apply(this, arguments);
445
- }
446
- function _extendForwards() {
447
- _extendForwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
448
- var done;
449
- return _regenerator["default"].wrap(function _callee3$(_context3) {
450
- while (1) switch (_context3.prev = _context3.next) {
451
- case 0:
452
- _context3.next = 2;
453
- return insertPreviousMessages(false);
454
- case 2:
455
- done = _context3.sent;
456
- if (done) {
457
- scrollForwardButton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg');
458
- scrollForwardButton.disabled = true;
459
- messageTable["final"] = true;
473
+ var sense = messageTable.extendedBack ? !newestFirst : newestFirst;
474
+ var scrollBackIcon = messageTable.initial ? 'noun_T-Block_1114655_000000.svg' : getScrollbackIcon(sense);
475
+ scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollBackIcon);
476
+ function getScrollbackIcon(sense) {
477
+ return sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
478
+ }
479
+ };
480
+ _extendBackwards = function _extendBackwards3() {
481
+ _extendBackwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
482
+ var done;
483
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
484
+ while (1) switch (_context6.prev = _context6.next) {
485
+ case 0:
486
+ _context6.next = 2;
487
+ return insertPreviousMessages(true);
488
+ case 2:
489
+ done = _context6.sent;
490
+ if (done) {
491
+ if (scrollBackbutton) {
492
+ scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg'); // T
493
+ scrollBackbutton.disabled = true;
494
+ }
495
+ messageTable.initial = true;
496
+ } else {
497
+ messageTable.extendedBack = true;
498
+ }
499
+ setScrollBackbuttonIcon();
500
+ return _context6.abrupt("return", done);
501
+ case 6:
502
+ case "end":
503
+ return _context6.stop();
504
+ }
505
+ }, _callee6);
506
+ }));
507
+ return _extendBackwards.apply(this, arguments);
508
+ };
509
+ extendBackwards = function _extendBackwards2() {
510
+ return _extendBackwards.apply(this, arguments);
511
+ };
512
+ scrollBackbutton = null; // was let
513
+ scrollForwardButton = null; // was let
514
+ /// ///////////////// Scroll down adding more above
515
+ /// ////////////// Scroll up adding more below
516
+ /// ///////////////////////
517
+ /*
518
+ options = options || {}
519
+ options.authorDateOnLeft = true
520
+ const newestFirst = options.newestFirst === '1' || options.newestFirst === true // hack for now
521
+ const channelObject = new ChatChannel(chatChannel, options)
522
+ const dateFolder = channelObject.dateFolder
523
+ const div = dom.createElement('div')
524
+ const statusArea = div.appendChild(dom.createElement('div'))
525
+ const userContext = { dom, statusArea, div: statusArea } // logged on state, pointers to user's stuff
526
+ */
527
+ debug.log('Options for called message Area', options);
528
+ messageTable = dom.createElement('table');
529
+ messageTable.style.width = '100%'; // fill the pane div
530
+ messageTable.extendBackwards = extendBackwards; // Make function available to scroll stuff
531
+ messageTable.extendForwards = extendForwards; // Make function available to scroll stuff
532
+
533
+ messageTable.date = date;
534
+ chatDocument = dateFolder.leafDocumentFromDate(date);
535
+ messageTable.chatDocument = chatDocument;
536
+ messageTable.fresh = false;
537
+ messageTable.setAttribute('style', 'width: 100%;'); // fill that div!
538
+ if (live) {
539
+ messageTable["final"] = true;
540
+ liveMessageTable = messageTable;
541
+ latest.messageTable = messageTable;
542
+ tr = (0, _message.renderMessageEditor)(channelObject, messageTable, userContext, options);
543
+ if (newestFirst) {
544
+ messageTable.insertBefore(tr, messageTable.firstChild); // If newestFirst
460
545
  } else {
461
- messageTable.extendedForwards = true;
546
+ messageTable.appendChild(tr); // not newestFirst
462
547
  }
463
- setScrollForwardButtonIcon();
464
- return _context3.abrupt("return", done);
465
- case 6:
466
- case "end":
467
- return _context3.stop();
468
- }
469
- }, _callee3);
470
- }));
471
- return _extendForwards.apply(this, arguments);
472
- }
473
- function setScrollForwardButtonIcon() {
474
- var sense = messageTable.extendedForwards ? !newestFirst : newestFirst; // noun_T-Block_1114657_000000.svg
475
- var scrollForwardIcon = messageTable["final"] ? 'noun_T-Block_1114657_000000.svg' : getScrollForwardButtonIcon(sense);
476
- scrollForwardButton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollForwardIcon);
477
- function getScrollForwardButtonIcon(sense) {
478
- return !sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
479
- }
480
- }
481
- function scrollForwardButtonHandler(_x9) {
482
- return _scrollForwardButtonHandler.apply(this, arguments);
483
- } /// ///////////////////////
484
- /*
485
- options = options || {}
486
- options.authorDateOnLeft = true
487
- const newestFirst = options.newestFirst === '1' || options.newestFirst === true // hack for now
488
- const channelObject = new ChatChannel(chatChannel, options)
489
- const dateFolder = channelObject.dateFolder
490
- const div = dom.createElement('div')
491
- const statusArea = div.appendChild(dom.createElement('div'))
492
- const userContext = { dom, statusArea, div: statusArea } // logged on state, pointers to user's stuff
493
- */
494
- function _scrollForwardButtonHandler() {
495
- _scrollForwardButtonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(_event) {
496
- return _regenerator["default"].wrap(function _callee4$(_context4) {
497
- while (1) switch (_context4.prev = _context4.next) {
498
- case 0:
499
- if (!messageTable.extendedForwards) {
500
- _context4.next = 6;
501
- break;
548
+ messageTable.inputRow = tr;
549
+ }
550
+
551
+ /// ///// Infinite scroll
552
+ //
553
+ // @@ listen for swipe past end event not just button
554
+ test = true;
555
+ if (test) {
556
+ // ws options.infinite but need for non-infinite
557
+ titleTR = dom.createElement('tr');
558
+ scrollBackbuttonCell = titleTR.appendChild(dom.createElement('td')); // up traingles: noun_1369237.svg
559
+ // down triangles: noun_1369241.svg
560
+ /*
561
+ const scrollBackIcon = newestFirst
562
+ ? 'noun_1369241.svg'
563
+ : 'noun_1369237.svg' // down and up arrows respoctively
564
+ scrollBackbutton = widgets.button(
565
+ dom,
566
+ icons.iconBase + scrollBackIcon,
567
+ 'Previous messages ...'
568
+ )
569
+ scrollBackbuttonCell.style = 'width:3em; height:3em;'
570
+ scrollBackbutton.addEventListener('click', scrollBackbuttonHandler, false)
571
+ messageTable.extendedBack = false
572
+ scrollBackbuttonCell.appendChild(scrollBackbutton)
573
+ setScrollBackbuttonIcon()
574
+ */
575
+ dateCell = titleTR.appendChild(dom.createElement('td'));
576
+ dateCell.style = 'text-align: center; vertical-align: middle; color: #888; font-style: italic;';
577
+ dateCell.textContent = widgets.shortDate(date.toISOString(), true); // no time, only date
578
+
579
+ // @@@@@@@@@@@ todo move this button to other end of message cell, o
580
+ scrollForwardButtonCell = titleTR.appendChild(dom.createElement('td'));
581
+ if (options.includeRemoveButton) {
582
+ scrollForwardButtonCell.appendChild(widgets.cancelButton(dom, function (_e) {
583
+ div.parentNode.removeChild(div);
584
+ }));
502
585
  }
503
- removePreviousMessages(false, messageTable);
586
+ /*
587
+ const scrollForwardIcon = newestFirst
588
+ ? 'noun_1369241.svg'
589
+ : 'noun_1369237.svg' // down and up arrows respoctively
590
+ scrollForwardButton = widgets.button(
591
+ dom,
592
+ icons.iconBase + scrollForwardIcon,
593
+ 'Later messages ...'
594
+ )
595
+ scrollForwardButtonCell.appendChild(scrollForwardButton)
596
+ scrollForwardButtonCell.style = 'width:3em; height:3em;'
597
+ scrollForwardButton.addEventListener(
598
+ 'click',
599
+ scrollForwardButtonHandler,
600
+ false
601
+ )
602
+ messageTable.extendedForward = false
603
+ setScrollForwardButtonIcon()
604
+ */
504
605
  messageTable.extendedForwards = false;
505
- setScrollForwardButtonIcon();
506
- _context4.next = 9;
606
+ if (!newestFirst) {
607
+ // opposite end from the entry field
608
+ messageTable.insertBefore(titleTR, messageTable.firstChild); // If not newestFirst
609
+ } else {
610
+ messageTable.appendChild(titleTR); // newestFirst
611
+ }
612
+ }
613
+ sts = _solidLogic.store.statementsMatching(null, ns.wf('message'), null, chatDocument);
614
+ if (!live && sts.length === 0) {
615
+ // not todays
616
+ // no need buttomns at the moment
617
+ // messageTable.style.visibility = 'collapse' // Hide files with no messages
618
+ }
619
+ _iterator2 = _createForOfIteratorHelper(sts);
620
+ _context9.prev = 26;
621
+ _iterator2.s();
622
+ case 28:
623
+ if ((_step2 = _iterator2.n()).done) {
624
+ _context9.next = 34;
507
625
  break;
508
- case 6:
509
- _context4.next = 8;
510
- return extendForwards();
511
- case 8:
512
- // async
513
- latest.messageTable.scrollIntoView(newestFirst);
514
- case 9:
515
- case "end":
516
- return _context4.stop();
517
- }
518
- }, _callee4);
519
- }));
520
- return _scrollForwardButtonHandler.apply(this, arguments);
521
- }
522
- var messageTable = dom.createElement('table');
523
- messageTable.extendBackwards = extendBackwards; // Make function available to scroll stuff
524
- messageTable.extendForwards = extendForwards; // Make function available to scroll stuff
525
-
526
- messageTable.date = date;
527
- var chatDocument = dateFolder.leafDocumentFromDate(date);
528
- messageTable.chatDocument = chatDocument;
529
- messageTable.fresh = false;
530
- messageTable.setAttribute('style', 'width: 100%;'); // fill that div!
531
- if (live) {
532
- messageTable["final"] = true;
533
- liveMessageTable = messageTable;
534
- latest.messageTable = messageTable;
535
- var tr = (0, _message.renderMessageEditor)(channelObject, messageTable, userContext, options);
536
- if (newestFirst) {
537
- messageTable.insertBefore(tr, messageTable.firstChild); // If newestFirst
538
- } else {
539
- messageTable.appendChild(tr); // not newestFirst
540
- }
541
- messageTable.inputRow = tr;
542
- }
543
-
544
- /// ///// Infinite scroll
545
- //
546
- // @@ listen for swipe past end event not just button
547
- if (options.infinite) {
548
- var scrollBackbuttonTR = dom.createElement('tr');
549
- var scrollBackbuttonCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
550
- // up traingles: noun_1369237.svg
551
- // down triangles: noun_1369241.svg
552
- var scrollBackIcon = newestFirst ? 'noun_1369241.svg' : 'noun_1369237.svg'; // down and up arrows respoctively
553
- scrollBackbutton = widgets.button(dom, _iconBase.icons.iconBase + scrollBackIcon, 'Previous messages ...');
554
- scrollBackbuttonCell.style = 'width:3em; height:3em;';
555
- scrollBackbutton.addEventListener('click', scrollBackbuttonHandler, false);
556
- messageTable.extendedBack = false;
557
- scrollBackbuttonCell.appendChild(scrollBackbutton);
558
- setScrollBackbuttonIcon();
559
- var dateCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
560
- dateCell.style = 'text-align: center; vertical-align: middle; color: #888; font-style: italic;';
561
- dateCell.textContent = widgets.shortDate(date.toISOString(), true); // no time, only date
562
-
563
- // @@@@@@@@@@@ todo move this button to other end of message cell, o
564
- var scrollForwardButtonCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
565
- var scrollForwardIcon = newestFirst ? 'noun_1369241.svg' : 'noun_1369237.svg'; // down and up arrows respoctively
566
- scrollForwardButton = widgets.button(dom, _iconBase.icons.iconBase + scrollForwardIcon, 'Later messages ...');
567
- scrollForwardButtonCell.appendChild(scrollForwardButton);
568
- scrollForwardButtonCell.style = 'width:3em; height:3em;';
569
- scrollForwardButton.addEventListener('click', scrollForwardButtonHandler, false);
570
- messageTable.extendedForward = false;
571
- setScrollForwardButtonIcon();
572
- messageTable.extendedForwards = false;
573
- if (!newestFirst) {
574
- // opposite end from the entry field
575
- messageTable.insertBefore(scrollBackbuttonTR, messageTable.firstChild); // If not newestFirst
576
- } else {
577
- messageTable.appendChild(scrollBackbuttonTR); // newestFirst
578
- }
579
- }
580
- var sts = _solidLogic.store.statementsMatching(null, ns.wf('message'), null, chatDocument);
581
- if (!live && sts.length === 0) {
582
- // not todays
583
- // no need buttomns at the moment
584
- // messageTable.style.visibility = 'collapse' // Hide files with no messages
585
- }
586
- sts.forEach(function (st) {
587
- addMessage(st.object, messageTable);
588
- });
589
- messageTable.fresh = true;
626
+ }
627
+ st = _step2.value;
628
+ _context9.next = 32;
629
+ return addMessage(st.object, messageTable);
630
+ case 32:
631
+ _context9.next = 28;
632
+ break;
633
+ case 34:
634
+ _context9.next = 39;
635
+ break;
636
+ case 36:
637
+ _context9.prev = 36;
638
+ _context9.t0 = _context9["catch"](26);
639
+ _iterator2.e(_context9.t0);
640
+ case 39:
641
+ _context9.prev = 39;
642
+ _iterator2.f();
643
+ return _context9.finish(39);
644
+ case 42:
645
+ messageTable.fresh = true;
590
646
 
591
- // loadMessageTable(messageTable, chatDocument)
592
- messageTable.fresh = false;
593
- return messageTable;
647
+ // loadMessageTable(messageTable, chatDocument)
648
+ messageTable.fresh = false;
649
+ return _context9.abrupt("return", messageTable);
650
+ case 45:
651
+ case "end":
652
+ return _context9.stop();
653
+ }
654
+ }, _callee9, null, [[26, 36, 39, 42]]);
655
+ }));
656
+ return _renderMessageTable.apply(this, arguments);
657
+ };
658
+ renderMessageTable = function _renderMessageTable2(_x18, _x19) {
659
+ return _renderMessageTable.apply(this, arguments);
594
660
  };
595
661
  _createMessageTable = function _createMessageTable3() {
596
- _createMessageTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(date, live) {
662
+ _createMessageTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(date, live) {
597
663
  var chatDocument, messageTable, statusTR;
598
- return _regenerator["default"].wrap(function _callee6$(_context6) {
599
- while (1) switch (_context6.prev = _context6.next) {
664
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
665
+ while (1) switch (_context5.prev = _context5.next) {
600
666
  case 0:
601
667
  debug.log(' createMessageTable for ' + date);
602
668
  chatDocument = dateFolder.leafDocumentFromDate(date);
603
- _context6.prev = 2;
604
- _context6.next = 5;
669
+ _context5.prev = 2;
670
+ _context5.next = 5;
605
671
  return _solidLogic.store.fetcher.load(chatDocument);
606
672
  case 5:
607
- _context6.next = 19;
673
+ _context5.next = 21;
608
674
  break;
609
675
  case 7:
610
- _context6.prev = 7;
611
- _context6.t0 = _context6["catch"](2);
676
+ _context5.prev = 7;
677
+ _context5.t0 = _context5["catch"](2);
612
678
  messageTable = dom.createElement('table');
613
679
  statusTR = messageTable.appendChild(dom.createElement('tr')); // ### find status in exception
614
- if (!(_context6.t0.response && _context6.t0.response.status && _context6.t0.response.status === 404)) {
615
- _context6.next = 16;
680
+ if (!(_context5.t0.response && _context5.t0.response.status && _context5.t0.response.status === 404)) {
681
+ _context5.next = 18;
616
682
  break;
617
683
  }
618
684
  debug.log('Error 404 for chat file ' + chatDocument);
619
- return _context6.abrupt("return", renderMessageTable(date, live));
620
- case 16:
621
- debug.log('*** Error NON 404 for chat file ' + chatDocument);
622
- statusTR.appendChild(widgets.errorMessageBlock(dom, _context6.t0, 'pink'));
685
+ _context5.next = 15;
686
+ return renderMessageTable(date, live);
687
+ case 15:
688
+ return _context5.abrupt("return", _context5.sent);
623
689
  case 18:
624
- return _context6.abrupt("return", statusTR);
625
- case 19:
626
- return _context6.abrupt("return", renderMessageTable(date, live));
690
+ debug.log('*** Error NON 404 for chat file ' + chatDocument);
691
+ statusTR.appendChild(widgets.errorMessageBlock(dom, _context5.t0, 'pink'));
627
692
  case 20:
693
+ return _context5.abrupt("return", statusTR);
694
+ case 21:
695
+ _context5.next = 23;
696
+ return renderMessageTable(date, live);
697
+ case 23:
698
+ return _context5.abrupt("return", _context5.sent);
699
+ case 24:
628
700
  case "end":
629
- return _context6.stop();
701
+ return _context5.stop();
630
702
  }
631
- }, _callee6, null, [[2, 7]]);
703
+ }, _callee5, null, [[2, 7]]);
632
704
  }));
633
705
  return _createMessageTable.apply(this, arguments);
634
706
  };
635
- createMessageTable = function _createMessageTable2(_x6, _x7) {
707
+ createMessageTable = function _createMessageTable2(_x16, _x17) {
636
708
  return _createMessageTable.apply(this, arguments);
637
709
  };
638
710
  removePreviousMessages = function _removePreviousMessag(backwards, messageTable) {
@@ -651,32 +723,48 @@ function _infiniteMessageArea() {
651
723
  extr.messageTable = messageTable;
652
724
  };
653
725
  _insertPreviousMessages = function _insertPreviousMessag2() {
654
- _insertPreviousMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(backwards) {
726
+ _insertPreviousMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(backwards) {
655
727
  var extremity, date, live, todayDoc, doc, newMessageTable;
656
- return _regenerator["default"].wrap(function _callee5$(_context5) {
657
- while (1) switch (_context5.prev = _context5.next) {
728
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
729
+ while (1) switch (_context4.prev = _context4.next) {
658
730
  case 0:
659
731
  extremity = backwards ? earliest : latest;
660
732
  date = extremity.messageTable.date; // day in mssecs
661
- _context5.next = 4;
733
+ // Are we at the top of a thread?
734
+ if (!(backwards && earliest.limit && date <= earliest.limit)) {
735
+ _context4.next = 7;
736
+ break;
737
+ }
738
+ if (liveMessageTable) {
739
+ _context4.next = 6;
740
+ break;
741
+ }
742
+ _context4.next = 6;
743
+ return appendCurrentMessages();
744
+ case 6:
745
+ return _context4.abrupt("return", true);
746
+ case 7:
747
+ debug.log(' insertPreviousMessages: loadPrevious given date ' + date);
748
+ _context4.next = 10;
662
749
  return dateFolder.loadPrevious(date, backwards);
663
- case 4:
664
- date = _context5.sent;
750
+ case 10:
751
+ date = _context4.sent;
665
752
  // backwards
753
+ debug.log(' insertPreviousMessages: loadPrevious returns date ' + date);
666
754
  debug.log("insertPreviousMessages: from ".concat(backwards ? 'backwards' : 'forwards', " loadPrevious: ").concat(date));
667
755
  if (!(!date && !backwards && !liveMessageTable)) {
668
- _context5.next = 9;
756
+ _context4.next = 16;
669
757
  break;
670
758
  }
671
- _context5.next = 9;
759
+ _context4.next = 16;
672
760
  return appendCurrentMessages();
673
- case 9:
761
+ case 16:
674
762
  if (date) {
675
- _context5.next = 11;
763
+ _context4.next = 18;
676
764
  break;
677
765
  }
678
- return _context5.abrupt("return", true);
679
- case 11:
766
+ return _context4.abrupt("return", true);
767
+ case 18:
680
768
  // done
681
769
  live = false;
682
770
  if (!backwards) {
@@ -684,10 +772,10 @@ function _infiniteMessageArea() {
684
772
  doc = dateFolder.leafDocumentFromDate(date);
685
773
  live = doc.sameTerm(todayDoc); // Is this todays?
686
774
  }
687
- _context5.next = 15;
775
+ _context4.next = 22;
688
776
  return createMessageTable(date, live);
689
- case 15:
690
- newMessageTable = _context5.sent;
777
+ case 22:
778
+ newMessageTable = _context4.sent;
691
779
  extremity.messageTable = newMessageTable; // move pointer to earliest
692
780
  if (backwards ? newestFirst : !newestFirst) {
693
781
  // put on bottom or top
@@ -696,64 +784,161 @@ function _infiniteMessageArea() {
696
784
  // put on top as we scroll back
697
785
  div.insertBefore(newMessageTable, div.firstChild);
698
786
  }
699
- return _context5.abrupt("return", live);
700
- case 19:
787
+ return _context4.abrupt("return", live);
788
+ case 26:
701
789
  case "end":
702
- return _context5.stop();
790
+ return _context4.stop();
703
791
  }
704
- }, _callee5);
792
+ }, _callee4);
705
793
  }));
706
794
  return _insertPreviousMessages.apply(this, arguments);
707
795
  };
708
- insertPreviousMessages = function _insertPreviousMessag(_x5) {
796
+ insertPreviousMessages = function _insertPreviousMessag(_x15) {
709
797
  return _insertPreviousMessages.apply(this, arguments);
710
798
  };
711
- addMessage = function _addMessage(message, messageTable) {
712
- var latest = (0, _chatLogic.mostRecentVersion)(message);
713
- // const content = store.any(latest, ns.sioc('content'))
714
- if ((0, _chatLogic.isDeleted)(latest) && !options.showDeletedMessages) {
715
- return; // ignore deleted messaged -- @@ could also leave a placeholder
716
- }
717
- insertMessageIntoTable(channelObject, messageTable, message, messageTable.fresh, options, userContext); // fresh from elsewhere
799
+ _addMessage = function _addMessage3() {
800
+ _addMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(message, messageTable) {
801
+ var thread, id;
802
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
803
+ while (1) switch (_context3.prev = _context3.next) {
804
+ case 0:
805
+ if (!((0, _chatLogic.isDeleted)(message) && !options.showDeletedMessages)) {
806
+ _context3.next = 2;
807
+ break;
808
+ }
809
+ return _context3.abrupt("return");
810
+ case 2:
811
+ /* if (isReplaced(message)) { //
812
+ return // this is old version
813
+ } */
814
+ thread = _solidLogic.store.any(null, ns.sioc('has_member'), message, message.doc());
815
+ id = _solidLogic.store.any(message, ns.sioc('id'), null, message.doc());
816
+ if (id && !thread) {
817
+ thread = _solidLogic.store.any(null, ns.sioc('has_member'), id, message.doc());
818
+ }
819
+ if (!options.thread) {
820
+ _context3.next = 18;
821
+ break;
822
+ }
823
+ if (!_solidLogic.store.holds(message, ns.sioc('has_reply'), options.thread)) {
824
+ _context3.next = 10;
825
+ break;
826
+ }
827
+ // root of thread
828
+ debug.log(' addMessage: displaying root of thread ' + thread);
829
+ _context3.next = 16;
830
+ break;
831
+ case 10:
832
+ if (!(thread && thread.sameTerm(options.thread))) {
833
+ _context3.next = 14;
834
+ break;
835
+ }
836
+ debug.log(' addMessage: Displaying body of thread ' + message.uri.slice(-10));
837
+ _context3.next = 16;
838
+ break;
839
+ case 14:
840
+ debug.log(' addMessage: Suppress non-thread message in thread table ' + message.uri.slice(-10));
841
+ return _context3.abrupt("return");
842
+ case 16:
843
+ _context3.next = 24;
844
+ break;
845
+ case 18:
846
+ if (!thread) {
847
+ _context3.next = 23;
848
+ break;
849
+ }
850
+ debug.log(' addMessage: Suppress thread message in non-thread table ' + message.uri.slice(-10));
851
+ return _context3.abrupt("return");
852
+ case 23:
853
+ debug.log(' addMessage: Normal non-thread message in non-thread table ' + message.uri.slice(-10));
854
+ case 24:
855
+ _context3.next = 26;
856
+ return insertMessageIntoTable(channelObject, messageTable, message, messageTable.fresh, options, userContext);
857
+ case 26:
858
+ case "end":
859
+ return _context3.stop();
860
+ }
861
+ }, _callee3);
862
+ }));
863
+ return _addMessage.apply(this, arguments);
718
864
  };
719
- syncMessages = function _syncMessages(about, messageTable) {
720
- var displayed = {};
721
- var ele, ele2;
722
- for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
723
- if (ele.AJAR_subject) {
724
- displayed[ele.AJAR_subject.uri] = true;
725
- }
726
- }
727
- var messages = _solidLogic.store.statementsMatching(about, ns.wf('message'), null, messageTable.chatDocument).map(function (st) {
728
- return st.object;
729
- });
730
- var stored = {};
731
- messages.forEach(function (m) {
732
- stored[m.uri] = true;
733
- if (!displayed[m.uri]) {
734
- addMessage(m, messageTable);
735
- }
736
- });
737
-
738
- // eslint-disable-next-line space-in-parens
739
- for (ele = messageTable.firstChild; ele;) {
740
- ele2 = ele.nextSibling;
741
- if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {
742
- messageTable.removeChild(ele);
743
- }
744
- ele = ele2;
745
- }
746
- for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
747
- if (ele.AJAR_subject) {
748
- // Refresh thumbs up etc
749
- widgets.refreshTree(ele); // Things inside may have changed too
750
- }
751
- }
865
+ addMessage = function _addMessage2(_x13, _x14) {
866
+ return _addMessage.apply(this, arguments);
867
+ };
868
+ _syncMessages = function _syncMessages3() {
869
+ _syncMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(chatChannel, messageTable) {
870
+ var displayed, ele, ele2, messages, stored, _iterator, _step, m;
871
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
872
+ while (1) switch (_context2.prev = _context2.next) {
873
+ case 0:
874
+ displayed = {};
875
+ for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
876
+ if (ele.AJAR_subject) {
877
+ displayed[ele.AJAR_subject.uri] = true;
878
+ }
879
+ }
880
+ messages = _solidLogic.store.each(chatChannel, ns.wf('message'), null, messageTable.chatDocument);
881
+ stored = {};
882
+ _iterator = _createForOfIteratorHelper(messages);
883
+ _context2.prev = 5;
884
+ _iterator.s();
885
+ case 7:
886
+ if ((_step = _iterator.n()).done) {
887
+ _context2.next = 15;
888
+ break;
889
+ }
890
+ m = _step.value;
891
+ stored[m.uri] = true;
892
+ if (displayed[m.uri]) {
893
+ _context2.next = 13;
894
+ break;
895
+ }
896
+ _context2.next = 13;
897
+ return addMessage(m, messageTable);
898
+ case 13:
899
+ _context2.next = 7;
900
+ break;
901
+ case 15:
902
+ _context2.next = 20;
903
+ break;
904
+ case 17:
905
+ _context2.prev = 17;
906
+ _context2.t0 = _context2["catch"](5);
907
+ _iterator.e(_context2.t0);
908
+ case 20:
909
+ _context2.prev = 20;
910
+ _iterator.f();
911
+ return _context2.finish(20);
912
+ case 23:
913
+ // eslint-disable-next-line space-in-parens
914
+ for (ele = messageTable.firstChild; ele;) {
915
+ ele2 = ele.nextSibling;
916
+ if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {
917
+ messageTable.removeChild(ele);
918
+ }
919
+ ele = ele2;
920
+ }
921
+ for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
922
+ if (ele.AJAR_subject) {
923
+ // Refresh thumbs up etc
924
+ widgets.refreshTree(ele); // Things inside may have changed too
925
+ }
926
+ }
927
+ case 25:
928
+ case "end":
929
+ return _context2.stop();
930
+ }
931
+ }, _callee2, null, [[5, 17, 20, 23]]);
932
+ }));
933
+ return _syncMessages.apply(this, arguments);
934
+ };
935
+ syncMessages = function _syncMessages2(_x11, _x12) {
936
+ return _syncMessages.apply(this, arguments);
752
937
  }; // ///////////////////////////////////////////////////////////////////////
753
938
  // syncMessages
754
939
  // Called once per original message displayed
755
940
  /* Add a new messageTable at the top/bottom
756
- */
941
+ */
757
942
  /* Remove message tables earlier than this one
758
943
  */
759
944
  /* Load and render message table
@@ -787,23 +972,33 @@ function _infiniteMessageArea() {
787
972
  statusArea: statusArea,
788
973
  div: statusArea
789
974
  }; // logged on state, pointers to user's stuff
790
- // const messageTable = dom.createElement('table') // @@ check does this go in renderMessageTable
791
975
  earliest = {
792
976
  messageTable: null
793
977
  }; // Stuff about each end of the loaded days
794
978
  latest = {
795
979
  messageTable: null
796
980
  };
981
+ if (options.thread) {
982
+ thread = options.thread;
983
+ threadRootMessage = _solidLogic.store.any(null, ns.sioc('has_reply'), thread, thread.doc());
984
+ if (threadRootMessage) {
985
+ threadTime = _solidLogic.store.any(threadRootMessage, ns.dct('created'), null, threadRootMessage.doc());
986
+ if (threadTime) {
987
+ earliest.limit = new Date(threadTime.value);
988
+ debug.log(' inifinite: thread start at ' + earliest.limit);
989
+ }
990
+ }
991
+ }
797
992
  lock = false;
798
- _context12.next = 30;
993
+ _context15.next = 34;
799
994
  return loadInitialContent();
800
- case 30:
801
- return _context12.abrupt("return", div);
802
- case 31:
995
+ case 34:
996
+ return _context15.abrupt("return", div);
997
+ case 35:
803
998
  case "end":
804
- return _context12.stop();
999
+ return _context15.stop();
805
1000
  }
806
- }, _callee12);
1001
+ }, _callee15);
807
1002
  }));
808
1003
  return _infiniteMessageArea.apply(this, arguments);
809
1004
  }