solid-ui 2.4.27-92bc931a → 2.4.27-96e84cf1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/805.solid-ui.min.js +1 -1
- package/dist/805.solid-ui.min.js.map +1 -1
- package/dist/solid-ui.js +5500 -2799
- package/dist/solid-ui.js.map +1 -1
- package/dist/solid-ui.min.js +1 -1
- package/dist/solid-ui.min.js.LICENSE.txt +4 -0
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +1955 -1955
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +1 -1
- package/lib/chat/bookmarks.js +7 -6
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +103 -248
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +126 -129
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +423 -633
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/keys.d.ts +5 -0
- package/lib/chat/keys.d.ts.map +1 -0
- package/lib/chat/keys.js +125 -0
- package/lib/chat/keys.js.map +1 -0
- package/lib/chat/message.js +187 -290
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +277 -463
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/signature.d.ts +27 -0
- package/lib/chat/signature.d.ts.map +1 -0
- package/lib/chat/signature.js +110 -0
- package/lib/chat/signature.js.map +1 -0
- package/lib/chat/thread.js +144 -166
- package/lib/chat/thread.js.map +1 -1
- package/lib/header/index.js +0 -5
- package/lib/header/index.js.map +1 -1
- package/lib/log.js +5 -5
- package/lib/log.js.map +1 -1
- package/lib/login/login.js +1 -24
- package/lib/login/login.js.map +1 -1
- package/lib/pad.js +1 -4
- package/lib/pad.js.map +1 -1
- package/lib/participation.js +1 -2
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +0 -4
- package/lib/preferences.js.map +1 -1
- package/lib/utils/cryptoKeyHelpers.d.ts +5 -0
- package/lib/utils/cryptoKeyHelpers.d.ts.map +1 -0
- package/lib/utils/cryptoKeyHelpers.js +132 -0
- package/lib/utils/cryptoKeyHelpers.js.map +1 -0
- package/lib/utils/headerFooterHelpers.js +0 -2
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/versionInfo.js +2 -2
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons.js +2 -0
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +1 -8
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +3 -8
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +0 -5
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms.js +1 -4
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/peoplePicker.js +0 -11
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/package.json +5 -3
package/lib/chat/message.js
CHANGED
|
@@ -12,7 +12,6 @@ exports.renderMessageEditor = renderMessageEditor;
|
|
|
12
12
|
exports.renderMessageRow = renderMessageRow;
|
|
13
13
|
exports.switchToEditor = switchToEditor;
|
|
14
14
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
15
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
16
|
var _infinite = require("./infinite");
|
|
18
17
|
var _messageTools = require("./messageTools");
|
|
@@ -28,16 +27,13 @@ var pad = _interopRequireWildcard(require("../pad"));
|
|
|
28
27
|
var style = _interopRequireWildcard(require("../style"));
|
|
29
28
|
var utils = _interopRequireWildcard(require("../utils"));
|
|
30
29
|
var widgets = _interopRequireWildcard(require("../widgets"));
|
|
30
|
+
var _signature = require("./signature");
|
|
31
|
+
var _keys = require("./keys");
|
|
31
32
|
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); }
|
|
32
33
|
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; }
|
|
33
|
-
function
|
|
34
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
35
|
-
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; } } }; }
|
|
34
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
36
35
|
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); }
|
|
37
|
-
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; }
|
|
38
|
-
*
|
|
39
|
-
* @packageDocumentation
|
|
40
|
-
*/ /* global $rdf */
|
|
36
|
+
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; }
|
|
41
37
|
var dom = window.document;
|
|
42
38
|
var messageBodyStyle = style.messageBodyStyle;
|
|
43
39
|
var label = utils.label;
|
|
@@ -114,232 +110,147 @@ function creatorAndDateHorizontal(td1, creator, date, message) {
|
|
|
114
110
|
/**
|
|
115
111
|
* Renders a chat message, read-only mode
|
|
116
112
|
*/
|
|
117
|
-
function renderMessageRow(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return fresh ? '#e8ffe8' : 'white';
|
|
128
|
-
};
|
|
129
|
-
colorizeByAuthor = options.colorizeByAuthor === '1' || options.colorizeByAuthor === true;
|
|
130
|
-
creator = _solidLogic.store.any(message, ns.foaf('maker'));
|
|
131
|
-
date = _solidLogic.store.any(message, ns.dct('created'));
|
|
132
|
-
_context10.next = 6;
|
|
133
|
-
return (0, _chatLogic.mostRecentVersion)(message);
|
|
134
|
-
case 6:
|
|
135
|
-
latestVersion = _context10.sent;
|
|
136
|
-
content = _solidLogic.store.any(latestVersion, ns.sioc('content')); // const id = store.any(latestVersion, ns.sioc('id'))
|
|
137
|
-
// const replies = store.each(latestVersion, ns.sioc('has_reply'))
|
|
138
|
-
_context10.next = 10;
|
|
139
|
-
return (0, _chatLogic.allVersions)(message);
|
|
140
|
-
case 10:
|
|
141
|
-
versions = _context10.sent;
|
|
142
|
-
if (versions.length > 1) {
|
|
143
|
-
debug.log('renderMessageRow versions: ', versions.join(', '));
|
|
144
|
-
}
|
|
145
|
-
// be tolerant in accepting replies on any version of a message
|
|
146
|
-
replies = versions.map(function (version) {
|
|
147
|
-
return _solidLogic.store.each(version, ns.sioc('has_reply'));
|
|
148
|
-
}).flat();
|
|
149
|
-
thread = null;
|
|
150
|
-
straightReplies = [];
|
|
151
|
-
_iterator2 = _createForOfIteratorHelper(replies);
|
|
152
|
-
try {
|
|
153
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
154
|
-
reply = _step2.value;
|
|
155
|
-
if (_solidLogic.store.holds(reply, ns.rdf('type'), ns.sioc('Thread'))) {
|
|
156
|
-
thread = reply;
|
|
157
|
-
debug.log('renderMessageRow: found thread: ' + thread);
|
|
158
|
-
} else {
|
|
159
|
-
straightReplies.push(reply);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
} catch (err) {
|
|
163
|
-
_iterator2.e(err);
|
|
164
|
-
} finally {
|
|
165
|
-
_iterator2.f();
|
|
166
|
-
}
|
|
167
|
-
if (straightReplies.length > 1) {
|
|
168
|
-
debug.log('renderMessageRow: found normal replies: ', straightReplies);
|
|
169
|
-
}
|
|
170
|
-
_context10.next = 20;
|
|
171
|
-
return (0, _chatLogic.originalVersion)(message);
|
|
172
|
-
case 20:
|
|
173
|
-
originalMessage = _context10.sent;
|
|
174
|
-
edited = !message.sameTerm(originalMessage); // @@ load it first @@ Or display the new data at the old date.
|
|
175
|
-
// @@@ kludge!
|
|
176
|
-
sortDate = _solidLogic.store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) || _solidLogic.store.the(message, ns.dct('created'), null, message.doc()); // In message
|
|
177
|
-
messageRow = dom.createElement('tr');
|
|
178
|
-
messageRow.AJAR_date = sortDate.value;
|
|
179
|
-
messageRow.AJAR_subject = message;
|
|
180
|
-
td1 = dom.createElement('td');
|
|
181
|
-
messageRow.appendChild(td1);
|
|
182
|
-
if (!options.authorDateOnLeft) {
|
|
183
|
-
img = dom.createElement('img');
|
|
184
|
-
img.setAttribute('style', 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;');
|
|
185
|
-
widgets.setImage(img, creator);
|
|
186
|
-
td1.appendChild(img);
|
|
187
|
-
} else {
|
|
188
|
-
creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message);
|
|
189
|
-
}
|
|
190
|
-
bothDates = widgets.shortDate(sortDate.value);
|
|
191
|
-
if (edited) {
|
|
192
|
-
bothDates += ' ... ' + widgets.shortDate(date.value);
|
|
193
|
-
}
|
|
113
|
+
function renderMessageRow(channelObject, message, fresh, options, userContext) {
|
|
114
|
+
var colorizeByAuthor = options.colorizeByAuthor === '1' || options.colorizeByAuthor === true;
|
|
115
|
+
var creator = _solidLogic.store.any(message, ns.foaf('maker'));
|
|
116
|
+
var date = _solidLogic.store.any(message, ns.dct('created'));
|
|
117
|
+
var latestVersion = (0, _chatLogic.mostRecentVersion)(message);
|
|
118
|
+
var latestVersionCreator = _solidLogic.store.any(latestVersion, ns.foaf('maker'));
|
|
119
|
+
// use latest content if same owner, else use original
|
|
120
|
+
var msgId = creator.uri === latestVersionCreator.uri ? latestVersion : message;
|
|
121
|
+
var content = _solidLogic.store.any(msgId, ns.sioc('content'));
|
|
122
|
+
var signature = _solidLogic.store.any(msgId, $rdf.sym("".concat(_signature.SEC, "Proof")));
|
|
194
123
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
text = content ? content.value.trim() : '??? no content?';
|
|
203
|
-
isURI = /^https?:\/[^ <>]*$/i.test(text);
|
|
204
|
-
para = null;
|
|
205
|
-
if (isURI) {
|
|
206
|
-
isImage = /\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text); // @@ Should use content-type not URI
|
|
207
|
-
if (isImage && options.expandImagesInline) {
|
|
208
|
-
_img = elementForImageURI(text, options);
|
|
209
|
-
td2.appendChild(_img);
|
|
210
|
-
} else {
|
|
211
|
-
// Link but not Image
|
|
212
|
-
anc = td2.appendChild(dom.createElement('a'));
|
|
213
|
-
para = anc.appendChild(dom.createElement('p'));
|
|
214
|
-
anc.href = text;
|
|
215
|
-
para.textContent = text;
|
|
216
|
-
td2.appendChild(anc);
|
|
217
|
-
}
|
|
218
|
-
} else {
|
|
219
|
-
// text
|
|
220
|
-
para = dom.createElement('p');
|
|
221
|
-
td2.appendChild(para);
|
|
222
|
-
para.textContent = text;
|
|
223
|
-
}
|
|
224
|
-
if (para) {
|
|
225
|
-
bgcolor = colorizeByAuthor ? pad.lightColorHash(creator) : getBgColor(fresh);
|
|
226
|
-
para.setAttribute('style', messageBodyStyle + 'background-color: ' + bgcolor + ';');
|
|
227
|
-
}
|
|
228
|
-
_context10.next = 40;
|
|
229
|
-
return (0, _messageTools.sentimentStripLinked)(message, message.doc());
|
|
230
|
-
case 40:
|
|
231
|
-
strip = _context10.sent;
|
|
232
|
-
if (strip.children.length) {
|
|
233
|
-
td2.appendChild(dom.createElement('br'));
|
|
234
|
-
td2.appendChild(strip);
|
|
235
|
-
}
|
|
124
|
+
// verify signature
|
|
125
|
+
var msg = (0, _signature.getBlankMsg)();
|
|
126
|
+
msg.id = msgId.uri;
|
|
127
|
+
msg.created = _solidLogic.store.any(msgId, ns.dct('created')).value;
|
|
128
|
+
msg.content = content.value;
|
|
129
|
+
msg.maker = creator.uri;
|
|
236
130
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
}
|
|
301
|
-
|
|
131
|
+
// unsigned message
|
|
132
|
+
if (signature !== null && signature !== void 0 && signature.value) debug.warn(msgId.uri + ' is unsigned'); // TODO replace with UI (colored message ?)
|
|
133
|
+
// get public key and check signature
|
|
134
|
+
else {
|
|
135
|
+
(0, _keys.getPublicKey)(creator.uri).then(function (publicKey) {
|
|
136
|
+
if (!publicKey) debug.warn('message is signed but ' + creator.uri + ' is missing publicKey');
|
|
137
|
+
// check publicKey is valid hex string
|
|
138
|
+
var regex = /[0-9A-Fa-f]{6}/g;
|
|
139
|
+
if (!(publicKey !== null && publicKey !== void 0 && publicKey.match(regex))) debug.warn('invalid publicKey hex string\n' + creator.uri + '\n' + publicKey);
|
|
140
|
+
// verify signature
|
|
141
|
+
else if (signature !== null && signature !== void 0 && signature.value && !(0, _signature.verifySignature)(signature.value, msg, publicKey)) debug.warn('invalid signature\n' + msg.id);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
var originalMessage = (0, _chatLogic.originalVersion)(message);
|
|
145
|
+
var edited = !message.sameTerm(originalMessage);
|
|
146
|
+
var sortDate = _solidLogic.store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()); // In message
|
|
147
|
+
|
|
148
|
+
var messageRow = dom.createElement('tr');
|
|
149
|
+
messageRow.AJAR_date = sortDate.value;
|
|
150
|
+
messageRow.AJAR_subject = message;
|
|
151
|
+
var td1 = dom.createElement('td');
|
|
152
|
+
messageRow.appendChild(td1);
|
|
153
|
+
if (!options.authorDateOnLeft) {
|
|
154
|
+
var img = dom.createElement('img');
|
|
155
|
+
img.setAttribute('style', 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;');
|
|
156
|
+
widgets.setImage(img, creator);
|
|
157
|
+
td1.appendChild(img);
|
|
158
|
+
} else {
|
|
159
|
+
creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message);
|
|
160
|
+
}
|
|
161
|
+
var bothDates = widgets.shortDate(sortDate.value);
|
|
162
|
+
if (edited) {
|
|
163
|
+
bothDates += ' ... ' + widgets.shortDate(date.value);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Render the content ot the message itself
|
|
167
|
+
var td2 = messageRow.appendChild(dom.createElement('td'));
|
|
168
|
+
if (!options.authorDateOnLeft) {
|
|
169
|
+
creatorAndDateHorizontal(td2, creator, bothDates,
|
|
170
|
+
// widgets.shortDate(dateString)
|
|
171
|
+
message);
|
|
172
|
+
}
|
|
173
|
+
var text = content.value.trim();
|
|
174
|
+
var isURI = /^https?:\/[^ <>]*$/i.test(text);
|
|
175
|
+
var para = null;
|
|
176
|
+
if (isURI) {
|
|
177
|
+
var isImage = /\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text); // @@ Should use content-type not URI
|
|
178
|
+
if (isImage && options.expandImagesInline) {
|
|
179
|
+
var _img = elementForImageURI(text, options);
|
|
180
|
+
td2.appendChild(_img);
|
|
181
|
+
} else {
|
|
182
|
+
// Link but not Image
|
|
183
|
+
var anc = td2.appendChild(dom.createElement('a'));
|
|
184
|
+
para = anc.appendChild(dom.createElement('p'));
|
|
185
|
+
anc.href = text;
|
|
186
|
+
para.textContent = text;
|
|
187
|
+
td2.appendChild(anc);
|
|
188
|
+
}
|
|
189
|
+
} else {
|
|
190
|
+
// text
|
|
191
|
+
para = dom.createElement('p');
|
|
192
|
+
td2.appendChild(para);
|
|
193
|
+
para.textContent = text;
|
|
194
|
+
}
|
|
195
|
+
if (para) {
|
|
196
|
+
var bgcolor = colorizeByAuthor ? pad.lightColorHash(creator) : getBgColor(fresh);
|
|
197
|
+
para.setAttribute('style', messageBodyStyle + 'background-color: ' + bgcolor + ';');
|
|
198
|
+
}
|
|
199
|
+
function getBgColor(fresh) {
|
|
200
|
+
return fresh ? '#e8ffe8' : 'white';
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Sentiment strip
|
|
204
|
+
var strip = (0, _messageTools.sentimentStripLinked)(message, message.doc());
|
|
205
|
+
if (strip.children.length) {
|
|
206
|
+
td2.appendChild(dom.createElement('br'));
|
|
207
|
+
td2.appendChild(strip);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Message tool bar button
|
|
211
|
+
var td3 = dom.createElement('td');
|
|
212
|
+
messageRow.appendChild(td3);
|
|
213
|
+
var toolsButton = widgets.button(dom, _iconBase.icons.iconBase + 'noun_243787.svg', '...');
|
|
214
|
+
td3.appendChild(toolsButton);
|
|
215
|
+
toolsButton.addEventListener('click', function (_event) {
|
|
216
|
+
if (messageRow.toolTR) {
|
|
217
|
+
// already got a toolbar? Toogle
|
|
218
|
+
messageRow.parentNode.removeChild(messageRow.toolTR);
|
|
219
|
+
delete messageRow.toolTR;
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
var toolsTR = dom.createElement('tr');
|
|
223
|
+
var tools = (0, _messageTools.messageToolbar)(message, messageRow, userContext, channelObject);
|
|
224
|
+
tools.style = 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;'; // @@ fix
|
|
225
|
+
if (messageRow.nextSibling) {
|
|
226
|
+
messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling);
|
|
227
|
+
} else {
|
|
228
|
+
messageRow.parentElement.appendChild(toolsTR);
|
|
229
|
+
}
|
|
230
|
+
messageRow.toolTR = toolsTR;
|
|
231
|
+
toolsTR.appendChild(dom.createElement('td')); // left
|
|
232
|
+
var toolsTD = toolsTR.appendChild(dom.createElement('td'));
|
|
233
|
+
toolsTR.appendChild(dom.createElement('td')); // right
|
|
234
|
+
toolsTD.appendChild(tools);
|
|
235
|
+
});
|
|
236
|
+
return messageRow;
|
|
302
237
|
}
|
|
303
|
-
function switchToEditor(
|
|
304
|
-
|
|
238
|
+
function switchToEditor(messageRow, message, channelObject, userContext) {
|
|
239
|
+
var messageTable = messageRow.parentNode;
|
|
240
|
+
var editRow = renderMessageEditor(channelObject, messageTable, userContext, channelObject.options, (0, _chatLogic.mostRecentVersion)(message));
|
|
241
|
+
messageTable.insertBefore(editRow, messageRow);
|
|
242
|
+
editRow.originalRow = messageRow;
|
|
243
|
+
messageRow.style.visibility = 'hidden'; // Hide the original message. unhide if user cancels edit
|
|
305
244
|
}
|
|
306
245
|
/* Control for a new message -- or editing an old message ***************
|
|
307
246
|
*
|
|
308
247
|
*/
|
|
309
|
-
function _switchToEditor() {
|
|
310
|
-
_switchToEditor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(messageRow, message, channelObject, userContext) {
|
|
311
|
-
var messageTable, editRow;
|
|
312
|
-
return _regenerator["default"].wrap(function _callee10$(_context11) {
|
|
313
|
-
while (1) switch (_context11.prev = _context11.next) {
|
|
314
|
-
case 0:
|
|
315
|
-
messageTable = messageRow.parentNode;
|
|
316
|
-
_context11.t0 = renderMessageEditor;
|
|
317
|
-
_context11.t1 = channelObject;
|
|
318
|
-
_context11.t2 = messageTable;
|
|
319
|
-
_context11.t3 = userContext;
|
|
320
|
-
_context11.t4 = channelObject.options;
|
|
321
|
-
_context11.next = 8;
|
|
322
|
-
return (0, _chatLogic.mostRecentVersion)(message);
|
|
323
|
-
case 8:
|
|
324
|
-
_context11.t5 = _context11.sent;
|
|
325
|
-
editRow = (0, _context11.t0)(_context11.t1, _context11.t2, _context11.t3, _context11.t4, _context11.t5);
|
|
326
|
-
messageTable.insertBefore(editRow, messageRow);
|
|
327
|
-
editRow.originalRow = messageRow;
|
|
328
|
-
messageRow.style.visibility = 'hidden'; // Hide the original message. unhide if user cancels edit
|
|
329
|
-
case 13:
|
|
330
|
-
case "end":
|
|
331
|
-
return _context11.stop();
|
|
332
|
-
}
|
|
333
|
-
}, _callee10);
|
|
334
|
-
}));
|
|
335
|
-
return _switchToEditor.apply(this, arguments);
|
|
336
|
-
}
|
|
337
248
|
function renderMessageEditor(channelObject, messageTable, userContext, options, originalMessage) {
|
|
338
249
|
function revertEditing(messageEditor) {
|
|
339
250
|
messageEditor.originalRow.style.visibility = 'visible'; // restore read-only version
|
|
340
251
|
messageEditor.parentNode.removeChild(messageEditor);
|
|
341
252
|
}
|
|
342
|
-
function handleFieldInput(
|
|
253
|
+
function handleFieldInput(_x) {
|
|
343
254
|
return _handleFieldInput.apply(this, arguments);
|
|
344
255
|
}
|
|
345
256
|
function _handleFieldInput() {
|
|
@@ -357,86 +268,72 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
|
|
|
357
268
|
}));
|
|
358
269
|
return _handleFieldInput.apply(this, arguments);
|
|
359
270
|
}
|
|
360
|
-
function sendMessage(
|
|
271
|
+
function sendMessage(_x2, _x3) {
|
|
361
272
|
return _sendMessage.apply(this, arguments);
|
|
362
273
|
} // sendMessage
|
|
363
274
|
// DRAG AND DROP
|
|
364
275
|
function _sendMessage() {
|
|
365
|
-
_sendMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
366
|
-
var sendComplete,
|
|
367
|
-
return _regenerator["default"].wrap(function
|
|
368
|
-
while (1) switch (
|
|
276
|
+
_sendMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(text, fromMainField) {
|
|
277
|
+
var sendComplete, message, statusArea;
|
|
278
|
+
return _regenerator["default"].wrap(function _callee6$(_context7) {
|
|
279
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
369
280
|
case 0:
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
while (1) switch (_context7.prev = _context7.next) {
|
|
375
|
-
case 0:
|
|
376
|
-
_context7.next = 2;
|
|
377
|
-
return (0, _infinite.insertMessageIntoTable)(channelObject, messageTable, message, false, options, userContext);
|
|
378
|
-
case 2:
|
|
379
|
-
// not green
|
|
281
|
+
sendComplete = function _sendComplete(message, _text2) {
|
|
282
|
+
// const dateStamp = store.any(message, ns.dct('created'), null, message.doc())
|
|
283
|
+
// const content = $rdf.literal(text2)
|
|
284
|
+
(0, _infinite.insertMessageIntoTable)(channelObject, messageTable, message, false, options, userContext); // not green
|
|
380
285
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
286
|
+
if (originalMessage) {
|
|
287
|
+
// editing another message
|
|
288
|
+
var oldRow = messageEditor.originalRow;
|
|
289
|
+
// oldRow.style.display = '' // restore read-only version, re-attack
|
|
290
|
+
if (oldRow.parentNode) {
|
|
291
|
+
oldRow.parentNode.removeChild(oldRow); // No longer needed old version
|
|
292
|
+
} else {
|
|
293
|
+
debug.warn('No parentNode on old message ' + oldRow.textContent);
|
|
294
|
+
oldRow.style.backgroundColor = '#fee';
|
|
295
|
+
oldRow.style.visibility = 'hidden'; // @@ FIX THIS AND REMOVE FROM DOM INSTEAD
|
|
296
|
+
}
|
|
391
297
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
case 3:
|
|
405
|
-
case "end":
|
|
406
|
-
return _context7.stop();
|
|
407
|
-
}
|
|
408
|
-
}, _callee6);
|
|
409
|
-
}));
|
|
410
|
-
return _sendComplete.apply(this, arguments);
|
|
298
|
+
messageEditor.parentNode.removeChild(messageEditor); // no longer need editor
|
|
299
|
+
} else {
|
|
300
|
+
if (fromMainField) {
|
|
301
|
+
field.value = ''; // clear from out for reuse
|
|
302
|
+
field.setAttribute('style', messageBodyStyle);
|
|
303
|
+
field.disabled = false;
|
|
304
|
+
field.scrollIntoView(options.newestFirst); // allign bottom (top)
|
|
305
|
+
field.focus(); // Start typing next line immediately
|
|
306
|
+
field.select();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// await channelObject.div.refresh() // Add new day if nec @@ add back
|
|
411
310
|
};
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
}; // const me = authn.currentUser() // Must be logged on or wuld have got login button
|
|
311
|
+
|
|
312
|
+
// const me = authn.currentUser() // Must be logged on or wuld have got login button
|
|
415
313
|
if (fromMainField) {
|
|
416
314
|
field.setAttribute('style', messageBodyStyle + 'color: #bbb;'); // pendingedit
|
|
417
315
|
field.disabled = true;
|
|
418
316
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
return channelObject.updateMessage(text, originalMessage
|
|
422
|
-
case
|
|
423
|
-
message =
|
|
424
|
-
|
|
317
|
+
_context7.prev = 2;
|
|
318
|
+
_context7.next = 5;
|
|
319
|
+
return channelObject.updateMessage(text, originalMessage);
|
|
320
|
+
case 5:
|
|
321
|
+
message = _context7.sent;
|
|
322
|
+
_context7.next = 13;
|
|
425
323
|
break;
|
|
426
|
-
case
|
|
427
|
-
|
|
428
|
-
|
|
324
|
+
case 8:
|
|
325
|
+
_context7.prev = 8;
|
|
326
|
+
_context7.t0 = _context7["catch"](2);
|
|
429
327
|
statusArea = userContext.statusArea || messageEditor;
|
|
430
|
-
statusArea.appendChild(widgets.errorMessageBlock(dom, 'Error writing message: ' +
|
|
431
|
-
return
|
|
328
|
+
statusArea.appendChild(widgets.errorMessageBlock(dom, 'Error writing message: ' + _context7.t0));
|
|
329
|
+
return _context7.abrupt("return");
|
|
330
|
+
case 13:
|
|
331
|
+
sendComplete(message, text);
|
|
432
332
|
case 14:
|
|
433
|
-
_context8.next = 16;
|
|
434
|
-
return sendComplete(message, text);
|
|
435
|
-
case 16:
|
|
436
333
|
case "end":
|
|
437
|
-
return
|
|
334
|
+
return _context7.stop();
|
|
438
335
|
}
|
|
439
|
-
},
|
|
336
|
+
}, _callee6, null, [[2, 8]]);
|
|
440
337
|
}));
|
|
441
338
|
return _sendMessage.apply(this, arguments);
|
|
442
339
|
}
|
|
@@ -455,7 +352,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
|
|
|
455
352
|
}
|
|
456
353
|
}, _callee);
|
|
457
354
|
}));
|
|
458
|
-
return function (
|
|
355
|
+
return function (_x4, _x5) {
|
|
459
356
|
return _ref.apply(this, arguments);
|
|
460
357
|
};
|
|
461
358
|
}());
|
|
@@ -499,7 +396,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
|
|
|
499
396
|
}
|
|
500
397
|
}, _callee2, null, [[1, 11, 14, 17]]);
|
|
501
398
|
}));
|
|
502
|
-
return function droppedURIHandler(
|
|
399
|
+
return function droppedURIHandler(_x6) {
|
|
503
400
|
return _ref2.apply(this, arguments);
|
|
504
401
|
};
|
|
505
402
|
}();
|
|
@@ -510,7 +407,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
|
|
|
510
407
|
imageDoc = $rdf.sym(chatDocument.dir().uri + 'Image_' + Date.now() + '.png');
|
|
511
408
|
return imageDoc;
|
|
512
409
|
}
|
|
513
|
-
function tookPicture(
|
|
410
|
+
function tookPicture(_x7) {
|
|
514
411
|
return _tookPicture.apply(this, arguments);
|
|
515
412
|
} // Body of turnOnInput
|
|
516
413
|
function _tookPicture() {
|
|
@@ -587,7 +484,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
|
|
|
587
484
|
}
|
|
588
485
|
}, _callee3);
|
|
589
486
|
}));
|
|
590
|
-
return function (
|
|
487
|
+
return function (_x8) {
|
|
591
488
|
return _ref3.apply(this, arguments);
|
|
592
489
|
};
|
|
593
490
|
}(), false);
|
|
@@ -649,7 +546,7 @@ function renderMessageEditor(channelObject, messageTable, userContext, options,
|
|
|
649
546
|
turnOnInput();
|
|
650
547
|
Object.assign(context, userContext);
|
|
651
548
|
(0, _bookmarks.findBookmarkDocument)(context).then(function (_context) {
|
|
652
|
-
//
|
|
549
|
+
// console.log('Bookmark file: ' + context.bookmarkDocument)
|
|
653
550
|
});
|
|
654
551
|
});
|
|
655
552
|
return messageEditor;
|