solid-ui 2.4.28-e3ba3633 → 2.4.28-e5cde855

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 (78) 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 +2080 -1330
  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 +249 -65
  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/message.js +332 -193
  18. package/lib/chat/message.js.map +1 -1
  19. package/lib/chat/messageTools.js +463 -277
  20. package/lib/chat/messageTools.js.map +1 -1
  21. package/lib/chat/thread.js +299 -209
  22. package/lib/chat/thread.js.map +1 -1
  23. package/lib/header/index.js +5 -0
  24. package/lib/header/index.js.map +1 -1
  25. package/lib/log.js +5 -5
  26. package/lib/log.js.map +1 -1
  27. package/lib/login/login.js +24 -1
  28. package/lib/login/login.js.map +1 -1
  29. package/lib/media/media-capture.d.ts +2 -2
  30. package/lib/media/media-capture.d.ts.map +1 -1
  31. package/lib/media/media-capture.js +15 -11
  32. package/lib/media/media-capture.js.map +1 -1
  33. package/lib/pad.d.ts +2 -2
  34. package/lib/pad.d.ts.map +1 -1
  35. package/lib/pad.js +41 -15
  36. package/lib/pad.js.map +1 -1
  37. package/lib/participation.d.ts +5 -5
  38. package/lib/participation.d.ts.map +1 -1
  39. package/lib/participation.js +23 -22
  40. package/lib/participation.js.map +1 -1
  41. package/lib/preferences.js +4 -0
  42. package/lib/preferences.js.map +1 -1
  43. package/lib/style.js +28 -35
  44. package/lib/style.js.map +1 -1
  45. package/lib/tabs.d.ts +125 -0
  46. package/lib/tabs.d.ts.map +1 -1
  47. package/lib/tabs.js +8 -15
  48. package/lib/tabs.js.map +1 -1
  49. package/lib/utils/headerFooterHelpers.js +2 -0
  50. package/lib/utils/headerFooterHelpers.js.map +1 -1
  51. package/lib/versionInfo.js +2 -2
  52. package/lib/versionInfo.js.map +1 -1
  53. package/lib/widgets/buttons.js +0 -2
  54. package/lib/widgets/buttons.js.map +1 -1
  55. package/lib/widgets/dragAndDrop.js +18 -10
  56. package/lib/widgets/dragAndDrop.js.map +1 -1
  57. package/lib/widgets/error.d.ts.map +1 -1
  58. package/lib/widgets/error.js +2 -9
  59. package/lib/widgets/error.js.map +1 -1
  60. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -1
  61. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  62. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +1 -1
  63. package/lib/widgets/forms/autocomplete/autocompletePicker.js +9 -5
  64. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  65. package/lib/widgets/forms/autocomplete/language.js +5 -0
  66. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  67. package/lib/widgets/forms/basic.d.ts.map +1 -1
  68. package/lib/widgets/forms/basic.js +3 -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 +12 -10
  73. package/lib/widgets/forms.js.map +1 -1
  74. package/lib/widgets/peoplePicker.js +11 -0
  75. package/lib/widgets/peoplePicker.js.map +1 -1
  76. package/package.json +3 -2
  77. package/lib/styleConstants.js +0 -34
  78. package/lib/styleConstants.js.map +0 -1
@@ -20,19 +20,17 @@ var _chatLogic = require("./chatLogic");
20
20
  var _message = require("./message");
21
21
  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); }
22
22
  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; }
23
- /**
24
- * Contains the [[infiniteMessageArea]] class
25
- * @packageDocumentation
26
- */
27
- // import { findBookmarkDocument } from './bookmarks'
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; } /**
26
+ * Contains the [[infiniteMessageArea]] class
27
+ * @packageDocumentation
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
- });
143
- };
163
+ if (selectedMessageTable && selectedMessageTable.selectedElement) {
164
+ selectedMessageTable.selectedElement.scrollIntoView({
165
+ block: 'center'
166
+ });
167
+ }
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,15 +276,15 @@ 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
@@ -261,63 +292,66 @@ function _infiniteMessageArea() {
261
292
 
262
293
  if (fixScroll) fixScroll();
263
294
  if (!done) {
264
- _context10.next = 31;
295
+ _context13.next = 31;
265
296
  break;
266
297
  }
267
- return _context10.abrupt("break", 33);
298
+ return _context13.abrupt("break", 33);
268
299
  case 31:
269
- _context10.next = 21;
300
+ _context13.next = 21;
270
301
  break;
271
302
  case 33:
272
303
  lock = false;
273
304
  case 34:
274
305
  case "end":
275
- return _context10.stop();
306
+ return _context13.stop();
276
307
  }
277
- }, _callee10);
308
+ }, _callee13);
278
309
  }));
279
310
  return _loadMoreWhereNeeded.apply(this, arguments);
280
311
  };
281
- loadMoreWhereNeeded = function _loadMoreWhereNeeded2(_x10, _x11) {
312
+ loadMoreWhereNeeded = function _loadMoreWhereNeeded2(_x20, _x21) {
282
313
  return _loadMoreWhereNeeded.apply(this, arguments);
283
314
  };
284
315
  _appendCurrentMessages = function _appendCurrentMessage2() {
285
- _appendCurrentMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
316
+ _appendCurrentMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
286
317
  var now, chatDocument, messageTable;
287
- return _regenerator["default"].wrap(function _callee9$(_context9) {
288
- while (1) switch (_context9.prev = _context9.next) {
318
+ return _regenerator["default"].wrap(function _callee12$(_context12) {
319
+ while (1) switch (_context12.prev = _context12.next) {
289
320
  case 0:
290
321
  now = new Date();
291
322
  chatDocument = dateFolder.leafDocumentFromDate(now); /// ///////////////////////////////////////////////////////////
292
- _context9.next = 4;
323
+ _context12.next = 4;
293
324
  return createMessageTable(now, true);
294
325
  case 4:
295
- messageTable = _context9.sent;
326
+ messageTable = _context12.sent;
296
327
  div.appendChild(messageTable);
297
- div.refresh = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
298
- return _regenerator["default"].wrap(function _callee8$(_context8) {
299
- while (1) switch (_context8.prev = _context8.next) {
328
+ div.refresh = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
329
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
330
+ while (1) switch (_context11.prev = _context11.next) {
300
331
  case 0:
301
- _context8.next = 2;
332
+ _context11.next = 2;
302
333
  return addNewChatDocumentIfNewDay(new Date());
303
334
  case 2:
304
- syncMessages(chatChannel, messageTable); // @@ livemessagetable??
305
- desktopNotification(chatChannel);
335
+ _context11.next = 4;
336
+ return syncMessages(chatChannel, messageTable);
306
337
  case 4:
338
+ // @@ livemessagetable??
339
+ desktopNotification(chatChannel);
340
+ case 5:
307
341
  case "end":
308
- return _context8.stop();
342
+ return _context11.stop();
309
343
  }
310
- }, _callee8);
344
+ }, _callee11);
311
345
  })); // The short chat version the live update listening is done in the pane but we do it in the widget @@
312
346
  _solidLogic.store.updater.addDownstreamChangeListener(chatDocument, div.refresh); // Live update
313
347
  liveMessageTable = messageTable;
314
348
  latest.messageTable = liveMessageTable;
315
- return _context9.abrupt("return", messageTable);
349
+ return _context12.abrupt("return", messageTable);
316
350
  case 11:
317
351
  case "end":
318
- return _context9.stop();
352
+ return _context12.stop();
319
353
  }
320
- }, _callee9);
354
+ }, _callee12);
321
355
  }));
322
356
  return _appendCurrentMessages.apply(this, arguments);
323
357
  };
@@ -325,15 +359,15 @@ function _infiniteMessageArea() {
325
359
  return _appendCurrentMessages.apply(this, arguments);
326
360
  };
327
361
  _addNewChatDocumentIfNewDay = function _addNewChatDocumentIf2() {
328
- _addNewChatDocumentIfNewDay = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
362
+ _addNewChatDocumentIfNewDay = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
329
363
  var newChatDocument, oldChatDocument, sts;
330
- return _regenerator["default"].wrap(function _callee7$(_context7) {
331
- while (1) switch (_context7.prev = _context7.next) {
364
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
365
+ while (1) switch (_context10.prev = _context10.next) {
332
366
  case 0:
333
367
  // @@ Remove listener from previous table as it is now static
334
368
  newChatDocument = dateFolder.leafDocumentFromDate(new Date());
335
369
  if (newChatDocument.sameTerm(latest.messageTable.chatDocument)) {
336
- _context7.next = 7;
370
+ _context10.next = 7;
337
371
  break;
338
372
  }
339
373
  // It is a new day
@@ -342,7 +376,7 @@ function _infiniteMessageArea() {
342
376
  delete liveMessageTable.inputRow;
343
377
  }
344
378
  oldChatDocument = latest.messageTable.chatDocument;
345
- _context7.next = 6;
379
+ _context10.next = 6;
346
380
  return appendCurrentMessages();
347
381
  case 6:
348
382
  // Adding a link in the document will ping listeners to add the new block too
@@ -356,286 +390,323 @@ function _infiniteMessageArea() {
356
390
  }
357
391
  case 7:
358
392
  case "end":
359
- return _context7.stop();
393
+ return _context10.stop();
360
394
  }
361
- }, _callee7);
395
+ }, _callee10);
362
396
  }));
363
397
  return _addNewChatDocumentIfNewDay.apply(this, arguments);
364
398
  };
365
399
  addNewChatDocumentIfNewDay = function _addNewChatDocumentIf() {
366
400
  return _addNewChatDocumentIfNewDay.apply(this, arguments);
367
401
  };
368
- renderMessageTable = function _renderMessageTable(date, live) {
369
- var scrollBackbutton;
370
- var scrollForwardButton;
371
-
372
- /// ///////////////// Scroll down adding more above
373
- function extendBackwards() {
374
- return _extendBackwards.apply(this, arguments);
375
- }
376
- function _extendBackwards() {
377
- _extendBackwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
378
- var done;
379
- return _regenerator["default"].wrap(function _callee$(_context) {
380
- while (1) switch (_context.prev = _context.next) {
381
- case 0:
382
- _context.next = 2;
383
- return insertPreviousMessages(true);
384
- case 2:
385
- done = _context.sent;
386
- if (done) {
387
- if (scrollBackbutton) {
388
- scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg'); // T
389
- scrollBackbutton.disabled = true;
390
- }
391
- messageTable.initial = true;
392
- } else {
393
- messageTable.extendedBack = true;
394
- }
395
- setScrollBackbuttonIcon();
396
- return _context.abrupt("return", done);
397
- case 6:
398
- case "end":
399
- return _context.stop();
400
- }
401
- }, _callee);
402
- }));
403
- return _extendBackwards.apply(this, arguments);
404
- }
405
- function setScrollBackbuttonIcon() {
406
- if (!scrollBackbutton) {
407
- return;
408
- }
409
- var sense = messageTable.extendedBack ? !newestFirst : newestFirst;
410
- var scrollBackIcon = messageTable.initial ? 'noun_T-Block_1114655_000000.svg' : getScrollbackIcon(sense);
411
- scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollBackIcon);
412
- function getScrollbackIcon(sense) {
413
- return sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
414
- }
415
- }
416
- function scrollBackbuttonHandler(_x8) {
417
- return _scrollBackbuttonHandler.apply(this, arguments);
418
- } /// ////////////// Scroll up adding more below
419
- function _scrollBackbuttonHandler() {
420
- _scrollBackbuttonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_event) {
421
- return _regenerator["default"].wrap(function _callee2$(_context2) {
422
- while (1) switch (_context2.prev = _context2.next) {
423
- case 0:
424
- if (!messageTable.extendedBack) {
425
- _context2.next = 6;
426
- break;
402
+ _renderMessageTable = function _renderMessageTable3() {
403
+ _renderMessageTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(date, live) {
404
+ var scrollBackbutton, scrollForwardButton, extendBackwards, _extendBackwards, setScrollBackbuttonIcon, extendForwards, _extendForwards, setScrollForwardButtonIcon, scrollForwardButtonHandler, _scrollForwardButtonHandler, messageTable, chatDocument, tr, test, titleTR, scrollBackbuttonCell, dateCell, scrollForwardButtonCell, sts, _iterator2, _step2, st;
405
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
406
+ while (1) switch (_context9.prev = _context9.next) {
407
+ case 0:
408
+ _scrollForwardButtonHandler = function _scrollForwardButtonH2() {
409
+ _scrollForwardButtonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(_event) {
410
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
411
+ while (1) switch (_context8.prev = _context8.next) {
412
+ case 0:
413
+ if (!messageTable.extendedForwards) {
414
+ _context8.next = 6;
415
+ break;
416
+ }
417
+ removePreviousMessages(false, messageTable);
418
+ messageTable.extendedForwards = false;
419
+ setScrollForwardButtonIcon();
420
+ _context8.next = 9;
421
+ break;
422
+ case 6:
423
+ _context8.next = 8;
424
+ return extendForwards();
425
+ case 8:
426
+ // async
427
+ latest.messageTable.scrollIntoView(newestFirst);
428
+ case 9:
429
+ case "end":
430
+ return _context8.stop();
431
+ }
432
+ }, _callee8);
433
+ }));
434
+ return _scrollForwardButtonHandler.apply(this, arguments);
435
+ };
436
+ scrollForwardButtonHandler = function _scrollForwardButtonH(_x22) {
437
+ return _scrollForwardButtonHandler.apply(this, arguments);
438
+ };
439
+ setScrollForwardButtonIcon = function _setScrollForwardButt() {
440
+ if (!scrollForwardButton) return;
441
+ var sense = messageTable.extendedForwards ? !newestFirst : newestFirst; // noun_T-Block_1114657_000000.svg
442
+ var scrollForwardIcon = messageTable["final"] ? 'noun_T-Block_1114657_000000.svg' : getScrollForwardButtonIcon(sense);
443
+ scrollForwardButton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollForwardIcon);
444
+ function getScrollForwardButtonIcon(sense) {
445
+ return !sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
427
446
  }
428
- removePreviousMessages(true, messageTable);
429
- messageTable.extendedBack = false;
430
- setScrollBackbuttonIcon();
431
- _context2.next = 8;
432
- break;
433
- case 6:
434
- _context2.next = 8;
435
- return extendBackwards();
436
- case 8:
437
- case "end":
438
- return _context2.stop();
439
- }
440
- }, _callee2);
441
- }));
442
- return _scrollBackbuttonHandler.apply(this, arguments);
443
- }
444
- function extendForwards() {
445
- return _extendForwards.apply(this, arguments);
446
- }
447
- function _extendForwards() {
448
- _extendForwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
449
- var done;
450
- return _regenerator["default"].wrap(function _callee3$(_context3) {
451
- while (1) switch (_context3.prev = _context3.next) {
452
- case 0:
453
- _context3.next = 2;
454
- return insertPreviousMessages(false);
455
- case 2:
456
- done = _context3.sent;
457
- if (done) {
458
- scrollForwardButton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg');
459
- scrollForwardButton.disabled = true;
460
- messageTable["final"] = true;
461
- } else {
462
- messageTable.extendedForwards = true;
447
+ };
448
+ _extendForwards = function _extendForwards3() {
449
+ _extendForwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
450
+ var done;
451
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
452
+ while (1) switch (_context7.prev = _context7.next) {
453
+ case 0:
454
+ _context7.next = 2;
455
+ return insertPreviousMessages(false);
456
+ case 2:
457
+ done = _context7.sent;
458
+ return _context7.abrupt("return", done);
459
+ case 4:
460
+ case "end":
461
+ return _context7.stop();
462
+ }
463
+ }, _callee7);
464
+ }));
465
+ return _extendForwards.apply(this, arguments);
466
+ };
467
+ extendForwards = function _extendForwards2() {
468
+ return _extendForwards.apply(this, arguments);
469
+ };
470
+ setScrollBackbuttonIcon = function _setScrollBackbuttonI() {
471
+ if (!scrollBackbutton) {
472
+ return;
463
473
  }
464
- setScrollForwardButtonIcon();
465
- return _context3.abrupt("return", done);
466
- case 6:
467
- case "end":
468
- return _context3.stop();
469
- }
470
- }, _callee3);
471
- }));
472
- return _extendForwards.apply(this, arguments);
473
- }
474
- function setScrollForwardButtonIcon() {
475
- var sense = messageTable.extendedForwards ? !newestFirst : newestFirst; // noun_T-Block_1114657_000000.svg
476
- var scrollForwardIcon = messageTable["final"] ? 'noun_T-Block_1114657_000000.svg' : getScrollForwardButtonIcon(sense);
477
- scrollForwardButton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollForwardIcon);
478
- function getScrollForwardButtonIcon(sense) {
479
- return !sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
480
- }
481
- }
482
- function scrollForwardButtonHandler(_x9) {
483
- return _scrollForwardButtonHandler.apply(this, arguments);
484
- } /// ///////////////////////
485
- /*
486
- options = options || {}
487
- options.authorDateOnLeft = true
488
- const newestFirst = options.newestFirst === '1' || options.newestFirst === true // hack for now
489
- const channelObject = new ChatChannel(chatChannel, options)
490
- const dateFolder = channelObject.dateFolder
491
- const div = dom.createElement('div')
492
- const statusArea = div.appendChild(dom.createElement('div'))
493
- const userContext = { dom, statusArea, div: statusArea } // logged on state, pointers to user's stuff
494
- */
495
- function _scrollForwardButtonHandler() {
496
- _scrollForwardButtonHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(_event) {
497
- return _regenerator["default"].wrap(function _callee4$(_context4) {
498
- while (1) switch (_context4.prev = _context4.next) {
499
- case 0:
500
- if (!messageTable.extendedForwards) {
501
- _context4.next = 6;
502
- break;
474
+ var sense = messageTable.extendedBack ? !newestFirst : newestFirst;
475
+ var scrollBackIcon = messageTable.initial ? 'noun_T-Block_1114655_000000.svg' : getScrollbackIcon(sense);
476
+ scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + scrollBackIcon);
477
+ function getScrollbackIcon(sense) {
478
+ return sense ? 'noun_1369241.svg' : 'noun_1369237.svg';
503
479
  }
504
- removePreviousMessages(false, messageTable);
505
- messageTable.extendedForwards = false;
506
- setScrollForwardButtonIcon();
507
- _context4.next = 9;
508
- break;
509
- case 6:
510
- _context4.next = 8;
511
- return extendForwards();
512
- case 8:
513
- // async
514
- latest.messageTable.scrollIntoView(newestFirst);
515
- case 9:
516
- case "end":
517
- return _context4.stop();
518
- }
519
- }, _callee4);
520
- }));
521
- return _scrollForwardButtonHandler.apply(this, arguments);
522
- }
523
- var messageTable = dom.createElement('table');
524
- messageTable.extendBackwards = extendBackwards; // Make function available to scroll stuff
525
- messageTable.extendForwards = extendForwards; // Make function available to scroll stuff
526
-
527
- messageTable.date = date;
528
- var chatDocument = dateFolder.leafDocumentFromDate(date);
529
- messageTable.chatDocument = chatDocument;
530
- messageTable.fresh = false;
531
- messageTable.setAttribute('style', 'width: 100%;'); // fill that div!
532
- if (live) {
533
- messageTable["final"] = true;
534
- liveMessageTable = messageTable;
535
- latest.messageTable = messageTable;
536
- var tr = (0, _message.renderMessageEditor)(channelObject, messageTable, userContext, options);
537
- if (newestFirst) {
538
- messageTable.insertBefore(tr, messageTable.firstChild); // If newestFirst
539
- } else {
540
- messageTable.appendChild(tr); // not newestFirst
541
- }
480
+ };
481
+ _extendBackwards = function _extendBackwards3() {
482
+ _extendBackwards = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
483
+ var done;
484
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
485
+ while (1) switch (_context6.prev = _context6.next) {
486
+ case 0:
487
+ _context6.next = 2;
488
+ return insertPreviousMessages(true);
489
+ case 2:
490
+ done = _context6.sent;
491
+ if (done) {
492
+ if (scrollBackbutton) {
493
+ scrollBackbutton.firstChild.setAttribute('src', _iconBase.icons.iconBase + 'noun_T-Block_1114655_000000.svg'); // T
494
+ scrollBackbutton.disabled = true;
495
+ }
496
+ messageTable.initial = true;
497
+ } else {
498
+ messageTable.extendedBack = true;
499
+ }
500
+ setScrollBackbuttonIcon();
501
+ return _context6.abrupt("return", done);
502
+ case 6:
503
+ case "end":
504
+ return _context6.stop();
505
+ }
506
+ }, _callee6);
507
+ }));
508
+ return _extendBackwards.apply(this, arguments);
509
+ };
510
+ extendBackwards = function _extendBackwards2() {
511
+ return _extendBackwards.apply(this, arguments);
512
+ };
513
+ scrollBackbutton = null; // was let
514
+ scrollForwardButton = null; // was let
515
+ /// ///////////////// Scroll down adding more above
516
+ /// ////////////// Scroll up adding more below
517
+ /// ///////////////////////
518
+ /*
519
+ options = options || {}
520
+ options.authorDateOnLeft = true
521
+ const newestFirst = options.newestFirst === '1' || options.newestFirst === true // hack for now
522
+ const channelObject = new ChatChannel(chatChannel, options)
523
+ const dateFolder = channelObject.dateFolder
524
+ const div = dom.createElement('div')
525
+ const statusArea = div.appendChild(dom.createElement('div'))
526
+ const userContext = { dom, statusArea, div: statusArea } // logged on state, pointers to user's stuff
527
+ */
528
+ debug.log('Options for called message Area', options);
529
+ messageTable = dom.createElement('table');
530
+ messageTable.style.width = '100%'; // fill the pane div
531
+ messageTable.extendBackwards = extendBackwards; // Make function available to scroll stuff
532
+ messageTable.extendForwards = extendForwards; // Make function available to scroll stuff
542
533
 
543
- messageTable.inputRow = tr;
544
- }
534
+ messageTable.date = date;
535
+ chatDocument = dateFolder.leafDocumentFromDate(date);
536
+ messageTable.chatDocument = chatDocument;
537
+ messageTable.fresh = false;
538
+ messageTable.setAttribute('style', 'width: 100%;'); // fill that div!
539
+ if (live) {
540
+ messageTable["final"] = true;
541
+ liveMessageTable = messageTable;
542
+ latest.messageTable = messageTable;
543
+ tr = (0, _message.renderMessageEditor)(channelObject, messageTable, userContext, options);
544
+ if (newestFirst) {
545
+ messageTable.insertBefore(tr, messageTable.firstChild); // If newestFirst
546
+ } else {
547
+ messageTable.appendChild(tr); // not newestFirst
548
+ }
545
549
 
546
- /// ///// Infinite scroll
547
- //
548
- // @@ listen for swipe past end event not just button
549
- if (options.infinite) {
550
- var scrollBackbuttonTR = dom.createElement('tr');
551
- var scrollBackbuttonCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
552
- // up traingles: noun_1369237.svg
553
- // down triangles: noun_1369241.svg
554
- var scrollBackIcon = newestFirst ? 'noun_1369241.svg' : 'noun_1369237.svg'; // down and up arrows respoctively
555
- scrollBackbutton = widgets.button(dom, _iconBase.icons.iconBase + scrollBackIcon, 'Previous messages ...');
556
- scrollBackbuttonCell.style = 'width:3em; height:3em;';
557
- scrollBackbutton.addEventListener('click', scrollBackbuttonHandler, false);
558
- messageTable.extendedBack = false;
559
- scrollBackbuttonCell.appendChild(scrollBackbutton);
560
- setScrollBackbuttonIcon();
561
- var dateCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
562
- dateCell.style = 'text-align: center; vertical-align: middle; color: #888; font-style: italic;';
563
- dateCell.textContent = widgets.shortDate(date.toISOString(), true); // no time, only date
550
+ messageTable.inputRow = tr;
551
+ }
564
552
 
565
- // @@@@@@@@@@@ todo move this button to other end of message cell, o
566
- var scrollForwardButtonCell = scrollBackbuttonTR.appendChild(dom.createElement('td'));
567
- var scrollForwardIcon = newestFirst ? 'noun_1369241.svg' : 'noun_1369237.svg'; // down and up arrows respoctively
568
- scrollForwardButton = widgets.button(dom, _iconBase.icons.iconBase + scrollForwardIcon, 'Later messages ...');
569
- scrollForwardButtonCell.appendChild(scrollForwardButton);
570
- scrollForwardButtonCell.style = 'width:3em; height:3em;';
571
- scrollForwardButton.addEventListener('click', scrollForwardButtonHandler, false);
572
- messageTable.extendedForward = false;
573
- setScrollForwardButtonIcon();
574
- messageTable.extendedForwards = false;
575
- if (!newestFirst) {
576
- // opposite end from the entry field
577
- messageTable.insertBefore(scrollBackbuttonTR, messageTable.firstChild); // If not newestFirst
578
- } else {
579
- messageTable.appendChild(scrollBackbuttonTR); // newestFirst
580
- }
581
- }
553
+ /// ///// Infinite scroll
554
+ //
555
+ // @@ listen for swipe past end event not just button
556
+ test = true;
557
+ if (test) {
558
+ // ws options.infinite but need for non-infinite
559
+ titleTR = dom.createElement('tr');
560
+ scrollBackbuttonCell = titleTR.appendChild(dom.createElement('td')); // up traingles: noun_1369237.svg
561
+ // down triangles: noun_1369241.svg
562
+ /*
563
+ const scrollBackIcon = newestFirst
564
+ ? 'noun_1369241.svg'
565
+ : 'noun_1369237.svg' // down and up arrows respoctively
566
+ scrollBackbutton = widgets.button(
567
+ dom,
568
+ icons.iconBase + scrollBackIcon,
569
+ 'Previous messages ...'
570
+ )
571
+ scrollBackbuttonCell.style = 'width:3em; height:3em;'
572
+ scrollBackbutton.addEventListener('click', scrollBackbuttonHandler, false)
573
+ messageTable.extendedBack = false
574
+ scrollBackbuttonCell.appendChild(scrollBackbutton)
575
+ setScrollBackbuttonIcon()
576
+ */
577
+ dateCell = titleTR.appendChild(dom.createElement('td'));
578
+ dateCell.style = 'text-align: center; vertical-align: middle; color: #888; font-style: italic;';
579
+ dateCell.textContent = widgets.shortDate(date.toISOString(), true); // no time, only date
582
580
 
583
- var sts = _solidLogic.store.statementsMatching(null, ns.wf('message'), null, chatDocument);
584
- if (!live && sts.length === 0) {
585
- // not todays
586
- // no need buttomns at the moment
587
- // messageTable.style.visibility = 'collapse' // Hide files with no messages
588
- }
589
- sts.forEach(function (st) {
590
- addMessage(st.object, messageTable);
591
- });
592
- messageTable.fresh = true;
581
+ // @@@@@@@@@@@ todo move this button to other end of message cell, o
582
+ scrollForwardButtonCell = titleTR.appendChild(dom.createElement('td'));
583
+ if (options.includeRemoveButton) {
584
+ scrollForwardButtonCell.appendChild(widgets.cancelButton(dom, function (_e) {
585
+ div.parentNode.removeChild(div);
586
+ }));
587
+ }
588
+ /*
589
+ const scrollForwardIcon = newestFirst
590
+ ? 'noun_1369241.svg'
591
+ : 'noun_1369237.svg' // down and up arrows respoctively
592
+ scrollForwardButton = widgets.button(
593
+ dom,
594
+ icons.iconBase + scrollForwardIcon,
595
+ 'Later messages ...'
596
+ )
597
+ scrollForwardButtonCell.appendChild(scrollForwardButton)
598
+ scrollForwardButtonCell.style = 'width:3em; height:3em;'
599
+ scrollForwardButton.addEventListener(
600
+ 'click',
601
+ scrollForwardButtonHandler,
602
+ false
603
+ )
604
+ messageTable.extendedForward = false
605
+ setScrollForwardButtonIcon()
606
+ */
607
+ messageTable.extendedForwards = false;
608
+ if (!newestFirst) {
609
+ // opposite end from the entry field
610
+ messageTable.insertBefore(titleTR, messageTable.firstChild); // If not newestFirst
611
+ } else {
612
+ messageTable.appendChild(titleTR); // newestFirst
613
+ }
614
+ }
615
+ sts = _solidLogic.store.statementsMatching(null, ns.wf('message'), null, chatDocument);
616
+ if (!live && sts.length === 0) {
617
+ // not todays
618
+ // no need buttomns at the moment
619
+ // messageTable.style.visibility = 'collapse' // Hide files with no messages
620
+ }
621
+ _iterator2 = _createForOfIteratorHelper(sts);
622
+ _context9.prev = 26;
623
+ _iterator2.s();
624
+ case 28:
625
+ if ((_step2 = _iterator2.n()).done) {
626
+ _context9.next = 34;
627
+ break;
628
+ }
629
+ st = _step2.value;
630
+ _context9.next = 32;
631
+ return addMessage(st.object, messageTable);
632
+ case 32:
633
+ _context9.next = 28;
634
+ break;
635
+ case 34:
636
+ _context9.next = 39;
637
+ break;
638
+ case 36:
639
+ _context9.prev = 36;
640
+ _context9.t0 = _context9["catch"](26);
641
+ _iterator2.e(_context9.t0);
642
+ case 39:
643
+ _context9.prev = 39;
644
+ _iterator2.f();
645
+ return _context9.finish(39);
646
+ case 42:
647
+ messageTable.fresh = true;
593
648
 
594
- // loadMessageTable(messageTable, chatDocument)
595
- messageTable.fresh = false;
596
- return messageTable;
649
+ // loadMessageTable(messageTable, chatDocument)
650
+ messageTable.fresh = false;
651
+ return _context9.abrupt("return", messageTable);
652
+ case 45:
653
+ case "end":
654
+ return _context9.stop();
655
+ }
656
+ }, _callee9, null, [[26, 36, 39, 42]]);
657
+ }));
658
+ return _renderMessageTable.apply(this, arguments);
659
+ };
660
+ renderMessageTable = function _renderMessageTable2(_x18, _x19) {
661
+ return _renderMessageTable.apply(this, arguments);
597
662
  };
598
663
  _createMessageTable = function _createMessageTable3() {
599
- _createMessageTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(date, live) {
664
+ _createMessageTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(date, live) {
600
665
  var chatDocument, messageTable, statusTR;
601
- return _regenerator["default"].wrap(function _callee6$(_context6) {
602
- while (1) switch (_context6.prev = _context6.next) {
666
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
667
+ while (1) switch (_context5.prev = _context5.next) {
603
668
  case 0:
604
669
  debug.log(' createMessageTable for ' + date);
605
670
  chatDocument = dateFolder.leafDocumentFromDate(date);
606
- _context6.prev = 2;
607
- _context6.next = 5;
671
+ _context5.prev = 2;
672
+ _context5.next = 5;
608
673
  return _solidLogic.store.fetcher.load(chatDocument);
609
674
  case 5:
610
- _context6.next = 19;
675
+ _context5.next = 21;
611
676
  break;
612
677
  case 7:
613
- _context6.prev = 7;
614
- _context6.t0 = _context6["catch"](2);
678
+ _context5.prev = 7;
679
+ _context5.t0 = _context5["catch"](2);
615
680
  messageTable = dom.createElement('table');
616
681
  statusTR = messageTable.appendChild(dom.createElement('tr')); // ### find status in exception
617
- if (!(_context6.t0.response && _context6.t0.response.status && _context6.t0.response.status === 404)) {
618
- _context6.next = 16;
682
+ if (!(_context5.t0.response && _context5.t0.response.status && _context5.t0.response.status === 404)) {
683
+ _context5.next = 18;
619
684
  break;
620
685
  }
621
686
  debug.log('Error 404 for chat file ' + chatDocument);
622
- return _context6.abrupt("return", renderMessageTable(date, live));
623
- case 16:
624
- debug.log('*** Error NON 404 for chat file ' + chatDocument);
625
- statusTR.appendChild(widgets.errorMessageBlock(dom, _context6.t0, 'pink'));
687
+ _context5.next = 15;
688
+ return renderMessageTable(date, live);
689
+ case 15:
690
+ return _context5.abrupt("return", _context5.sent);
626
691
  case 18:
627
- return _context6.abrupt("return", statusTR);
628
- case 19:
629
- return _context6.abrupt("return", renderMessageTable(date, live));
692
+ debug.log('*** Error NON 404 for chat file ' + chatDocument);
693
+ statusTR.appendChild(widgets.errorMessageBlock(dom, _context5.t0, 'pink'));
630
694
  case 20:
695
+ return _context5.abrupt("return", statusTR);
696
+ case 21:
697
+ _context5.next = 23;
698
+ return renderMessageTable(date, live);
699
+ case 23:
700
+ return _context5.abrupt("return", _context5.sent);
701
+ case 24:
631
702
  case "end":
632
- return _context6.stop();
703
+ return _context5.stop();
633
704
  }
634
- }, _callee6, null, [[2, 7]]);
705
+ }, _callee5, null, [[2, 7]]);
635
706
  }));
636
707
  return _createMessageTable.apply(this, arguments);
637
708
  };
638
- createMessageTable = function _createMessageTable2(_x6, _x7) {
709
+ createMessageTable = function _createMessageTable2(_x16, _x17) {
639
710
  return _createMessageTable.apply(this, arguments);
640
711
  };
641
712
  removePreviousMessages = function _removePreviousMessag(backwards, messageTable) {
@@ -654,32 +725,48 @@ function _infiniteMessageArea() {
654
725
  extr.messageTable = messageTable;
655
726
  };
656
727
  _insertPreviousMessages = function _insertPreviousMessag2() {
657
- _insertPreviousMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(backwards) {
728
+ _insertPreviousMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(backwards) {
658
729
  var extremity, date, live, todayDoc, doc, newMessageTable;
659
- return _regenerator["default"].wrap(function _callee5$(_context5) {
660
- while (1) switch (_context5.prev = _context5.next) {
730
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
731
+ while (1) switch (_context4.prev = _context4.next) {
661
732
  case 0:
662
733
  extremity = backwards ? earliest : latest;
663
734
  date = extremity.messageTable.date; // day in mssecs
664
- _context5.next = 4;
735
+ // Are we at the top of a thread?
736
+ if (!(backwards && earliest.limit && date <= earliest.limit)) {
737
+ _context4.next = 7;
738
+ break;
739
+ }
740
+ if (liveMessageTable) {
741
+ _context4.next = 6;
742
+ break;
743
+ }
744
+ _context4.next = 6;
745
+ return appendCurrentMessages();
746
+ case 6:
747
+ return _context4.abrupt("return", true);
748
+ case 7:
749
+ debug.log(' insertPreviousMessages: loadPrevious given date ' + date);
750
+ _context4.next = 10;
665
751
  return dateFolder.loadPrevious(date, backwards);
666
- case 4:
667
- date = _context5.sent;
752
+ case 10:
753
+ date = _context4.sent;
668
754
  // backwards
755
+ debug.log(' insertPreviousMessages: loadPrevious returns date ' + date);
669
756
  debug.log("insertPreviousMessages: from ".concat(backwards ? 'backwards' : 'forwards', " loadPrevious: ").concat(date));
670
757
  if (!(!date && !backwards && !liveMessageTable)) {
671
- _context5.next = 9;
758
+ _context4.next = 16;
672
759
  break;
673
760
  }
674
- _context5.next = 9;
761
+ _context4.next = 16;
675
762
  return appendCurrentMessages();
676
- case 9:
763
+ case 16:
677
764
  if (date) {
678
- _context5.next = 11;
765
+ _context4.next = 18;
679
766
  break;
680
767
  }
681
- return _context5.abrupt("return", true);
682
- case 11:
768
+ return _context4.abrupt("return", true);
769
+ case 18:
683
770
  // done
684
771
  live = false;
685
772
  if (!backwards) {
@@ -687,10 +774,10 @@ function _infiniteMessageArea() {
687
774
  doc = dateFolder.leafDocumentFromDate(date);
688
775
  live = doc.sameTerm(todayDoc); // Is this todays?
689
776
  }
690
- _context5.next = 15;
777
+ _context4.next = 22;
691
778
  return createMessageTable(date, live);
692
- case 15:
693
- newMessageTable = _context5.sent;
779
+ case 22:
780
+ newMessageTable = _context4.sent;
694
781
  extremity.messageTable = newMessageTable; // move pointer to earliest
695
782
  if (backwards ? newestFirst : !newestFirst) {
696
783
  // put on bottom or top
@@ -699,64 +786,181 @@ function _infiniteMessageArea() {
699
786
  // put on top as we scroll back
700
787
  div.insertBefore(newMessageTable, div.firstChild);
701
788
  }
702
- return _context5.abrupt("return", live);
703
- case 19:
789
+ return _context4.abrupt("return", live);
790
+ case 26:
704
791
  case "end":
705
- return _context5.stop();
792
+ return _context4.stop();
706
793
  }
707
- }, _callee5);
794
+ }, _callee4);
708
795
  }));
709
796
  return _insertPreviousMessages.apply(this, arguments);
710
797
  };
711
- insertPreviousMessages = function _insertPreviousMessag(_x5) {
798
+ insertPreviousMessages = function _insertPreviousMessag(_x15) {
712
799
  return _insertPreviousMessages.apply(this, arguments);
713
800
  };
714
- addMessage = function _addMessage(message, messageTable) {
715
- var latest = (0, _chatLogic.mostRecentVersion)(message);
716
- // const content = store.any(latest, ns.sioc('content'))
717
- if ((0, _chatLogic.isDeleted)(latest) && !options.showDeletedMessages) {
718
- return; // ignore deleted messaged -- @@ could also leave a placeholder
719
- }
720
-
721
- insertMessageIntoTable(channelObject, messageTable, message, messageTable.fresh, options, userContext); // fresh from elsewhere
801
+ _addMessage = function _addMessage3() {
802
+ _addMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(message, messageTable) {
803
+ var thread, id;
804
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
805
+ while (1) switch (_context3.prev = _context3.next) {
806
+ case 0:
807
+ if (!((0, _chatLogic.isDeleted)(message) && !options.showDeletedMessages)) {
808
+ _context3.next = 2;
809
+ break;
810
+ }
811
+ return _context3.abrupt("return");
812
+ case 2:
813
+ /* if (isReplaced(message)) { //
814
+ return // this is old version
815
+ } */
816
+ thread = _solidLogic.store.any(null, ns.sioc('has_member'), message, message.doc());
817
+ id = _solidLogic.store.any(message, ns.sioc('id'), null, message.doc());
818
+ if (id && !thread) {
819
+ thread = _solidLogic.store.any(null, ns.sioc('has_member'), id, message.doc());
820
+ }
821
+ if (!options.thread) {
822
+ _context3.next = 18;
823
+ break;
824
+ }
825
+ if (!_solidLogic.store.holds(message, ns.sioc('has_reply'), options.thread)) {
826
+ _context3.next = 10;
827
+ break;
828
+ }
829
+ // root of thread
830
+ debug.log(' addMessage: displaying root of thread ' + thread);
831
+ _context3.next = 16;
832
+ break;
833
+ case 10:
834
+ if (!(thread && thread.sameTerm(options.thread))) {
835
+ _context3.next = 14;
836
+ break;
837
+ }
838
+ debug.log(' addMessage: Displaying body of thread ' + message.uri.slice(-10));
839
+ _context3.next = 16;
840
+ break;
841
+ case 14:
842
+ debug.log(' addMessage: Suppress non-thread message in thread table ' + message.uri.slice(-10));
843
+ return _context3.abrupt("return");
844
+ case 16:
845
+ _context3.next = 24;
846
+ break;
847
+ case 18:
848
+ if (!thread) {
849
+ _context3.next = 23;
850
+ break;
851
+ }
852
+ debug.log(' addMessage: Suppress thread message in non-thread table ' + message.uri.slice(-10));
853
+ return _context3.abrupt("return");
854
+ case 23:
855
+ debug.log(' addMessage: Normal non-thread message in non-thread table ' + message.uri.slice(-10));
856
+ case 24:
857
+ _context3.next = 26;
858
+ return insertMessageIntoTable(channelObject, messageTable, message, messageTable.fresh, options, userContext);
859
+ case 26:
860
+ case "end":
861
+ return _context3.stop();
862
+ }
863
+ }, _callee3);
864
+ }));
865
+ return _addMessage.apply(this, arguments);
722
866
  };
723
- syncMessages = function _syncMessages(about, messageTable) {
724
- var displayed = {};
725
- var ele, ele2;
726
- for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
727
- if (ele.AJAR_subject) {
728
- displayed[ele.AJAR_subject.uri] = true;
729
- }
730
- }
731
- var messages = _solidLogic.store.statementsMatching(about, ns.wf('message'), null, messageTable.chatDocument).map(function (st) {
732
- return st.object;
733
- });
734
- var stored = {};
735
- messages.forEach(function (m) {
736
- stored[m.uri] = true;
737
- if (!displayed[m.uri]) {
738
- addMessage(m, messageTable);
739
- }
740
- });
741
-
742
- // eslint-disable-next-line space-in-parens
743
- for (ele = messageTable.firstChild; ele;) {
744
- ele2 = ele.nextSibling;
745
- if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {
746
- messageTable.removeChild(ele);
747
- }
748
- ele = ele2;
749
- }
750
- for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
751
- if (ele.AJAR_subject) {
752
- // Refresh thumbs up etc
753
- widgets.refreshTree(ele); // Things inside may have changed too
754
- }
755
- }
867
+ addMessage = function _addMessage2(_x13, _x14) {
868
+ return _addMessage.apply(this, arguments);
756
869
  };
757
-
870
+ _syncMessages = function _syncMessages3() {
871
+ _syncMessages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(chatChannel, messageTable) {
872
+ var displayed, ele, ele2, messages, stored, _iterator, _step, m;
873
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
874
+ while (1) switch (_context2.prev = _context2.next) {
875
+ case 0:
876
+ displayed = {};
877
+ for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
878
+ if (ele.AJAR_subject) {
879
+ displayed[ele.AJAR_subject.uri] = true;
880
+ }
881
+ }
882
+ messages = _solidLogic.store.each(chatChannel, ns.wf('message'), null, messageTable.chatDocument);
883
+ stored = {};
884
+ _iterator = _createForOfIteratorHelper(messages);
885
+ _context2.prev = 5;
886
+ _iterator.s();
887
+ case 7:
888
+ if ((_step = _iterator.n()).done) {
889
+ _context2.next = 15;
890
+ break;
891
+ }
892
+ m = _step.value;
893
+ stored[m.uri] = true;
894
+ if (displayed[m.uri]) {
895
+ _context2.next = 13;
896
+ break;
897
+ }
898
+ _context2.next = 13;
899
+ return addMessage(m, messageTable);
900
+ case 13:
901
+ _context2.next = 7;
902
+ break;
903
+ case 15:
904
+ _context2.next = 20;
905
+ break;
906
+ case 17:
907
+ _context2.prev = 17;
908
+ _context2.t0 = _context2["catch"](5);
909
+ _iterator.e(_context2.t0);
910
+ case 20:
911
+ _context2.prev = 20;
912
+ _iterator.f();
913
+ return _context2.finish(20);
914
+ case 23:
915
+ // eslint-disable-next-line space-in-parens
916
+ for (ele = messageTable.firstChild; ele;) {
917
+ ele2 = ele.nextSibling;
918
+ if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {
919
+ messageTable.removeChild(ele);
920
+ }
921
+ ele = ele2;
922
+ }
923
+ for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
924
+ if (ele.AJAR_subject) {
925
+ // Refresh thumbs up etc
926
+ widgets.refreshTree(ele); // Things inside may have changed too
927
+ }
928
+ }
929
+ case 25:
930
+ case "end":
931
+ return _context2.stop();
932
+ }
933
+ }, _callee2, null, [[5, 17, 20, 23]]);
934
+ }));
935
+ return _syncMessages.apply(this, arguments);
936
+ };
937
+ syncMessages = function _syncMessages2(_x11, _x12) {
938
+ return _syncMessages.apply(this, arguments);
939
+ }; // ///////////////////////////////////////////////////////////////////////
940
+ // syncMessages
941
+ // Called once per original message displayed
942
+ /* Add a new messageTable at the top/bottom
943
+ */
944
+ /* Remove message tables earlier than this one
945
+ */
946
+ /* Load and render message table
947
+ ** @returns DOM element generates
948
+ */
949
+ // renderMessageTable
950
+ /*
951
+ function messageCount () {
952
+ var n = 0
953
+ const tables = div.children
954
+ for (let i = 0; i < tables.length; i++) {
955
+ n += tables[i].children.length - 1
956
+ // debug.log(' table length:' + tables[i].children.length)
957
+ }
958
+ return n
959
+ }
960
+ */
961
+ /* Add the live message block with entry field for today
962
+ */
758
963
  // Body of main function
759
-
760
964
  options = options || {};
761
965
  options.authorDateOnLeft = false; // @@ make a user optiosn
762
966
  newestFirst = options.newestFirst === '1' || options.newestFirst === true; // hack for now
@@ -770,23 +974,33 @@ function _infiniteMessageArea() {
770
974
  statusArea: statusArea,
771
975
  div: statusArea
772
976
  }; // logged on state, pointers to user's stuff
773
- // const messageTable = dom.createElement('table') // @@ check does this go in renderMessageTable
774
977
  earliest = {
775
978
  messageTable: null
776
979
  }; // Stuff about each end of the loaded days
777
980
  latest = {
778
981
  messageTable: null
779
982
  };
983
+ if (options.thread) {
984
+ thread = options.thread;
985
+ threadRootMessage = _solidLogic.store.any(null, ns.sioc('has_reply'), thread, thread.doc());
986
+ if (threadRootMessage) {
987
+ threadTime = _solidLogic.store.any(threadRootMessage, ns.dct('created'), null, threadRootMessage.doc());
988
+ if (threadTime) {
989
+ earliest.limit = new Date(threadTime.value);
990
+ debug.log(' inifinite: thread start at ' + earliest.limit);
991
+ }
992
+ }
993
+ }
780
994
  lock = false;
781
- _context12.next = 30;
995
+ _context15.next = 34;
782
996
  return loadInitialContent();
783
- case 30:
784
- return _context12.abrupt("return", div);
785
- case 31:
997
+ case 34:
998
+ return _context15.abrupt("return", div);
999
+ case 35:
786
1000
  case "end":
787
- return _context12.stop();
1001
+ return _context15.stop();
788
1002
  }
789
- }, _callee12);
1003
+ }, _callee15);
790
1004
  }));
791
1005
  return _infiniteMessageArea.apply(this, arguments);
792
1006
  }