chat-pane 2.4.15 → 2.4.16

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/lib/create.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
@@ -10,6 +10,8 @@ exports.getChat = getChat;
10
10
 
11
11
  var _solidUi = require("solid-ui");
12
12
 
13
+ var _solidLogic = require("solid-logic");
14
+
13
15
  var _rdflib = require("rdflib");
14
16
 
15
17
  var _longChatPane = _interopRequireWildcard(require("./longChatPane"));
@@ -33,7 +35,7 @@ function _getMe() {
33
35
  while (1) {
34
36
  switch (_context.prev = _context.next) {
35
37
  case 0:
36
- me = _solidUi.authn.currentUser();
38
+ me = _solidLogic.authn.currentUser();
37
39
 
38
40
  if (!(me === null)) {
39
41
  _context.next = 3;
@@ -44,7 +46,7 @@ function _getMe() {
44
46
 
45
47
  case 3:
46
48
  _context.next = 5;
47
- return _solidUi.store.fetcher.load(me.doc());
49
+ return _solidLogic.store.fetcher.load(me.doc());
48
50
 
49
51
  case 5:
50
52
  return _context.abrupt("return", me);
@@ -70,7 +72,7 @@ function _getPodRoot() {
70
72
  while (1) {
71
73
  switch (_context2.prev = _context2.next) {
72
74
  case 0:
73
- podRoot = _solidUi.store.any(me, _solidUi.ns.space('storage'), undefined, me.doc());
75
+ podRoot = _solidLogic.store.any(me, _solidUi.ns.space('storage'), undefined, me.doc());
74
76
 
75
77
  if (podRoot) {
76
78
  _context2.next = 3;
@@ -104,10 +106,10 @@ function _sendInvite() {
104
106
  switch (_context3.prev = _context3.next) {
105
107
  case 0:
106
108
  _context3.next = 2;
107
- return _solidUi.store.fetcher.load(invitee.doc());
109
+ return _solidLogic.store.fetcher.load(invitee.doc());
108
110
 
109
111
  case 2:
110
- inviteeInbox = _solidUi.store.any(invitee, _solidUi.ns.ldp('inbox'), undefined, invitee.doc());
112
+ inviteeInbox = _solidLogic.store.any(invitee, _solidUi.ns.ldp('inbox'), undefined, invitee.doc());
111
113
 
112
114
  if (inviteeInbox) {
113
115
  _context3.next = 5;
@@ -119,7 +121,7 @@ function _sendInvite() {
119
121
  case 5:
120
122
  inviteBody = "\n<> a <http://www.w3.org/ns/pim/meeting#LongChatInvite> ;\n".concat(_solidUi.ns.rdf('seeAlso'), " <").concat(chatThing.value, "> . \n ");
121
123
  _context3.next = 8;
122
- return _solidUi.store.fetcher.webOperation('POST', inviteeInbox.value, {
124
+ return _solidLogic.store.fetcher.webOperation('POST', inviteeInbox.value, {
123
125
  data: inviteBody,
124
126
  contentType: 'text/turtle'
125
127
  });
@@ -166,7 +168,7 @@ function _createChatThing() {
166
168
  _context4.next = 2;
167
169
  return _longChatPane["default"].mintNew({
168
170
  session: {
169
- store: _solidUi.store
171
+ store: _solidLogic.store
170
172
  }
171
173
  }, {
172
174
  me: me,
@@ -199,11 +201,11 @@ function _setAcl() {
199
201
  switch (_context5.prev = _context5.next) {
200
202
  case 0:
201
203
  _context5.next = 2;
202
- return _solidUi.store.fetcher.load(chatContainer);
204
+ return _solidLogic.store.fetcher.load(chatContainer);
203
205
 
204
206
  case 2:
205
207
  // FIXME: check the Why value on this quad:
206
- chatAclDoc = _solidUi.store.any(chatContainer, new _rdflib.NamedNode('http://www.iana.org/assignments/link-relations/acl'));
208
+ chatAclDoc = _solidLogic.store.any(chatContainer, new _rdflib.NamedNode('http://www.iana.org/assignments/link-relations/acl'));
207
209
 
208
210
  if (chatAclDoc) {
209
211
  _context5.next = 5;
@@ -215,7 +217,7 @@ function _setAcl() {
215
217
  case 5:
216
218
  aclBody = "\n@prefix acl: <http://www.w3.org/ns/auth/acl#>.\n<#owner>\n a acl:Authorization;\n acl:agent <".concat(me.value, ">;\n acl:accessTo <.>;\n acl:default <.>;\n acl:mode\n acl:Read, acl:Write, acl:Control.\n<#invitee>\n a acl:Authorization;\n acl:agent <").concat(invitee.value, ">;\n acl:accessTo <.>;\n acl:default <.>;\n acl:mode\n acl:Read, acl:Append.\n");
217
219
  _context5.next = 8;
218
- return _solidUi.store.fetcher.webOperation('PUT', chatAclDoc.value, {
220
+ return _solidLogic.store.fetcher.webOperation('PUT', chatAclDoc.value, {
219
221
  data: aclBody,
220
222
  contentType: 'text/turtle'
221
223
  });
@@ -245,7 +247,7 @@ function _addToPrivateTypeIndex() {
245
247
  switch (_context6.prev = _context6.next) {
246
248
  case 0:
247
249
  // Add to private type index
248
- privateTypeIndex = _solidUi.store.any(me, _solidUi.ns.solid('privateTypeIndex'));
250
+ privateTypeIndex = _solidLogic.store.any(me, _solidUi.ns.solid('privateTypeIndex'));
249
251
 
250
252
  if (privateTypeIndex) {
251
253
  _context6.next = 3;
@@ -256,14 +258,14 @@ function _addToPrivateTypeIndex() {
256
258
 
257
259
  case 3:
258
260
  _context6.next = 5;
259
- return _solidUi.store.fetcher.load(privateTypeIndex);
261
+ return _solidLogic.store.fetcher.load(privateTypeIndex);
260
262
 
261
263
  case 5:
262
264
  reg = _solidUi.widgets.newThing(privateTypeIndex);
263
265
  ins = [(0, _rdflib.st)(reg, _solidUi.ns.rdf('type'), _solidUi.ns.solid('TypeRegistration'), privateTypeIndex.doc()), (0, _rdflib.st)(reg, _solidUi.ns.solid('forClass'), _solidUi.ns.meeting('LongChat'), privateTypeIndex.doc()), (0, _rdflib.st)(reg, _solidUi.ns.solid('instance'), chatThing, privateTypeIndex.doc())];
264
266
  _context6.next = 9;
265
267
  return new Promise(function (resolve, reject) {
266
- _solidUi.store.updater.update([], ins, function (_uri, ok, errm) {
268
+ _solidLogic.store.updater.update([], ins, function (_uri, ok, errm) {
267
269
  if (!ok) {
268
270
  reject(new Error(errm));
269
271
  } else {
@@ -307,7 +309,7 @@ function _findChat() {
307
309
  exists = true;
308
310
  _context7.prev = 8;
309
311
  _context7.next = 11;
310
- return _solidUi.store.fetcher.load(new _rdflib.NamedNode(chatContainer.value + _longChatPane.CHAT_LOCATION_IN_CONTAINER));
312
+ return _solidLogic.store.fetcher.load(new _rdflib.NamedNode(chatContainer.value + _longChatPane.CHAT_LOCATION_IN_CONTAINER));
311
313
 
312
314
  case 11:
313
315
  _context7.next = 16;
package/lib/create.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/create.ts"],"names":["getMe","me","authn","currentUser","Error","store","fetcher","load","doc","getPodRoot","podRoot","any","ns","space","undefined","sendInvite","invitee","chatThing","inviteeInbox","ldp","value","inviteBody","rdf","webOperation","data","contentType","inviteResponse","locationStr","headers","get","status","determineChatContainer","chatContainerStr","URL","host","toString","NamedNode","createChatThing","chatContainer","longChatPane","mintNew","session","newBase","created","newInstance","setAcl","chatAclDoc","aclBody","aclResponse","addToPrivateTypeIndex","privateTypeIndex","solid","reg","widgets","newThing","ins","meeting","Promise","resolve","reject","updater","update","_uri","ok","errm","findChat","exists","CHAT_LOCATION_IN_CONTAINER","getChat","createIfMissing"],"mappings":"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","sourcesContent":["import { authn, store, ns, widgets } from 'solid-ui'\nimport { NamedNode, st } from 'rdflib'\nimport longChatPane, { CHAT_LOCATION_IN_CONTAINER } from './longChatPane'\n\nasync function getMe () {\n const me = authn.currentUser()\n if (me === null) {\n throw new Error('Current user not found! Not logged in?')\n }\n await store.fetcher.load(me.doc())\n return me\n}\n\nasync function getPodRoot (me): Promise<NamedNode> {\n const podRoot = store.any(me, ns.space('storage'), undefined, me.doc())\n if (!podRoot) {\n throw new Error('Current user pod root not found!')\n }\n return podRoot\n}\n\nasync function sendInvite (invitee: NamedNode, chatThing: NamedNode) {\n await store.fetcher.load(invitee.doc())\n const inviteeInbox = store.any(invitee, ns.ldp('inbox'), undefined, invitee.doc())\n if (!inviteeInbox) {\n throw new Error(`Invitee inbox not found! ${invitee.value}`)\n }\n const inviteBody = `\n<> a <http://www.w3.org/ns/pim/meeting#LongChatInvite> ;\n${ns.rdf('seeAlso')} <${chatThing.value}> . \n `\n \n const inviteResponse = await store.fetcher.webOperation('POST', inviteeInbox.value, {\n data: inviteBody,\n contentType: 'text/turtle'\n })\n const locationStr = inviteResponse.headers.get('location')\n if (!locationStr) {\n throw new Error(`Invite sending returned a ${inviteResponse.status}`)\n }\n}\n\nfunction determineChatContainer (invitee, podRoot) {\n // Create chat\n // See https://gitter.im/solid/chat-app?at=5f3c800f855be416a23ae74a\n const chatContainerStr = new URL(`IndividualChats/${new URL(invitee.value).host}/`, podRoot.value).toString()\n return new NamedNode(chatContainerStr)\n}\n\nasync function createChatThing (chatContainer, me) {\n const created = await longChatPane.mintNew({\n session: {\n store\n }\n },\n {\n me,\n newBase: chatContainer.value\n })\n return created.newInstance\n}\n\nasync function setAcl(chatContainer, me, invitee) {\n // Some servers don't present a Link http response header\n // if the container doesn't exist yet, so refetch the container\n // now that it has been created:\n await store.fetcher.load(chatContainer)\n\n // FIXME: check the Why value on this quad:\n const chatAclDoc = store.any(chatContainer, new NamedNode('http://www.iana.org/assignments/link-relations/acl'))\n if (!chatAclDoc) {\n throw new Error('Chat ACL doc not found!')\n }\n\n const aclBody = `\n@prefix acl: <http://www.w3.org/ns/auth/acl#>.\n<#owner>\n a acl:Authorization;\n acl:agent <${me.value}>;\n acl:accessTo <.>;\n acl:default <.>;\n acl:mode\n acl:Read, acl:Write, acl:Control.\n<#invitee>\n a acl:Authorization;\n acl:agent <${invitee.value}>;\n acl:accessTo <.>;\n acl:default <.>;\n acl:mode\n acl:Read, acl:Append.\n`\n const aclResponse = await store.fetcher.webOperation('PUT', chatAclDoc.value, {\n data: aclBody,\n contentType: 'text/turtle'\n })\n}\nasync function addToPrivateTypeIndex(chatThing, me) {\n // Add to private type index\n const privateTypeIndex = store.any(me, ns.solid('privateTypeIndex')) as NamedNode | null\n if (!privateTypeIndex) {\n throw new Error('Private type index not found!')\n }\n await store.fetcher.load(privateTypeIndex)\n const reg = widgets.newThing(privateTypeIndex)\n const ins = [\n st(reg, ns.rdf('type'), ns.solid('TypeRegistration'), privateTypeIndex.doc()),\n st(reg, ns.solid('forClass'), ns.meeting('LongChat'), privateTypeIndex.doc()),\n st(reg, ns.solid('instance'), chatThing, privateTypeIndex.doc())\n ]\n await new Promise((resolve, reject) => {\n store.updater.update([], ins, function (_uri, ok, errm) {\n if (!ok) {\n reject(new Error(errm))\n } else {\n resolve()\n }\n })\n })\n}\n\nexport async function findChat (invitee: NamedNode) {\n const me = await getMe()\n const podRoot = await getPodRoot(me)\n const chatContainer = determineChatContainer(invitee, podRoot)\n let exists = true\n try {\n await store.fetcher.load(new NamedNode(chatContainer.value + CHAT_LOCATION_IN_CONTAINER))\n } catch (e) {\n exists = false\n }\n return { me, chatContainer, exists}\n}\n\nexport async function getChat (invitee: NamedNode, createIfMissing = true): Promise<NamedNode> {\n const { me, chatContainer, exists } = await findChat (invitee)\n if (exists) {\n return new NamedNode(chatContainer.value + CHAT_LOCATION_IN_CONTAINER)\n }\n\n if (createIfMissing) {\n const chatThing = await createChatThing(chatContainer, me)\n await sendInvite(invitee, chatThing)\n await setAcl(chatContainer, me, invitee)\n await addToPrivateTypeIndex(chatThing, me)\n return chatThing\n }\n}\n"],"file":"create.js"}
1
+ {"version":3,"sources":["../src/create.ts"],"names":["getMe","me","authn","currentUser","Error","store","fetcher","load","doc","getPodRoot","podRoot","any","ns","space","undefined","sendInvite","invitee","chatThing","inviteeInbox","ldp","value","inviteBody","rdf","webOperation","data","contentType","inviteResponse","locationStr","headers","get","status","determineChatContainer","chatContainerStr","URL","host","toString","NamedNode","createChatThing","chatContainer","longChatPane","mintNew","session","newBase","created","newInstance","setAcl","chatAclDoc","aclBody","aclResponse","addToPrivateTypeIndex","privateTypeIndex","solid","reg","widgets","newThing","ins","meeting","Promise","resolve","reject","updater","update","_uri","ok","errm","findChat","exists","CHAT_LOCATION_IN_CONTAINER","getChat","createIfMissing"],"mappings":"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","sourcesContent":["import { ns, widgets } from 'solid-ui'\nimport { authn, store } from 'solid-logic'\nimport { NamedNode, st } from 'rdflib'\nimport longChatPane, { CHAT_LOCATION_IN_CONTAINER } from './longChatPane'\n\nasync function getMe () {\n const me = authn.currentUser()\n if (me === null) {\n throw new Error('Current user not found! Not logged in?')\n }\n await store.fetcher.load(me.doc())\n return me\n}\n\nasync function getPodRoot (me): Promise<NamedNode> {\n const podRoot = store.any(me, ns.space('storage'), undefined, me.doc())\n if (!podRoot) {\n throw new Error('Current user pod root not found!')\n }\n return podRoot\n}\n\nasync function sendInvite (invitee: NamedNode, chatThing: NamedNode) {\n await store.fetcher.load(invitee.doc())\n const inviteeInbox = store.any(invitee, ns.ldp('inbox'), undefined, invitee.doc())\n if (!inviteeInbox) {\n throw new Error(`Invitee inbox not found! ${invitee.value}`)\n }\n const inviteBody = `\n<> a <http://www.w3.org/ns/pim/meeting#LongChatInvite> ;\n${ns.rdf('seeAlso')} <${chatThing.value}> . \n `\n \n const inviteResponse = await store.fetcher.webOperation('POST', inviteeInbox.value, {\n data: inviteBody,\n contentType: 'text/turtle'\n })\n const locationStr = inviteResponse.headers.get('location')\n if (!locationStr) {\n throw new Error(`Invite sending returned a ${inviteResponse.status}`)\n }\n}\n\nfunction determineChatContainer (invitee, podRoot) {\n // Create chat\n // See https://gitter.im/solid/chat-app?at=5f3c800f855be416a23ae74a\n const chatContainerStr = new URL(`IndividualChats/${new URL(invitee.value).host}/`, podRoot.value).toString()\n return new NamedNode(chatContainerStr)\n}\n\nasync function createChatThing (chatContainer, me) {\n const created = await longChatPane.mintNew({\n session: {\n store\n }\n },\n {\n me,\n newBase: chatContainer.value\n })\n return created.newInstance\n}\n\nasync function setAcl(chatContainer, me, invitee) {\n // Some servers don't present a Link http response header\n // if the container doesn't exist yet, so refetch the container\n // now that it has been created:\n await store.fetcher.load(chatContainer)\n\n // FIXME: check the Why value on this quad:\n const chatAclDoc = store.any(chatContainer, new NamedNode('http://www.iana.org/assignments/link-relations/acl'))\n if (!chatAclDoc) {\n throw new Error('Chat ACL doc not found!')\n }\n\n const aclBody = `\n@prefix acl: <http://www.w3.org/ns/auth/acl#>.\n<#owner>\n a acl:Authorization;\n acl:agent <${me.value}>;\n acl:accessTo <.>;\n acl:default <.>;\n acl:mode\n acl:Read, acl:Write, acl:Control.\n<#invitee>\n a acl:Authorization;\n acl:agent <${invitee.value}>;\n acl:accessTo <.>;\n acl:default <.>;\n acl:mode\n acl:Read, acl:Append.\n`\n const aclResponse = await store.fetcher.webOperation('PUT', chatAclDoc.value, {\n data: aclBody,\n contentType: 'text/turtle'\n })\n}\nasync function addToPrivateTypeIndex(chatThing, me) {\n // Add to private type index\n const privateTypeIndex = store.any(me, ns.solid('privateTypeIndex')) as NamedNode | null\n if (!privateTypeIndex) {\n throw new Error('Private type index not found!')\n }\n await store.fetcher.load(privateTypeIndex)\n const reg = widgets.newThing(privateTypeIndex)\n const ins = [\n st(reg, ns.rdf('type'), ns.solid('TypeRegistration'), privateTypeIndex.doc()),\n st(reg, ns.solid('forClass'), ns.meeting('LongChat'), privateTypeIndex.doc()),\n st(reg, ns.solid('instance'), chatThing, privateTypeIndex.doc())\n ]\n await new Promise((resolve, reject) => {\n store.updater.update([], ins, function (_uri, ok, errm) {\n if (!ok) {\n reject(new Error(errm))\n } else {\n resolve()\n }\n })\n })\n}\n\nexport async function findChat (invitee: NamedNode) {\n const me = await getMe()\n const podRoot = await getPodRoot(me)\n const chatContainer = determineChatContainer(invitee, podRoot)\n let exists = true\n try {\n await store.fetcher.load(new NamedNode(chatContainer.value + CHAT_LOCATION_IN_CONTAINER))\n } catch (e) {\n exists = false\n }\n return { me, chatContainer, exists}\n}\n\nexport async function getChat (invitee: NamedNode, createIfMissing = true): Promise<NamedNode> {\n const { me, chatContainer, exists } = await findChat (invitee)\n if (exists) {\n return new NamedNode(chatContainer.value + CHAT_LOCATION_IN_CONTAINER)\n }\n\n if (createIfMissing) {\n const chatThing = await createChatThing(chatContainer, me)\n await sendInvite(invitee, chatThing)\n await setAcl(chatContainer, me, invitee)\n await addToPrivateTypeIndex(chatThing, me)\n return chatThing\n }\n}\n"],"file":"create.js"}
package/lib/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _solidLogic = require("solid-logic");
4
+
3
5
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
6
 
5
7
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
6
8
 
7
- /* global SolidAuthClient */
8
9
  var ChatPane = require('./longChatPane.js');
9
10
 
10
11
  var $rdf = require('rdflib');
@@ -64,7 +65,7 @@ window.followLink = /*#__PURE__*/function () {
64
65
  doc = subject.doc();
65
66
  _context.next = 4;
66
67
  return new Promise(function (resolve, reject) {
67
- UI.store.fetcher.load(doc).then(resolve, reject);
68
+ _solidLogic.store.fetcher.load(doc).then(resolve, reject);
68
69
  });
69
70
 
70
71
  case 4:
@@ -75,12 +76,12 @@ window.followLink = /*#__PURE__*/function () {
75
76
  break;
76
77
  }
77
78
 
78
- return _context.abrupt("return", UI.store.each(subject, predicate).map(function (n) {
79
+ return _context.abrupt("return", _solidLogic.store.each(subject, predicate).map(function (n) {
79
80
  return n.value;
80
81
  }));
81
82
 
82
83
  case 7:
83
- return _context.abrupt("return", UI.store.any(subject, predicate).value);
84
+ return _context.abrupt("return", _solidLogic.store.any(subject, predicate).value);
84
85
 
85
86
  case 8:
86
87
  case "end":
@@ -105,18 +106,18 @@ function getChatsList() {
105
106
 
106
107
  function _getChatsList() {
107
108
  _getChatsList = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {
108
- var _yield$UI$authn$findA, instances;
109
+ var _yield$UI$login$findA, instances;
109
110
 
110
111
  return regeneratorRuntime.wrap(function _callee5$(_context5) {
111
112
  while (1) {
112
113
  switch (_context5.prev = _context5.next) {
113
114
  case 0:
114
115
  _context5.next = 2;
115
- return UI.authn.findAppInstances({}, $rdf.sym('http://www.w3.org/ns/pim/meeting#LongChat'));
116
+ return UI.login.findAppInstances({}, $rdf.sym('http://www.w3.org/ns/pim/meeting#LongChat'));
116
117
 
117
118
  case 2:
118
- _yield$UI$authn$findA = _context5.sent;
119
- instances = _yield$UI$authn$findA.instances;
119
+ _yield$UI$login$findA = _context5.sent;
120
+ instances = _yield$UI$login$findA.instances;
120
121
  return _context5.abrupt("return", "<h2>Your chats:\n<ul>\n ".concat(instances.map(function (n) {
121
122
  return n.value;
122
123
  }).map(toLi), "\n</ul>"));
@@ -137,7 +138,7 @@ window.inviteSomeone = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorR
137
138
  while (1) {
138
139
  switch (_context2.prev = _context2.next) {
139
140
  case 0:
140
- invitee = UI.store.namedNode(document.getElementById('invitee').value);
141
+ invitee = _solidLogic.store.namedNode(document.getElementById('invitee').value);
141
142
  _context2.next = 3;
142
143
  return getChat(invitee);
143
144
 
@@ -261,7 +262,7 @@ function _appendChatPane() {
261
262
  doc = subject.doc();
262
263
  _context8.next = 4;
263
264
  return new Promise(function (resolve, reject) {
264
- UI.store.fetcher.load(doc).then(resolve, reject);
265
+ _solidLogic.store.fetcher.load(doc).then(resolve, reject);
265
266
  });
266
267
 
267
268
  case 4:
@@ -269,7 +270,7 @@ function _appendChatPane() {
269
270
  // see https://github.com/solid/solid-panes/blob/005f90295d83e499fd626bd84aeb3df10135d5c1/src/index.ts#L30-L34
270
271
  dom: dom,
271
272
  session: {
272
- store: UI.store
273
+ store: _solidLogic.store
273
274
  }
274
275
  };
275
276
  options = {};
@@ -295,7 +296,7 @@ window.onload = function () {
295
296
  console.log('document ready');
296
297
 
297
298
  var onSessionChange = function onSessionChange() {
298
- var currentUser = UI.authn.currentUser();
299
+ var currentUser = _solidLogic.authn.currentUser();
299
300
 
300
301
  if (!currentUser) {
301
302
  console.log('The user is not logged in');
@@ -314,17 +315,20 @@ window.onload = function () {
314
315
  }
315
316
  };
316
317
 
317
- UI.authn.authSession.onLogin(function () {
318
+ _solidLogic.authSession.onLogin(function () {
318
319
  return onSessionChange();
319
320
  });
320
- UI.authn.authSession.onSessionRestore(function () {
321
+
322
+ _solidLogic.authSession.onSessionRestore(function () {
321
323
  return onSessionChange();
322
324
  });
325
+
323
326
  onSessionChange();
324
327
  };
325
328
 
326
329
  window.logout = function () {
327
- UI.authn.authSession.logout();
330
+ _solidLogic.authSession.logout();
331
+
328
332
  window.location = '';
329
333
  };
330
334
 
@@ -333,8 +337,8 @@ window.popupLogin = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRunt
333
337
  while (1) {
334
338
  switch (_context3.prev = _context3.next) {
335
339
  case 0:
336
- if (!UI.authn.currentUser()) {
337
- UI.authn.renderSignInPopup(document);
340
+ if (!_solidLogic.authn.currentUser()) {
341
+ UI.login.renderSignInPopup(document);
338
342
  }
339
343
 
340
344
  case 1:
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["ChatPane","require","$rdf","UI","getChat","menuDiv","document","createElement","renderMenuDiv","console","log","getInvitesList","innerHTML","getChatsList","window","followLink","from","follow","multiple","subject","sym","doc","Promise","resolve","reject","store","fetcher","load","then","predicate","each","map","n","value","any","toLi","uri","encodeURIComponent","authn","findAppInstances","instances","inviteSomeone","invitee","namedNode","getElementById","created","SolidAuthClient","currentSession","webId","ns","ldp","globalInbox","inboxItems","invites","promises","x","rdf","inboxMsgTypes","isLongChatInvite","indexOf","chatUrl","push","error","all","appendChatPane","dom","context","session","options","body","appendChild","paneDiv","render","addEventListener","onload","onSessionChange","currentUser","decodeURIComponent","location","hash","substr","length","authSession","onLogin","onSessionRestore","logout","popupLogin","renderSignInPopup"],"mappings":"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","sourcesContent":["/* global SolidAuthClient */\n\nconst ChatPane = require('./longChatPane.js')\nconst $rdf = require('rdflib')\nconst UI = require('solid-ui')\nconst { getChat } = require('./create.ts')\n\nconst menuDiv = document.createElement('div')\n\nasync function renderMenuDiv () {\n console.log('get invites list')\n menuDiv.innerHTML = await getInvitesList()\n console.log('get chats list')\n menuDiv.innerHTML += await getChatsList()\n}\n// FIXME:\nwindow.$rdf = $rdf\nwindow.followLink = async function (from, follow, multiple) {\n const subject = $rdf.sym(from)\n const doc = subject.doc()\n await new Promise((resolve, reject) => {\n UI.store.fetcher.load(doc).then(resolve, reject)\n })\n const predicate = $rdf.sym(follow)\n if (multiple) {\n return UI.store.each(subject, predicate).map(n => n.value)\n }\n return UI.store.any(subject, predicate).value\n}\n\nfunction toLi (uri) {\n return `<li><a href=\"?#${encodeURIComponent(uri)}\">${uri}</a></li>`\n}\n\nasync function getChatsList () {\n const { instances } = await UI.authn.findAppInstances({}, $rdf.sym('http://www.w3.org/ns/pim/meeting#LongChat'))\n return `<h2>Your chats:\n<ul>\n ${instances.map(n => n.value).map(toLi)}\n</ul>`\n}\n\nwindow.inviteSomeone = async function () {\n const invitee = UI.store.namedNode(document.getElementById('invitee').value)\n const created = await getChat(invitee)\n console.log(created)\n renderMenuDiv()\n}\n\nasync function getInvitesList () {\n const webId = (await SolidAuthClient.currentSession()).webId\n const globalInbox = await window.followLink(webId, UI.ns.ldp('inbox'))\n const inboxItems = await window.followLink(globalInbox, UI.ns.ldp('contains'), true)\n const invites = []\n const promises = inboxItems.map(async x => {\n try {\n const inboxMsgTypes = await window.followLink(x, UI.ns.rdf('type'), true)\n const isLongChatInvite = (inboxMsgTypes.indexOf('http://www.w3.org/ns/pim/meeting#LongChatInvite') !== -1)\n if (isLongChatInvite) {\n console.log('new chat!', x)\n const chatUrl = await window.followLink(x, UI.ns.rdf('seeAlso'))\n invites.push(chatUrl)\n }\n } catch (e) {\n console.error('Failed to parse inbox item', x)\n }\n })\n await Promise.all(promises)\n return `<h2>Your Invites:\n <ul>\n ${invites.map(toLi)}\n </ul>\n Invite someone: <input id=\"invitee\"><button onclick=\"inviteSomeone()\">Send Invite</button>`\n}\n\nasync function appendChatPane (dom, uri) {\n const subject = $rdf.sym(uri)\n const doc = subject.doc()\n\n await new Promise((resolve, reject) => {\n UI.store.fetcher.load(doc).then(resolve, reject)\n })\n const context = { // see https://github.com/solid/solid-panes/blob/005f90295d83e499fd626bd84aeb3df10135d5c1/src/index.ts#L30-L34\n dom,\n session: {\n store: UI.store\n }\n }\n const options = {}\n renderMenuDiv()\n dom.body.appendChild(menuDiv)\n console.log('chat', subject)\n const paneDiv = ChatPane.render(subject, context, options)\n dom.body.appendChild(paneDiv)\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n})\n\nwindow.onload = () => {\n console.log('document ready')\n const onSessionChange = () => {\n const currentUser = UI.authn.currentUser()\n if (!currentUser) {\n console.log('The user is not logged in')\n document.getElementById('loginBanner').innerHTML = '<button onclick=\"popupLogin()\">Log in</button>'\n } else {\n console.log(`Logged in as ${currentUser}`)\n\n document.getElementById('loginBanner').innerHTML = `Logged in as ${currentUser} <button onclick=\"logout()\">Log out</button>`\n // Set up the view for the subject indicated in the fragment of the window's URL\n const uri = decodeURIComponent(window.location.hash.substr(1))\n if (uri.length === 0) {\n window.location = '?#' + encodeURIComponent('https://solidos.solidcommunity.net/Team/SolidOs%20team%20chat/index.ttl#this')\n }\n appendChatPane(document, uri)\n }\n }\n UI.authn.authSession.onLogin(() => onSessionChange())\n UI.authn.authSession.onSessionRestore(() => onSessionChange())\n onSessionChange()\n}\nwindow.logout = () => {\n UI.authn.authSession.logout()\n window.location = ''\n}\nwindow.popupLogin = async function () {\n if (!UI.authn.currentUser()) {\n UI.authn.renderSignInPopup(document)\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["ChatPane","require","$rdf","UI","getChat","menuDiv","document","createElement","renderMenuDiv","console","log","getInvitesList","innerHTML","getChatsList","window","followLink","from","follow","multiple","subject","sym","doc","Promise","resolve","reject","store","fetcher","load","then","predicate","each","map","n","value","any","toLi","uri","encodeURIComponent","login","findAppInstances","instances","inviteSomeone","invitee","namedNode","getElementById","created","SolidAuthClient","currentSession","webId","ns","ldp","globalInbox","inboxItems","invites","promises","x","rdf","inboxMsgTypes","isLongChatInvite","indexOf","chatUrl","push","error","all","appendChatPane","dom","context","session","options","body","appendChild","paneDiv","render","addEventListener","onload","onSessionChange","currentUser","authn","decodeURIComponent","location","hash","substr","length","authSession","onLogin","onSessionRestore","logout","popupLogin","renderSignInPopup"],"mappings":"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","sourcesContent":["/* global SolidAuthClient */\n\nimport { store, authn, authSession } from 'solid-logic'\nconst ChatPane = require('./longChatPane.js')\nconst $rdf = require('rdflib')\nconst UI = require('solid-ui')\nconst { getChat } = require('./create.ts')\n\nconst menuDiv = document.createElement('div')\n\nasync function renderMenuDiv () {\n console.log('get invites list')\n menuDiv.innerHTML = await getInvitesList()\n console.log('get chats list')\n menuDiv.innerHTML += await getChatsList()\n}\n// FIXME:\nwindow.$rdf = $rdf\nwindow.followLink = async function (from, follow, multiple) {\n const subject = $rdf.sym(from)\n const doc = subject.doc()\n await new Promise((resolve, reject) => {\n store.fetcher.load(doc).then(resolve, reject)\n })\n const predicate = $rdf.sym(follow)\n if (multiple) {\n return store.each(subject, predicate).map(n => n.value)\n }\n return store.any(subject, predicate).value\n}\n\nfunction toLi (uri) {\n return `<li><a href=\"?#${encodeURIComponent(uri)}\">${uri}</a></li>`\n}\n\nasync function getChatsList () {\n const { instances } = await UI.login.findAppInstances({}, $rdf.sym('http://www.w3.org/ns/pim/meeting#LongChat'))\n return `<h2>Your chats:\n<ul>\n ${instances.map(n => n.value).map(toLi)}\n</ul>`\n}\n\nwindow.inviteSomeone = async function () {\n const invitee = store.namedNode(document.getElementById('invitee').value)\n const created = await getChat(invitee)\n console.log(created)\n renderMenuDiv()\n}\n\nasync function getInvitesList () {\n const webId = (await SolidAuthClient.currentSession()).webId\n const globalInbox = await window.followLink(webId, UI.ns.ldp('inbox'))\n const inboxItems = await window.followLink(globalInbox, UI.ns.ldp('contains'), true)\n const invites = []\n const promises = inboxItems.map(async x => {\n try {\n const inboxMsgTypes = await window.followLink(x, UI.ns.rdf('type'), true)\n const isLongChatInvite = (inboxMsgTypes.indexOf('http://www.w3.org/ns/pim/meeting#LongChatInvite') !== -1)\n if (isLongChatInvite) {\n console.log('new chat!', x)\n const chatUrl = await window.followLink(x, UI.ns.rdf('seeAlso'))\n invites.push(chatUrl)\n }\n } catch (e) {\n console.error('Failed to parse inbox item', x)\n }\n })\n await Promise.all(promises)\n return `<h2>Your Invites:\n <ul>\n ${invites.map(toLi)}\n </ul>\n Invite someone: <input id=\"invitee\"><button onclick=\"inviteSomeone()\">Send Invite</button>`\n}\n\nasync function appendChatPane (dom, uri) {\n const subject = $rdf.sym(uri)\n const doc = subject.doc()\n\n await new Promise((resolve, reject) => {\n store.fetcher.load(doc).then(resolve, reject)\n })\n const context = { // see https://github.com/solid/solid-panes/blob/005f90295d83e499fd626bd84aeb3df10135d5c1/src/index.ts#L30-L34\n dom,\n session: {\n store: store\n }\n }\n const options = {}\n renderMenuDiv()\n dom.body.appendChild(menuDiv)\n console.log('chat', subject)\n const paneDiv = ChatPane.render(subject, context, options)\n dom.body.appendChild(paneDiv)\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n})\n\nwindow.onload = () => {\n console.log('document ready')\n const onSessionChange = () => {\n const currentUser = authn.currentUser()\n if (!currentUser) {\n console.log('The user is not logged in')\n document.getElementById('loginBanner').innerHTML = '<button onclick=\"popupLogin()\">Log in</button>'\n } else {\n console.log(`Logged in as ${currentUser}`)\n\n document.getElementById('loginBanner').innerHTML = `Logged in as ${currentUser} <button onclick=\"logout()\">Log out</button>`\n // Set up the view for the subject indicated in the fragment of the window's URL\n const uri = decodeURIComponent(window.location.hash.substr(1))\n if (uri.length === 0) {\n window.location = '?#' + encodeURIComponent('https://solidos.solidcommunity.net/Team/SolidOs%20team%20chat/index.ttl#this')\n }\n appendChatPane(document, uri)\n }\n }\n authSession.onLogin(() => onSessionChange())\n authSession.onSessionRestore(() => onSessionChange())\n onSessionChange()\n}\nwindow.logout = () => {\n authSession.logout()\n window.location = ''\n}\nwindow.popupLogin = async function () {\n if (!authn.currentUser()) {\n UI.login.renderSignInPopup(document)\n }\n}\n"],"file":"index.js"}
@@ -1,13 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _solidLogic = require("solid-logic");
4
+
3
5
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
6
 
5
7
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
6
8
 
7
- /* Long Chat Pane
8
- **
9
- ** A long chat consists a of a series of chat files saved by date.
10
- */
11
9
  var UI = require('solid-ui');
12
10
 
13
11
  var ns = UI.ns;
@@ -124,7 +122,7 @@ module.exports = {
124
122
  menuTable = preferencesArea.appendChild(dom.createElement('table'));
125
123
  registrationArea = menuTable.appendChild(dom.createElement('tr'));
126
124
  statusArea = menuTable.appendChild(dom.createElement('tr'));
127
- me = UI.authn.currentUser();
125
+ me = _solidLogic.authn.currentUser();
128
126
 
129
127
  if (!me) {
130
128
  _context.next = 15;
@@ -132,7 +130,7 @@ module.exports = {
132
130
  }
133
131
 
134
132
  _context.next = 13;
135
- return UI.authn.registrationControl({
133
+ return UI.login.registrationControl({
136
134
  noun: noun,
137
135
  me: me,
138
136
  statusArea: statusArea,
@@ -228,7 +226,9 @@ module.exports = {
228
226
 
229
227
  function renderCreationControl(refreshTarget, noun) {
230
228
  var creationDiv = dom.createElement('div');
231
- var me = UI.authn.currentUser();
229
+
230
+ var me = _solidLogic.authn.currentUser();
231
+
232
232
  var creationContext = {
233
233
  // folder: subject,
234
234
  div: creationDiv,
@@ -263,7 +263,7 @@ module.exports = {
263
263
  noun: noun
264
264
  };
265
265
  _context3.next = 4;
266
- return UI.authn.registrationList(context, {
266
+ return UI.login.registrationList(context, {
267
267
  "public": true,
268
268
  "private": true,
269
269
  type: theClass
@@ -349,7 +349,8 @@ module.exports = {
349
349
  participantsArea.style.maxHeight = triptychHeight;
350
350
  participantsArea.appendChild(panelCloseButton(participantsArea)); // Record my participation and display participants
351
351
 
352
- var me = UI.authn.currentUser();
352
+ var me = _solidLogic.authn.currentUser();
353
+
353
354
  if (!me) alert('Should be logeed in for partipants panel');
354
355
  UI.pad.manageParticipation(dom, participantsArea, chatChannel.doc(), chatChannel, me, {});
355
356
  } // Toggle appearance in sidebar with clicks
@@ -427,7 +428,7 @@ module.exports = {
427
428
  div: div,
428
429
  dom: dom
429
430
  };
430
- participantsHandlerContext.me = UI.authn.currentUser(); // If already logged on
431
+ participantsHandlerContext.me = _solidLogic.authn.currentUser(); // If already logged on
431
432
 
432
433
  function buildPane() {
433
434
  return _buildPane.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/longChatPane.js"],"names":["UI","require","ns","$rdf","mainClass","meeting","CHAT_LOCATION_IN_CONTAINER","SPANNER_ICON","SIDEBAR_COMPONENT_STYLE","style","sidebarComponentStyle","SIDEBAR_STYLE","sidebarStyle","module","exports","icon","icons","iconBase","name","label","subject","context","kb","session","store","holds","rdf","any","sioc","dct","mintClass","mintNew","newPaneOptions","updater","me","uri","Error","newInstance","sym","newBase","newChatDoc","doc","add","dc","Date","Promise","resolve","reject","put","statementsMatching","undefined","uri2","ok","message","render","paneOptions","dom","preferencesFormText","preferencesForm","preferencesFormDoc","parse","preferenceProperties","ui","property","map","st","object","renderPreferencesSidebar","noun","preferencesArea","createElement","appendChild","panelCloseButton","minWidth","maxHeight","triptychHeight","menuTable","registrationArea","statusArea","authn","currentUser","registrationControl","div","chatChannel","console","log","preferences","renderPreferencesForm","panel","removePanel","parentNode","removeChild","button","widgets","margin","backgroundColor","preferencesButtonPressed","_event","paneRight","contains","renderCreationControl","refreshTarget","creationDiv","creationContext","chatPane","paneRegistry","byName","relevantPanes","create","newThingUI","renderInstances","theClass","instancesDiv","registrationList","type","otherChatsArea","otherChatsHandler","paneLeft","participantsArea","participantsHandler","alert","pad","manageParticipation","selectedMessage","wf","triptych","paneRow","paneMiddle","paneBottom","paddingRight","paddingLeft","buttonCell","participantsIcon","participantsButton","addEventListener","otherChatsIcon","otherChatsButton","menuButton","setAttribute","options","infinite","participantsHandlerContext","buildPane","getPreferencesForClass","prefMap","complain","propuri","split","solo","infiniteMessageArea","chatControl","resize","overflow","then"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAEA,IAAMA,EAAE,GAAGC,OAAO,CAAC,UAAD,CAAlB;;AACA,IAAMC,EAAE,GAAGF,EAAE,CAACE,EAAd;;AACA,IAAMC,IAAI,GAAGF,OAAO,CAAC,QAAD,CAApB;;AAEA,IAAMG,SAAS,GAAGF,EAAE,CAACG,OAAH,CAAW,UAAX,CAAlB,C,CAAyC;;AAEzC,IAAMC,0BAA0B,GAAG,gBAAnC,C,CAEA;;AACA,IAAMC,YAAY,GAAG,iBAArB,C,CACA;;AACA,IAAMC,uBAAuB,GAAGR,EAAE,CAACS,KAAH,CAASC,qBAAT,IAAkC,+BAAlE;AACA,IAAMC,aAAa,GAAGX,EAAE,CAACS,KAAH,CAASG,YAAT,IAAyB,oFAA/C,C,CACA;;AACAC,MAAM,CAACC,OAAP,GAAiB;AACfR,EAAAA,0BAA0B,EAA1BA,0BADe;AAGf;AACAS,EAAAA,IAAI,EAAEf,EAAE,CAACgB,KAAH,CAASC,QAAT,GAAoB,kBAJX;AAMfC,EAAAA,IAAI,EAAE,WANS;AAQfC,EAAAA,KAAK,EAAE,eAAUC,OAAV,EAAmBC,OAAnB,EAA4B;AACjC,QAAMC,EAAE,GAAGD,OAAO,CAACE,OAAR,CAAgBC,KAA3B;;AACA,QAAIF,EAAE,CAACG,KAAH,CAASL,OAAT,EAAkBlB,EAAE,CAACwB,GAAH,CAAO,MAAP,CAAlB,EAAkCxB,EAAE,CAACG,OAAH,CAAW,UAAX,CAAlC,CAAJ,EAA+D;AAC7D;AACA,aAAO,eAAP;AACD,KALgC,CAK/B;;;AACF,QACEiB,EAAE,CAACK,GAAH,CAAOP,OAAP,EAAgBlB,EAAE,CAAC0B,IAAH,CAAQ,SAAR,CAAhB,KACAN,EAAE,CAACK,GAAH,CAAOP,OAAP,EAAgBlB,EAAE,CAAC2B,GAAH,CAAO,SAAP,CAAhB,CAFF,EAGE;AACA,aAAO,SAAP;AACD;;AACD,WAAO,IAAP,CAZiC,CAYrB;AACb,GArBc;AAuBfC,EAAAA,SAAS,EAAE1B,SAvBI;AAyBf2B,EAAAA,OAAO,EAAE,iBAAUV,OAAV,EAAmBW,cAAnB,EAAmC;AAC1C,QAAMV,EAAE,GAAGD,OAAO,CAACE,OAAR,CAAgBC,KAA3B;AACA,QAAIS,OAAO,GAAGX,EAAE,CAACW,OAAjB;;AACA,QAAID,cAAc,CAACE,EAAf,IAAqB,CAACF,cAAc,CAACE,EAAf,CAAkBC,GAA5C,EAAiD;AAC/C,YAAM,IAAIC,KAAJ,CAAU,mCAAmCJ,cAAc,CAACE,EAA5D,CAAN;AACD;;AAED,QAAIG,WAAW,GAAIL,cAAc,CAACK,WAAf,GACjBL,cAAc,CAACK,WAAf,IACAf,EAAE,CAACgB,GAAH,CAAON,cAAc,CAACO,OAAf,GAAyBjC,0BAAhC,CAFF;AAGA,QAAIkC,UAAU,GAAGH,WAAW,CAACI,GAAZ,EAAjB;AAEAnB,IAAAA,EAAE,CAACoB,GAAH,CAAOL,WAAP,EAAoBnC,EAAE,CAACwB,GAAH,CAAO,MAAP,CAApB,EAAoCxB,EAAE,CAACG,OAAH,CAAW,UAAX,CAApC,EAA4DmC,UAA5D;AACAlB,IAAAA,EAAE,CAACoB,GAAH,CAAOL,WAAP,EAAoBnC,EAAE,CAACyC,EAAH,CAAM,OAAN,CAApB,EAAoC,cAApC,EAAoDH,UAApD;AACAlB,IAAAA,EAAE,CAACoB,GAAH,CAAOL,WAAP,EAAoBnC,EAAE,CAACyC,EAAH,CAAM,SAAN,CAApB,EAAsC,IAAIC,IAAJ,EAAtC,EAAkDJ,UAAlD;;AACA,QAAIR,cAAc,CAACE,EAAnB,EAAuB;AACrBZ,MAAAA,EAAE,CAACoB,GAAH,CAAOL,WAAP,EAAoBnC,EAAE,CAACyC,EAAH,CAAM,QAAN,CAApB,EAAqCX,cAAc,CAACE,EAApD,EAAwDM,UAAxD;AACD;;AAED,WAAO,IAAIK,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;AAC5Cd,MAAAA,OAAO,CAACe,GAAR,CACER,UADF,EAEElB,EAAE,CAAC2B,kBAAH,CAAsBC,SAAtB,EAAiCA,SAAjC,EAA4CA,SAA5C,EAAuDV,UAAvD,CAFF,EAGE,aAHF,EAIE,UAAUW,IAAV,EAAgBC,EAAhB,EAAoBC,OAApB,EAA6B;AAC3B,YAAID,EAAJ,EAAQ;AACNN,UAAAA,OAAO,CAACd,cAAD,CAAP;AACD,SAFD,MAEO;AACLe,UAAAA,MAAM,CACJ,IAAIX,KAAJ,CACE,yCAAyCe,IAAzC,GAAgD,KAAhD,GAAwDE,OAD1D,CADI,CAAN;AAKD;AACF,OAdH;AAgBD,KAjBM,CAAP;AAkBD,GA9Dc;AAgEfC,EAAAA,MAAM,EAAE,gBAAUlC,OAAV,EAAmBC,OAAnB,EAA4BkC,WAA5B,EAAyC;AAC/C,QAAMC,GAAG,GAAGnC,OAAO,CAACmC,GAApB;AACA,QAAMlC,EAAE,GAAGD,OAAO,CAACE,OAAR,CAAgBC,KAA3B;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACI;;AACA,QAAMiC,mBAAmB,i3CAAzB;AAiCA,QAAMC,eAAe,GAAGpC,EAAE,CAACgB,GAAH,CACtB,2EADsB,CAAxB;AAGA,QAAMqB,kBAAkB,GAAGD,eAAe,CAACjB,GAAhB,EAA3B;;AACA,QAAI,CAACnB,EAAE,CAACG,KAAH,CAASyB,SAAT,EAAoBA,SAApB,EAA+BA,SAA/B,EAA0CS,kBAA1C,CAAL,EAAoE;AAClE;AACAxD,MAAAA,IAAI,CAACyD,KAAL,CAAWH,mBAAX,EAAgCnC,EAAhC,EAAoCqC,kBAAkB,CAACxB,GAAvD,EAA4D,aAA5D,EAFkE,CAES;AAC5E;;AACD,QAAM0B,oBAAoB,GAAGvC,EAAE,CAC5B2B,kBAD0B,CACP,IADO,EACD/C,EAAE,CAAC4D,EAAH,CAAMC,QADL,EACe,IADf,EACqBJ,kBADrB,EAE1BK,GAF0B,CAEtB,UAAAC,EAAE;AAAA,aAAIA,EAAE,CAACC,MAAP;AAAA,KAFoB,CAA7B,CAtD+C,CA0D/C;AACA;AACA;;AA5D+C,aA8DhCC,wBA9DgC;AAAA;AAAA,MAsG/C;;;AAtG+C;AAAA,0FA8D/C,iBAAyC9C,OAAzC;AAAA;AAAA;AAAA;AAAA;AAAA;AACE;AACQmC,gBAAAA,GAFV,GAEwBnC,OAFxB,CAEUmC,GAFV,EAEeY,IAFf,GAEwB/C,OAFxB,CAEe+C,IAFf;AAGQC,gBAAAA,eAHR,GAG0Bb,GAAG,CAACc,aAAJ,CAAkB,KAAlB,CAH1B;AAIED,gBAAAA,eAAe,CAACE,WAAhB,CAA4BC,gBAAgB,CAACH,eAAD,CAA5C,EAJF,CAKE;;AACAA,gBAAAA,eAAe,CAAC5D,KAAhB,GAAwBD,uBAAxB;AACA6D,gBAAAA,eAAe,CAAC5D,KAAhB,CAAsBgE,QAAtB,GAAiC,MAAjC,CAPF,CAO0C;;AACxCJ,gBAAAA,eAAe,CAAC5D,KAAhB,CAAsBiE,SAAtB,GAAkCC,cAAlC;AACMC,gBAAAA,SATR,GASoBP,eAAe,CAACE,WAAhB,CAA4Bf,GAAG,CAACc,aAAJ,CAAkB,OAAlB,CAA5B,CATpB;AAUQO,gBAAAA,gBAVR,GAU2BD,SAAS,CAACL,WAAV,CAAsBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAtB,CAV3B;AAWQQ,gBAAAA,UAXR,GAWqBF,SAAS,CAACL,WAAV,CAAsBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAtB,CAXrB;AAaMpC,gBAAAA,EAbN,GAaWlC,EAAE,CAAC+E,KAAH,CAASC,WAAT,EAbX;;AAAA,qBAcM9C,EAdN;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAeUlC,EAAE,CAAC+E,KAAH,CAASE,mBAAT,CACJ;AAAEb,kBAAAA,IAAI,EAAJA,IAAF;AAAQlC,kBAAAA,EAAE,EAAFA,EAAR;AAAY4C,kBAAAA,UAAU,EAAVA,UAAZ;AAAwBtB,kBAAAA,GAAG,EAAHA,GAAxB;AAA6B0B,kBAAAA,GAAG,EAAEL;AAAlC,iBADI,EAEJM,WAFI,EAGJ/E,SAHI,CAfV;;AAAA;AAoBIgF,gBAAAA,OAAO,CAACC,GAAR,CAAY,iCAAZ;AACAhB,gBAAAA,eAAe,CAACE,WAAhB,CACEvE,EAAE,CAACsF,WAAH,CAAeC,qBAAf,CACEJ,WADF,EAEE/E,SAFF,EAGEsD,eAHF,EAIE;AACEU,kBAAAA,IAAI,EAAJA,IADF;AAEElC,kBAAAA,EAAE,EAAFA,EAFF;AAGE4C,kBAAAA,UAAU,EAAVA,UAHF;AAIEI,kBAAAA,GAAG,EAAEb,eAJP;AAKEb,kBAAAA,GAAG,EAAHA,GALF;AAMElC,kBAAAA,EAAE,EAAFA;AANF,iBAJF,CADF;;AArBJ;AAAA,iDAqCS+C,eArCT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OA9D+C;AAAA;AAAA;;AAwG/C,aAASG,gBAAT,CAA2BgB,KAA3B,EAAkC;AAChC,eAASC,WAAT,GAAwB;AACtBD,QAAAA,KAAK,CAACE,UAAN,CAAiBC,WAAjB,CAA6BH,KAA7B;AACD;;AACD,UAAMI,MAAM,GACV5F,EAAE,CAAC6F,OAAH,CAAWD,MAAX,CAAkBvE,OAAO,CAACmC,GAA1B,EAA+BxD,EAAE,CAACgB,KAAH,CAASC,QAAT,GAAoB,kBAAnD,EAAuE,OAAvE,EAAgFwE,WAAhF,CADF;AAEAG,MAAAA,MAAM,CAACnF,KAAP,YAAqB,OAArB;AACAmF,MAAAA,MAAM,CAACnF,KAAP,CAAaqF,MAAb,GAAsB,OAAtB;AACA,aAAOF,MAAM,CAACnF,KAAP,CAAasF,eAApB,CARgC,CAQI;;AACpC,aAAOH,MAAP;AACD;;AAlH8C,aAmHhCI,wBAnHgC;AAAA;AAAA,MA+H7C;AAEF;AACA;;AACA;AACJ;;;AApImD;AAAA,0FAmH/C,kBAAyCC,MAAzC;AAAA;AAAA;AAAA;AAAA;AAAA,oBACO5B,eADP;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAG4BF,wBAAwB,CAAC;AAAEX,kBAAAA,GAAG,EAAHA,GAAF;AAAOY,kBAAAA,IAAI,EAAE;AAAb,iBAAD,CAHpD;;AAAA;AAGIC,gBAAAA,eAHJ;;AAAA;AAKE,oBAAI6B,SAAS,CAACC,QAAV,CAAmB9B,eAAnB,CAAJ,EAAyC;AACvC;AACAA,kBAAAA,eAAe,CAACqB,UAAhB,CAA2BC,WAA3B,CAAuCtB,eAAvC;AACAA,kBAAAA,eAAe,GAAG,IAAlB;AACD,iBAJD,MAIO;AACL6B,kBAAAA,SAAS,CAAC3B,WAAV,CAAsBF,eAAtB;AACD;;AAXH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAnH+C;AAAA;AAAA;;AAsI/C,aAAS+B,qBAAT,CAAgCC,aAAhC,EAA+CjC,IAA/C,EAAqD;AACnD,UAAIkC,WAAW,GAAG9C,GAAG,CAACc,aAAJ,CAAkB,KAAlB,CAAlB;AACA,UAAIpC,EAAE,GAAGlC,EAAE,CAAC+E,KAAH,CAASC,WAAT,EAAT;AACA,UAAIuB,eAAe,GAAG;AACpB;AACArB,QAAAA,GAAG,EAAEoB,WAFe;AAGpB9C,QAAAA,GAAG,EAAEA,GAHe;AAIpBY,QAAAA,IAAI,EAAEA,IAJc;AAKpBU,QAAAA,UAAU,EAAEwB,WALQ;AAMpBpE,QAAAA,EAAE,EAAEA,EANgB;AAOpBmE,QAAAA,aAAa,EAAEA;AAPK,OAAtB;AASA,UAAMG,QAAQ,GAAGnF,OAAO,CAACE,OAAR,CAAgBkF,YAAhB,CAA6BC,MAA7B,CAAoC,MAApC,CAAjB;AACA,UAAMC,aAAa,GAAG,CAACH,QAAD,CAAtB;AACAxG,MAAAA,EAAE,CAAC4G,MAAH,CAAUC,UAAV,CAAqBN,eAArB,EAAsClF,OAAtC,EAA+CsF,aAA/C,EAdmD,CAcW;;AAC9D,aAAOL,WAAP;AACD;;AAtJ8C,aAwJhCQ,eAxJgC;AAAA;AAAA;;AAAA;AAAA,iFAwJ/C,kBAAgCC,QAAhC,EAA0C3C,IAA1C;AAAA;AAAA;AAAA;AAAA;AAAA;AACQ4C,gBAAAA,YADR,GACuBxD,GAAG,CAACc,aAAJ,CAAkB,KAAlB,CADvB;AAEMjD,gBAAAA,OAFN,GAEgB;AAAEmC,kBAAAA,GAAG,EAAHA,GAAF;AAAO0B,kBAAAA,GAAG,EAAE8B,YAAZ;AAA0B5C,kBAAAA,IAAI,EAAEA;AAAhC,iBAFhB;AAAA;AAAA,uBAGQpE,EAAE,CAAC+E,KAAH,CAASkC,gBAAT,CAA0B5F,OAA1B,EAAmC;AAAE,4BAAQ,IAAV;AAAgB,6BAAS,IAAzB;AAA+B6F,kBAAAA,IAAI,EAAEH;AAArC,iBAAnC,CAHR;;AAAA;AAIEC,gBAAAA,YAAY,CAACzC,WAAb,CAAyB6B,qBAAqB,CAACY,YAAD,EAAe5C,IAAf,CAA9C;AAJF,kDAKS4C,YALT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAxJ+C;AAAA;AAAA;;AAgK/C,QAAIG,cAAc,GAAG,IAArB;;AAhK+C,aAiKhCC,iBAjKgC;AAAA;AAAA,MAiL7C;AAEF;AACA;;AACA;AACJ;;;AAtLmD;AAAA,mFAiK/C,kBAAkCnB,MAAlC;AAAA;AAAA;AAAA;AAAA;AAAA,oBACOkB,cADP;AAAA;AAAA;AAAA;;AACyB;AACrB;AACAA,gBAAAA,cAAc,GAAG3D,GAAG,CAACc,aAAJ,CAAkB,KAAlB,CAAjB;AACA6C,gBAAAA,cAAc,CAAC1G,KAAf,GAAuBD,uBAAvB;AACA2G,gBAAAA,cAAc,CAAC1G,KAAf,CAAqBiE,SAArB,GAAiCC,cAAjC;AACAwC,gBAAAA,cAAc,CAAC5C,WAAf,CAA2BC,gBAAgB,CAAC2C,cAAD,CAA3C;AANJ,+BAQIA,cARJ;AAAA;AAAA,uBAQqCL,eAAe,CAAC5G,EAAE,CAACG,OAAH,CAAW,UAAX,CAAD,EAAyB,MAAzB,CARpD;;AAAA;AAAA;;AAAA,6BAQmBkE,WARnB;;AAAA;AAUE;AACA,oBAAI8C,QAAQ,CAAClB,QAAT,CAAkBgB,cAAlB,CAAJ,EAAuC;AACrCA,kBAAAA,cAAc,CAACzB,UAAf,CAA0BC,WAA1B,CAAsCwB,cAAtC;AACD,iBAFD,MAEO;AACLE,kBAAAA,QAAQ,CAAC9C,WAAT,CAAqB4C,cAArB;AACD;;AAfH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAjK+C;AAAA;AAAA;;AAuL/C,QAAIG,gBAAJ;;AACA,aAASC,mBAAT,CAA8BtB,MAA9B,EAAsC;AACpC,UAAI,CAACqB,gBAAL,EAAuB;AACrB;AACAA,QAAAA,gBAAgB,GAAG9D,GAAG,CAACc,aAAJ,CAAkB,KAAlB,CAAnB;AACAgD,QAAAA,gBAAgB,CAAC7G,KAAjB,GAAyBD,uBAAzB;AACA8G,QAAAA,gBAAgB,CAAC7G,KAAjB,CAAuBiE,SAAvB,GAAmCC,cAAnC;AACA2C,QAAAA,gBAAgB,CAAC/C,WAAjB,CAA6BC,gBAAgB,CAAC8C,gBAAD,CAA7C,EALqB,CAOrB;;AACA,YAAIpF,EAAE,GAAGlC,EAAE,CAAC+E,KAAH,CAASC,WAAT,EAAT;AACA,YAAI,CAAC9C,EAAL,EAASsF,KAAK,CAAC,0CAAD,CAAL;AACTxH,QAAAA,EAAE,CAACyH,GAAH,CAAOC,mBAAP,CACElE,GADF,EAEE8D,gBAFF,EAGEnC,WAAW,CAAC1C,GAAZ,EAHF,EAIE0C,WAJF,EAKEjD,EALF,EAME,EANF;AAQD,OAnBmC,CAoBpC;AACA;;;AACA,UAAImF,QAAQ,CAAClB,QAAT,CAAkBmB,gBAAlB,CAAJ,EAAyC;AACvC;AACAA,QAAAA,gBAAgB,CAAC5B,UAAjB,CAA4BC,WAA5B,CAAwC2B,gBAAxC;AACAA,QAAAA,gBAAgB,GAAG,IAAnB;AACD,OAJD,MAIO;AACLD,QAAAA,QAAQ,CAAC9C,WAAT,CAAqB+C,gBAArB;AACD;AACF,KArN8C,CAqN7C;;;AAEF,QAAInC,WAAW,GAAG/D,OAAlB;AACA,QAAIuG,eAAe,GAAG,IAAtB;;AACA,QAAIrG,EAAE,CAACG,KAAH,CAASL,OAAT,EAAkBlB,EAAE,CAACwB,GAAH,CAAO,MAAP,CAAlB,EAAkCxB,EAAE,CAACG,OAAH,CAAW,UAAX,CAAlC,CAAJ,EAA+D;AAC7D;AACA+E,MAAAA,OAAO,CAACC,GAAR,CAAY,eAAZ,EAF6D,CAI7D;AACD,KALD,MAKO,IACL/D,EAAE,CAACK,GAAH,CAAOP,OAAP,EAAgBlB,EAAE,CAAC0B,IAAH,CAAQ,SAAR,CAAhB,KACAN,EAAE,CAACK,GAAH,CAAOP,OAAP,EAAgBlB,EAAE,CAAC2B,GAAH,CAAO,SAAP,CAAhB,CAFK,EAGL;AACAuD,MAAAA,OAAO,CAACC,GAAR,CAAY,SAAZ;AACAsC,MAAAA,eAAe,GAAGvG,OAAlB;AACA+D,MAAAA,WAAW,GAAG7D,EAAE,CAACK,GAAH,CAAO,IAAP,EAAazB,EAAE,CAAC0H,EAAH,CAAM,SAAN,CAAb,EAA+BD,eAA/B,CAAd;AACA,UAAI,CAACxC,WAAL,EAAkB,MAAM,IAAI/C,KAAJ,CAAU,oCAAV,CAAN;AACnB;;AAED,QAAI8C,GAAG,GAAG1B,GAAG,CAACc,aAAJ,CAAkB,KAAlB,CAAV,CAxO+C,CA0O/C;AACA;;AACA,QAAMK,cAAc,GAAG,MAAvB,CA5O+C,CA4OjB;;AAC9B,QAAIkD,QAAQ,GAAG3C,GAAG,CAACX,WAAJ,CAAgBf,GAAG,CAACc,aAAJ,CAAkB,OAAlB,CAAhB,CAAf;AACAuD,IAAAA,QAAQ,CAACpH,KAAT,CAAeiE,SAAf,GAA2B,KAA3B,CA9O+C,CA8Od;;AACjC,QAAIoD,OAAO,GAAGD,QAAQ,CAACtD,WAAT,CAAqBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAArB,CAAd;AACA,QAAI+C,QAAQ,GAAGS,OAAO,CAACvD,WAAR,CAAoBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAApB,CAAf;AACA,QAAIyD,UAAU,GAAGD,OAAO,CAACvD,WAAR,CAAoBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAApB,CAAjB;AACA,QAAI4B,SAAS,GAAG4B,OAAO,CAACvD,WAAR,CAAoBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAApB,CAAhB;AACA,QAAI0D,UAAU,GAAGH,QAAQ,CAACtD,WAAT,CAAqBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAArB,CAAjB;AACA+C,IAAAA,QAAQ,CAAC5G,KAAT,GAAiBE,aAAjB;AACA0G,IAAAA,QAAQ,CAAC5G,KAAT,CAAewH,YAAf,GAA8B,KAA9B;AACA/B,IAAAA,SAAS,CAACzF,KAAV,GAAkBE,aAAlB;AACAuF,IAAAA,SAAS,CAACzF,KAAV,CAAgByH,WAAhB,GAA8B,KAA9B;AAEAF,IAAAA,UAAU,CAACzD,WAAX,CAAuBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAvB;AACA,QAAM6D,UAAU,GAAGH,UAAU,CAACzD,WAAX,CAAuBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAvB,CAAnB;AACA0D,IAAAA,UAAU,CAACzD,WAAX,CAAuBf,GAAG,CAACc,aAAJ,CAAkB,IAAlB,CAAvB,EA3P+C,CA6P/C;;AACA,QAAM8D,gBAAgB,GAAG,iBAAzB;AACA,QAAIC,kBAAkB,GAAGrI,EAAE,CAAC6F,OAAH,CAAWD,MAAX,CACvBpC,GADuB,EAEvBxD,EAAE,CAACgB,KAAH,CAASC,QAAT,GAAoBmH,gBAFG,EAGvB,kBAHuB,CAAzB,CA/P+C,CAmQ7C;;AACFD,IAAAA,UAAU,CAAC5D,WAAX,CAAuB8D,kBAAvB;AACAA,IAAAA,kBAAkB,CAACC,gBAAnB,CAAoC,OAApC,EAA6Cf,mBAA7C,EArQ+C,CAuQ/C;;AACA,QAAMgB,cAAc,GAAG,kBAAvB,CAxQ+C,CAwQL;;AAC1C,QAAIC,gBAAgB,GAAGxI,EAAE,CAAC6F,OAAH,CAAWD,MAAX,CACrBpC,GADqB,EAErBxD,EAAE,CAACgB,KAAH,CAASC,QAAT,GAAoBsH,cAFC,EAGrB,yBAHqB,CAAvB,CAzQ+C,CA6Q7C;;AACFJ,IAAAA,UAAU,CAAC5D,WAAX,CAAuBiE,gBAAvB;AACAA,IAAAA,gBAAgB,CAACF,gBAAjB,CAAkC,OAAlC,EAA2ClB,iBAA3C;AAEA,QAAI/C,eAAe,GAAG,IAAtB;AACA,QAAMoE,UAAU,GAAGzI,EAAE,CAAC6F,OAAH,CAAWD,MAAX,CACjBpC,GADiB,EAEjBxD,EAAE,CAACgB,KAAH,CAASC,QAAT,GAAoBV,YAFH,EAGjB,aAHiB,CAAnB,CAlR+C,CAsR7C;;AACF4H,IAAAA,UAAU,CAAC5D,WAAX,CAAuBkE,UAAvB;AACAA,IAAAA,UAAU,CAAChI,KAAX,YAAyB,OAAzB;AACAgI,IAAAA,UAAU,CAACH,gBAAX,CAA4B,OAA5B,EAAqCtC,wBAArC;AAEAd,IAAAA,GAAG,CAACwD,YAAJ,CAAiB,OAAjB,EAA0B,UAA1B;AACA,QAAMC,OAAO,GAAG;AAAEC,MAAAA,QAAQ,EAAE;AAAZ,KAAhB;AACA,QAAMC,0BAA0B,GAAG;AAAEzE,MAAAA,IAAI,EAAE,WAAR;AAAqBc,MAAAA,GAAG,EAAHA,GAArB;AAA0B1B,MAAAA,GAAG,EAAEA;AAA/B,KAAnC;AACAqF,IAAAA,0BAA0B,CAAC3G,EAA3B,GAAgClC,EAAE,CAAC+E,KAAH,CAASC,WAAT,EAAhC,CA9R+C,CA8RQ;;AA9RR,aAgShC8D,SAhSgC;AAAA;AAAA;;AAAA;AAAA,2EAgS/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAGoB9I,EAAE,CAACsF,WAAH,CAAeyD,sBAAf,CACd5D,WADc,EACD/E,SADC,EACUyD,oBADV,EACgCgF,0BADhC,CAHpB;;AAAA;AAGIG,gBAAAA,OAHJ;AAAA;AAAA;;AAAA;AAAA;AAAA;AAMIhJ,gBAAAA,EAAE,CAAC6F,OAAH,CAAWoD,QAAX,CAAoBJ,0BAApB;;AANJ;AAQE,qBAAWK,OAAX,IAAsBF,OAAtB,EAA+B;AAC7BL,kBAAAA,OAAO,CAACO,OAAO,CAACC,KAAR,CAAc,GAAd,EAAmB,CAAnB,CAAD,CAAP,GAAiCH,OAAO,CAACE,OAAD,CAAxC;AACD;;AACD,oBAAIvB,eAAJ,EAAqB;AACnBgB,kBAAAA,OAAO,CAAChB,eAAR,GAA0BA,eAA1B;AACD;;AACD,oBAAIpE,WAAW,CAAC6F,IAAhB,EAAsB;AACpB;AACAT,kBAAAA,OAAO,CAACS,IAAR,GAAe,IAAf;AACD;;AAjBH;AAAA,uBAkB4BpJ,EAAE,CAACqJ,mBAAH,CACxB7F,GADwB,EAExBlC,EAFwB,EAGxB6D,WAHwB,EAIxBwD,OAJwB,CAlB5B;;AAAA;AAkBQW,gBAAAA,WAlBR;AAwBEA,gBAAAA,WAAW,CAAC7I,KAAZ,CAAkB8I,MAAlB,GAA2B,MAA3B;AACAD,gBAAAA,WAAW,CAAC7I,KAAZ,CAAkB+I,QAAlB,GAA6B,MAA7B;AACAF,gBAAAA,WAAW,CAAC7I,KAAZ,CAAkBiE,SAAlB,GAA8BC,cAA9B;AACAoD,gBAAAA,UAAU,CAACxD,WAAX,CAAuB+E,WAAvB;;AA3BF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAhS+C;AAAA;AAAA;;AA6T/CR,IAAAA,SAAS,GAAGW,IAAZ,CAAiBrE,OAAO,CAACC,GAAR,CAAY,yBAAZ,CAAjB;AACA,WAAOH,GAAP;AACD;AA/Xc,CAAjB","sourcesContent":["/* Long Chat Pane\n **\n ** A long chat consists a of a series of chat files saved by date.\n */\n\nconst UI = require('solid-ui')\nconst ns = UI.ns\nconst $rdf = require('rdflib')\n\nconst mainClass = ns.meeting('LongChat') // @@ something from SIOC?\n\nconst CHAT_LOCATION_IN_CONTAINER = 'index.ttl#this'\n\n// const menuIcon = 'noun_897914.svg'\nconst SPANNER_ICON = 'noun_344563.svg'\n// resize: horizontal; min-width: 20em;\nconst SIDEBAR_COMPONENT_STYLE = UI.style.sidebarComponentStyle || ' padding: 0.5em; width: 100%;'\nconst SIDEBAR_STYLE = UI.style.sidebarStyle || 'overflow-x: auto; overflow-y: auto; border-radius: 1em; border: 0.1em solid white;'\n// was purple border\nmodule.exports = {\n CHAT_LOCATION_IN_CONTAINER,\n\n // noun_704.svg Canoe noun_346319.svg = 1 Chat noun_1689339.svg = three chat\n icon: UI.icons.iconBase + 'noun_1689339.svg',\n\n name: 'long chat',\n\n label: function (subject, context) {\n const kb = context.session.store\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('LongChat'))) {\n // subject is the object\n return 'Chat channnel'\n } // Looks like a message -- might not havre any class declared\n if (\n kb.any(subject, ns.sioc('content')) &&\n kb.any(subject, ns.dct('created'))\n ) {\n return 'message'\n }\n return null // Suppress pane otherwise\n },\n\n mintClass: mainClass,\n\n mintNew: function (context, newPaneOptions) {\n const kb = context.session.store\n var updater = kb.updater\n if (newPaneOptions.me && !newPaneOptions.me.uri) {\n throw new Error('chat mintNew: Invalid userid ' + newPaneOptions.me)\n }\n\n var newInstance = (newPaneOptions.newInstance =\n newPaneOptions.newInstance ||\n kb.sym(newPaneOptions.newBase + CHAT_LOCATION_IN_CONTAINER))\n var newChatDoc = newInstance.doc()\n\n kb.add(newInstance, ns.rdf('type'), ns.meeting('LongChat'), newChatDoc)\n kb.add(newInstance, ns.dc('title'), 'Chat channel', newChatDoc)\n kb.add(newInstance, ns.dc('created'), new Date(), newChatDoc)\n if (newPaneOptions.me) {\n kb.add(newInstance, ns.dc('author'), newPaneOptions.me, newChatDoc)\n }\n\n return new Promise(function (resolve, reject) {\n updater.put(\n newChatDoc,\n kb.statementsMatching(undefined, undefined, undefined, newChatDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n resolve(newPaneOptions)\n } else {\n reject(\n new Error(\n 'FAILED to save new chat channel at: ' + uri2 + ' : ' + message\n )\n )\n }\n }\n )\n })\n },\n\n render: function (subject, context, paneOptions) {\n const dom = context.dom\n const kb = context.session.store\n\n /* Preferences\n **\n ** Things like whether to color text by author webid, to expand image URLs inline,\n ** expanded inline image height. ...\n ** In general, preferences can be set per user, per user/app combo, per instance,\n ** and per instance/user combo. Per instance? not sure about unless it is valuable\n ** for everyone to be seeing the same thing.\n */\n // const DCT = $rdf.Namespace('http://purl.org/dc/terms/')\n const preferencesFormText = `\n @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n @prefix solid: <http://www.w3.org/ns/solid/terms#>.\n @prefix ui: <http://www.w3.org/ns/ui#>.\n @prefix : <#>.\n\n :this\n <http://purl.org/dc/elements/1.1/title> \"Chat preferences\" ;\n a ui:Form ;\n ui:parts ( :colorizeByAuthor :expandImagesInline :newestFirst :inlineImageHeightEms\n :shiftEnterSendsMessage :authorDateOnLeft :showDeletedMessages).\n\n :colorizeByAuthor a ui:TristateField; ui:property solid:colorizeByAuthor;\n ui:label \"Color user input by user\".\n\n :expandImagesInline a ui:TristateField; ui:property solid:expandImagesInline;\n ui:label \"Expand image URLs inline\".\n\n :newestFirst a ui:TristateField; ui:property solid:newestFirst;\n ui:label \"Newest messages at the top\".\n\n :inlineImageHeightEms a ui:IntegerField; ui:property solid:inlineImageHeightEms;\n ui:label \"Inline image height (lines)\".\n\n :shiftEnterSendsMessage a ui:TristateField; ui:property solid:shiftEnterSendsMessage;\n ui:label \"Shift-Enter sends message\".\n\n :authorDateOnLeft a ui:TristateField; ui:property solid:authorDateOnLeft;\n ui:label \"Author & date of message on left\".\n\n :showDeletedMessages a ui:TristateField; ui:property solid:showDeletedMessages;\n ui:label \"Show placeholders for deleted messages\".\n`\n const preferencesForm = kb.sym(\n 'https://solid.github.io/solid-panes/longCharPane/preferencesForm.ttl#this'\n )\n const preferencesFormDoc = preferencesForm.doc()\n if (!kb.holds(undefined, undefined, undefined, preferencesFormDoc)) {\n // If not loaded already\n $rdf.parse(preferencesFormText, kb, preferencesFormDoc.uri, 'text/turtle') // Load form directly\n }\n const preferenceProperties = kb\n .statementsMatching(null, ns.ui.property, null, preferencesFormDoc)\n .map(st => st.object)\n\n // Preferences Menu\n //\n // Build a menu a the side (@@ reactive: on top?)\n\n async function renderPreferencesSidebar (context) {\n // const noun = 'chat room'\n const { dom, noun } = context\n const preferencesArea = dom.createElement('div')\n preferencesArea.appendChild(panelCloseButton(preferencesArea))\n // @@ style below fix .. just make it onviious while testing\n preferencesArea.style = SIDEBAR_COMPONENT_STYLE\n preferencesArea.style.minWidth = '25em' // bit bigger\n preferencesArea.style.maxHeight = triptychHeight\n const menuTable = preferencesArea.appendChild(dom.createElement('table'))\n const registrationArea = menuTable.appendChild(dom.createElement('tr'))\n const statusArea = menuTable.appendChild(dom.createElement('tr'))\n\n var me = UI.authn.currentUser()\n if (me) {\n await UI.authn.registrationControl(\n { noun, me, statusArea, dom, div: registrationArea },\n chatChannel,\n mainClass\n )\n console.log('Registration control finsished.')\n preferencesArea.appendChild(\n UI.preferences.renderPreferencesForm(\n chatChannel,\n mainClass,\n preferencesForm,\n {\n noun,\n me,\n statusArea,\n div: preferencesArea,\n dom,\n kb\n }\n )\n )\n }\n return preferencesArea\n }\n\n // @@ Split out into solid-ui\n\n function panelCloseButton (panel) {\n function removePanel () {\n panel.parentNode.removeChild(panel)\n }\n const button =\n UI.widgets.button(context.dom, UI.icons.iconBase + 'noun_1180156.svg', 'close', removePanel)\n button.style.float = 'right'\n button.style.margin = '0.7em'\n delete button.style.backgroundColor // do not want white\n return button\n }\n async function preferencesButtonPressed (_event) {\n if (!preferencesArea) {\n // Expand\n preferencesArea = await renderPreferencesSidebar({ dom, noun: 'chat room' })\n }\n if (paneRight.contains(preferencesArea)) {\n // Close menu (hide or delete??)\n preferencesArea.parentNode.removeChild(preferencesArea)\n preferencesArea = null\n } else {\n paneRight.appendChild(preferencesArea)\n }\n } // preferencesButtonPressed\n\n // All my chats\n //\n /* Build a other chats list drawer the side\n */\n\n function renderCreationControl (refreshTarget, noun) {\n var creationDiv = dom.createElement('div')\n var me = UI.authn.currentUser()\n var creationContext = {\n // folder: subject,\n div: creationDiv,\n dom: dom,\n noun: noun,\n statusArea: creationDiv,\n me: me,\n refreshTarget: refreshTarget\n }\n const chatPane = context.session.paneRegistry.byName('chat')\n const relevantPanes = [chatPane]\n UI.create.newThingUI(creationContext, context, relevantPanes) // Have to pass panes down newUI\n return creationDiv\n }\n\n async function renderInstances (theClass, noun) {\n const instancesDiv = dom.createElement('div')\n var context = { dom, div: instancesDiv, noun: noun }\n await UI.authn.registrationList(context, { public: true, private: true, type: theClass })\n instancesDiv.appendChild(renderCreationControl(instancesDiv, noun))\n return instancesDiv\n }\n\n var otherChatsArea = null\n async function otherChatsHandler (_event) {\n if (!otherChatsArea) { // Lazy build when needed\n // Expand\n otherChatsArea = dom.createElement('div')\n otherChatsArea.style = SIDEBAR_COMPONENT_STYLE\n otherChatsArea.style.maxHeight = triptychHeight\n otherChatsArea.appendChild(panelCloseButton(otherChatsArea))\n\n otherChatsArea.appendChild(await renderInstances(ns.meeting('LongChat'), 'chat'))\n }\n // Toggle visibility with button clicks\n if (paneLeft.contains(otherChatsArea)) {\n otherChatsArea.parentNode.removeChild(otherChatsArea)\n } else {\n paneLeft.appendChild(otherChatsArea)\n }\n } // otherChatsHandler\n\n // People in the chat\n //\n /* Build a participants list drawer the side\n */\n var participantsArea\n function participantsHandler (_event) {\n if (!participantsArea) {\n // Expand\n participantsArea = dom.createElement('div')\n participantsArea.style = SIDEBAR_COMPONENT_STYLE\n participantsArea.style.maxHeight = triptychHeight\n participantsArea.appendChild(panelCloseButton(participantsArea))\n\n // Record my participation and display participants\n var me = UI.authn.currentUser()\n if (!me) alert('Should be logeed in for partipants panel')\n UI.pad.manageParticipation(\n dom,\n participantsArea,\n chatChannel.doc(),\n chatChannel,\n me,\n {}\n )\n }\n // Toggle appearance in sidebar with clicks\n // Note also it can remove itself using the X button\n if (paneLeft.contains(participantsArea)) {\n // Close participants (hide or delete??)\n participantsArea.parentNode.removeChild(participantsArea)\n participantsArea = null\n } else {\n paneLeft.appendChild(participantsArea)\n }\n } // participantsHandler\n\n var chatChannel = subject\n var selectedMessage = null\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('LongChat'))) {\n // subject is the chatChannel\n console.log('Chat channnel')\n\n // Looks like a message -- might not havre any class declared\n } else if (\n kb.any(subject, ns.sioc('content')) &&\n kb.any(subject, ns.dct('created'))\n ) {\n console.log('message')\n selectedMessage = subject\n chatChannel = kb.any(null, ns.wf('message'), selectedMessage)\n if (!chatChannel) throw new Error('Message has no link to chatChannel')\n }\n\n var div = dom.createElement('div')\n\n // Three large columns for particpant, chat, Preferences. formula below just as a note\n // const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n const triptychHeight = '20cm' // @@ need to be able to set to window!\n var triptych = div.appendChild(dom.createElement('table'))\n triptych.style.maxHeight = '12\"' // Screen max\n var paneRow = triptych.appendChild(dom.createElement('tr'))\n var paneLeft = paneRow.appendChild(dom.createElement('td'))\n var paneMiddle = paneRow.appendChild(dom.createElement('td'))\n var paneRight = paneRow.appendChild(dom.createElement('td'))\n var paneBottom = triptych.appendChild(dom.createElement('tr'))\n paneLeft.style = SIDEBAR_STYLE\n paneLeft.style.paddingRight = '1em'\n paneRight.style = SIDEBAR_STYLE\n paneRight.style.paddingLeft = '1em'\n\n paneBottom.appendChild(dom.createElement('td'))\n const buttonCell = paneBottom.appendChild(dom.createElement('td'))\n paneBottom.appendChild(dom.createElement('td'))\n\n // Button to bring up participants drawer on left\n const participantsIcon = 'noun_339237.svg'\n var participantsButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + participantsIcon,\n 'participants ...'\n ) // wider var\n buttonCell.appendChild(participantsButton)\n participantsButton.addEventListener('click', participantsHandler)\n\n // Button to bring up otherChats drawer on left\n const otherChatsIcon = 'noun_1689339.svg' // long chat icon -- not ideal for a set of chats @@\n var otherChatsButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + otherChatsIcon,\n 'List of other chats ...'\n ) // wider var\n buttonCell.appendChild(otherChatsButton)\n otherChatsButton.addEventListener('click', otherChatsHandler)\n\n var preferencesArea = null\n const menuButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + SPANNER_ICON,\n 'Setting ...'\n ) // wider var\n buttonCell.appendChild(menuButton)\n menuButton.style.float = 'right'\n menuButton.addEventListener('click', preferencesButtonPressed)\n\n div.setAttribute('class', 'chatPane')\n const options = { infinite: true }\n const participantsHandlerContext = { noun: 'chat room', div, dom: dom }\n participantsHandlerContext.me = UI.authn.currentUser() // If already logged on\n\n async function buildPane () {\n let prefMap\n try {\n prefMap = await UI.preferences.getPreferencesForClass(\n chatChannel, mainClass, preferenceProperties, participantsHandlerContext)\n } catch (err) {\n UI.widgets.complain(participantsHandlerContext, err)\n }\n for (const propuri in prefMap) {\n options[propuri.split('#')[1]] = prefMap[propuri]\n }\n if (selectedMessage) {\n options.selectedMessage = selectedMessage\n }\n if (paneOptions.solo) {\n // This is the top pane, title, scrollbar etc are ours\n options.solo = true\n }\n const chatControl = await UI.infiniteMessageArea(\n dom,\n kb,\n chatChannel,\n options\n )\n chatControl.style.resize = 'both'\n chatControl.style.overflow = 'auto'\n chatControl.style.maxHeight = triptychHeight\n paneMiddle.appendChild(chatControl)\n }\n buildPane().then(console.log('async - chat pane built'))\n return div\n }\n}\n"],"file":"longChatPane.js"}
1
+ {"version":3,"sources":["../src/longChatPane.js"],"names":["UI","require","ns","$rdf","mainClass","meeting","CHAT_LOCATION_IN_CONTAINER","SPANNER_ICON","SIDEBAR_COMPONENT_STYLE","style","sidebarComponentStyle","SIDEBAR_STYLE","sidebarStyle","module","exports","icon","icons","iconBase","name","label","subject","context","kb","session","store","holds","rdf","any","sioc","dct","mintClass","mintNew","newPaneOptions","updater","me","uri","Error","newInstance","sym","newBase","newChatDoc","doc","add","dc","Date","Promise","resolve","reject","put","statementsMatching","undefined","uri2","ok","message","render","paneOptions","dom","preferencesFormText","preferencesForm","preferencesFormDoc","parse","preferenceProperties","ui","property","map","st","object","renderPreferencesSidebar","noun","preferencesArea","createElement","appendChild","panelCloseButton","minWidth","maxHeight","triptychHeight","menuTable","registrationArea","statusArea","authn","currentUser","login","registrationControl","div","chatChannel","console","log","preferences","renderPreferencesForm","panel","removePanel","parentNode","removeChild","button","widgets","margin","backgroundColor","preferencesButtonPressed","_event","paneRight","contains","renderCreationControl","refreshTarget","creationDiv","creationContext","chatPane","paneRegistry","byName","relevantPanes","create","newThingUI","renderInstances","theClass","instancesDiv","registrationList","type","otherChatsArea","otherChatsHandler","paneLeft","participantsArea","participantsHandler","alert","pad","manageParticipation","selectedMessage","wf","triptych","paneRow","paneMiddle","paneBottom","paddingRight","paddingLeft","buttonCell","participantsIcon","participantsButton","addEventListener","otherChatsIcon","otherChatsButton","menuButton","setAttribute","options","infinite","participantsHandlerContext","buildPane","getPreferencesForClass","prefMap","complain","propuri","split","solo","infiniteMessageArea","chatControl","resize","overflow","then"],"mappings":"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","sourcesContent":["/* Long Chat Pane\n **\n ** A long chat consists a of a series of chat files saved by date.\n */\nimport { authn } from 'solid-logic'\nconst UI = require('solid-ui')\nconst ns = UI.ns\nconst $rdf = require('rdflib')\n\nconst mainClass = ns.meeting('LongChat') // @@ something from SIOC?\n\nconst CHAT_LOCATION_IN_CONTAINER = 'index.ttl#this'\n\n// const menuIcon = 'noun_897914.svg'\nconst SPANNER_ICON = 'noun_344563.svg'\n// resize: horizontal; min-width: 20em;\nconst SIDEBAR_COMPONENT_STYLE = UI.style.sidebarComponentStyle || ' padding: 0.5em; width: 100%;'\nconst SIDEBAR_STYLE = UI.style.sidebarStyle || 'overflow-x: auto; overflow-y: auto; border-radius: 1em; border: 0.1em solid white;'\n// was purple border\nmodule.exports = {\n CHAT_LOCATION_IN_CONTAINER,\n\n // noun_704.svg Canoe noun_346319.svg = 1 Chat noun_1689339.svg = three chat\n icon: UI.icons.iconBase + 'noun_1689339.svg',\n\n name: 'long chat',\n\n label: function (subject, context) {\n const kb = context.session.store\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('LongChat'))) {\n // subject is the object\n return 'Chat channnel'\n } // Looks like a message -- might not havre any class declared\n if (\n kb.any(subject, ns.sioc('content')) &&\n kb.any(subject, ns.dct('created'))\n ) {\n return 'message'\n }\n return null // Suppress pane otherwise\n },\n\n mintClass: mainClass,\n\n mintNew: function (context, newPaneOptions) {\n const kb = context.session.store\n var updater = kb.updater\n if (newPaneOptions.me && !newPaneOptions.me.uri) {\n throw new Error('chat mintNew: Invalid userid ' + newPaneOptions.me)\n }\n\n var newInstance = (newPaneOptions.newInstance =\n newPaneOptions.newInstance ||\n kb.sym(newPaneOptions.newBase + CHAT_LOCATION_IN_CONTAINER))\n var newChatDoc = newInstance.doc()\n\n kb.add(newInstance, ns.rdf('type'), ns.meeting('LongChat'), newChatDoc)\n kb.add(newInstance, ns.dc('title'), 'Chat channel', newChatDoc)\n kb.add(newInstance, ns.dc('created'), new Date(), newChatDoc)\n if (newPaneOptions.me) {\n kb.add(newInstance, ns.dc('author'), newPaneOptions.me, newChatDoc)\n }\n\n return new Promise(function (resolve, reject) {\n updater.put(\n newChatDoc,\n kb.statementsMatching(undefined, undefined, undefined, newChatDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n resolve(newPaneOptions)\n } else {\n reject(\n new Error(\n 'FAILED to save new chat channel at: ' + uri2 + ' : ' + message\n )\n )\n }\n }\n )\n })\n },\n\n render: function (subject, context, paneOptions) {\n const dom = context.dom\n const kb = context.session.store\n\n /* Preferences\n **\n ** Things like whether to color text by author webid, to expand image URLs inline,\n ** expanded inline image height. ...\n ** In general, preferences can be set per user, per user/app combo, per instance,\n ** and per instance/user combo. Per instance? not sure about unless it is valuable\n ** for everyone to be seeing the same thing.\n */\n // const DCT = $rdf.Namespace('http://purl.org/dc/terms/')\n const preferencesFormText = `\n @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n @prefix solid: <http://www.w3.org/ns/solid/terms#>.\n @prefix ui: <http://www.w3.org/ns/ui#>.\n @prefix : <#>.\n\n :this\n <http://purl.org/dc/elements/1.1/title> \"Chat preferences\" ;\n a ui:Form ;\n ui:parts ( :colorizeByAuthor :expandImagesInline :newestFirst :inlineImageHeightEms\n :shiftEnterSendsMessage :authorDateOnLeft :showDeletedMessages).\n\n :colorizeByAuthor a ui:TristateField; ui:property solid:colorizeByAuthor;\n ui:label \"Color user input by user\".\n\n :expandImagesInline a ui:TristateField; ui:property solid:expandImagesInline;\n ui:label \"Expand image URLs inline\".\n\n :newestFirst a ui:TristateField; ui:property solid:newestFirst;\n ui:label \"Newest messages at the top\".\n\n :inlineImageHeightEms a ui:IntegerField; ui:property solid:inlineImageHeightEms;\n ui:label \"Inline image height (lines)\".\n\n :shiftEnterSendsMessage a ui:TristateField; ui:property solid:shiftEnterSendsMessage;\n ui:label \"Shift-Enter sends message\".\n\n :authorDateOnLeft a ui:TristateField; ui:property solid:authorDateOnLeft;\n ui:label \"Author & date of message on left\".\n\n :showDeletedMessages a ui:TristateField; ui:property solid:showDeletedMessages;\n ui:label \"Show placeholders for deleted messages\".\n`\n const preferencesForm = kb.sym(\n 'https://solid.github.io/solid-panes/longCharPane/preferencesForm.ttl#this'\n )\n const preferencesFormDoc = preferencesForm.doc()\n if (!kb.holds(undefined, undefined, undefined, preferencesFormDoc)) {\n // If not loaded already\n $rdf.parse(preferencesFormText, kb, preferencesFormDoc.uri, 'text/turtle') // Load form directly\n }\n const preferenceProperties = kb\n .statementsMatching(null, ns.ui.property, null, preferencesFormDoc)\n .map(st => st.object)\n\n // Preferences Menu\n //\n // Build a menu a the side (@@ reactive: on top?)\n\n async function renderPreferencesSidebar (context) {\n // const noun = 'chat room'\n const { dom, noun } = context\n const preferencesArea = dom.createElement('div')\n preferencesArea.appendChild(panelCloseButton(preferencesArea))\n // @@ style below fix .. just make it onviious while testing\n preferencesArea.style = SIDEBAR_COMPONENT_STYLE\n preferencesArea.style.minWidth = '25em' // bit bigger\n preferencesArea.style.maxHeight = triptychHeight\n const menuTable = preferencesArea.appendChild(dom.createElement('table'))\n const registrationArea = menuTable.appendChild(dom.createElement('tr'))\n const statusArea = menuTable.appendChild(dom.createElement('tr'))\n\n var me = authn.currentUser()\n if (me) {\n await UI.login.registrationControl(\n { noun, me, statusArea, dom, div: registrationArea },\n chatChannel,\n mainClass\n )\n console.log('Registration control finsished.')\n preferencesArea.appendChild(\n UI.preferences.renderPreferencesForm(\n chatChannel,\n mainClass,\n preferencesForm,\n {\n noun,\n me,\n statusArea,\n div: preferencesArea,\n dom,\n kb\n }\n )\n )\n }\n return preferencesArea\n }\n\n // @@ Split out into solid-ui\n\n function panelCloseButton (panel) {\n function removePanel () {\n panel.parentNode.removeChild(panel)\n }\n const button =\n UI.widgets.button(context.dom, UI.icons.iconBase + 'noun_1180156.svg', 'close', removePanel)\n button.style.float = 'right'\n button.style.margin = '0.7em'\n delete button.style.backgroundColor // do not want white\n return button\n }\n async function preferencesButtonPressed (_event) {\n if (!preferencesArea) {\n // Expand\n preferencesArea = await renderPreferencesSidebar({ dom, noun: 'chat room' })\n }\n if (paneRight.contains(preferencesArea)) {\n // Close menu (hide or delete??)\n preferencesArea.parentNode.removeChild(preferencesArea)\n preferencesArea = null\n } else {\n paneRight.appendChild(preferencesArea)\n }\n } // preferencesButtonPressed\n\n // All my chats\n //\n /* Build a other chats list drawer the side\n */\n\n function renderCreationControl (refreshTarget, noun) {\n var creationDiv = dom.createElement('div')\n var me = authn.currentUser()\n var creationContext = {\n // folder: subject,\n div: creationDiv,\n dom: dom,\n noun: noun,\n statusArea: creationDiv,\n me: me,\n refreshTarget: refreshTarget\n }\n const chatPane = context.session.paneRegistry.byName('chat')\n const relevantPanes = [chatPane]\n UI.create.newThingUI(creationContext, context, relevantPanes) // Have to pass panes down newUI\n return creationDiv\n }\n\n async function renderInstances (theClass, noun) {\n const instancesDiv = dom.createElement('div')\n var context = { dom, div: instancesDiv, noun: noun }\n await UI.login.registrationList(context, { public: true, private: true, type: theClass })\n instancesDiv.appendChild(renderCreationControl(instancesDiv, noun))\n return instancesDiv\n }\n\n var otherChatsArea = null\n async function otherChatsHandler (_event) {\n if (!otherChatsArea) { // Lazy build when needed\n // Expand\n otherChatsArea = dom.createElement('div')\n otherChatsArea.style = SIDEBAR_COMPONENT_STYLE\n otherChatsArea.style.maxHeight = triptychHeight\n otherChatsArea.appendChild(panelCloseButton(otherChatsArea))\n\n otherChatsArea.appendChild(await renderInstances(ns.meeting('LongChat'), 'chat'))\n }\n // Toggle visibility with button clicks\n if (paneLeft.contains(otherChatsArea)) {\n otherChatsArea.parentNode.removeChild(otherChatsArea)\n } else {\n paneLeft.appendChild(otherChatsArea)\n }\n } // otherChatsHandler\n\n // People in the chat\n //\n /* Build a participants list drawer the side\n */\n var participantsArea\n function participantsHandler (_event) {\n if (!participantsArea) {\n // Expand\n participantsArea = dom.createElement('div')\n participantsArea.style = SIDEBAR_COMPONENT_STYLE\n participantsArea.style.maxHeight = triptychHeight\n participantsArea.appendChild(panelCloseButton(participantsArea))\n\n // Record my participation and display participants\n var me = authn.currentUser()\n if (!me) alert('Should be logeed in for partipants panel')\n UI.pad.manageParticipation(\n dom,\n participantsArea,\n chatChannel.doc(),\n chatChannel,\n me,\n {}\n )\n }\n // Toggle appearance in sidebar with clicks\n // Note also it can remove itself using the X button\n if (paneLeft.contains(participantsArea)) {\n // Close participants (hide or delete??)\n participantsArea.parentNode.removeChild(participantsArea)\n participantsArea = null\n } else {\n paneLeft.appendChild(participantsArea)\n }\n } // participantsHandler\n\n var chatChannel = subject\n var selectedMessage = null\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('LongChat'))) {\n // subject is the chatChannel\n console.log('Chat channnel')\n\n // Looks like a message -- might not havre any class declared\n } else if (\n kb.any(subject, ns.sioc('content')) &&\n kb.any(subject, ns.dct('created'))\n ) {\n console.log('message')\n selectedMessage = subject\n chatChannel = kb.any(null, ns.wf('message'), selectedMessage)\n if (!chatChannel) throw new Error('Message has no link to chatChannel')\n }\n\n var div = dom.createElement('div')\n\n // Three large columns for particpant, chat, Preferences. formula below just as a note\n // const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n const triptychHeight = '20cm' // @@ need to be able to set to window!\n var triptych = div.appendChild(dom.createElement('table'))\n triptych.style.maxHeight = '12\"' // Screen max\n var paneRow = triptych.appendChild(dom.createElement('tr'))\n var paneLeft = paneRow.appendChild(dom.createElement('td'))\n var paneMiddle = paneRow.appendChild(dom.createElement('td'))\n var paneRight = paneRow.appendChild(dom.createElement('td'))\n var paneBottom = triptych.appendChild(dom.createElement('tr'))\n paneLeft.style = SIDEBAR_STYLE\n paneLeft.style.paddingRight = '1em'\n paneRight.style = SIDEBAR_STYLE\n paneRight.style.paddingLeft = '1em'\n\n paneBottom.appendChild(dom.createElement('td'))\n const buttonCell = paneBottom.appendChild(dom.createElement('td'))\n paneBottom.appendChild(dom.createElement('td'))\n\n // Button to bring up participants drawer on left\n const participantsIcon = 'noun_339237.svg'\n var participantsButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + participantsIcon,\n 'participants ...'\n ) // wider var\n buttonCell.appendChild(participantsButton)\n participantsButton.addEventListener('click', participantsHandler)\n\n // Button to bring up otherChats drawer on left\n const otherChatsIcon = 'noun_1689339.svg' // long chat icon -- not ideal for a set of chats @@\n var otherChatsButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + otherChatsIcon,\n 'List of other chats ...'\n ) // wider var\n buttonCell.appendChild(otherChatsButton)\n otherChatsButton.addEventListener('click', otherChatsHandler)\n\n var preferencesArea = null\n const menuButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + SPANNER_ICON,\n 'Setting ...'\n ) // wider var\n buttonCell.appendChild(menuButton)\n menuButton.style.float = 'right'\n menuButton.addEventListener('click', preferencesButtonPressed)\n\n div.setAttribute('class', 'chatPane')\n const options = { infinite: true }\n const participantsHandlerContext = { noun: 'chat room', div, dom: dom }\n participantsHandlerContext.me = authn.currentUser() // If already logged on\n\n async function buildPane () {\n let prefMap\n try {\n prefMap = await UI.preferences.getPreferencesForClass(\n chatChannel, mainClass, preferenceProperties, participantsHandlerContext)\n } catch (err) {\n UI.widgets.complain(participantsHandlerContext, err)\n }\n for (const propuri in prefMap) {\n options[propuri.split('#')[1]] = prefMap[propuri]\n }\n if (selectedMessage) {\n options.selectedMessage = selectedMessage\n }\n if (paneOptions.solo) {\n // This is the top pane, title, scrollbar etc are ours\n options.solo = true\n }\n const chatControl = await UI.infiniteMessageArea(\n dom,\n kb,\n chatChannel,\n options\n )\n chatControl.style.resize = 'both'\n chatControl.style.overflow = 'auto'\n chatControl.style.maxHeight = triptychHeight\n paneMiddle.appendChild(chatControl)\n }\n buildPane().then(console.log('async - chat pane built'))\n return div\n }\n}\n"],"file":"longChatPane.js"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _solidLogic = require("solid-logic");
4
+
3
5
  /* Chat Pane
4
6
  **
5
7
  ** Plan is to support a finte number of chat graph shapes
@@ -109,7 +111,7 @@ module.exports = {
109
111
  // subject may be the file
110
112
  messageStore = subject.doc();
111
113
  } else if (kb.any(subject, UI.ns.wf('message'))) {
112
- messageStore = UI.store.any(subject, UI.ns.wf('message')).doc();
114
+ messageStore = _solidLogic.store.any(subject, UI.ns.wf('message')).doc();
113
115
  } else if (kb.holds(undefined, ns.rdf('type'), ns.foaf('ChatChannel'), subject) || kb.holds(subject, ns.rdf('type'), ns.foaf('ChatChannel'))) {
114
116
  // subject is the file
115
117
  var ircLogQuery = function ircLogQuery() {