solid-ui 2.4.15 → 2.4.16-6d61d9de
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/README.md +6 -11
- package/lib/acl/acl.d.ts.map +1 -1
- package/lib/acl/acl.js +2 -4
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.d.ts.map +1 -1
- package/lib/acl/add-agent-buttons.js +5 -5
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/chat/bookmarks.js +23 -24
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +338 -0
- package/lib/chat/chatLogic.js.map +1 -0
- package/lib/chat/dateFolder.js +13 -13
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +287 -669
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +444 -74
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +163 -106
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +171 -41
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.d.ts.map +1 -1
- package/lib/create/create.js +9 -9
- package/lib/create/create.js.map +1 -1
- package/lib/folders.js +2 -6
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +4 -4
- package/lib/footer/index.js.map +1 -1
- package/lib/header/index.d.ts.map +1 -1
- package/lib/header/index.js +11 -8
- package/lib/header/index.js.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +27 -34
- package/lib/index.js.map +1 -1
- package/lib/login/login.d.ts +130 -0
- package/lib/login/login.d.ts.map +1 -0
- package/lib/login/login.js +1412 -0
- package/lib/login/login.js.map +1 -0
- package/lib/matrix/matrix.js +2 -2
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/messageArea.js +9 -10
- package/lib/messageArea.js.map +1 -1
- package/lib/pad.js +2 -2
- package/lib/pad.js.map +1 -1
- package/lib/participation.js +4 -5
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +8 -8
- package/lib/preferences.js.map +1 -1
- package/lib/{authn → signup}/config-default.js +0 -0
- package/lib/signup/config-default.js.map +1 -0
- package/lib/{authn → signup}/signup.js +0 -0
- package/lib/signup/signup.js.map +1 -0
- package/lib/table.js +2 -3
- package/lib/table.js.map +1 -1
- package/lib/tabs.js +3 -3
- package/lib/tabs.js.map +1 -1
- package/lib/utils/index.js +6 -6
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +4 -4
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +3 -3
- package/lib/versionInfo.js.map +1 -1
- package/lib/webpack-bundle.js +6436 -22396
- package/lib/webpack-bundle.js.map +1 -1
- package/lib/widgets/buttons.d.ts.map +1 -1
- package/lib/widgets/buttons.js +24 -17
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +6 -11
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts +2 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +15 -22
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.d.ts +1 -1
- package/lib/widgets/forms/basic.d.ts.map +1 -1
- package/lib/widgets/forms/basic.js +2 -2
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.d.ts +1 -1
- package/lib/widgets/forms/comment.js +3 -3
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +2 -2
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/formStyle.js +3 -3
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +11 -11
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/peoplePicker.js +2 -2
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/package.json +3 -3
- package/lib/authn/authSession.d.ts +0 -4
- package/lib/authn/authSession.d.ts.map +0 -1
- package/lib/authn/authSession.js +0 -25
- package/lib/authn/authSession.js.map +0 -1
- package/lib/authn/authn.d.ts +0 -193
- package/lib/authn/authn.d.ts.map +0 -1
- package/lib/authn/authn.js +0 -2238
- package/lib/authn/authn.js.map +0 -1
- package/lib/authn/config-default.js.map +0 -1
- package/lib/authn/index.d.ts +0 -35
- package/lib/authn/index.d.ts.map +0 -1
- package/lib/authn/index.js +0 -44
- package/lib/authn/index.js.map +0 -1
- package/lib/authn/signup.js.map +0 -1
- package/lib/authn/types.d.ts +0 -25
- package/lib/authn/types.d.ts.map +0 -1
- package/lib/authn/types.js +0 -6
- package/lib/authn/types.js.map +0 -1
- package/lib/logic.d.ts +0 -8
- package/lib/logic.d.ts.map +0 -1
- package/lib/logic.js +0 -79
- package/lib/logic.js.map +0 -1
package/lib/chat/message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chat/message.js"],"names":["UI","authn","icons","ns","media","pad","rdf","store","style","utils","widgets","dom","window","document","messageBodyStyle","label","elementForImageURI","imageUri","options","img","createElement","height","inlineImageHeightEms","trim","setAttribute","anchor","appendChild","makeDraggable","$rdf","sym","text","term","a","uri","addEventListener","openHrefInOutlineMode","textContent","nick","person","s","any","foaf","value","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessage","messageTable","bindings","fresh","userContext","colorizeByAuthor","content","dateString","messageRow","AJAR_date","AJAR_subject","selectedMessage","sameTerm","backgroundColor","selectedElement","done","ele","firstChild","nextSibling","newestFirst","newestfirst","insertBefore","authorAboveContent","setImage","shortDate","td2","isURI","test","para","isImage","expandImagesInline","anc","href","bgcolor","lightColorHash","getBgColor","strip","children","length","td3","toolsButton","button","iconBase","_event","toolTR","parentNode","removeChild","toolsTR","tools","parentElement","toolsTD"],"mappings":"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","sourcesContent":["/**\n * Contains the [[renderMessage]] function,\n * along with [[elementForImageURI]],\n * [[creatorAndDate]], and [[creatorAndDateHorizontal]]\n * @packageDocumentation\n */\n\n/* global $rdf */\n\nimport { messageToolbar, sentimentStripLinked } from './messageTools'\n\nimport { authn } from '../authn/index'\nimport { icons } from '../iconBase'\nimport { store } from '../logic'\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'\n\nconst UI = { authn, icons, ns, media, pad, rdf, store, style, utils, widgets }\n\nconst dom = UI.dom || window.document\n// const kb = UI.store\n\nconst messageBodyStyle = UI.style.messageBodyStyle\n\nconst label = UI.utils.label\n\n/**\n * HTML component for an image\n */\nexport function elementForImageURI (imageUri, options) {\n const img = dom.createElement('img')\n let height = '10'\n if (options.inlineImageHeightEms) {\n height = ('' + options.inlineImageHeightEms).trim()\n }\n img.setAttribute(\n 'style',\n 'max-height: ' + height + 'em; border-radius: 1em; margin: 0.7em;'\n )\n // UI.widgets.makeDropTarget(img, handleURIsDroppedOnMugshot, droppedFileHandler)\n if (imageUri) img.setAttribute('src', imageUri)\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', imageUri)\n anchor.setAttribute('target', 'images')\n anchor.appendChild(img)\n UI.widgets.makeDraggable(img, $rdf.sym(imageUri))\n return anchor\n}\n\nconst anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n}\n\nfunction nick (person) {\n const s = UI.store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * Displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n UI.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDateHorizontal (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(label(creator), creator))\n if (creator.uri) {\n UI.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n const dateBit = td1.appendChild(anchor(date, message))\n dateBit.style.fontSize = '80%'\n dateBit.style.marginLeft = '1em'\n td1.appendChild(dom.createElement('br'))\n}\n\n/**\n * Renders a chat message inside a `messageTable`\n */\nexport function renderMessage (\n messageTable,\n bindings,\n fresh,\n options,\n userContext\n) {\n const colorizeByAuthor =\n options.colorizeByAuthor === '1' || options.colorizeByAuthor === true\n\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const messageRow = dom.createElement('tr')\n messageRow.AJAR_date = dateString\n messageRow.AJAR_subject = message\n\n if (options.selectedMessage && options.selectedMessage.sameTerm(message)) {\n messageRow.style.backgroundColor = 'yellow'\n options.selectedElement = messageRow\n messageTable.selectedElement = messageRow\n }\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n const newestFirst = options.newestfirst === true\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(messageRow, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(messageRow)\n }\n\n const td1 = dom.createElement('td')\n messageRow.appendChild(td1)\n if (options.authorAboveContent) {\n const img = dom.createElement('img')\n img.setAttribute(\n 'style',\n 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;'\n )\n UI.widgets.setImage(img, creator)\n td1.appendChild(img)\n } else {\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n }\n\n // Render the content ot the message itself\n const td2 = messageRow.appendChild(dom.createElement('td'))\n\n if (options.authorAboveContent) {\n creatorAndDateHorizontal(\n td2,\n creator,\n UI.widgets.shortDate(dateString),\n message\n )\n }\n const text = content.value.trim()\n const isURI = /^https?:\\/[^ <>]*$/i.test(text)\n let para = null\n if (isURI) {\n const isImage = /\\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text) // @@ Should use content-type not URI\n if (isImage && options.expandImagesInline) {\n const img = elementForImageURI(text, options)\n td2.appendChild(img)\n } else {\n // Link but not Image\n const anc = td2.appendChild(dom.createElement('a'))\n para = anc.appendChild(dom.createElement('p'))\n anc.href = text\n para.textContent = text\n td2.appendChild(anc)\n }\n } else {\n // text\n para = dom.createElement('p')\n td2.appendChild(para)\n para.textContent = text\n }\n if (para) {\n const bgcolor = colorizeByAuthor\n ? UI.pad.lightColorHash(creator)\n : getBgColor(fresh)\n para.setAttribute(\n 'style',\n messageBodyStyle + 'background-color: ' + bgcolor + ';'\n )\n }\n\n function getBgColor (fresh) {\n return fresh ? '#e8ffe8' : 'white'\n }\n\n // Sentiment strip\n const strip = sentimentStripLinked(message, message.doc())\n if (strip.children.length) {\n td2.appendChild(dom.createElement('br'))\n td2.appendChild(strip)\n }\n\n // Message tool bar button\n const td3 = dom.createElement('td')\n messageRow.appendChild(td3)\n const toolsButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_243787.svg',\n '...'\n )\n td3.appendChild(toolsButton)\n toolsButton.addEventListener('click', function (_event) {\n if (messageRow.toolTR) {\n // already got a toolbar? Toogle\n messageRow.parentNode.removeChild(messageRow.toolTR)\n delete messageRow.toolTR\n return\n }\n const toolsTR = dom.createElement('tr')\n const tools = messageToolbar(message, messageRow, userContext)\n tools.style =\n 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;' // @@ fix\n if (messageRow.nextSibling) {\n messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling)\n } else {\n messageRow.parentElement.appendChild(toolsTR)\n }\n messageRow.toolTR = toolsTR\n toolsTR.appendChild(dom.createElement('td')) // left\n const toolsTD = toolsTR.appendChild(dom.createElement('td'))\n toolsTR.appendChild(dom.createElement('td')) // right\n toolsTD.appendChild(tools)\n })\n return messageRow\n}\n"],"file":"message.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/chat/message.js"],"names":["dom","window","document","messageBodyStyle","style","label","utils","elementForImageURI","imageUri","options","img","createElement","height","inlineImageHeightEms","trim","setAttribute","anchor","appendChild","widgets","makeDraggable","$rdf","sym","text","term","a","uri","addEventListener","openHrefInOutlineMode","textContent","nick","person","s","store","any","ns","foaf","value","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","channelObject","fresh","userContext","colorizeByAuthor","dct","latestVersion","content","sioc","originalMessage","edited","sameTerm","sortDate","the","messageRow","AJAR_date","AJAR_subject","authorDateOnLeft","setImage","shortDate","bothDates","td2","isURI","test","para","isImage","expandImagesInline","anc","href","bgcolor","pad","lightColorHash","getBgColor","strip","children","length","td3","toolsButton","button","icons","iconBase","_event","toolTR","parentNode","removeChild","toolsTR","tools","nextSibling","parentElement","insertBefore","toolsTD","switchToEditor","messageTable","editRow","renderMessageEditor","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","sendMessage","field","fromMainField","sendComplete","_text2","oldRow","debug","warn","backgroundColor","disabled","scrollIntoView","newestFirst","focus","select","updateMessage","statusArea","errorMessageBlock","droppedFileHandler","files","base","chatDocument","dir","uploadFiles","theFile","destURI","droppedURIHandler","uris","turnOnInput","getImageDoc","imageDoc","Date","now","tookPicture","menuButton","menuHandler","buttonStyle","rhs","me","authn","currentUser","menuOptions","div","newBase","event","chatChannel","lhs","middle","innerHTML","rows","anyValue","e","code","shiftKey","shiftEnterSendsMessage","makeDropTarget","sendButton","sendIcon","cancelButton","dateFolder","leafDocumentFromDate","media","cameraButton","recordParticipation","channel","context","logIn","then","Object","assign","_context"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAEA,IAAMA,GAAG,GAAGC,MAAM,CAACC,QAAnB;AACA,IAAMC,gBAAgB,GAAGC,KAAK,CAACD,gBAA/B;AAEA,IAAME,KAAK,GAAGC,KAAK,CAACD,KAApB;AAEA;AACA;AACA;;AACO,SAASE,kBAAT,CAA6BC,QAA7B,EAAuCC,OAAvC,EAAgD;AACrD,MAAMC,GAAG,GAAGV,GAAG,CAACW,aAAJ,CAAkB,KAAlB,CAAZ;AACA,MAAIC,MAAM,GAAG,IAAb;;AACA,MAAIH,OAAO,CAACI,oBAAZ,EAAkC;AAChCD,IAAAA,MAAM,GAAG,CAAC,KAAKH,OAAO,CAACI,oBAAd,EAAoCC,IAApC,EAAT;AACD;;AACDJ,EAAAA,GAAG,CAACK,YAAJ,CACE,OADF,EAEE,iBAAiBH,MAAjB,GAA0B,wCAF5B,EANqD,CAUrD;;AACA,MAAIJ,QAAJ,EAAcE,GAAG,CAACK,YAAJ,CAAiB,KAAjB,EAAwBP,QAAxB;AACd,MAAMQ,MAAM,GAAGhB,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAf;AACAK,EAAAA,MAAM,CAACD,YAAP,CAAoB,MAApB,EAA4BP,QAA5B;AACAQ,EAAAA,MAAM,CAACD,YAAP,CAAoB,QAApB,EAA8B,QAA9B;AACAC,EAAAA,MAAM,CAACC,WAAP,CAAmBP,GAAnB;AACAQ,EAAAA,OAAO,CAACC,aAAR,CAAsBT,GAAtB,EAA2BU,IAAI,CAACC,GAAL,CAASb,QAAT,CAA3B;AACA,SAAOQ,MAAP;AACD;;AAED,IAAMA,MAAM,GAAG,SAATA,MAAS,CAAUM,IAAV,EAAgBC,IAAhB,EAAsB;AACnC;AACA,MAAMC,CAAC,GAAGxB,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAV;;AACA,MAAIY,IAAI,IAAIA,IAAI,CAACE,GAAjB,EAAsB;AACpBD,IAAAA,CAAC,CAACT,YAAF,CAAe,MAAf,EAAuBQ,IAAI,CAACE,GAA5B;AACAD,IAAAA,CAAC,CAACE,gBAAF,CAAmB,OAAnB,EAA4BR,OAAO,CAACS,qBAApC,EAA2D,IAA3D;AACAH,IAAAA,CAAC,CAACT,YAAF,CAAe,OAAf,EAAwB,yCAAxB,EAHoB,CAG+C;AACpE;;AACDS,EAAAA,CAAC,CAACI,WAAF,GAAgBN,IAAhB;AACA,SAAOE,CAAP;AACD,CAVD;;AAYA,SAASK,IAAT,CAAeC,MAAf,EAAuB;AACrB,MAAMC,CAAC,GAAGC,kBAAMC,GAAN,CAAUH,MAAV,EAAkBI,EAAE,CAACC,IAAH,CAAQ,MAAR,CAAlB,CAAV;;AACA,MAAIJ,CAAJ,EAAO,OAAO,KAAKA,CAAC,CAACK,KAAd;AACP,SAAO,KAAK/B,KAAK,CAACyB,MAAD,CAAjB;AACD;AAED;AACA;AACA;AACA;;;AACO,SAASO,cAAT,CAAyBC,GAAzB,EAA8BC,OAA9B,EAAuCC,IAAvC,EAA6CC,OAA7C,EAAsD;AAC3D,MAAMC,UAAU,GAAGJ,GAAG,CAACrB,WAAJ,CAAgBD,MAAM,CAACa,IAAI,CAACU,OAAD,CAAL,EAAgBA,OAAhB,CAAtB,CAAnB;;AACA,MAAIA,OAAO,CAACd,GAAZ,EAAiB;AACfO,sBAAMW,OAAN,CAAcC,gBAAd,CAA+BL,OAAO,CAACM,GAAR,EAA/B,EAA8CC,SAA9C,EAAyD,UACvDC,GADuD,EAEvDC,KAFuD,EAGvD;AACAN,MAAAA,UAAU,CAACd,WAAX,GAAyBC,IAAI,CAACU,OAAD,CAA7B;AACD,KALD;AAMD;;AACDD,EAAAA,GAAG,CAACrB,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAhB;AACA2B,EAAAA,GAAG,CAACrB,WAAJ,CAAgBD,MAAM,CAACwB,IAAD,EAAOC,OAAP,CAAtB;AACD;AAED;AACA;AACA;AACA;;;AACO,SAASQ,wBAAT,CAAmCX,GAAnC,EAAwCC,OAAxC,EAAiDC,IAAjD,EAAuDC,OAAvD,EAAgE;AACrE,MAAMC,UAAU,GAAGJ,GAAG,CAACrB,WAAJ,CAAgBD,MAAM,CAACX,KAAK,CAACkC,OAAD,CAAN,EAAiBA,OAAjB,CAAtB,CAAnB;;AACA,MAAIA,OAAO,CAACd,GAAZ,EAAiB;AACfO,sBAAMW,OAAN,CAAcC,gBAAd,CAA+BL,OAAO,CAACM,GAAR,EAA/B,EAA8CC,SAA9C,EAAyD,UACvDC,GADuD,EAEvDC,KAFuD,EAGvD;AACAN,MAAAA,UAAU,CAACd,WAAX,GAAyBC,IAAI,CAACU,OAAD,CAA7B;AACD,KALD;AAMD;;AACD,MAAMW,OAAO,GAAGZ,GAAG,CAACrB,WAAJ,CAAgBD,MAAM,CAACwB,IAAD,EAAOC,OAAP,CAAtB,CAAhB;AACAS,EAAAA,OAAO,CAAC9C,KAAR,CAAc+C,QAAd,GAAyB,KAAzB;AACAD,EAAAA,OAAO,CAAC9C,KAAR,CAAcgD,UAAd,GAA2B,KAA3B;AACAd,EAAAA,GAAG,CAACrB,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAhB;AACD;AAED;AACA;AACA;;;AACO,SAAS0C,gBAAT,CAA2BC,aAA3B,EAA0Cb,OAA1C,EAAmDc,KAAnD,EAA0D9C,OAA1D,EAAmE+C,WAAnE,EAAgF;AACrF,MAAMC,gBAAgB,GACpBhD,OAAO,CAACgD,gBAAR,KAA6B,GAA7B,IAAoChD,OAAO,CAACgD,gBAAR,KAA6B,IADnE;;AAGA,MAAMlB,OAAO,GAAGP,kBAAMC,GAAN,CAAUQ,OAAV,EAAmBP,EAAE,CAACC,IAAH,CAAQ,OAAR,CAAnB,CAAhB;;AACA,MAAMK,IAAI,GAAGR,kBAAMC,GAAN,CAAUQ,OAAV,EAAmBP,EAAE,CAACwB,GAAH,CAAO,SAAP,CAAnB,CAAb;;AACA,MAAMC,aAAa,GAAG,kCAAkBlB,OAAlB,CAAtB;;AACA,MAAMmB,OAAO,GAAG5B,kBAAMC,GAAN,CAAU0B,aAAV,EAAyBzB,EAAE,CAAC2B,IAAH,CAAQ,SAAR,CAAzB,CAAhB;;AAEA,MAAMC,eAAe,GAAG,gCAAgBrB,OAAhB,CAAxB;AACA,MAAMsB,MAAM,GAAG,CAACtB,OAAO,CAACuB,QAAR,CAAiBF,eAAjB,CAAhB;;AAEA,MAAMG,QAAQ,GAAGjC,kBAAMkC,GAAN,CAAUJ,eAAV,EAA2B5B,EAAE,CAACwB,GAAH,CAAO,SAAP,CAA3B,EAA8C,IAA9C,EAAoDI,eAAe,CAACjB,GAAhB,EAApD,CAAjB,CAZqF,CAYO;;;AAE5F,MAAMsB,UAAU,GAAGnE,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAnB;AACAwD,EAAAA,UAAU,CAACC,SAAX,GAAuBH,QAAQ,CAAC7B,KAAhC;AACA+B,EAAAA,UAAU,CAACE,YAAX,GAA0B5B,OAA1B;AAEA,MAAMH,GAAG,GAAGtC,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAZ;AACAwD,EAAAA,UAAU,CAAClD,WAAX,CAAuBqB,GAAvB;;AACA,MAAI,CAAC7B,OAAO,CAAC6D,gBAAb,EAA+B;AAC7B,QAAM5D,GAAG,GAAGV,GAAG,CAACW,aAAJ,CAAkB,KAAlB,CAAZ;AACAD,IAAAA,GAAG,CAACK,YAAJ,CACE,OADF,EAEE,0EAFF;AAIAG,IAAAA,OAAO,CAACqD,QAAR,CAAiB7D,GAAjB,EAAsB6B,OAAtB;AACAD,IAAAA,GAAG,CAACrB,WAAJ,CAAgBP,GAAhB;AACD,GARD,MAQO;AACL2B,IAAAA,cAAc,CAACC,GAAD,EAAMC,OAAN,EAAerB,OAAO,CAACsD,SAAR,CAAkBP,QAAQ,CAAC7B,KAA3B,CAAf,EAAkDK,OAAlD,CAAd;AACD;;AACD,MAAIgC,SAAS,GAAGvD,OAAO,CAACsD,SAAR,CAAkBP,QAAQ,CAAC7B,KAA3B,CAAhB;;AACA,MAAI2B,MAAJ,EAAY;AACVU,IAAAA,SAAS,IAAI,UAAUvD,OAAO,CAACsD,SAAR,CAAkBhC,IAAI,CAACJ,KAAvB,CAAvB;AACD,GAlCoF,CAoCrF;;;AACA,MAAMsC,GAAG,GAAGP,UAAU,CAAClD,WAAX,CAAuBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAvB,CAAZ;;AAEA,MAAI,CAACF,OAAO,CAAC6D,gBAAb,EAA+B;AAC7BrB,IAAAA,wBAAwB,CACtByB,GADsB,EAEtBnC,OAFsB,EAGtBkC,SAHsB,EAGX;AACXhC,IAAAA,OAJsB,CAAxB;AAMD;;AACD,MAAMnB,IAAI,GAAGsC,OAAO,CAACxB,KAAR,CAActB,IAAd,EAAb;AACA,MAAM6D,KAAK,GAAG,sBAAsBC,IAAtB,CAA2BtD,IAA3B,CAAd;AACA,MAAIuD,IAAI,GAAG,IAAX;;AACA,MAAIF,KAAJ,EAAW;AACT,QAAMG,OAAO,GAAG,kCAAkCF,IAAlC,CAAuCtD,IAAvC,CAAhB,CADS,CACoD;;AAC7D,QAAIwD,OAAO,IAAIrE,OAAO,CAACsE,kBAAvB,EAA2C;AACzC,UAAMrE,IAAG,GAAGH,kBAAkB,CAACe,IAAD,EAAOb,OAAP,CAA9B;;AACAiE,MAAAA,GAAG,CAACzD,WAAJ,CAAgBP,IAAhB;AACD,KAHD,MAGO;AACL;AACA,UAAMsE,GAAG,GAAGN,GAAG,CAACzD,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAhB,CAAZ;AACAkE,MAAAA,IAAI,GAAGG,GAAG,CAAC/D,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAhB,CAAP;AACAqE,MAAAA,GAAG,CAACC,IAAJ,GAAW3D,IAAX;AACAuD,MAAAA,IAAI,CAACjD,WAAL,GAAmBN,IAAnB;AACAoD,MAAAA,GAAG,CAACzD,WAAJ,CAAgB+D,GAAhB;AACD;AACF,GAbD,MAaO;AACL;AACAH,IAAAA,IAAI,GAAG7E,GAAG,CAACW,aAAJ,CAAkB,GAAlB,CAAP;AACA+D,IAAAA,GAAG,CAACzD,WAAJ,CAAgB4D,IAAhB;AACAA,IAAAA,IAAI,CAACjD,WAAL,GAAmBN,IAAnB;AACD;;AACD,MAAIuD,IAAJ,EAAU;AACR,QAAMK,OAAO,GAAGzB,gBAAgB,GAC5B0B,GAAG,CAACC,cAAJ,CAAmB7C,OAAnB,CAD4B,GAE5B8C,UAAU,CAAC9B,KAAD,CAFd;AAGAsB,IAAAA,IAAI,CAAC9D,YAAL,CACE,OADF,EAEEZ,gBAAgB,GAAG,oBAAnB,GAA0C+E,OAA1C,GAAoD,GAFtD;AAID;;AAED,WAASG,UAAT,CAAqB9B,KAArB,EAA4B;AAC1B,WAAOA,KAAK,GAAG,SAAH,GAAe,OAA3B;AACD,GAjFoF,CAmFrF;;;AACA,MAAM+B,KAAK,GAAG,wCAAqB7C,OAArB,EAA8BA,OAAO,CAACI,GAAR,EAA9B,CAAd;;AACA,MAAIyC,KAAK,CAACC,QAAN,CAAeC,MAAnB,EAA2B;AACzBd,IAAAA,GAAG,CAACzD,WAAJ,CAAgBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAhB;AACA+D,IAAAA,GAAG,CAACzD,WAAJ,CAAgBqE,KAAhB;AACD,GAxFoF,CA0FrF;;;AACA,MAAMG,GAAG,GAAGzF,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAZ;AACAwD,EAAAA,UAAU,CAAClD,WAAX,CAAuBwE,GAAvB;AACA,MAAMC,WAAW,GAAGxE,OAAO,CAACyE,MAAR,CAClB3F,GADkB,EAElB4F,gBAAMC,QAAN,GAAiB,iBAFC,EAGlB,KAHkB,CAApB;AAKAJ,EAAAA,GAAG,CAACxE,WAAJ,CAAgByE,WAAhB;AACAA,EAAAA,WAAW,CAAChE,gBAAZ,CAA6B,OAA7B,EAAsC,UAAUoE,MAAV,EAAkB;AACtD,QAAI3B,UAAU,CAAC4B,MAAf,EAAuB;AACrB;AACA5B,MAAAA,UAAU,CAAC6B,UAAX,CAAsBC,WAAtB,CAAkC9B,UAAU,CAAC4B,MAA7C;AACA,aAAO5B,UAAU,CAAC4B,MAAlB;AACA;AACD;;AACD,QAAMG,OAAO,GAAGlG,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAhB;AACA,QAAMwF,KAAK,GAAG,kCAAe1D,OAAf,EAAwB0B,UAAxB,EAAoCX,WAApC,EAAiDF,aAAjD,CAAd;AACA6C,IAAAA,KAAK,CAAC/F,KAAN,GACE,kHADF,CATsD,CAU+D;;AACrH,QAAI+D,UAAU,CAACiC,WAAf,EAA4B;AAC1BjC,MAAAA,UAAU,CAACkC,aAAX,CAAyBC,YAAzB,CAAsCJ,OAAtC,EAA+C/B,UAAU,CAACiC,WAA1D;AACD,KAFD,MAEO;AACLjC,MAAAA,UAAU,CAACkC,aAAX,CAAyBpF,WAAzB,CAAqCiF,OAArC;AACD;;AACD/B,IAAAA,UAAU,CAAC4B,MAAX,GAAoBG,OAApB;AACAA,IAAAA,OAAO,CAACjF,WAAR,CAAoBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAApB,EAjBsD,CAiBT;;AAC7C,QAAM4F,OAAO,GAAGL,OAAO,CAACjF,WAAR,CAAoBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAApB,CAAhB;AACAuF,IAAAA,OAAO,CAACjF,WAAR,CAAoBjB,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAApB,EAnBsD,CAmBT;;AAC7C4F,IAAAA,OAAO,CAACtF,WAAR,CAAoBkF,KAApB;AACD,GArBD;AAsBA,SAAOhC,UAAP;AACD;;AAEM,SAASqC,cAAT,CAAyBrC,UAAzB,EAAqC1B,OAArC,EAA8Ca,aAA9C,EAA6DE,WAA7D,EAA0E;AAC/E,MAAMiD,YAAY,GAAGtC,UAAU,CAAC6B,UAAhC;AACA,MAAMU,OAAO,GAAGC,mBAAmB,CAACrD,aAAD,EAAgBmD,YAAhB,EAA8BjD,WAA9B,EACjCF,aAAa,CAAC7C,OADmB,EACV,kCAAkBgC,OAAlB,CADU,CAAnC;AAEAgE,EAAAA,YAAY,CAACH,YAAb,CAA0BI,OAA1B,EAAmCvC,UAAnC;AACAuC,EAAAA,OAAO,CAACE,WAAR,GAAsBzC,UAAtB;AACAA,EAAAA,UAAU,CAAC/D,KAAX,CAAiByG,UAAjB,GAA8B,QAA9B,CAN+E,CAMxC;AACxC;AACD;AACA;AACA;;;AACO,SAASF,mBAAT,CAA8BrD,aAA9B,EAA6CmD,YAA7C,EAA2DjD,WAA3D,EAAwE/C,OAAxE,EAAiFqD,eAAjF,EAAkG;AACvG,WAASgD,aAAT,CAAwBC,aAAxB,EAAuC;AACrCA,IAAAA,aAAa,CAACH,WAAd,CAA0BxG,KAA1B,CAAgCyG,UAAhC,GAA6C,SAA7C,CADqC,CACkB;;AACvDE,IAAAA,aAAa,CAACf,UAAd,CAAyBC,WAAzB,CAAqCc,aAArC;AACD;;AAJsG,WAMxFC,gBANwF;AAAA;AAAA;;AAAA;AAAA,sGAMvG,kBAAiClB,MAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBACQmB,WAAW,CAACC,KAAK,CAAC9E,KAAP,EAAc,IAAd,CADnB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KANuG;AAAA;AAAA;;AAAA,WAUxF6E,WAVwF;AAAA;AAAA,IAyDrG;AAEF;;;AA3DuG;AAAA,iGAUvG,kBAA4B3F,IAA5B,EAAkC6F,aAAlC;AAAA,UACWC,YADX;AAAA;AAAA;AAAA;AAAA;AACWA,cAAAA,YADX,0BACyB3E,OADzB,EACkC4E,MADlC,EAC0C;AACtC;AACA;AACA,sDAAuB/D,aAAvB,EAAsCmD,YAAtC,EAAoDhE,OAApD,EAA6D,KAA7D,EAAoEhC,OAApE,EAA6E+C,WAA7E,EAHsC,CAGoD;;AAE1F,oBAAIM,eAAJ,EAAqB;AAAE;AACrB,sBAAMwD,MAAM,GAAGP,aAAa,CAACH,WAA7B,CADmB,CAEnB;;AACA,sBAAIU,MAAM,CAACtB,UAAX,EAAuB;AACrBsB,oBAAAA,MAAM,CAACtB,UAAP,CAAkBC,WAAlB,CAA8BqB,MAA9B,EADqB,CACiB;AACvC,mBAFD,MAEO;AACLC,oBAAAA,KAAK,CAACC,IAAN,CAAW,kCAAkCF,MAAM,CAAC1F,WAApD;AACA0F,oBAAAA,MAAM,CAAClH,KAAP,CAAaqH,eAAb,GAA+B,MAA/B;AACAH,oBAAAA,MAAM,CAAClH,KAAP,CAAayG,UAAb,GAA0B,QAA1B,CAHK,CAG8B;AACpC;;AACDE,kBAAAA,aAAa,CAACf,UAAd,CAAyBC,WAAzB,CAAqCc,aAArC,EAVmB,CAUiC;AACrD,iBAXD,MAWO;AACL,sBAAII,aAAJ,EAAmB;AACjBD,oBAAAA,KAAK,CAAC9E,KAAN,GAAc,EAAd,CADiB,CACA;;AACjB8E,oBAAAA,KAAK,CAACnG,YAAN,CAAmB,OAAnB,EAA4BZ,gBAA5B;AACA+G,oBAAAA,KAAK,CAACQ,QAAN,GAAiB,KAAjB;AACAR,oBAAAA,KAAK,CAACS,cAAN,CAAqBlH,OAAO,CAACmH,WAA7B,EAJiB,CAIyB;;AAC1CV,oBAAAA,KAAK,CAACW,KAAN,GALiB,CAKH;;AACdX,oBAAAA,KAAK,CAACY,MAAN;AACD;AACF,iBAzBqC,CA0BtC;;AACD,eA5BH;;AA8BE;AACA,kBAAIX,aAAJ,EAAmB;AACjBD,gBAAAA,KAAK,CAACnG,YAAN,CAAmB,OAAnB,EAA4BZ,gBAAgB,GAAG,cAA/C,EADiB,CAC8C;;AAC/D+G,gBAAAA,KAAK,CAACQ,QAAN,GAAiB,IAAjB;AACD;;AAlCH;AAAA;AAAA,qBAsCoBpE,aAAa,CAACyE,aAAd,CAA4BzG,IAA5B,EAAkCwC,eAAlC,CAtCpB;;AAAA;AAsCIrB,cAAAA,OAtCJ;AAAA;AAAA;;AAAA;AAAA;AAAA;AAwCUuF,cAAAA,UAxCV,GAwCuBxE,WAAW,CAACwE,UAAZ,IAA0BjB,aAxCjD;AAyCIiB,cAAAA,UAAU,CAAC/G,WAAX,CACEC,OAAO,CAAC+G,iBAAR,CAA0BjI,GAA1B,EAA+B,wCAA/B,CADF;AAzCJ;;AAAA;AA8CEoH,cAAAA,YAAY,CAAC3E,OAAD,EAAUnB,IAAV,CAAZ;;AA9CF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAVuG;AAAA;AAAA;;AA4DvG,WAAS4G,kBAAT,CAA6BC,KAA7B,EAAoC;AAClC,QAAMC,IAAI,GAAG3B,YAAY,CAAC4B,YAAb,CAA0BC,GAA1B,GAAgC7G,GAA7C;AACAP,IAAAA,OAAO,CAACqH,WAAR,CACEvG,kBAAMW,OADR,EAEEwF,KAFF,EAGEC,IAAI,GAAG,OAHT,EAIEA,IAAI,GAAG,UAJT;AAAA,+FAKE,iBAAgBI,OAAhB,EAAyBC,OAAzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEQxB,WAAW,CAACwB,OAAD,CAFnB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OALF;;AAAA;AAAA;AAAA;AAAA;AAUD,GAxEsG,CA0EvG;;;AACA,MAAMC,iBAAiB;AAAA,8FAAG,kBAAgBC,IAAhB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,qDACNA,IADM;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACblH,cAAAA,GADa;AAAA;AAAA,qBAEhBwF,WAAW,CAACxF,GAAD,CAFK;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAjBiH,iBAAiB;AAAA;AAAA;AAAA,KAAvB,CA3EuG,CAiFvG;;;AACA,WAASE,WAAT,GAAwB;AACtB,aAASC,WAAT,GAAwB;AACtBC,MAAAA,QAAQ,GAAG1H,IAAI,CAACC,GAAL,CACTgH,YAAY,CAACC,GAAb,GAAmB7G,GAAnB,GAAyB,QAAzB,GAAoCsH,IAAI,CAACC,GAAL,EAApC,GAAiD,MADxC,CAAX;AAGA,aAAOF,QAAP;AACD;;AANqB,aAQPG,WARO;AAAA;AAAA,MActB;;;AAdsB;AAAA,mGAQtB,kBAA4BH,QAA5B;AAAA;AAAA;AAAA;AAAA;AAAA,qBACMA,QADN;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAEU7B,WAAW,CAAC6B,QAAQ,CAACrH,GAAV,CAFrB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OARsB;AAAA;AAAA;;AAgBtB,QAAIyH,UAAJ;;AACA,QAAIzI,OAAO,CAAC0I,WAAZ,EAAyB;AACvB,UAAMD,WAAU,GAAGhI,OAAO,CAACyE,MAAR,CACjB3F,GADiB,EACZ4F,gBAAMC,QAAN,GAAiB,iBADL,EACwB,MADxB,CAAnB;;AAEAqD,MAAAA,WAAU,CAACnI,YAAX,CAAwB,OAAxB,EAAiCX,KAAK,CAACgJ,WAAN,GAAoB,eAArD,EAHuB,CAIvB;;;AACAC,MAAAA,GAAG,CAACpI,WAAJ,CAAgBiI,WAAhB;AACD;;AAED,QAAIzI,OAAO,CAAC0I,WAAR,IAAuBD,UAA3B,EAAuC;AACrC,UAAMI,GAAE,GAAGC,kBAAMC,WAAN,EAAX;;AACA,UAAMC,WAAW,GAAG;AAClBH,QAAAA,EAAE,EAAFA,GADkB;AAElBtJ,QAAAA,GAAG,EAAHA,GAFkB;AAGlB0J,QAAAA,GAAG,EAAE,IAHa;AAGP;AACXC,QAAAA,OAAO,EAAElD,YAAY,CAAC4B,YAAb,CAA0BC,GAA1B,GAAgC7G;AAJvB,OAApB;AAMAyH,MAAAA,UAAU,CAACxH,gBAAX,CACE,OADF,EAEE,UAAAkI,KAAK,EAAI;AACPnJ,QAAAA,OAAO,CAAC0I,WAAR,CAAoBS,KAApB,EAA2BtG,aAAa,CAACuG,WAAzC,EAAsDJ,WAAtD;AACD,OAJH,EAKE,KALF;AAOD;;AAED,QAAMH,EAAE,GAAGC,kBAAMC,WAAN,EAAX,CA1CsB,CA0CS;;;AAC/BnH,IAAAA,cAAc,CAACyH,GAAD,EAAMR,EAAN,EAAU,EAAV,EAAc,IAAd,CAAd;AAEApC,IAAAA,KAAK,GAAGlH,GAAG,CAACW,aAAJ,CAAkB,UAAlB,CAAR;AACAoJ,IAAAA,MAAM,CAACC,SAAP,GAAmB,EAAnB;AACAD,IAAAA,MAAM,CAAC9I,WAAP,CAAmBiG,KAAnB;AACAA,IAAAA,KAAK,CAAC+C,IAAN,GAAa,CAAb;;AACA,QAAInG,eAAJ,EAAqB;AACnBoD,MAAAA,KAAK,CAAC9E,KAAN,GAAcJ,kBAAMkI,QAAN,CAAepG,eAAf,EAAgC5B,EAAE,CAAC2B,IAAH,CAAQ,SAAR,CAAhC,EAAoD,IAApD,EAA0DC,eAAe,CAACjB,GAAhB,EAA1D,CAAd;AACD,KAnDqB,CAoDtB;;;AACAqE,IAAAA,KAAK,CAACnG,YAAN,CAAmB,OAAnB,EAA4BZ,gBAAgB,GAAG,yBAA/C,EArDsB,CAuDtB;;AAEA+G,IAAAA,KAAK,CAACxF,gBAAN,CACE,SADF;AAAA,gGAEE,kBAAgByI,CAAhB;AAAA;AAAA;AAAA;AAAA;AAAA,sBAEMA,CAAC,CAACC,IAAF,KAAW,OAFjB;AAAA;AAAA;AAAA;;AAAA,sBAIS,CAACD,CAAC,CAACE,QAAH,IAAe,CAAC5J,OAAO,CAAC6J,sBAAzB,IAAqDH,CAAC,CAACE,QAAF,IAAc5J,OAAO,CAAC6J,sBAJnF;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAOYtD,gBAAgB,CAACmD,CAAD,CAP5B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAFF;;AAAA;AAAA;AAAA;AAAA,SAaE,KAbF;AAgBAjJ,IAAAA,OAAO,CAACqJ,cAAR,CAAuBrD,KAAvB,EAA8BwB,iBAA9B,EAAiDR,kBAAjD;AAEAmB,IAAAA,GAAG,CAACW,SAAJ,GAAgB,EAAhB;AAEAQ,IAAAA,UAAU,GAAGtJ,OAAO,CAACyE,MAAR,CAAe3F,GAAf,EAAoByK,QAApB,EAA8B,MAA9B,CAAb;AACAD,IAAAA,UAAU,CAACpK,KAAX,YAAyB,OAAzB;AACAoK,IAAAA,UAAU,CAAC9I,gBAAX,CAA4B,OAA5B,EAAqC,UAAAoE,MAAM;AAAA,aAAIkB,gBAAgB,EAApB;AAAA,KAA3C,EAAmE,KAAnE;AACAqC,IAAAA,GAAG,CAACpI,WAAJ,CAAgBuJ,UAAhB;;AAEA,QAAI1G,eAAJ,EAAqB;AAAE;AACrB,UAAM4G,YAAY,GAAGrB,GAAG,CAACpI,WAAJ,CAAgBC,OAAO,CAACwJ,YAAR,CAAqB1K,GAArB,CAAhB,CAArB;AACA0K,MAAAA,YAAY,CAACtK,KAAb,YAA2B,MAA3B,CAFmB,CAGnB;;AACAsK,MAAAA,YAAY,CAAChJ,gBAAb,CAA8B,OAA9B,EAAuC,UAAAoE,MAAM;AAAA,eAAIgB,aAAa,CAACC,aAAD,CAAjB;AAAA,OAA7C,EAA+E,KAA/E;AACAsC,MAAAA,GAAG,CAACpI,WAAJ,CAAgByJ,YAAhB;AACD;;AAED,QAAMrC,YAAY,GAAG/E,aAAa,CAACqH,UAAd,CAAyBC,oBAAzB,CAA8C,IAAI7B,IAAJ,EAA9C,CAArB;AACA,QAAID,QAAJ;AAEAiB,IAAAA,MAAM,CAAC9I,WAAP,CACE4J,aAAMC,YAAN,CAAmB9K,GAAnB,EAAwBgC,iBAAxB,EAA+B6G,WAA/B,EAA4CI,WAA5C,CADF;AAIA9D,IAAAA,GAAG,CAAC4F,mBAAJ,CAAwBzH,aAAa,CAAC0H,OAAtC,EAA+C1H,aAAa,CAAC0H,OAAd,CAAsBnI,GAAtB,EAA/C,EAjGsB,CAiGsD;AAC7E,GApLsG,CAoLrG;AAEF;;;AAEA,MAAIoB,QAAJ,EAAcwG,QAAd;;AACA,MAAI3G,eAAJ,EAAqB;AACnBG,IAAAA,QAAQ,GAAGjC,kBAAMkI,QAAN,CAAepG,eAAf,EAAgC5B,EAAE,CAACwB,GAAH,CAAO,SAAP,CAAhC,EAAmD,IAAnD,EAAyDI,eAAe,CAACjB,GAAhB,EAAzD,CAAX,CADmB,CAEnB;;AACA4H,IAAAA,QAAQ,GAAG7E,gBAAMC,QAAN,GAAiB,kBAA5B,CAHmB,CAG4B;AAC/C;AACD,GALD,MAKO;AACL4E,IAAAA,QAAQ,GAAG7E,gBAAMC,QAAN,GAAiB,iBAA5B;AACA5B,IAAAA,QAAQ,GAAG,sBAAX,CAFK,CAE6B;AAClC;AACD;;AACD,MAAM8C,aAAa,GAAG/G,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAtB;AACA,MAAMmJ,GAAG,GAAG9J,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAZ;AACA,MAAMoJ,MAAM,GAAG/J,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAf;AACA,MAAM0I,GAAG,GAAGrJ,GAAG,CAACW,aAAJ,CAAkB,IAAlB,CAAZ;AACAoG,EAAAA,aAAa,CAAC9F,WAAd,CAA0B6I,GAA1B;AACA/C,EAAAA,aAAa,CAAC9F,WAAd,CAA0B8I,MAA1B;AACAhD,EAAAA,aAAa,CAAC9F,WAAd,CAA0BoI,GAA1B;AACAtC,EAAAA,aAAa,CAAC3C,SAAd,GAA0BH,QAA1B,CA1MuG,CA2MvG;;AAEA,MAAIiD,KAAJ,EAAWsD,UAAX;AACA,MAAMS,OAAO,GAAG;AAAEvB,IAAAA,GAAG,EAAEK,MAAP;AAAe/J,IAAAA,GAAG,EAAEA;AAApB,GAAhB;;AAEAuJ,oBAAM2B,KAAN,CAAYD,OAAZ,EAAqBE,IAArB,CAA0B,UAAAF,OAAO,EAAI;AACnC;AACArC,IAAAA,WAAW;AACXwC,IAAAA,MAAM,CAACC,MAAP,CAAcJ,OAAd,EAAuBzH,WAAvB;AACA,yCAAqByH,OAArB,EAA8BE,IAA9B,CAAmC,UAAAG,QAAQ,EAAI,CAC7C;AACD,KAFD;AAGD,GAPD;;AASA,SAAOvE,aAAP;AACD,C,CAAC","sourcesContent":["/** UI code for individual messages: display them, edit them\n *\n * @packageDocumentation\n */\n\n/* global $rdf */\nimport { insertMessageIntoTable } from './infinite'\nimport { messageToolbar, sentimentStripLinked } from './messageTools'\nimport { findBookmarkDocument } from './bookmarks'\nimport { mostRecentVersion, originalVersion } from './chatLogic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store, authn } from 'solid-logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * HTML component for an image\n */\nexport function elementForImageURI (imageUri, options) {\n const img = dom.createElement('img')\n let height = '10'\n if (options.inlineImageHeightEms) {\n height = ('' + options.inlineImageHeightEms).trim()\n }\n img.setAttribute(\n 'style',\n 'max-height: ' + height + 'em; border-radius: 1em; margin: 0.7em;'\n )\n // widgets.makeDropTarget(img, handleURIsDroppedOnMugshot, droppedFileHandler)\n if (imageUri) img.setAttribute('src', imageUri)\n const anchor = dom.createElement('a')\n anchor.setAttribute('href', imageUri)\n anchor.setAttribute('target', 'images')\n anchor.appendChild(img)\n widgets.makeDraggable(img, $rdf.sym(imageUri))\n return anchor\n}\n\nconst anchor = function (text, term) {\n // If there is no link return an element anyway\n const a = dom.createElement('a')\n if (term && term.uri) {\n a.setAttribute('href', term.uri)\n a.addEventListener('click', widgets.openHrefInOutlineMode, true)\n a.setAttribute('style', 'color: #3B5998; text-decoration: none; ') // font-weight: bold\n }\n a.textContent = text\n return a\n}\n\nfunction nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * Displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n */\nexport function creatorAndDateHorizontal (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(label(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n const dateBit = td1.appendChild(anchor(date, message))\n dateBit.style.fontSize = '80%'\n dateBit.style.marginLeft = '1em'\n td1.appendChild(dom.createElement('br'))\n}\n\n/**\n * Renders a chat message, read-only mode\n */\nexport function renderMessageRow (channelObject, message, fresh, options, userContext) {\n const colorizeByAuthor =\n options.colorizeByAuthor === '1' || options.colorizeByAuthor === true\n\n const creator = store.any(message, ns.foaf('maker'))\n const date = store.any(message, ns.dct('created'))\n const latestVersion = mostRecentVersion(message)\n const content = store.any(latestVersion, ns.sioc('content'))\n\n const originalMessage = originalVersion(message)\n const edited = !message.sameTerm(originalMessage)\n\n const sortDate = store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) // In message\n\n const messageRow = dom.createElement('tr')\n messageRow.AJAR_date = sortDate.value\n messageRow.AJAR_subject = message\n\n const td1 = dom.createElement('td')\n messageRow.appendChild(td1)\n if (!options.authorDateOnLeft) {\n const img = dom.createElement('img')\n img.setAttribute(\n 'style',\n 'max-height: 2.5em; max-width: 2.5em; border-radius: 0.5em; margin: auto;'\n )\n widgets.setImage(img, creator)\n td1.appendChild(img)\n } else {\n creatorAndDate(td1, creator, widgets.shortDate(sortDate.value), message)\n }\n let bothDates = widgets.shortDate(sortDate.value)\n if (edited) {\n bothDates += ' ... ' + widgets.shortDate(date.value)\n }\n\n // Render the content ot the message itself\n const td2 = messageRow.appendChild(dom.createElement('td'))\n\n if (!options.authorDateOnLeft) {\n creatorAndDateHorizontal(\n td2,\n creator,\n bothDates, // widgets.shortDate(dateString)\n message\n )\n }\n const text = content.value.trim()\n const isURI = /^https?:\\/[^ <>]*$/i.test(text)\n let para = null\n if (isURI) {\n const isImage = /\\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(text) // @@ Should use content-type not URI\n if (isImage && options.expandImagesInline) {\n const img = elementForImageURI(text, options)\n td2.appendChild(img)\n } else {\n // Link but not Image\n const anc = td2.appendChild(dom.createElement('a'))\n para = anc.appendChild(dom.createElement('p'))\n anc.href = text\n para.textContent = text\n td2.appendChild(anc)\n }\n } else {\n // text\n para = dom.createElement('p')\n td2.appendChild(para)\n para.textContent = text\n }\n if (para) {\n const bgcolor = colorizeByAuthor\n ? pad.lightColorHash(creator)\n : getBgColor(fresh)\n para.setAttribute(\n 'style',\n messageBodyStyle + 'background-color: ' + bgcolor + ';'\n )\n }\n\n function getBgColor (fresh) {\n return fresh ? '#e8ffe8' : 'white'\n }\n\n // Sentiment strip\n const strip = sentimentStripLinked(message, message.doc())\n if (strip.children.length) {\n td2.appendChild(dom.createElement('br'))\n td2.appendChild(strip)\n }\n\n // Message tool bar button\n const td3 = dom.createElement('td')\n messageRow.appendChild(td3)\n const toolsButton = widgets.button(\n dom,\n icons.iconBase + 'noun_243787.svg',\n '...'\n )\n td3.appendChild(toolsButton)\n toolsButton.addEventListener('click', function (_event) {\n if (messageRow.toolTR) {\n // already got a toolbar? Toogle\n messageRow.parentNode.removeChild(messageRow.toolTR)\n delete messageRow.toolTR\n return\n }\n const toolsTR = dom.createElement('tr')\n const tools = messageToolbar(message, messageRow, userContext, channelObject)\n tools.style =\n 'border: 0.05em solid #888; border-radius: 0 0 0.7em 0.7em; border-top: 0; height:3.5em; background-color: #fff;' // @@ fix\n if (messageRow.nextSibling) {\n messageRow.parentElement.insertBefore(toolsTR, messageRow.nextSibling)\n } else {\n messageRow.parentElement.appendChild(toolsTR)\n }\n messageRow.toolTR = toolsTR\n toolsTR.appendChild(dom.createElement('td')) // left\n const toolsTD = toolsTR.appendChild(dom.createElement('td'))\n toolsTR.appendChild(dom.createElement('td')) // right\n toolsTD.appendChild(tools)\n })\n return messageRow\n}\n\nexport function switchToEditor (messageRow, message, channelObject, userContext) {\n const messageTable = messageRow.parentNode\n const editRow = renderMessageEditor(channelObject, messageTable, userContext,\n channelObject.options, mostRecentVersion(message))\n messageTable.insertBefore(editRow, messageRow)\n editRow.originalRow = messageRow\n messageRow.style.visibility = 'hidden' // Hide the original message. unhide if user cancels edit\n}\n/* Control for a new message -- or editing an old message ***************\n *\n */\nexport function renderMessageEditor (channelObject, messageTable, userContext, options, originalMessage) {\n function revertEditing (messageEditor) {\n messageEditor.originalRow.style.visibility = 'visible' // restore read-only version\n messageEditor.parentNode.removeChild(messageEditor)\n }\n\n async function handleFieldInput (_event) {\n await sendMessage(field.value, true)\n }\n\n async function sendMessage (text, fromMainField) {\n function sendComplete (message, _text2) {\n // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())\n // const content = $rdf.literal(text2)\n insertMessageIntoTable(channelObject, messageTable, message, false, options, userContext) // not green\n\n if (originalMessage) { // editing another message\n const oldRow = messageEditor.originalRow\n // oldRow.style.display = '' // restore read-only version, re-attack\n if (oldRow.parentNode) {\n oldRow.parentNode.removeChild(oldRow) // No longer needed old version\n } else {\n debug.warn('No parentNode on old message ' + oldRow.textContent)\n oldRow.style.backgroundColor = '#fee'\n oldRow.style.visibility = 'hidden' // @@ FIX THIS AND REMOVE FROM DOM INSTEAD\n }\n messageEditor.parentNode.removeChild(messageEditor) // no longer need editor\n } else {\n if (fromMainField) {\n field.value = '' // clear from out for reuse\n field.setAttribute('style', messageBodyStyle)\n field.disabled = false\n field.scrollIntoView(options.newestFirst) // allign bottom (top)\n field.focus() // Start typing next line immediately\n field.select()\n }\n }\n // await channelObject.div.refresh() // Add new day if nec @@ add back\n }\n\n // const me = authn.currentUser() // Must be logged on or wuld have got login button\n if (fromMainField) {\n field.setAttribute('style', messageBodyStyle + 'color: #bbb;') // pendingedit\n field.disabled = true\n }\n\n let message\n try {\n message = await channelObject.updateMessage(text, originalMessage)\n } catch (err) {\n const statusArea = userContext.statusArea || messageEditor\n statusArea.appendChild(\n widgets.errorMessageBlock(dom, 'Error writing message: ' + err)\n )\n return\n }\n sendComplete(message, text)\n } // sendMessage\n\n // DRAG AND DROP\n function droppedFileHandler (files) {\n const base = messageTable.chatDocument.dir().uri\n widgets.uploadFiles(\n store.fetcher,\n files,\n base + 'Files',\n base + 'Pictures',\n async function (theFile, destURI) {\n // @@@@@@ Wait for each if several\n await sendMessage(destURI)\n }\n )\n }\n\n // When a set of URIs are dropped on the field\n const droppedURIHandler = async function (uris) {\n for (const uri of uris) {\n await sendMessage(uri)\n }\n }\n\n // When we are actually logged on\n function turnOnInput () {\n function getImageDoc () {\n imageDoc = $rdf.sym(\n chatDocument.dir().uri + 'Image_' + Date.now() + '.png'\n )\n return imageDoc\n }\n\n async function tookPicture (imageDoc) {\n if (imageDoc) {\n await sendMessage(imageDoc.uri)\n }\n }\n\n // Body of turnOnInput\n\n let menuButton\n if (options.menuHandler) {\n const menuButton = widgets.button(\n dom, icons.iconBase + 'noun_243787.svg', 'More')\n menuButton.setAttribute('style', style.buttonStyle + 'float: right;')\n // menuButton.addEventListener('click', _event => sendMessage(), false) (done in turnoninput)\n rhs.appendChild(menuButton)\n }\n\n if (options.menuHandler && menuButton) {\n const me = authn.currentUser()\n const menuOptions = {\n me,\n dom,\n div: null, // @@ was: div\n newBase: messageTable.chatDocument.dir().uri\n }\n menuButton.addEventListener(\n 'click',\n event => {\n options.menuHandler(event, channelObject.chatChannel, menuOptions)\n },\n false\n )\n }\n\n const me = authn.currentUser() // If already logged on\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n if (originalMessage) {\n field.value = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n }\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n // Trap the Enter BEFORE it is used ti make a newline\n\n field.addEventListener(\n 'keydown',\n async function (e) {\n // User preference?\n if (e.code === 'Enter') {\n // if (e.keyCode === 13) { // deprocated https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\n if ((!e.shiftKey && !options.shiftEnterSendsMessage) || (e.shiftKey && options.shiftEnterSendsMessage)) {\n // Shift-Enter just adds a new line\n // (note alt-enter doesn't add newline anyway on my setup - so have to use shift.\n await handleFieldInput(e)\n }\n }\n },\n false\n )\n\n widgets.makeDropTarget(field, droppedURIHandler, droppedFileHandler)\n\n rhs.innerHTML = ''\n\n sendButton = widgets.button(dom, sendIcon, 'Send')\n sendButton.style.float = 'right'\n sendButton.addEventListener('click', _event => handleFieldInput(), false)\n rhs.appendChild(sendButton)\n\n if (originalMessage) { // Are we editing another message?\n const cancelButton = rhs.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'left'\n // cancelButton.firstChild.style.opacity = '0.3' // moved to buttons\n cancelButton.addEventListener('click', _event => revertEditing(messageEditor), false)\n rhs.appendChild(cancelButton)\n }\n\n const chatDocument = channelObject.dateFolder.leafDocumentFromDate(new Date())\n let imageDoc\n\n middle.appendChild(\n media.cameraButton(dom, store, getImageDoc, tookPicture)\n )\n\n pad.recordParticipation(channelObject.channel, channelObject.channel.doc()) // participation =\n } // turn on inpuut\n\n // Body of renderMessageEditor\n\n let sortDate, sendIcon\n if (originalMessage) {\n sortDate = store.anyValue(originalMessage, ns.dct('created'), null, originalMessage.doc())\n // text = store.anyValue(originalMessage, ns.sioc('content'), null, originalMessage.doc())\n sendIcon = icons.iconBase + 'noun_1180158.svg' // Green check\n // cancelIcon = icons.iconBase + 'noun_1180156.svg' // Black cross\n } else {\n sendIcon = icons.iconBase + 'noun_383448.svg'\n sortDate = '9999-01-01T00:00:00Z' // ISO format for field sort\n // text = ''\n }\n const messageEditor = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n messageEditor.appendChild(lhs)\n messageEditor.appendChild(middle)\n messageEditor.appendChild(rhs)\n messageEditor.AJAR_date = sortDate\n // messageEditor.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const context = { div: middle, dom: dom }\n\n authn.logIn(context).then(context => {\n // me = context.me\n turnOnInput()\n Object.assign(context, userContext)\n findBookmarkDocument(context).then(_context => {\n // console.log('Bookmark file: ' + context.bookmarkDocument)\n })\n })\n\n return messageEditor\n} // renderMessageEditor\n"],"file":"message.js"}
|
package/lib/chat/messageTools.js
CHANGED
|
@@ -17,28 +17,26 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
17
17
|
|
|
18
18
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var debug = _interopRequireWildcard(require("../debug"));
|
|
21
21
|
|
|
22
22
|
var _iconBase = require("../iconBase");
|
|
23
23
|
|
|
24
|
-
var _logic = require("../logic");
|
|
25
|
-
|
|
26
|
-
var _index2 = require("../media/index");
|
|
27
|
-
|
|
28
24
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
29
25
|
|
|
30
|
-
var pad = _interopRequireWildcard(require("../pad"));
|
|
31
|
-
|
|
32
26
|
var rdf = _interopRequireWildcard(require("rdflib"));
|
|
33
27
|
|
|
34
|
-
var style = _interopRequireWildcard(require("../style"));
|
|
35
|
-
|
|
36
28
|
var utils = _interopRequireWildcard(require("../utils"));
|
|
37
29
|
|
|
38
30
|
var widgets = _interopRequireWildcard(require("../widgets"));
|
|
39
31
|
|
|
40
32
|
var _bookmarks = require("./bookmarks");
|
|
41
33
|
|
|
34
|
+
var _solidLogic = require("solid-logic");
|
|
35
|
+
|
|
36
|
+
var _chatLogic = require("./chatLogic");
|
|
37
|
+
|
|
38
|
+
var _message = require("./message");
|
|
39
|
+
|
|
42
40
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
43
41
|
|
|
44
42
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -52,52 +50,26 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
52
50
|
* If you made it originally: edit, delete, attach
|
|
53
51
|
* @packageDocumentation
|
|
54
52
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
// import { media } from '../media/index'
|
|
54
|
+
// import * as pad from '../pad'
|
|
57
55
|
// pull in first avoid cross-refs
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
icons: _iconBase.icons,
|
|
61
|
-
ns: ns,
|
|
62
|
-
media: _index2.media,
|
|
63
|
-
pad: pad,
|
|
64
|
-
rdf: rdf,
|
|
65
|
-
store: _logic.store,
|
|
66
|
-
style: style,
|
|
67
|
-
utils: utils,
|
|
68
|
-
widgets: widgets
|
|
69
|
-
};
|
|
70
|
-
var dom = window.document;
|
|
71
|
-
var kb = _logic.store; // const label = UI.utils.label
|
|
72
|
-
// THE UNUSED ICONS are here as reminders for possible future functionality
|
|
56
|
+
// import * as style from '../style'
|
|
57
|
+
var dom = window.document; // THE UNUSED ICONS are here as reminders for possible future functionality
|
|
73
58
|
// const BOOKMARK_ICON = 'noun_45961.svg'
|
|
74
59
|
// const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites
|
|
75
60
|
// const MENU_ICON = 'noun_897914.svg'
|
|
76
61
|
// const PAPERCLIP_ICON = 'noun_25830.svg' -> add attachments to this message
|
|
77
62
|
// const PIN_ICON = 'noun_562340.svg' -> pin this message permanently in the chat UI
|
|
78
|
-
|
|
63
|
+
|
|
64
|
+
var PENCIL_ICON = 'noun_253504.svg'; // edit a message
|
|
79
65
|
// const SPANNER_ICON = 'noun_344563.svg' -> settings
|
|
80
66
|
|
|
81
67
|
var THUMBS_UP_ICON = 'noun_1384132.svg';
|
|
82
|
-
var THUMBS_DOWN_ICON = 'noun_1384135.svg';
|
|
83
|
-
// @@@@ use the one in rdflib.js when it is avaiable and delete this
|
|
84
|
-
|
|
85
|
-
function updatePromise(del, ins) {
|
|
86
|
-
return new Promise(function (resolve, reject) {
|
|
87
|
-
kb.updater.update(del, ins, function (uri, ok, errorBody) {
|
|
88
|
-
if (!ok) {
|
|
89
|
-
reject(new Error(errorBody));
|
|
90
|
-
} else {
|
|
91
|
-
resolve();
|
|
92
|
-
}
|
|
93
|
-
}); // callback
|
|
94
|
-
}); // promise
|
|
95
|
-
}
|
|
68
|
+
var THUMBS_DOWN_ICON = 'noun_1384135.svg';
|
|
96
69
|
/**
|
|
97
70
|
* Emoji in Unicode
|
|
98
71
|
*/
|
|
99
72
|
|
|
100
|
-
|
|
101
73
|
var emoji = {};
|
|
102
74
|
emoji[ns.schema('AgreeAction')] = '👍';
|
|
103
75
|
emoji[ns.schema('DisagreeAction')] = '👎';
|
|
@@ -108,9 +80,11 @@ emoji[ns.schema('LikeAction')] = '❤️';
|
|
|
108
80
|
*/
|
|
109
81
|
|
|
110
82
|
function sentimentStrip(target, doc) {
|
|
111
|
-
|
|
83
|
+
// alain seems not used
|
|
84
|
+
var latest = (0, _chatLogic.mostRecentVersion)(target);
|
|
85
|
+
var actions = _solidLogic.store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? _solidLogic.store.each(null, ns.schema('target'), target, doc) : [];
|
|
112
86
|
var sentiments = actions.map(function (a) {
|
|
113
|
-
return
|
|
87
|
+
return _solidLogic.store.any(a, ns.rdf('type'), null, doc);
|
|
114
88
|
});
|
|
115
89
|
sentiments.sort();
|
|
116
90
|
var strings = sentiments.map(function (x) {
|
|
@@ -131,9 +105,9 @@ function sentimentStripLinked(target, doc) {
|
|
|
131
105
|
|
|
132
106
|
function refresh() {
|
|
133
107
|
strip.innerHTML = '';
|
|
134
|
-
var actions =
|
|
108
|
+
var actions = (0, _chatLogic.mostRecentVersion)(target).uri !== ns.schema('dateDeleted').uri ? _solidLogic.store.each(null, ns.schema('target'), target, doc) : [];
|
|
135
109
|
var sentiments = actions.map(function (a) {
|
|
136
|
-
return [
|
|
110
|
+
return [_solidLogic.store.any(a, ns.rdf('type'), null, doc), _solidLogic.store.any(a, ns.schema('agent'), null, doc)];
|
|
137
111
|
});
|
|
138
112
|
sentiments.sort();
|
|
139
113
|
sentiments.forEach(function (ss) {
|
|
@@ -164,60 +138,142 @@ function sentimentStripLinked(target, doc) {
|
|
|
164
138
|
*/
|
|
165
139
|
|
|
166
140
|
|
|
167
|
-
function messageToolbar(message, messageRow, userContext) {
|
|
168
|
-
|
|
141
|
+
function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
142
|
+
function deleteMessage() {
|
|
143
|
+
return _deleteMessage.apply(this, arguments);
|
|
144
|
+
}
|
|
169
145
|
|
|
170
|
-
function
|
|
171
|
-
|
|
146
|
+
function _deleteMessage() {
|
|
147
|
+
_deleteMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
148
|
+
var author, msg, area;
|
|
149
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
150
|
+
while (1) {
|
|
151
|
+
switch (_context2.prev = _context2.next) {
|
|
152
|
+
case 0:
|
|
153
|
+
author = _solidLogic.store.any(message, ns.foaf('maker'));
|
|
154
|
+
|
|
155
|
+
if (me) {
|
|
156
|
+
_context2.next = 5;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
alert('You can\'t delete the message, you are not logged in.');
|
|
161
|
+
_context2.next = 22;
|
|
162
|
+
break;
|
|
163
|
+
|
|
164
|
+
case 5:
|
|
165
|
+
if (!me.sameTerm(author)) {
|
|
166
|
+
_context2.next = 21;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
_context2.prev = 6;
|
|
171
|
+
_context2.next = 9;
|
|
172
|
+
return channelObject.deleteMessage(message);
|
|
173
|
+
|
|
174
|
+
case 9:
|
|
175
|
+
_context2.next = 18;
|
|
176
|
+
break;
|
|
177
|
+
|
|
178
|
+
case 11:
|
|
179
|
+
_context2.prev = 11;
|
|
180
|
+
_context2.t0 = _context2["catch"](6);
|
|
181
|
+
msg = 'Error deleting messaage ' + _context2.t0;
|
|
182
|
+
debug.warn(msg);
|
|
183
|
+
alert(msg);
|
|
184
|
+
area = userContext.statusArea || messageRow.parentNode;
|
|
185
|
+
area.appendChild(widgets.errorMessageBlock(dom, msg));
|
|
186
|
+
|
|
187
|
+
case 18:
|
|
188
|
+
messageRow.parentNode.removeChild(messageRow);
|
|
189
|
+
_context2.next = 22;
|
|
190
|
+
break;
|
|
191
|
+
|
|
192
|
+
case 21:
|
|
193
|
+
alert('You can\'t delete the message, you are not logged in as the author, ' + author);
|
|
194
|
+
|
|
195
|
+
case 22:
|
|
196
|
+
closeToolbar();
|
|
197
|
+
|
|
198
|
+
case 23:
|
|
199
|
+
case "end":
|
|
200
|
+
return _context2.stop();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}, _callee2, null, [[6, 11]]);
|
|
204
|
+
}));
|
|
205
|
+
return _deleteMessage.apply(this, arguments);
|
|
172
206
|
}
|
|
173
207
|
|
|
174
|
-
function
|
|
175
|
-
return
|
|
176
|
-
} //
|
|
208
|
+
function editMessage(_x) {
|
|
209
|
+
return _editMessage.apply(this, arguments);
|
|
210
|
+
} // alain TODO allow chat owner to fully delete message + sentiments and replacing messages
|
|
177
211
|
|
|
178
212
|
|
|
179
|
-
function
|
|
180
|
-
|
|
213
|
+
function _editMessage() {
|
|
214
|
+
_editMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(messageRow) {
|
|
181
215
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
182
216
|
while (1) {
|
|
183
217
|
switch (_context3.prev = _context3.next) {
|
|
184
218
|
case 0:
|
|
185
|
-
|
|
186
|
-
|
|
219
|
+
if (me.value === _solidLogic.store.any(message, ns.foaf('maker')).value) {
|
|
220
|
+
closeToolbar(); // edit is a one-off action
|
|
187
221
|
|
|
188
|
-
|
|
222
|
+
(0, _message.switchToEditor)(messageRow, message, channelObject, userContext);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
case 1:
|
|
189
226
|
case "end":
|
|
190
227
|
return _context3.stop();
|
|
191
228
|
}
|
|
192
229
|
}
|
|
193
230
|
}, _callee3);
|
|
194
231
|
}));
|
|
195
|
-
return
|
|
232
|
+
return _editMessage.apply(this, arguments);
|
|
196
233
|
}
|
|
197
234
|
|
|
198
|
-
var
|
|
235
|
+
var div = dom.createElement('div'); // is message deleted ?
|
|
199
236
|
|
|
200
|
-
if (
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
237
|
+
if ((0, _chatLogic.mostRecentVersion)(message).value === ns.schema('dateDeleted').value) return div;
|
|
238
|
+
|
|
239
|
+
function closeToolbar() {
|
|
240
|
+
div.parentElement.parentElement.removeChild(div.parentElement); // remive the TR
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function deleteThingThen(_x2) {
|
|
244
|
+
return _deleteThingThen.apply(this, arguments);
|
|
245
|
+
} // Things only the original author can do
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
function _deleteThingThen() {
|
|
249
|
+
_deleteThingThen = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(x) {
|
|
250
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
204
251
|
while (1) {
|
|
205
|
-
switch (
|
|
252
|
+
switch (_context4.prev = _context4.next) {
|
|
206
253
|
case 0:
|
|
207
|
-
|
|
208
|
-
return
|
|
254
|
+
_context4.next = 2;
|
|
255
|
+
return _solidLogic.store.updater.update(_solidLogic.store.connectedStatements(x), []);
|
|
209
256
|
|
|
210
257
|
case 2:
|
|
211
|
-
closeToolbar();
|
|
212
|
-
|
|
213
|
-
case 3:
|
|
214
258
|
case "end":
|
|
215
|
-
return
|
|
259
|
+
return _context4.stop();
|
|
216
260
|
}
|
|
217
261
|
}
|
|
218
|
-
},
|
|
219
|
-
}))
|
|
220
|
-
|
|
262
|
+
}, _callee4);
|
|
263
|
+
}));
|
|
264
|
+
return _deleteThingThen.apply(this, arguments);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
var me = _solidLogic.authn.currentUser(); // If already logged on
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
if (me && _solidLogic.store.holds(message, ns.foaf('maker'), me)) {
|
|
271
|
+
// button to delete the message
|
|
272
|
+
div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage)); // button to edit the message
|
|
273
|
+
|
|
274
|
+
div.appendChild(widgets.button(dom, _iconBase.icons.iconBase + PENCIL_ICON, 'edit', function () {
|
|
275
|
+
return editMessage(messageRow);
|
|
276
|
+
}));
|
|
221
277
|
} // if mine
|
|
222
278
|
// Things anyone can do if they have a bookmark list async
|
|
223
279
|
|
|
@@ -248,39 +304,39 @@ function messageToolbar(message, messageRow, userContext) {
|
|
|
248
304
|
button.style.backgroundColor = action ? 'yellow' : 'white';
|
|
249
305
|
}
|
|
250
306
|
|
|
251
|
-
var button =
|
|
252
|
-
var
|
|
307
|
+
var button = widgets.button(dom, icon, utils.label(actionClass), /*#__PURE__*/function () {
|
|
308
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_event) {
|
|
253
309
|
var insertMe, dirty, i, a;
|
|
254
|
-
return _regenerator["default"].wrap(function
|
|
310
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
255
311
|
while (1) {
|
|
256
|
-
switch (
|
|
312
|
+
switch (_context.prev = _context.next) {
|
|
257
313
|
case 0:
|
|
258
314
|
if (!action) {
|
|
259
|
-
|
|
315
|
+
_context.next = 7;
|
|
260
316
|
break;
|
|
261
317
|
}
|
|
262
318
|
|
|
263
|
-
|
|
319
|
+
_context.next = 3;
|
|
264
320
|
return deleteThingThen(action);
|
|
265
321
|
|
|
266
322
|
case 3:
|
|
267
323
|
action = null;
|
|
268
324
|
setColor();
|
|
269
|
-
|
|
325
|
+
_context.next = 25;
|
|
270
326
|
break;
|
|
271
327
|
|
|
272
328
|
case 7:
|
|
273
329
|
// no action
|
|
274
|
-
action =
|
|
275
|
-
insertMe = [
|
|
276
|
-
|
|
277
|
-
return
|
|
330
|
+
action = widgets.newThing(doc);
|
|
331
|
+
insertMe = [rdf.st(action, ns.schema('agent'), context.me, doc), rdf.st(action, ns.rdf('type'), actionClass, doc), rdf.st(action, ns.schema('target'), target, doc)];
|
|
332
|
+
_context.next = 11;
|
|
333
|
+
return _solidLogic.store.updater.update([], insertMe);
|
|
278
334
|
|
|
279
335
|
case 11:
|
|
280
336
|
setColor();
|
|
281
337
|
|
|
282
338
|
if (!mutuallyExclusive) {
|
|
283
|
-
|
|
339
|
+
_context.next = 25;
|
|
284
340
|
break;
|
|
285
341
|
}
|
|
286
342
|
|
|
@@ -290,18 +346,18 @@ function messageToolbar(message, messageRow, userContext) {
|
|
|
290
346
|
|
|
291
347
|
case 15:
|
|
292
348
|
if (!(i < mutuallyExclusive.length)) {
|
|
293
|
-
|
|
349
|
+
_context.next = 24;
|
|
294
350
|
break;
|
|
295
351
|
}
|
|
296
352
|
|
|
297
353
|
a = existingAction(mutuallyExclusive[i]);
|
|
298
354
|
|
|
299
355
|
if (!a) {
|
|
300
|
-
|
|
356
|
+
_context.next = 21;
|
|
301
357
|
break;
|
|
302
358
|
}
|
|
303
359
|
|
|
304
|
-
|
|
360
|
+
_context.next = 20;
|
|
305
361
|
return deleteThingThen(a);
|
|
306
362
|
|
|
307
363
|
case 20:
|
|
@@ -310,34 +366,35 @@ function messageToolbar(message, messageRow, userContext) {
|
|
|
310
366
|
|
|
311
367
|
case 21:
|
|
312
368
|
i++;
|
|
313
|
-
|
|
369
|
+
_context.next = 15;
|
|
314
370
|
break;
|
|
315
371
|
|
|
316
372
|
case 24:
|
|
317
373
|
if (dirty) {
|
|
318
|
-
//
|
|
319
|
-
|
|
374
|
+
// widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings
|
|
375
|
+
widgets.refreshTree(messageRow); // requires them all to be immediate siblings
|
|
320
376
|
}
|
|
321
377
|
|
|
322
378
|
case 25:
|
|
323
379
|
case "end":
|
|
324
|
-
return
|
|
380
|
+
return _context.stop();
|
|
325
381
|
}
|
|
326
382
|
}
|
|
327
|
-
},
|
|
383
|
+
}, _callee);
|
|
328
384
|
}));
|
|
329
385
|
|
|
330
|
-
return function (
|
|
331
|
-
return
|
|
386
|
+
return function (_x3) {
|
|
387
|
+
return _ref.apply(this, arguments);
|
|
332
388
|
};
|
|
333
389
|
}());
|
|
334
390
|
|
|
335
391
|
function existingAction(actionClass) {
|
|
336
|
-
var actions =
|
|
337
|
-
return
|
|
392
|
+
var actions = _solidLogic.store.each(null, ns.schema('agent'), context.me, doc).filter(function (x) {
|
|
393
|
+
return _solidLogic.store.holds(x, ns.rdf('type'), actionClass, doc);
|
|
338
394
|
}).filter(function (x) {
|
|
339
|
-
return
|
|
395
|
+
return _solidLogic.store.holds(x, ns.schema('target'), target, doc);
|
|
340
396
|
});
|
|
397
|
+
|
|
341
398
|
return actions.length ? actions[0] : null;
|
|
342
399
|
}
|
|
343
400
|
|
|
@@ -355,23 +412,23 @@ function messageToolbar(message, messageRow, userContext) {
|
|
|
355
412
|
// https://schema.org/AgreeAction
|
|
356
413
|
|
|
357
414
|
|
|
358
|
-
me =
|
|
415
|
+
me = _solidLogic.authn.currentUser(); // If already logged on
|
|
416
|
+
// debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))
|
|
359
417
|
|
|
360
|
-
if (me) {
|
|
361
|
-
// Things you mnust be logged in for
|
|
418
|
+
if (me && (0, _chatLogic.mostRecentVersion)(message).value !== ns.schema('dateDeleted').value) {
|
|
362
419
|
var context1 = {
|
|
363
420
|
me: me,
|
|
364
421
|
dom: dom,
|
|
365
422
|
div: div
|
|
366
423
|
};
|
|
367
|
-
div.appendChild(sentimentButton(context1, message, // @@ TODO use
|
|
368
|
-
|
|
424
|
+
div.appendChild(sentimentButton(context1, message, // @@ TODO use widgets.sentimentButton
|
|
425
|
+
_iconBase.icons.iconBase + THUMBS_UP_ICON, ns.schema('AgreeAction'), message.doc(), [ns.schema('DisagreeAction')])); // Thumbs down
|
|
369
426
|
|
|
370
|
-
div.appendChild(sentimentButton(context1, message,
|
|
427
|
+
div.appendChild(sentimentButton(context1, message, _iconBase.icons.iconBase + THUMBS_DOWN_ICON, ns.schema('DisagreeAction'), message.doc(), [ns.schema('AgreeAction')]));
|
|
371
428
|
} // X button to remove the tool UI itself
|
|
372
429
|
|
|
373
430
|
|
|
374
|
-
var cancelButton = div.appendChild(
|
|
431
|
+
var cancelButton = div.appendChild(widgets.cancelButton(dom));
|
|
375
432
|
cancelButton.style["float"] = 'right';
|
|
376
433
|
cancelButton.firstChild.style.opacity = '0.3';
|
|
377
434
|
cancelButton.addEventListener('click', closeToolbar);
|