solid-ui 2.4.31-13dc2247 → 2.4.31-26d24f44
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 +1641 -4633
- package/dist/solid-ui.js.map +1 -1
- package/dist/solid-ui.min.js +1 -1
- package/dist/solid-ui.min.js.LICENSE.txt +1 -1
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +1957 -1957
- 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 +66 -251
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +126 -131
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +416 -611
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +191 -328
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +276 -462
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +208 -299
- package/lib/chat/thread.js.map +1 -1
- package/lib/preferences.js +0 -4
- package/lib/preferences.js.map +1 -1
- package/lib/tabs.js +1 -1
- package/lib/tabs.js.map +1 -1
- package/lib/utils/keyHelpers/accessData.d.ts +2 -2
- package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
- package/lib/utils/keyHelpers/accessData.js +115 -59
- package/lib/utils/keyHelpers/accessData.js.map +1 -1
- package/lib/versionInfo.js +2 -2
- package/lib/versionInfo.js.map +1 -1
- package/package.json +2 -2
- package/lib/utils/keyHelpers/otherHelpers.d.ts +0 -3
- package/lib/utils/keyHelpers/otherHelpers.d.ts.map +0 -1
- package/lib/utils/keyHelpers/otherHelpers.js +0 -22
- package/lib/utils/keyHelpers/otherHelpers.js.map +0 -1
package/lib/chat/bookmarks.js
CHANGED
|
@@ -28,6 +28,8 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
28
28
|
* @packageDocumentation
|
|
29
29
|
*/
|
|
30
30
|
|
|
31
|
+
/* global alert confirm */
|
|
32
|
+
|
|
31
33
|
// pull in first avoid cross-refs
|
|
32
34
|
|
|
33
35
|
var UI = {
|
|
@@ -120,8 +122,7 @@ function _findBookmarkDocument() {
|
|
|
120
122
|
}
|
|
121
123
|
userContext.bookmarkDocument = userContext.instances[0];
|
|
122
124
|
if (userContext.instances.length > 1) {
|
|
123
|
-
|
|
124
|
-
// Note: should pick up community bookmarks as well
|
|
125
|
+
alert('More than one bookmark file! ' + userContext.instances);
|
|
125
126
|
}
|
|
126
127
|
_context.next = 28;
|
|
127
128
|
break;
|
|
@@ -142,7 +143,7 @@ function _findBookmarkDocument() {
|
|
|
142
143
|
case 18:
|
|
143
144
|
_context.prev = 18;
|
|
144
145
|
_context.t0 = _context["catch"](12);
|
|
145
|
-
|
|
146
|
+
alert.error("Can't make fresh bookmark file:" + _context.t0);
|
|
146
147
|
return _context.abrupt("return", userContext);
|
|
147
148
|
case 22:
|
|
148
149
|
_context.next = 24;
|
|
@@ -152,7 +153,7 @@ function _findBookmarkDocument() {
|
|
|
152
153
|
_context.next = 28;
|
|
153
154
|
break;
|
|
154
155
|
case 27:
|
|
155
|
-
|
|
156
|
+
alert('You seem to have no bookmark file and not even a profile file.');
|
|
156
157
|
case 28:
|
|
157
158
|
return _context.abrupt("return", userContext);
|
|
158
159
|
case 29:
|
|
@@ -207,7 +208,7 @@ function _addBookmark() {
|
|
|
207
208
|
_context2.prev = 14;
|
|
208
209
|
_context2.t0 = _context2["catch"](9);
|
|
209
210
|
msg = 'Making bookmark: ' + _context2.t0;
|
|
210
|
-
|
|
211
|
+
alert.error(msg);
|
|
211
212
|
return _context2.abrupt("return", null);
|
|
212
213
|
case 19:
|
|
213
214
|
return _context2.abrupt("return", bookmark);
|
|
@@ -260,7 +261,7 @@ function _toggleBookmark() {
|
|
|
260
261
|
_context3.prev = 15;
|
|
261
262
|
_context3.t0 = _context3["catch"](8);
|
|
262
263
|
debug.error('Cant delete bookmark:' + _context3.t0);
|
|
263
|
-
|
|
264
|
+
alert('Cant delete bookmark:' + _context3.t0);
|
|
264
265
|
case 19:
|
|
265
266
|
i++;
|
|
266
267
|
_context3.next = 7;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarks.js","names":["debug","_interopRequireWildcard","require","_iconBase","_index","ns","pad","rdf","style","utils","widgets","_solidLogic","_login","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","UI","icons","media","$rdf","BOOK","Namespace","BOOKMARK_ICON","label","dom","window","document","createIfNotExists","doc","Promise","resolve","reject","store","fetcher","load","then","response","log","err","status","webOperation","uri","data","contentType","requested","updatePromise","del","ins","updater","update","ok","errorBody","Error","findBookmarkDocument","_x","_findBookmarkDocument","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","userContext","theClass","fileTail","isPublic","newBookmarkFile","wrap","_callee$","_context","prev","next","findAppInstances","instances","length","bookmarkDocument","warn","publicProfile","sym","dir","t0","abrupt","registerInTypeIndex","index","stop","addBookmark","_x2","_x3","_addBookmark","_callee2","context","target","title","me","author","bookmarkDoc","bookmark","msg","_callee2$","_context2","authn","currentUser","any","foaf","anyValue","sioc","slice","newThing","st","dct","Date","toggleBookmark","_x4","_x5","_x6","_toggleBookmark","_callee3","bookmarkButton","bookmarks","_callee3$","_context3","each","confirm","connectedStatements","backgroundColor","error","sent","renderBookmarksButton","_x7","_x8","_renderBookmarksButton","_callee5","setBookmarkButtonColor","_setBookmarkButtonColor","_callee5$","_context5","_setBookmarkButtonCol2","_callee4","bookmarked","_callee4$","_context4","buttonStyle","_setBookmarkButtonCol","_x9","button","iconBase"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { store, registerInTypeIndex, authn } from 'solid-logic'\nimport { findAppInstances } from '../login/login'\n\nconst UI = { icons, ns, media, pad, rdf, style, utils, widgets }\nconst $rdf = UI.rdf\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n/** Create a resource if it really does not exist\n * Be absolutely sure something does not exist before creating a new empty file\n * as otherwise existing could be deleted.\n * @param doc {NamedNode} - The resource\n */\nfunction createIfNotExists (doc) {\n return new Promise(function (resolve, reject) {\n store.fetcher.load(doc).then(\n response => {\n debug.log('createIfNotExists doc exists, all good ' + doc)\n // store.fetcher.webOperation('HEAD', doc.uri).then(response => {\n resolve(response)\n },\n err => {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists doc does NOT exist, will create... ' + doc\n )\n\n store.fetcher\n .webOperation('PUT', doc.uri, {\n data: '',\n contentType: 'text/turtle'\n })\n .then(\n response => {\n // fetcher.requested[doc.uri] = 'done' // do not need to read ?? but no headers\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n debug.log('createIfNotExists doc created ok ' + doc)\n resolve(response)\n },\n err => {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n reject(err)\n }\n )\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n reject(err)\n }\n }\n )\n })\n}\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n debug.warn('More than one bookmark file! ' + userContext.instances) // @@ todo - deal with > 1\n // Note: should pick up community bookmarks as well\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await createIfNotExists(newBookmarkFile)\n } catch (e) {\n debug.warn(\"Can't make fresh bookmark file:\" + e)\n return userContext\n }\n await registerInTypeIndex(\n newBookmarkFile,\n userContext.index,\n theClass\n )\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n debug.warn('You seem to have no bookmark file, nor even a profile file!')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n debug.warn(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n debug.warn('Cannot delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bookmarks.js","names":["debug","_interopRequireWildcard","require","_iconBase","_index","ns","pad","rdf","style","utils","widgets","_solidLogic","_login","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","UI","icons","media","$rdf","BOOK","Namespace","BOOKMARK_ICON","label","dom","window","document","createIfNotExists","doc","Promise","resolve","reject","store","fetcher","load","then","response","log","err","status","webOperation","uri","data","contentType","requested","updatePromise","del","ins","updater","update","ok","errorBody","Error","findBookmarkDocument","_x","_findBookmarkDocument","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","userContext","theClass","fileTail","isPublic","newBookmarkFile","wrap","_callee$","_context","prev","next","findAppInstances","instances","length","bookmarkDocument","alert","publicProfile","sym","dir","t0","error","abrupt","registerInTypeIndex","index","stop","addBookmark","_x2","_x3","_addBookmark","_callee2","context","target","title","me","author","bookmarkDoc","bookmark","msg","_callee2$","_context2","authn","currentUser","any","foaf","anyValue","sioc","slice","newThing","st","dct","Date","toggleBookmark","_x4","_x5","_x6","_toggleBookmark","_callee3","bookmarkButton","bookmarks","_callee3$","_context3","each","confirm","connectedStatements","backgroundColor","sent","renderBookmarksButton","_x7","_x8","_renderBookmarksButton","_callee5","setBookmarkButtonColor","_setBookmarkButtonColor","_callee5$","_context5","_setBookmarkButtonCol2","_callee4","bookmarked","_callee4$","_context4","buttonStyle","_setBookmarkButtonCol","_x9","button","iconBase"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\n/* global alert confirm */\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { store, registerInTypeIndex, authn } from 'solid-logic'\nimport { findAppInstances } from '../login/login'\n\nconst UI = { icons, ns, media, pad, rdf, style, utils, widgets }\nconst $rdf = UI.rdf\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n/** Create a resource if it really does not exist\n * Be absolutely sure something does not exist before creating a new empty file\n * as otherwise existing could be deleted.\n * @param doc {NamedNode} - The resource\n */\nfunction createIfNotExists (doc) {\n return new Promise(function (resolve, reject) {\n store.fetcher.load(doc).then(\n response => {\n debug.log('createIfNotExists doc exists, all good ' + doc)\n // store.fetcher.webOperation('HEAD', doc.uri).then(response => {\n resolve(response)\n },\n err => {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists doc does NOT exist, will create... ' + doc\n )\n\n store.fetcher\n .webOperation('PUT', doc.uri, {\n data: '',\n contentType: 'text/turtle'\n })\n .then(\n response => {\n // fetcher.requested[doc.uri] = 'done' // do not need to read ?? but no headers\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n debug.log('createIfNotExists doc created ok ' + doc)\n resolve(response)\n },\n err => {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n reject(err)\n }\n )\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n reject(err)\n }\n }\n )\n })\n}\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n alert('More than one bookmark file! ' + userContext.instances)\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await createIfNotExists(newBookmarkFile)\n } catch (e) {\n alert.error(\"Can't make fresh bookmark file:\" + e)\n return userContext\n }\n await registerInTypeIndex(\n newBookmarkFile,\n userContext.index,\n theClass\n )\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n alert('You seem to have no bookmark file and not even a profile file.')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n alert.error(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n alert('Cant delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n"],"mappings":";;;;;;;;;;;;AAMA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,EAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,GAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,GAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,KAAA,GAAAP,uBAAA,CAAAC,OAAA;AACA,IAAAO,KAAA,GAAAR,uBAAA,CAAAC,OAAA;AACA,IAAAQ,OAAA,GAAAT,uBAAA,CAAAC,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,MAAA,GAAAV,OAAA;AAAiD,SAAAW,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAb,wBAAAa,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,sBAAAA,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,cAAAR,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAhBjD;AACA;AACA;AACA;;AAEA;;AAM8B;;AAO9B,IAAMY,EAAE,GAAG;EAAEC,KAAK,EAALA,eAAK;EAAE9B,EAAE,EAAFA,EAAE;EAAE+B,KAAK,EAALA,YAAK;EAAE9B,GAAG,EAAHA,GAAG;EAAEC,GAAG,EAAHA,GAAG;EAAEC,KAAK,EAALA,KAAK;EAAEC,KAAK,EAALA,KAAK;EAAEC,OAAO,EAAPA;AAAQ,CAAC;AAChE,IAAM2B,IAAI,GAAGH,EAAE,CAAC3B,GAAG;AAEnB,IAAM+B,IAAI,GAAGD,IAAI,CAACE,SAAS,CAAC,qCAAqC,CAAC;AAClE,IAAMC,aAAa,GAAG,gBAAgB;AAEtC,IAAMC,KAAK,GAAGhC,KAAK,CAACgC,KAAK;AACzB,IAAMC,GAAG,GAAGC,MAAM,CAACC,QAAQ,IAAI,IAAI;;AAEnC;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAAEC,GAAG,EAAE;EAC/B,OAAO,IAAIC,OAAO,CAAC,UAAUC,OAAO,EAAEC,MAAM,EAAE;IAC5CC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAACN,GAAG,CAAC,CAACO,IAAI,CAC1B,UAAAC,QAAQ,EAAI;MACVtD,KAAK,CAACuD,GAAG,CAAC,yCAAyC,GAAGT,GAAG,CAAC;MAC1D;MACAE,OAAO,CAACM,QAAQ,CAAC;IACnB,CAAC,EACD,UAAAE,GAAG,EAAI;MACL,IAAIA,GAAG,CAACF,QAAQ,CAACG,MAAM,KAAK,GAAG,EAAE;QAC/BzD,KAAK,CAACuD,GAAG,CACP,uDAAuD,GAAGT,GAC5D,CAAC;QAEDI,iBAAK,CAACC,OAAO,CACVO,YAAY,CAAC,KAAK,EAAEZ,GAAG,CAACa,GAAG,EAAE;UAC5BC,IAAI,EAAE,EAAE;UACRC,WAAW,EAAE;QACf,CAAC,CAAC,CACDR,IAAI,CACH,UAAAC,QAAQ,EAAI;UACV;UACA,OAAOJ,iBAAK,CAACC,OAAO,CAACW,SAAS,CAAChB,GAAG,CAACa,GAAG,CAAC,EAAC;UACxC3D,KAAK,CAACuD,GAAG,CAAC,mCAAmC,GAAGT,GAAG,CAAC;UACpDE,OAAO,CAACM,QAAQ,CAAC;QACnB,CAAC,EACD,UAAAE,GAAG,EAAI;UACLxD,KAAK,CAACuD,GAAG,CAAC,gCAAgC,GAAGT,GAAG,GAAG,IAAI,GAAGU,GAAG,CAAC;UAC9DP,MAAM,CAACO,GAAG,CAAC;QACb,CACF,CAAC;MACL,CAAC,MAAM;QACLxD,KAAK,CAACuD,GAAG,CACP,6CAA6C,GAAGT,GAAG,GAAG,IAAI,GAAGU,GAC/D,CAAC;QACDP,MAAM,CAACO,GAAG,CAAC;MACb;IACF,CACF,CAAC;EACH,CAAC,CAAC;AACJ;;AAEA;AACA,SAASO,aAAaA,CAAEC,GAAG,EAAEC,GAAG,EAAE;EAChC,OAAO,IAAIlB,OAAO,CAAC,UAAUC,OAAO,EAAEC,MAAM,EAAE;IAC5CC,iBAAK,CAACgB,OAAO,CAACC,MAAM,CAACH,GAAG,EAAEC,GAAG,EAAE,UAAUN,GAAG,EAAES,EAAE,EAAEC,SAAS,EAAE;MAC3D,IAAI,CAACD,EAAE,EAAE;QACPnB,MAAM,CAAC,IAAIqB,KAAK,CAACD,SAAS,CAAC,CAAC;MAC9B,CAAC,MAAM;QACLrB,OAAO,CAAC,CAAC;MACX;IACF,CAAC,CAAC,EAAC;EACL,CAAC,CAAC,EAAC;AACL;;AAEA;AACA;AACA;AACA;AADA,SAEsBuB,oBAAoBA,CAAAC,EAAA;EAAA,OAAAC,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAsC1C;AACA;AADA,SAAAF,sBAAA;EAAAA,qBAAA,OAAAG,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAtCO,SAAAC,QAAqCC,WAAW;IAAA,IAAAC,QAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,eAAA;IAAA,OAAAP,YAAA,YAAAQ,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAC/CR,QAAQ,GAAG3C,IAAI,CAAC,UAAU,CAAC;UAC3B4C,QAAQ,GAAG,eAAe;UAC1BC,QAAQ,GAAG,IAAI;UAAAI,QAAA,CAAAE,IAAA;UAAA,OAEf,IAAAC,uBAAgB,EAACV,WAAW,EAAEC,QAAQ,EAAEE,QAAQ,CAAC;QAAA;UAAA,MAEnDH,WAAW,CAACW,SAAS,IAAIX,WAAW,CAACW,SAAS,CAACC,MAAM,GAAG,CAAC;YAAAL,QAAA,CAAAE,IAAA;YAAA;UAAA;UAC3DT,WAAW,CAACa,gBAAgB,GAAGb,WAAW,CAACW,SAAS,CAAC,CAAC,CAAC;UACvD,IAAIX,WAAW,CAACW,SAAS,CAACC,MAAM,GAAG,CAAC,EAAE;YACpCE,KAAK,CAAC,+BAA+B,GAAGd,WAAW,CAACW,SAAS,CAAC;UAChE;UAACJ,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAA,KAEGT,WAAW,CAACe,aAAa;YAAAR,QAAA,CAAAE,IAAA;YAAA;UAAA;UAC3B;UACML,eAAe,GAAG/C,IAAI,CAAC2D,GAAG,CAC9BhB,WAAW,CAACe,aAAa,CAACE,GAAG,CAAC,CAAC,CAACtC,GAAG,GAAGuB,QACxC,CAAC;UAAAK,QAAA,CAAAC,IAAA;UAECxF,KAAK,CAACuD,GAAG,CAAC,6BAA6B,GAAG6B,eAAe,CAAC;UAAAG,QAAA,CAAAE,IAAA;UAAA,OACpD5C,iBAAiB,CAACuC,eAAe,CAAC;QAAA;UAAAG,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAW,EAAA,GAAAX,QAAA;UAExCO,KAAK,CAACK,KAAK,CAAC,iCAAiC,GAAAZ,QAAA,CAAAW,EAAI,CAAC;UAAA,OAAAX,QAAA,CAAAa,MAAA,WAC3CpB,WAAW;QAAA;UAAAO,QAAA,CAAAE,IAAA;UAAA,OAEd,IAAAY,+BAAmB,EACvBjB,eAAe,EACfJ,WAAW,CAACsB,KAAK,EACjBrB,QACF,CAAC;QAAA;UACDD,WAAW,CAACa,gBAAgB,GAAGT,eAAe;UAAAG,QAAA,CAAAE,IAAA;UAAA;QAAA;UAE9CK,KAAK,CAAC,gEAAgE,CAAC;QAAA;UAAA,OAAAP,QAAA,CAAAa,MAAA,WAGpEpB,WAAW;QAAA;QAAA;UAAA,OAAAO,QAAA,CAAAgB,IAAA;MAAA;IAAA,GAAAxB,OAAA;EAAA,CACnB;EAAA,OAAAN,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAKc6B,WAAWA,CAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,YAAA,CAAAjC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAgC,aAAA;EAAAA,YAAA,OAAA/B,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAA1B,SAAA8B,SAA4BC,OAAO,EAAEC,MAAM;IAAA,IAAAC,KAAA,EAAAC,EAAA,EAAAC,MAAA,EAAAC,WAAA,EAAAC,QAAA,EAAAlD,GAAA,EAAAmD,GAAA;IAAA,OAAAvC,YAAA,YAAAQ,IAAA,UAAAgC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA9B,IAAA,GAAA8B,SAAA,CAAA7B,IAAA;QAAA;UACzC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACMsB,KAAK,GAAG,EAAE;UACRC,EAAE,GAAGO,iBAAK,CAACC,WAAW,CAAC,CAAC,EAAC;UAAA,IAC1BR,EAAE;YAAAM,SAAA,CAAA7B,IAAA;YAAA;UAAA;UAAA,MAAQ,IAAInB,KAAK,CAAC,mCAAmC,CAAC;QAAA;UAEvD2C,MAAM,GAAG/D,iBAAK,CAACuE,GAAG,CAACX,MAAM,EAAEzG,EAAE,CAACqH,IAAI,CAAC,OAAO,CAAC,CAAC;UAClDX,KAAK,GACHtE,KAAK,CAACwE,MAAM,CAAC,GAAG,IAAI,GAAG/D,iBAAK,CAACyE,QAAQ,CAACb,MAAM,EAAEzG,EAAE,CAACuH,IAAI,CAAC,SAAS,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAC;UAC3EX,WAAW,GAAGL,OAAO,CAAChB,gBAAgB;UACtCsB,QAAQ,GAAGjF,EAAE,CAACxB,OAAO,CAACoH,QAAQ,CAACZ,WAAW,EAAEH,KAAK,CAAC;UAClD9C,GAAG,GAAG,CACV5B,IAAI,CAAC0F,EAAE,CAACb,WAAW,EAAEhF,EAAE,CAAC7B,EAAE,CAAC2H,GAAG,CAAC,YAAY,CAAC,EAAEb,QAAQ,EAAED,WAAW,CAAC,EACpE7E,IAAI,CAAC0F,EAAE,CAACZ,QAAQ,EAAEjF,EAAE,CAAC7B,EAAE,CAACE,GAAG,CAAC,MAAM,CAAC,EAAE+B,IAAI,CAAC,UAAU,CAAC,EAAE4E,WAAW,CAAC,EACnE7E,IAAI,CAAC0F,EAAE,CAACZ,QAAQ,EAAEjF,EAAE,CAAC7B,EAAE,CAAC2H,GAAG,CAAC,SAAS,CAAC,EAAE,IAAIC,IAAI,CAAC,CAAC,EAAEf,WAAW,CAAC,EAChE7E,IAAI,CAAC0F,EAAE,CAACZ,QAAQ,EAAE7E,IAAI,CAAC,SAAS,CAAC,EAAEwE,MAAM,EAAEI,WAAW,CAAC,EACvD7E,IAAI,CAAC0F,EAAE,CAACZ,QAAQ,EAAEjF,EAAE,CAAC7B,EAAE,CAACqH,IAAI,CAAC,OAAO,CAAC,EAAEV,EAAE,EAAEE,WAAW,CAAC,EACvD7E,IAAI,CAAC0F,EAAE,CAACZ,QAAQ,EAAEjF,EAAE,CAAC7B,EAAE,CAAC2H,GAAG,CAAC,OAAO,CAAC,EAAEjB,KAAK,EAAEG,WAAW,CAAC,CAC1D;UAAAI,SAAA,CAAA9B,IAAA;UAAA8B,SAAA,CAAA7B,IAAA;UAAA,OAEO1B,aAAa,CAAC,EAAE,EAAEE,GAAG,CAAC;QAAA;UAAAqD,SAAA,CAAA7B,IAAA;UAAA;QAAA;UAAA6B,SAAA,CAAA9B,IAAA;UAAA8B,SAAA,CAAApB,EAAA,GAAAoB,SAAA;UAEtBF,GAAG,GAAG,mBAAmB,GAAAE,SAAA,CAAApB,EAAI;UACnCJ,KAAK,CAACK,KAAK,CAACiB,GAAG,CAAC;UAAA,OAAAE,SAAA,CAAAlB,MAAA,WACT,IAAI;QAAA;UAAA,OAAAkB,SAAA,CAAAlB,MAAA,WAENe,QAAQ;QAAA;QAAA;UAAA,OAAAG,SAAA,CAAAf,IAAA;MAAA;IAAA,GAAAK,QAAA;EAAA,CAChB;EAAA,OAAAD,YAAA,CAAAjC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEqBuD,cAAcA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,eAAA,CAAA5D,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAA2D,gBAAA;EAAAA,eAAA,OAAA1D,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAA7B,SAAAyD,SAA+BvD,WAAW,EAAE8B,MAAM,EAAE0B,cAAc;IAAA,IAAAC,SAAA,EAAAzG,CAAA,EAAAmF,QAAA;IAAA,OAAAtC,YAAA,YAAAQ,IAAA,UAAAqD,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAnD,IAAA,GAAAmD,SAAA,CAAAlD,IAAA;QAAA;UAAAkD,SAAA,CAAAlD,IAAA;UAAA,OACjEvC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAAC4B,WAAW,CAACa,gBAAgB,CAAC;QAAA;UAChD4C,SAAS,GAAGvF,iBAAK,CAAC0F,IAAI,CAC1B,IAAI,EACJtG,IAAI,CAAC,SAAS,CAAC,EACfwE,MAAM,EACN9B,WAAW,CAACa,gBACd,CAAC;UAAA,KACG4C,SAAS,CAAC7C,MAAM;YAAA+C,SAAA,CAAAlD,IAAA;YAAA;UAAA;UAAA,IAEboD,OAAO,CAAC,0BAA0B,GAAGJ,SAAS,CAAC7C,MAAM,CAAC;YAAA+C,SAAA,CAAAlD,IAAA;YAAA;UAAA;UAAA,OAAAkD,SAAA,CAAAvC,MAAA;QAAA;UAClDpE,CAAC,GAAG,CAAC;QAAA;UAAA,MAAEA,CAAC,GAAGyG,SAAS,CAAC7C,MAAM;YAAA+C,SAAA,CAAAlD,IAAA;YAAA;UAAA;UAAAkD,SAAA,CAAAnD,IAAA;UAAAmD,SAAA,CAAAlD,IAAA;UAAA,OAE1B1B,aAAa,CAACb,iBAAK,CAAC4F,mBAAmB,CAACL,SAAS,CAACzG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAAA;UAChEwG,cAAc,CAAChI,KAAK,CAACuI,eAAe,GAAG,OAAO;UAC9C/I,KAAK,CAACuD,GAAG,CAAC,oBAAoB,GAAGkF,SAAS,CAACzG,CAAC,CAAC,CAAC;UAAA2G,SAAA,CAAAlD,IAAA;UAAA;QAAA;UAAAkD,SAAA,CAAAnD,IAAA;UAAAmD,SAAA,CAAAzC,EAAA,GAAAyC,SAAA;UAE9C3I,KAAK,CAACmG,KAAK,CAAC,uBAAuB,GAAAwC,SAAA,CAAAzC,EAAI,CAAC;UACxCJ,KAAK,CAAC,uBAAuB,GAAA6C,SAAA,CAAAzC,EAAI,CAAC;QAAA;UAPAlE,CAAC,EAAE;UAAA2G,SAAA,CAAAlD,IAAA;UAAA;QAAA;UAAAkD,SAAA,CAAAlD,IAAA;UAAA;QAAA;UAAAkD,SAAA,CAAAlD,IAAA;UAAA,OAWlBe,WAAW,CAACxB,WAAW,EAAE8B,MAAM,CAAC;QAAA;UAAjDK,QAAQ,GAAAwB,SAAA,CAAAK,IAAA;UACdR,cAAc,CAAChI,KAAK,CAACuI,eAAe,GAAG,QAAQ;UAC/C/I,KAAK,CAACuD,GAAG,CAAC,kBAAkB,GAAG4D,QAAQ,CAAC;QAAA;QAAA;UAAA,OAAAwB,SAAA,CAAApC,IAAA;MAAA;IAAA,GAAAgC,QAAA;EAAA,CAE3C;EAAA,OAAAD,eAAA,CAAA5D,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEqBsE,qBAAqBA,CAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,sBAAA,CAAA1E,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAyE,uBAAA;EAAAA,sBAAA,OAAAxE,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAApC,SAAAuE,SAAsCrE,WAAW,EAAE8B,MAAM;IAAA,IAC/CwC,sBAAsB,EAAAC,uBAAA,EAAAf,cAAA;IAAA,OAAA3D,YAAA,YAAAQ,IAAA,UAAAmE,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAjE,IAAA,GAAAiE,SAAA,CAAAhE,IAAA;QAAA;UAAA8D,uBAAA,YAAAG,uBAAA;YAAAH,uBAAA,OAAA3E,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAArC,SAAA6E,SAAuCnB,cAAc;cAAA,IAAAoB,UAAA;cAAA,OAAA/E,YAAA,YAAAQ,IAAA,UAAAwE,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAtE,IAAA,GAAAsE,SAAA,CAAArE,IAAA;kBAAA;oBAAAqE,SAAA,CAAArE,IAAA;oBAAA,OAC7CvC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAAC4B,WAAW,CAACa,gBAAgB,CAAC;kBAAA;oBAChD+D,UAAU,GAAG1G,iBAAK,CAACuE,GAAG,CAC1B,IAAI,EACJnF,IAAI,CAAC,SAAS,CAAC,EACfkG,cAAc,CAAC1B,MAAM,EACrB9B,WAAW,CAACa,gBACd,CAAC;oBACD2C,cAAc,CAAChI,KAAK,GAAG0B,EAAE,CAAC1B,KAAK,CAACuJ,WAAW;oBAC3C,IAAIH,UAAU,EAAEpB,cAAc,CAAChI,KAAK,CAACuI,eAAe,GAAG,QAAQ;kBAAA;kBAAA;oBAAA,OAAAe,SAAA,CAAAvD,IAAA;gBAAA;cAAA,GAAAoD,QAAA;YAAA,CAChE;YAAA,OAAAJ,uBAAA,CAAA7E,KAAA,OAAAC,SAAA;UAAA;UAVc2E,sBAAsB,YAAAU,sBAAAC,GAAA;YAAA,OAAAV,uBAAA,CAAA7E,KAAA,OAAAC,SAAA;UAAA;UAAA,KAajCK,WAAW,CAACa,gBAAgB;YAAA4D,SAAA,CAAAhE,IAAA;YAAA;UAAA;UAC9B+C,cAAc,GAAGtG,EAAE,CAACxB,OAAO,CAACwJ,MAAM,CAChCxH,GAAG,EACHR,EAAE,CAACC,KAAK,CAACgI,QAAQ,GAAG3H,aAAa,EACjCC,KAAK,CAACH,IAAI,CAAC,UAAU,CAAC,CAAC,EACvB,YAAM;YACJ4F,cAAc,CAAClD,WAAW,EAAE8B,MAAM,EAAE0B,cAAc,CAAC;UACrD,CACF,CAAC;UACDA,cAAc,CAAC1B,MAAM,GAAGA,MAAM;UAAA2C,SAAA,CAAAhE,IAAA;UAAA,OACxB6D,sBAAsB,CAACd,cAAc,CAAC;QAAA;UAAA,OAAAiB,SAAA,CAAArD,MAAA,WACrCoC,cAAc;QAAA;QAAA;UAAA,OAAAiB,SAAA,CAAAlD,IAAA;MAAA;IAAA,GAAA8C,QAAA;EAAA,CAExB;EAAA,OAAAD,sBAAA,CAAA1E,KAAA,OAAAC,SAAA;AAAA"}
|
package/lib/chat/chatLogic.js
CHANGED
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.ChatChannel = void 0;
|
|
9
9
|
exports._createIfNotExists = _createIfNotExists;
|
|
10
|
-
exports.allVersions = allVersions;
|
|
11
10
|
exports.isDeleted = isDeleted;
|
|
12
11
|
exports.isHidden = isHidden;
|
|
13
12
|
exports.isReplaced = isReplaced;
|
|
@@ -86,9 +85,8 @@ var ChatChannel = exports.ChatChannel = /*#__PURE__*/function () {
|
|
|
86
85
|
var _this = this;
|
|
87
86
|
var oldMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
88
87
|
var deleteIt = arguments.length > 2 ? arguments[2] : undefined;
|
|
89
|
-
var thread = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
90
88
|
return /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
91
|
-
var sts, now, timestamp, dateStamp, chatDocument, message, me, msg, oldMsgMaker,
|
|
89
|
+
var sts, now, timestamp, dateStamp, chatDocument, message, me, msg, oldMsgMaker, errMsg, privateKey, sig, _errMsg;
|
|
92
90
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
93
91
|
while (1) switch (_context2.prev = _context2.next) {
|
|
94
92
|
case 0:
|
|
@@ -102,88 +100,73 @@ var ChatChannel = exports.ChatChannel = /*#__PURE__*/function () {
|
|
|
102
100
|
msg = (0, _signature.getBlankMsg)();
|
|
103
101
|
msg.id = message.uri;
|
|
104
102
|
if (!oldMsg) {
|
|
105
|
-
_context2.next =
|
|
103
|
+
_context2.next = 22;
|
|
106
104
|
break;
|
|
107
105
|
}
|
|
108
106
|
// edit message replaces old one
|
|
109
107
|
oldMsgMaker = _solidLogic.store.any(oldMsg, ns.foaf('maker')); // may not be needed here, but needed on READ
|
|
110
108
|
if (!(oldMsgMaker.uri === me.uri)) {
|
|
111
|
-
_context2.next =
|
|
109
|
+
_context2.next = 16;
|
|
112
110
|
break;
|
|
113
111
|
}
|
|
114
|
-
|
|
115
|
-
return mostRecentVersion(oldMsg);
|
|
116
|
-
case 14:
|
|
117
|
-
oldMsgMostRecentVersion = _context2.sent;
|
|
118
|
-
sts.push($rdf.st(oldMsgMostRecentVersion, ns.dct('isReplacedBy'), message, chatDocument));
|
|
119
|
-
// if oldMsg has_reply => add has_reply to message
|
|
120
|
-
oldMsgThread = _solidLogic.store.any(oldMsgMostRecentVersion, ns.sioc('has_reply'));
|
|
121
|
-
if (oldMsgThread) {
|
|
122
|
-
sts.push($rdf.st(message, ns.sioc('has_reply'), oldMsgThread, chatDocument));
|
|
123
|
-
}
|
|
112
|
+
sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument));
|
|
124
113
|
if (deleteIt) {
|
|
125
114
|
// we need to add a specific signature, else anyone can delete a msg ?
|
|
126
115
|
sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument));
|
|
127
116
|
}
|
|
128
|
-
_context2.next =
|
|
117
|
+
_context2.next = 20;
|
|
129
118
|
break;
|
|
130
|
-
case
|
|
119
|
+
case 16:
|
|
131
120
|
errMsg = 'Error you cannot delete/edit a message from someone else : \n' + oldMsgMaker.uri;
|
|
132
121
|
debug.warn(errMsg);
|
|
133
122
|
alert(errMsg);
|
|
134
123
|
throw new Error(errMsg);
|
|
135
|
-
case
|
|
136
|
-
_context2.next =
|
|
124
|
+
case 20:
|
|
125
|
+
_context2.next = 23;
|
|
137
126
|
break;
|
|
138
|
-
case
|
|
127
|
+
case 22:
|
|
139
128
|
// link new message to channel
|
|
140
129
|
sts.push($rdf.st(_this.channel, ns.wf('message'), message, chatDocument));
|
|
141
|
-
case
|
|
130
|
+
case 23:
|
|
142
131
|
sts.push($rdf.st(message, ns.sioc('content'), _solidLogic.store.literal(text), chatDocument));
|
|
143
132
|
msg.content = text;
|
|
144
133
|
sts.push($rdf.st(message, ns.dct('created'), dateStamp, chatDocument));
|
|
145
134
|
msg.created = dateStamp.value;
|
|
146
135
|
if (!me) {
|
|
147
|
-
_context2.next =
|
|
136
|
+
_context2.next = 35;
|
|
148
137
|
break;
|
|
149
138
|
}
|
|
150
139
|
sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument));
|
|
151
140
|
msg.maker = me.uri;
|
|
152
141
|
// privateKey the cached private key of me, cached in store
|
|
153
|
-
_context2.next =
|
|
142
|
+
_context2.next = 32;
|
|
154
143
|
return (0, _keys.getPrivateKey)(me);
|
|
155
|
-
case
|
|
144
|
+
case 32:
|
|
156
145
|
privateKey = _context2.sent;
|
|
157
146
|
// me.uri)
|
|
158
147
|
sig = (0, _signature.signMsg)(msg, privateKey);
|
|
159
148
|
sts.push($rdf.st(message, $rdf.sym("".concat(_signature.SEC, "proofValue")), $rdf.lit(sig), chatDocument));
|
|
160
|
-
case
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
_context2.prev = 41;
|
|
168
|
-
_context2.next = 44;
|
|
169
|
-
return _solidLogic.store.updater.updateMany([], sts);
|
|
170
|
-
case 44:
|
|
171
|
-
_context2.next = 52;
|
|
149
|
+
case 35:
|
|
150
|
+
_context2.prev = 35;
|
|
151
|
+
_context2.next = 38;
|
|
152
|
+
return _solidLogic.store.updater.update([], sts);
|
|
153
|
+
case 38:
|
|
154
|
+
_context2.next = 46;
|
|
172
155
|
break;
|
|
173
|
-
case
|
|
174
|
-
_context2.prev =
|
|
175
|
-
_context2.t0 = _context2["catch"](
|
|
156
|
+
case 40:
|
|
157
|
+
_context2.prev = 40;
|
|
158
|
+
_context2.t0 = _context2["catch"](35);
|
|
176
159
|
_errMsg = 'Error saving chat message: ' + _context2.t0;
|
|
177
160
|
debug.warn(_errMsg);
|
|
178
161
|
alert(_errMsg);
|
|
179
162
|
throw new Error(_errMsg);
|
|
180
|
-
case
|
|
163
|
+
case 46:
|
|
181
164
|
return _context2.abrupt("return", message);
|
|
182
|
-
case
|
|
165
|
+
case 47:
|
|
183
166
|
case "end":
|
|
184
167
|
return _context2.stop();
|
|
185
168
|
}
|
|
186
|
-
}, _callee2, null, [[
|
|
169
|
+
}, _callee2, null, [[35, 40]]);
|
|
187
170
|
})();
|
|
188
171
|
});
|
|
189
172
|
function updateMessage(_x2) {
|
|
@@ -214,193 +197,25 @@ var ChatChannel = exports.ChatChannel = /*#__PURE__*/function () {
|
|
|
214
197
|
return _deleteMessage.apply(this, arguments);
|
|
215
198
|
}
|
|
216
199
|
return deleteMessage;
|
|
217
|
-
}()
|
|
218
|
-
// or return one which already exists
|
|
219
|
-
)
|
|
220
|
-
}, {
|
|
221
|
-
key: "createThread",
|
|
222
|
-
value: function () {
|
|
223
|
-
var _createThread = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(threadRoot) {
|
|
224
|
-
var already, thread, insert;
|
|
225
|
-
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
226
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
227
|
-
case 0:
|
|
228
|
-
already = _solidLogic.store.each(threadRoot, ns.sioc('has_reply'), null, threadRoot.doc()).filter(function (thread) {
|
|
229
|
-
return _solidLogic.store.holds(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc());
|
|
230
|
-
});
|
|
231
|
-
if (!(already.length > 0)) {
|
|
232
|
-
_context4.next = 3;
|
|
233
|
-
break;
|
|
234
|
-
}
|
|
235
|
-
return _context4.abrupt("return", already[0]);
|
|
236
|
-
case 3:
|
|
237
|
-
thread = $rdf.sym(threadRoot.uri + '-thread');
|
|
238
|
-
insert = [$rdf.st(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()), $rdf.st(threadRoot, ns.sioc('has_reply'), thread, thread.doc())];
|
|
239
|
-
_context4.next = 7;
|
|
240
|
-
return _solidLogic.store.updater.update([], insert);
|
|
241
|
-
case 7:
|
|
242
|
-
return _context4.abrupt("return", thread);
|
|
243
|
-
case 8:
|
|
244
|
-
case "end":
|
|
245
|
-
return _context4.stop();
|
|
246
|
-
}
|
|
247
|
-
}, _callee4);
|
|
248
|
-
}));
|
|
249
|
-
function createThread(_x4) {
|
|
250
|
-
return _createThread.apply(this, arguments);
|
|
251
|
-
}
|
|
252
|
-
return createThread;
|
|
253
|
-
}()
|
|
200
|
+
}())
|
|
254
201
|
}]);
|
|
255
202
|
return ChatChannel;
|
|
256
203
|
}(); // class ChatChannel
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
var versions, done, m, prev, next;
|
|
265
|
-
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
266
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
267
|
-
case 0:
|
|
268
|
-
versions = [message];
|
|
269
|
-
done = {};
|
|
270
|
-
done[message.uri] = true;
|
|
271
|
-
m = message;
|
|
272
|
-
case 4:
|
|
273
|
-
if (!true) {
|
|
274
|
-
_context5.next = 15;
|
|
275
|
-
break;
|
|
276
|
-
}
|
|
277
|
-
// earlier?
|
|
278
|
-
prev = _solidLogic.store.any(null, ns.dct('isReplacedBy'), m, m.doc());
|
|
279
|
-
if (!(!prev || done[prev.uri])) {
|
|
280
|
-
_context5.next = 8;
|
|
281
|
-
break;
|
|
282
|
-
}
|
|
283
|
-
return _context5.abrupt("break", 15);
|
|
284
|
-
case 8:
|
|
285
|
-
_context5.next = 10;
|
|
286
|
-
return _solidLogic.store.fetcher.load(prev);
|
|
287
|
-
case 10:
|
|
288
|
-
versions.unshift(prev);
|
|
289
|
-
done[prev.uri] = true;
|
|
290
|
-
m = prev;
|
|
291
|
-
_context5.next = 4;
|
|
292
|
-
break;
|
|
293
|
-
case 15:
|
|
294
|
-
m = message;
|
|
295
|
-
case 16:
|
|
296
|
-
if (!true) {
|
|
297
|
-
_context5.next = 25;
|
|
298
|
-
break;
|
|
299
|
-
}
|
|
300
|
-
// later?
|
|
301
|
-
next = _solidLogic.store.any(m, ns.dct('isReplacedBy'), null, m.doc());
|
|
302
|
-
if (!(!next || done[next.uri])) {
|
|
303
|
-
_context5.next = 20;
|
|
304
|
-
break;
|
|
305
|
-
}
|
|
306
|
-
return _context5.abrupt("break", 25);
|
|
307
|
-
case 20:
|
|
308
|
-
versions.push(next);
|
|
309
|
-
done[next.uri] = true;
|
|
310
|
-
m = next;
|
|
311
|
-
_context5.next = 16;
|
|
312
|
-
break;
|
|
313
|
-
case 25:
|
|
314
|
-
return _context5.abrupt("return", versions);
|
|
315
|
-
case 26:
|
|
316
|
-
case "end":
|
|
317
|
-
return _context5.stop();
|
|
318
|
-
}
|
|
319
|
-
}, _callee5);
|
|
320
|
-
}));
|
|
321
|
-
return _allVersions.apply(this, arguments);
|
|
322
|
-
}
|
|
323
|
-
function originalVersion(_x6) {
|
|
324
|
-
return _originalVersion.apply(this, arguments);
|
|
325
|
-
}
|
|
326
|
-
function _originalVersion() {
|
|
327
|
-
_originalVersion = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(message) {
|
|
328
|
-
var msg, done;
|
|
329
|
-
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
330
|
-
while (1) switch (_context6.prev = _context6.next) {
|
|
331
|
-
case 0:
|
|
332
|
-
msg = message;
|
|
333
|
-
done = {}; // done[message.uri] = true
|
|
334
|
-
case 2:
|
|
335
|
-
if (!msg) {
|
|
336
|
-
_context6.next = 13;
|
|
337
|
-
break;
|
|
338
|
-
}
|
|
339
|
-
if (!done[msg.uri]) {
|
|
340
|
-
_context6.next = 6;
|
|
341
|
-
break;
|
|
342
|
-
}
|
|
343
|
-
debug.error('originalVersion: verion loop' + message);
|
|
344
|
-
return _context6.abrupt("return", message);
|
|
345
|
-
case 6:
|
|
346
|
-
done[msg.uri] = true;
|
|
347
|
-
message = msg;
|
|
348
|
-
_context6.next = 10;
|
|
349
|
-
return _solidLogic.store.fetcher.load(message);
|
|
350
|
-
case 10:
|
|
351
|
-
msg = _solidLogic.store.any(null, ns.dct('isReplacedBy'), message, message.doc());
|
|
352
|
-
_context6.next = 2;
|
|
353
|
-
break;
|
|
354
|
-
case 13:
|
|
355
|
-
return _context6.abrupt("return", message);
|
|
356
|
-
case 14:
|
|
357
|
-
case "end":
|
|
358
|
-
return _context6.stop();
|
|
359
|
-
}
|
|
360
|
-
}, _callee6);
|
|
361
|
-
}));
|
|
362
|
-
return _originalVersion.apply(this, arguments);
|
|
363
|
-
}
|
|
364
|
-
function mostRecentVersion(_x7) {
|
|
365
|
-
return _mostRecentVersion.apply(this, arguments);
|
|
204
|
+
function originalVersion(message) {
|
|
205
|
+
var msg = message;
|
|
206
|
+
while (msg) {
|
|
207
|
+
message = msg;
|
|
208
|
+
msg = _solidLogic.store.any(null, ns.dct('isReplacedBy'), message, message.doc());
|
|
209
|
+
}
|
|
210
|
+
return message;
|
|
366
211
|
}
|
|
367
|
-
function
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
done = {};
|
|
375
|
-
case 2:
|
|
376
|
-
if (!msg) {
|
|
377
|
-
_context7.next = 13;
|
|
378
|
-
break;
|
|
379
|
-
}
|
|
380
|
-
if (!done[msg.uri]) {
|
|
381
|
-
_context7.next = 6;
|
|
382
|
-
break;
|
|
383
|
-
}
|
|
384
|
-
debug.error('mostRecentVersion: verion loop' + message);
|
|
385
|
-
return _context7.abrupt("return", message);
|
|
386
|
-
case 6:
|
|
387
|
-
done[msg.uri] = true;
|
|
388
|
-
message = msg;
|
|
389
|
-
_context7.next = 10;
|
|
390
|
-
return _solidLogic.store.fetcher.load(message);
|
|
391
|
-
case 10:
|
|
392
|
-
msg = _solidLogic.store.any(message, ns.dct('isReplacedBy'), null, message.doc());
|
|
393
|
-
_context7.next = 2;
|
|
394
|
-
break;
|
|
395
|
-
case 13:
|
|
396
|
-
return _context7.abrupt("return", message);
|
|
397
|
-
case 14:
|
|
398
|
-
case "end":
|
|
399
|
-
return _context7.stop();
|
|
400
|
-
}
|
|
401
|
-
}, _callee7);
|
|
402
|
-
}));
|
|
403
|
-
return _mostRecentVersion.apply(this, arguments);
|
|
212
|
+
function mostRecentVersion(message) {
|
|
213
|
+
var msg = message;
|
|
214
|
+
while (msg) {
|
|
215
|
+
message = msg;
|
|
216
|
+
msg = _solidLogic.store.any(message, ns.dct('isReplacedBy'), null, message.doc());
|
|
217
|
+
}
|
|
218
|
+
return message;
|
|
404
219
|
}
|
|
405
220
|
function isDeleted(message) {
|
|
406
221
|
return _solidLogic.store.holds(message, ns.schema('dateDeleted'), null, message.doc());
|
|
@@ -419,62 +234,62 @@ function nick(person) {
|
|
|
419
234
|
if (s) return '' + s.value;
|
|
420
235
|
return '' + utils.label(person);
|
|
421
236
|
}
|
|
422
|
-
function _createIfNotExists(
|
|
237
|
+
function _createIfNotExists(_x4) {
|
|
423
238
|
return _createIfNotExists2.apply(this, arguments);
|
|
424
239
|
} // ends
|
|
425
240
|
function _createIfNotExists2() {
|
|
426
241
|
_createIfNotExists2 = (0, _asyncToGenerator2["default"])(function (doc) {
|
|
427
242
|
var contentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text/turtle';
|
|
428
243
|
var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
429
|
-
return /*#__PURE__*/_regenerator["default"].mark(function
|
|
244
|
+
return /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
430
245
|
var response;
|
|
431
|
-
return _regenerator["default"].wrap(function
|
|
432
|
-
while (1) switch (
|
|
246
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
247
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
433
248
|
case 0:
|
|
434
|
-
|
|
435
|
-
|
|
249
|
+
_context4.prev = 0;
|
|
250
|
+
_context4.next = 3;
|
|
436
251
|
return _solidLogic.store.fetcher.load(doc);
|
|
437
252
|
case 3:
|
|
438
|
-
response =
|
|
439
|
-
|
|
253
|
+
response = _context4.sent;
|
|
254
|
+
_context4.next = 26;
|
|
440
255
|
break;
|
|
441
256
|
case 6:
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
if (!(
|
|
445
|
-
|
|
257
|
+
_context4.prev = 6;
|
|
258
|
+
_context4.t0 = _context4["catch"](0);
|
|
259
|
+
if (!(_context4.t0.response.status === 404)) {
|
|
260
|
+
_context4.next = 24;
|
|
446
261
|
break;
|
|
447
262
|
}
|
|
448
263
|
debug.log('createIfNotExists: doc does NOT exist, will create... ' + doc);
|
|
449
|
-
|
|
450
|
-
|
|
264
|
+
_context4.prev = 10;
|
|
265
|
+
_context4.next = 13;
|
|
451
266
|
return _solidLogic.store.fetcher.webOperation('PUT', doc.uri, {
|
|
452
267
|
data: data,
|
|
453
268
|
contentType: contentType
|
|
454
269
|
});
|
|
455
270
|
case 13:
|
|
456
|
-
response =
|
|
457
|
-
|
|
271
|
+
response = _context4.sent;
|
|
272
|
+
_context4.next = 20;
|
|
458
273
|
break;
|
|
459
274
|
case 16:
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
debug.log('createIfNotExists doc FAILED: ' + doc + ': ' +
|
|
463
|
-
throw
|
|
275
|
+
_context4.prev = 16;
|
|
276
|
+
_context4.t1 = _context4["catch"](10);
|
|
277
|
+
debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + _context4.t1);
|
|
278
|
+
throw _context4.t1;
|
|
464
279
|
case 20:
|
|
465
280
|
delete _solidLogic.store.fetcher.requested[doc.uri]; // delete cached 404 error
|
|
466
281
|
// debug.log('createIfNotExists doc created ok ' + doc)
|
|
467
|
-
return
|
|
282
|
+
return _context4.abrupt("return", response);
|
|
468
283
|
case 24:
|
|
469
|
-
debug.log('createIfNotExists doc load error NOT 404: ' + doc + ': ' +
|
|
470
|
-
throw
|
|
284
|
+
debug.log('createIfNotExists doc load error NOT 404: ' + doc + ': ' + _context4.t0);
|
|
285
|
+
throw _context4.t0;
|
|
471
286
|
case 26:
|
|
472
|
-
return
|
|
287
|
+
return _context4.abrupt("return", response);
|
|
473
288
|
case 27:
|
|
474
289
|
case "end":
|
|
475
|
-
return
|
|
290
|
+
return _context4.stop();
|
|
476
291
|
}
|
|
477
|
-
},
|
|
292
|
+
}, _callee4, null, [[0, 6], [10, 16]]);
|
|
478
293
|
})();
|
|
479
294
|
});
|
|
480
295
|
return _createIfNotExists2.apply(this, arguments);
|