solid-ui 2.4.19 → 2.4.20
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 +1 -1
- package/dist/index.html +9 -0
- package/{lib/webpack-bundle.js → dist/main.js} +44878 -51845
- package/dist/main.js.map +1 -0
- package/lib/acl/access-groups.d.ts +5 -4
- package/lib/acl/access-groups.d.ts.map +1 -1
- package/lib/acl/access-groups.js +1 -0
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.d.ts +2 -2
- package/lib/acl/acl-control.d.ts.map +1 -1
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.d.ts +5 -5
- package/lib/acl/acl.d.ts.map +1 -1
- package/lib/acl/acl.js.map +1 -1
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.js.map +1 -1
- package/lib/footer/index.d.ts +4 -4
- package/lib/footer/index.d.ts.map +1 -1
- package/lib/footer/index.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -5
- package/lib/index.js.map +1 -1
- package/lib/login/login.d.ts +4 -1
- package/lib/login/login.d.ts.map +1 -1
- package/lib/login/login.js +226 -133
- package/lib/login/login.js.map +1 -1
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js.map +1 -1
- package/lib/style.js +3 -3
- package/lib/style.js.map +1 -1
- package/lib/tabs.d.ts +1 -1
- package/lib/tabs.d.ts.map +1 -1
- package/lib/tabs.js +11 -3
- package/lib/tabs.js.map +1 -1
- package/lib/utils/headerFooterHelpers.d.ts +2 -3
- package/lib/utils/headerFooterHelpers.d.ts.map +1 -1
- package/lib/utils/headerFooterHelpers.js +63 -33
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/versionInfo.d.ts +12 -11
- package/lib/versionInfo.d.ts.map +1 -1
- package/lib/versionInfo.js +22 -20
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +1 -1
- package/lib/widgets/dragAndDrop.js.map +1 -1
- 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 +8 -6
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms.js +51 -28
- package/lib/widgets/forms.js.map +1 -1
- package/package.json +42 -48
- package/lib/webpack-bundle.js.map +0 -1
package/lib/chat/message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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","then","Object","assign","_context"],"mappings":"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","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 { ensureLoggedIn } from '../login/login'\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 ensureLoggedIn(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"}
|
|
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","then","Object","assign","_context"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA;;AACA;;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,EAAHA;AAAf,GAAhB;AAEA,6BAAeiL,OAAf,EAAwBC,IAAxB,CAA6B,UAAAD,OAAO,EAAI;AACtC;AACArC,IAAAA,WAAW;AACXuC,IAAAA,MAAM,CAACC,MAAP,CAAcH,OAAd,EAAuBzH,WAAvB;AACA,yCAAqByH,OAArB,EAA8BC,IAA9B,CAAmC,UAAAG,QAAQ,EAAI,CAC7C;AACD,KAFD;AAGD,GAPD;AASA,SAAOtE,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 { ensureLoggedIn } from '../login/login'\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 }\n\n ensureLoggedIn(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/thread.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chat/thread.js"],"names":["UI","icons","ns","media","pad","style","utils","widgets","thread","dom","kb","subject","messageStore","options","store","doc","WF","$rdf","Namespace","DCT","newestFirst","messageBodyStyle","div","createElement","messageTable","me","updater","anchor","text","term","a","uri","setAttribute","addEventListener","openHrefInOutlineMode","textContent","mention","message","pre","appendChild","createTextNode","announce","log","warn","error","newMessageForm","form","lhs","middle","rhs","AJAR_date","sendMessage","field","disabled","appendMsg","value","dateStamp","sts","sendComplete","success","body","errorMessageBlock","bindings","literal","renderMessage","update","sendButton","turnOnInput","creatorAndDate","innerHTML","rows","e","keyCode","altKey","button","iconBase","buttonStyle","context","login","ensureLoggedIn","then","fieldValue","oldMsg","now","Date","timestamp","getTime","sym","push","Statement","mostRecentVersion","wf","msgBody","nick","sioc","foaf","person","s","any","label","td1","creator","date","nickAnchor","fetcher","nowOrWhenFetched","undefined","_ok","_body","syncMessages","about","displayed","ele","ele2","firstChild","nextSibling","AJAR_subject","messages","each","stored","forEach","m","addMessage","removeChild","msg","statementsMatching","_deleteMessage","connectedStatements","deletions","ok","fresh","content","dateString","tr","done","insertBefore","shortDate","td2","td3","delButton","_event","cancelButton","sureButton","query","Query","v","vs","x","vars","variable","pat","add","dct","doneQuery","refresh"],"mappings":"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","sourcesContent":["/**\n * Contains the [[thread]] function\n * @packageDocumentation\n */\n\nimport { icons } from '../iconBase'\nimport { store } from 'solid-logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as login from '../login/login'\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 = { icons, ns, media, pad, style, utils, widgets }\n\n/**\n * HTML component for a chat thread\n */\nexport function thread (dom, kb, subject, messageStore, options) {\n kb = kb || store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = $rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = store.updater\n\n const 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\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n /**\n * Form for a new message\n */\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const { message, dateStamp, sts } = appendMsg(field.value)\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom: dom }\n login.ensureLoggedIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n /* const sendMessage = function (oldMsg, options) { // alain\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? field.value : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n } */\n\n const appendMsg = function (fieldValue, oldMsg = {}, options = '') { // alain\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? fieldValue : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n return { message, dateStamp, sts }\n }\n\n function nick (person) {\n const s = store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n 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\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = store.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n // eslint-disable-next-line space-in-parens\n for (ele = messageTable.firstChild; ele; ) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n }\n\n const mostRecentVersion = function (message) {\n let msg = message\n // const listMsg = []\n while (msg) {\n // listMsg.push(msg)\n msg = store.statementsMatching(message, DCT('isReplacedBy'))\n }\n return msg\n }\n\n const _deleteMessage = async function (message) { // alain: must delete message and all linked with isReplacedBy\n // alain: check that me is not the author and ask for confirmation.\n const deletions = await store.connectedStatements(message, messageStore)\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': store.any(message, ns.foaf('maker')),\n '?date': store.any(message, DCT('created')),\n '?content': store.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\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 tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) { // alain test for delete or edit depending on me = maker\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n // deleteMessage(message) // alain or sendMessage(message, 'delete' or 'edit') //alain\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n const { sts } = appendMsg() // alain\n updater.update([], sts)\n }\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new $rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n store.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"file":"thread.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/chat/thread.js"],"names":["UI","icons","ns","media","pad","style","utils","widgets","thread","dom","kb","subject","messageStore","options","store","doc","WF","$rdf","Namespace","DCT","newestFirst","messageBodyStyle","div","createElement","messageTable","me","updater","anchor","text","term","a","uri","setAttribute","addEventListener","openHrefInOutlineMode","textContent","mention","message","pre","appendChild","createTextNode","announce","log","warn","error","newMessageForm","form","lhs","middle","rhs","AJAR_date","sendMessage","field","disabled","appendMsg","value","dateStamp","sts","sendComplete","success","body","errorMessageBlock","bindings","literal","renderMessage","update","sendButton","turnOnInput","creatorAndDate","innerHTML","rows","e","keyCode","altKey","button","iconBase","buttonStyle","context","login","ensureLoggedIn","then","fieldValue","oldMsg","now","Date","timestamp","getTime","sym","push","Statement","mostRecentVersion","wf","msgBody","nick","sioc","foaf","person","s","any","label","td1","creator","date","nickAnchor","fetcher","nowOrWhenFetched","undefined","_ok","_body","syncMessages","about","displayed","ele","ele2","firstChild","nextSibling","AJAR_subject","messages","each","stored","forEach","m","addMessage","removeChild","msg","statementsMatching","_deleteMessage","connectedStatements","deletions","ok","fresh","content","dateString","tr","done","insertBefore","shortDate","td2","td3","delButton","_event","cancelButton","sureButton","query","Query","v","vs","x","vars","variable","pat","add","dct","doneQuery","refresh"],"mappings":"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","sourcesContent":["/**\n * Contains the [[thread]] function\n * @packageDocumentation\n */\n\nimport { icons } from '../iconBase'\nimport { store } from 'solid-logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as login from '../login/login'\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 = { icons, ns, media, pad, style, utils, widgets }\n\n/**\n * HTML component for a chat thread\n */\nexport function thread (dom, kb, subject, messageStore, options) {\n kb = kb || store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = $rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = store.updater\n\n const 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\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n /**\n * Form for a new message\n */\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const { message, dateStamp, sts } = appendMsg(field.value)\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom }\n login.ensureLoggedIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n /* const sendMessage = function (oldMsg, options) { // alain\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? field.value : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n } */\n\n const appendMsg = function (fieldValue, oldMsg = {}, options = '') { // alain\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? fieldValue : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n return { message, dateStamp, sts }\n }\n\n function nick (person) {\n const s = store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n 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\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = store.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n // eslint-disable-next-line space-in-parens\n for (ele = messageTable.firstChild; ele; ) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n }\n\n const mostRecentVersion = function (message) {\n let msg = message\n // const listMsg = []\n while (msg) {\n // listMsg.push(msg)\n msg = store.statementsMatching(message, DCT('isReplacedBy'))\n }\n return msg\n }\n\n const _deleteMessage = async function (message) { // alain: must delete message and all linked with isReplacedBy\n // alain: check that me is not the author and ask for confirmation.\n const deletions = await store.connectedStatements(message, messageStore)\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': store.any(message, ns.foaf('maker')),\n '?date': store.any(message, DCT('created')),\n '?content': store.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\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 tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) { // alain test for delete or edit depending on me = maker\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n // deleteMessage(message) // alain or sendMessage(message, 'delete' or 'edit') //alain\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n const { sts } = appendMsg() // alain\n updater.update([], sts)\n }\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new $rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n store.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"file":"thread.js"}
|
package/lib/create/create.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/create/create.ts"],"names":["kb","solidLogicSingleton","store","newThingUI","createContext","dataBrowserContext","thePanes","dom","div","me","uri","Error","iconStyle","star","appendChild","createElement","visible","setAttribute","icons","iconBase","complain","message","pre","createTextNode","styleTheIcons","style","i","iconArray","length","st","disabled","selectTool","icon","selectNewTool","_event","addEventListener","makeNewAppInstance","options","Promise","resolve","reject","selectUI","callbackWS","ws","newBase","then","_context","newPaneOptions","Object","assign","folder","undefined","workspace","opt","debug","log","pane","name","mintNew","newInstance","tail","slice","isPackage","includes","add","ns","ldp","sym","doc","refreshTarget","refresh","p","innerHTML","noun","err","pa","mintClass","utils","label","appPathSegment","toUpperCase","gotName","endsWith","encodeURIComponent","widgets","askName","foaf","mintingPanes","values","filter","mintingClassMap","reduce","classMap","forEach","push","e","event","iconEle","noIndexHTML"],"mappings":"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","sourcesContent":["/* create.js UI to craete new objects in the solid-app-set world\n **\n */\n\nimport { DataBrowserContext, NewPaneOptions, PaneDefinition } from 'pane-registry'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { ensureLoadedProfile, selectWorkspace } from '../login/login'\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { CreateContext, NewAppInstanceOptions } from './types'\n\nconst kb = solidLogicSingleton.store\n\n/* newThingUI -- return UI for user to select a new object, folder, etc\n **\n ** context must include: dom, div,\n ** optional: folder: NamedNode -- the folder where the thing is bring put\n ** (suppresses asking for a full URI or workspace)\n **\n */\nexport function newThingUI (\n createContext: CreateContext,\n dataBrowserContext: DataBrowserContext,\n thePanes: Array<PaneDefinition>\n): void {\n const dom = createContext.dom\n const div = createContext.div\n if (createContext.me && !createContext.me.uri) {\n throw new Error('newThingUI: Invalid userid: ' + createContext.me)\n }\n\n const iconStyle = 'padding: 0.7em; width: 2em; height: 2em;' // was: 'padding: 1em; width: 3em; height: 3em;'\n const star = div.appendChild(dom.createElement('img'))\n let visible = false // the inividual tools tools\n // noun_272948.svg = black star\n // noun_34653_green.svg = green plus\n star.setAttribute('src', icons.iconBase + 'noun_34653_green.svg')\n star.setAttribute('style', iconStyle)\n star.setAttribute('title', 'Add another tool')\n\n const complain = function complain (message) {\n const pre = div.appendChild(dom.createElement('pre'))\n pre.setAttribute('style', 'background-color: pink')\n pre.appendChild(dom.createTextNode(message))\n }\n\n function styleTheIcons (style) {\n for (let i = 0; i < iconArray.length; i++) {\n let st = iconStyle + style\n if (iconArray[i].disabled) {\n // @@ unused\n st += 'opacity: 0.3;'\n }\n iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;'\n }\n }\n\n function selectTool (icon) {\n styleTheIcons('display: none;') // 'background-color: #ccc;'\n icon.setAttribute('style', iconStyle + 'background-color: yellow;')\n }\n\n function selectNewTool (_event?) {\n visible = !visible\n star.setAttribute(\n 'style',\n iconStyle + (visible ? 'background-color: yellow;' : '')\n )\n styleTheIcons(visible ? '' : 'display: none;')\n }\n\n star.addEventListener('click', selectNewTool)\n\n function makeNewAppInstance (options: NewAppInstanceOptions) {\n return new Promise(function (resolve, reject) {\n let selectUI // , selectUIParent\n function callbackWS (ws, newBase) {\n ensureLoadedProfile(createContext).then(\n _context => {\n const newPaneOptions: NewPaneOptions = Object.assign({\n newBase: newBase,\n folder: options.folder || undefined,\n workspace: ws\n }, options)\n for (const opt in options) {\n // get div, dom, me, folder, pane, refreshTable\n newPaneOptions[opt] = options[opt]\n }\n debug.log(`newThingUI: Minting new ${newPaneOptions.pane.name} at ${newPaneOptions.newBase}`)\n options.pane\n .mintNew!(dataBrowserContext, newPaneOptions)\n .then(function (newPaneOptions) {\n if (!newPaneOptions || !newPaneOptions.newInstance) {\n throw new Error('Cannot mint new - missing newInstance')\n }\n if (newPaneOptions.folder) {\n const tail = newPaneOptions.newInstance.uri.slice(\n newPaneOptions.folder.uri.length\n )\n const isPackage = tail.includes('/')\n debug.log(' new thing is packge? ' + isPackage)\n if (isPackage) {\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n kb.sym(newPaneOptions.newBase),\n newPaneOptions.folder.doc()\n )\n } else {\n // single file\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n newPaneOptions.newInstance,\n newPaneOptions.folder.doc()\n ) // Ping the patch system?\n }\n // @ts-ignore @@ TODO check whether refresh can exist here. Either fix type or remove unreachable code\n if (newPaneOptions.refreshTarget && newPaneOptions.refreshTarget.refresh) {\n // @@ TODO Remove the need to cast as any\n ;(newPaneOptions.refreshTarget as any).refresh() // Refresh the containing display\n }\n // selectUI.parentNode.removeChild(selectUI) It removes itself\n } else {\n const p = options.div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 120%;')\n // Make link to new thing\n p.innerHTML =\n \"Your <a target='_blank' href='\" +\n newPaneOptions.newInstance.uri +\n \"'><b>new \" +\n options.noun +\n '</b></a> is ready to be set up. ' +\n \"<br/><br/><a target='_blank' href='\" +\n newPaneOptions.newInstance.uri +\n \"'>Go to your new \" +\n options.noun +\n '.</a>'\n // selectUI.parentNode.removeChild(selectUI) // Clean up\n // selectUIParent.removeChild(selectUI) // Clean up\n }\n selectNewTool() // toggle star to plain and menu vanish again\n })\n .catch(function (err) {\n complain(err)\n reject(err)\n })\n },\n err => {\n // login fails\n complain('Error logging on: ' + err)\n }\n )\n } // callbackWS\n\n const pa = options.pane\n // options.appPathSegment = pa.name // was 'edu.mit.solid.pane.'\n options.noun = pa.mintClass ? utils.label(pa.mintClass) : pa.name\n options.appPathSegment = options.noun.slice(0, 1).toUpperCase() + options.noun.slice(1)\n\n if (!options.folder) {\n // No folder given? Ask user for full URI\n selectUI = selectWorkspace(dom, {\n noun: options.noun,\n appPathSegment: options.appPathSegment\n }, callbackWS)\n options.div.appendChild(selectUI)\n // selectUIParent = options.div\n } else {\n const gotName = function (name) {\n if (!name) {\n // selectUIParent.removeChild(selectUI) itremves itself if cancelled\n selectNewTool() // toggle star to plain and menu vanish again\n } else {\n let uri = options.folder!.uri\n if (!uri.endsWith('/')) {\n uri = uri + '/'\n }\n uri = uri + encodeURIComponent(name) + '/'\n callbackWS(null, uri)\n }\n }\n widgets\n .askName(\n dom,\n kb,\n options.div,\n ns.foaf('name'),\n null,\n options.noun\n )\n .then(gotName)\n // selectUI = getNameForm(dom, kb, options.noun, gotName)\n // options.div.appendChild(selectUI)\n // selectUIParent = options.div\n }\n })\n } // makeNewAppInstance\n\n const iconArray: Array<any> = []\n const mintingPanes = Object.values(thePanes).filter(pane => pane.mintNew)\n const mintingClassMap = mintingPanes.reduce((classMap, pane) => {\n if (pane.mintClass) {\n classMap[pane.mintClass.uri] = (classMap[pane.mintClass.uri] || 0) + 1\n }\n return classMap\n }, {})\n mintingPanes.forEach(pane => {\n // @@ TODO Remove the need to cast to any\n const icon: any = createContext.div.appendChild(dom.createElement('img'))\n icon.setAttribute('src', pane.icon)\n const noun = pane.mintClass\n ? mintingClassMap[pane.mintClass.uri] > 1\n ? `${utils.label(pane.mintClass)} (using ${pane.name} pane)`\n : utils.label(pane.mintClass)\n : pane.name + ' @@'\n icon.setAttribute('title', 'Make new ' + noun)\n icon.setAttribute('style', iconStyle + 'display: none;')\n iconArray.push(icon)\n if (!icon.disabled) {\n icon.addEventListener('click', function (e) {\n selectTool(icon)\n makeNewAppInstance({\n event: e,\n folder: createContext.folder || null,\n iconEle: icon,\n pane,\n noun,\n noIndexHTML: true, // do NOT @@ for now write a HTML file\n div: createContext.div,\n me: createContext.me,\n dom: createContext.dom,\n refreshTarget: createContext.refreshTarget\n })\n })\n }\n })\n}\n\n// Form to get the name of a new thing before we create it\n//\n// Used in contacts for new groups, individuals.\n//\n/*\nfunction getNameForm (dom, kb, classLabel, gotNameCallback) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n form.innerHTML = '<p>Name of new ' + classLabel + ':</p>'\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '30')\n namefield.setAttribute('style', style.textInputStyle)\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.select() // focus next user input\n\n const gotName = function () {\n namefield.setAttribute('class', 'pendingedit')\n namefield.disabled = true\n continueButton.disabled = true\n cancel.disabled = true\n gotNameCallback(true, namefield.value)\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n form.appendChild(namefield)\n\n form.appendChild(dom.createElement('br'))\n\n const cancel = form.appendChild(widgets.cancelButton(dom))\n cancel.addEventListener('click', function (e) {\n form.parentNode.removeChild(form)\n gotNameCallback(false)\n }, false)\n\n const continueButton = form.appendChild(widgets.continueButton(dom))\n continueButton.addEventListener('click', function (e) {\n gotName()\n }, false)\n\n return form\n}\n*/\n"],"file":"create.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/create/create.ts"],"names":["kb","solidLogicSingleton","store","newThingUI","createContext","dataBrowserContext","thePanes","dom","div","me","uri","Error","iconStyle","star","appendChild","createElement","visible","setAttribute","icons","iconBase","complain","message","pre","createTextNode","styleTheIcons","style","i","iconArray","length","st","disabled","selectTool","icon","selectNewTool","_event","addEventListener","makeNewAppInstance","options","Promise","resolve","reject","selectUI","callbackWS","ws","newBase","then","_context","newPaneOptions","Object","assign","folder","undefined","workspace","opt","debug","log","pane","name","mintNew","newInstance","tail","slice","isPackage","includes","add","ns","ldp","sym","doc","refreshTarget","refresh","p","innerHTML","noun","err","pa","mintClass","utils","label","appPathSegment","toUpperCase","gotName","endsWith","encodeURIComponent","widgets","askName","foaf","mintingPanes","values","filter","mintingClassMap","reduce","classMap","forEach","push","e","event","iconEle","noIndexHTML"],"mappings":"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","sourcesContent":["/* create.js UI to craete new objects in the solid-app-set world\n **\n */\n\nimport { DataBrowserContext, NewPaneOptions, PaneDefinition } from 'pane-registry'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { ensureLoadedProfile, selectWorkspace } from '../login/login'\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { CreateContext, NewAppInstanceOptions } from './types'\n\nconst kb = solidLogicSingleton.store\n\n/* newThingUI -- return UI for user to select a new object, folder, etc\n **\n ** context must include: dom, div,\n ** optional: folder: NamedNode -- the folder where the thing is bring put\n ** (suppresses asking for a full URI or workspace)\n **\n */\nexport function newThingUI (\n createContext: CreateContext,\n dataBrowserContext: DataBrowserContext,\n thePanes: Array<PaneDefinition>\n): void {\n const dom = createContext.dom\n const div = createContext.div\n if (createContext.me && !createContext.me.uri) {\n throw new Error('newThingUI: Invalid userid: ' + createContext.me)\n }\n\n const iconStyle = 'padding: 0.7em; width: 2em; height: 2em;' // was: 'padding: 1em; width: 3em; height: 3em;'\n const star = div.appendChild(dom.createElement('img'))\n let visible = false // the inividual tools tools\n // noun_272948.svg = black star\n // noun_34653_green.svg = green plus\n star.setAttribute('src', icons.iconBase + 'noun_34653_green.svg')\n star.setAttribute('style', iconStyle)\n star.setAttribute('title', 'Add another tool')\n\n const complain = function complain (message) {\n const pre = div.appendChild(dom.createElement('pre'))\n pre.setAttribute('style', 'background-color: pink')\n pre.appendChild(dom.createTextNode(message))\n }\n\n function styleTheIcons (style) {\n for (let i = 0; i < iconArray.length; i++) {\n let st = iconStyle + style\n if (iconArray[i].disabled) {\n // @@ unused\n st += 'opacity: 0.3;'\n }\n iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;'\n }\n }\n\n function selectTool (icon) {\n styleTheIcons('display: none;') // 'background-color: #ccc;'\n icon.setAttribute('style', iconStyle + 'background-color: yellow;')\n }\n\n function selectNewTool (_event?) {\n visible = !visible\n star.setAttribute(\n 'style',\n iconStyle + (visible ? 'background-color: yellow;' : '')\n )\n styleTheIcons(visible ? '' : 'display: none;')\n }\n\n star.addEventListener('click', selectNewTool)\n\n function makeNewAppInstance (options: NewAppInstanceOptions) {\n return new Promise(function (resolve, reject) {\n let selectUI // , selectUIParent\n function callbackWS (ws, newBase) {\n ensureLoadedProfile(createContext).then(\n _context => {\n const newPaneOptions: NewPaneOptions = Object.assign({\n newBase,\n folder: options.folder || undefined,\n workspace: ws\n }, options)\n for (const opt in options) {\n // get div, dom, me, folder, pane, refreshTable\n newPaneOptions[opt] = options[opt]\n }\n debug.log(`newThingUI: Minting new ${newPaneOptions.pane.name} at ${newPaneOptions.newBase}`)\n options.pane\n .mintNew!(dataBrowserContext, newPaneOptions)\n .then(function (newPaneOptions) {\n if (!newPaneOptions || !newPaneOptions.newInstance) {\n throw new Error('Cannot mint new - missing newInstance')\n }\n if (newPaneOptions.folder) {\n const tail = newPaneOptions.newInstance.uri.slice(\n newPaneOptions.folder.uri.length\n )\n const isPackage = tail.includes('/')\n debug.log(' new thing is packge? ' + isPackage)\n if (isPackage) {\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n kb.sym(newPaneOptions.newBase),\n newPaneOptions.folder.doc()\n )\n } else {\n // single file\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n newPaneOptions.newInstance,\n newPaneOptions.folder.doc()\n ) // Ping the patch system?\n }\n // @ts-ignore @@ TODO check whether refresh can exist here. Either fix type or remove unreachable code\n if (newPaneOptions.refreshTarget && newPaneOptions.refreshTarget.refresh) {\n // @@ TODO Remove the need to cast as any\n ;(newPaneOptions.refreshTarget as any).refresh() // Refresh the containing display\n }\n // selectUI.parentNode.removeChild(selectUI) It removes itself\n } else {\n const p = options.div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 120%;')\n // Make link to new thing\n p.innerHTML =\n \"Your <a target='_blank' href='\" +\n newPaneOptions.newInstance.uri +\n \"'><b>new \" +\n options.noun +\n '</b></a> is ready to be set up. ' +\n \"<br/><br/><a target='_blank' href='\" +\n newPaneOptions.newInstance.uri +\n \"'>Go to your new \" +\n options.noun +\n '.</a>'\n // selectUI.parentNode.removeChild(selectUI) // Clean up\n // selectUIParent.removeChild(selectUI) // Clean up\n }\n selectNewTool() // toggle star to plain and menu vanish again\n })\n .catch(function (err) {\n complain(err)\n reject(err)\n })\n },\n err => {\n // login fails\n complain('Error logging on: ' + err)\n }\n )\n } // callbackWS\n\n const pa = options.pane\n // options.appPathSegment = pa.name // was 'edu.mit.solid.pane.'\n options.noun = pa.mintClass ? utils.label(pa.mintClass) : pa.name\n options.appPathSegment = options.noun.slice(0, 1).toUpperCase() + options.noun.slice(1)\n\n if (!options.folder) {\n // No folder given? Ask user for full URI\n selectUI = selectWorkspace(dom, {\n noun: options.noun,\n appPathSegment: options.appPathSegment\n }, callbackWS)\n options.div.appendChild(selectUI)\n // selectUIParent = options.div\n } else {\n const gotName = function (name) {\n if (!name) {\n // selectUIParent.removeChild(selectUI) itremves itself if cancelled\n selectNewTool() // toggle star to plain and menu vanish again\n } else {\n let uri = options.folder!.uri\n if (!uri.endsWith('/')) {\n uri = uri + '/'\n }\n uri = uri + encodeURIComponent(name) + '/'\n callbackWS(null, uri)\n }\n }\n widgets\n .askName(\n dom,\n kb,\n options.div,\n ns.foaf('name'),\n null,\n options.noun\n )\n .then(gotName)\n // selectUI = getNameForm(dom, kb, options.noun, gotName)\n // options.div.appendChild(selectUI)\n // selectUIParent = options.div\n }\n })\n } // makeNewAppInstance\n\n const iconArray: Array<any> = []\n const mintingPanes = Object.values(thePanes).filter(pane => pane.mintNew)\n const mintingClassMap = mintingPanes.reduce((classMap, pane) => {\n if (pane.mintClass) {\n classMap[pane.mintClass.uri] = (classMap[pane.mintClass.uri] || 0) + 1\n }\n return classMap\n }, {})\n mintingPanes.forEach(pane => {\n // @@ TODO Remove the need to cast to any\n const icon: any = createContext.div.appendChild(dom.createElement('img'))\n icon.setAttribute('src', pane.icon)\n const noun = pane.mintClass\n ? mintingClassMap[pane.mintClass.uri] > 1\n ? `${utils.label(pane.mintClass)} (using ${pane.name} pane)`\n : utils.label(pane.mintClass)\n : pane.name + ' @@'\n icon.setAttribute('title', 'Make new ' + noun)\n icon.setAttribute('style', iconStyle + 'display: none;')\n iconArray.push(icon)\n if (!icon.disabled) {\n icon.addEventListener('click', function (e) {\n selectTool(icon)\n makeNewAppInstance({\n event: e,\n folder: createContext.folder || null,\n iconEle: icon,\n pane,\n noun,\n noIndexHTML: true, // do NOT @@ for now write a HTML file\n div: createContext.div,\n me: createContext.me,\n dom: createContext.dom,\n refreshTarget: createContext.refreshTarget\n })\n })\n }\n })\n}\n\n// Form to get the name of a new thing before we create it\n//\n// Used in contacts for new groups, individuals.\n//\n/*\nfunction getNameForm (dom, kb, classLabel, gotNameCallback) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n form.innerHTML = '<p>Name of new ' + classLabel + ':</p>'\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '30')\n namefield.setAttribute('style', style.textInputStyle)\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.select() // focus next user input\n\n const gotName = function () {\n namefield.setAttribute('class', 'pendingedit')\n namefield.disabled = true\n continueButton.disabled = true\n cancel.disabled = true\n gotNameCallback(true, namefield.value)\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n form.appendChild(namefield)\n\n form.appendChild(dom.createElement('br'))\n\n const cancel = form.appendChild(widgets.cancelButton(dom))\n cancel.addEventListener('click', function (e) {\n form.parentNode.removeChild(form)\n gotNameCallback(false)\n }, false)\n\n const continueButton = form.appendChild(widgets.continueButton(dom))\n continueButton.addEventListener('click', function (e) {\n gotName()\n }, false)\n\n return form\n}\n*/\n"],"file":"create.js"}
|
package/lib/footer/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LiveStore, NamedNode } from 'rdflib';
|
|
2
2
|
export declare type FooterOptions = {
|
|
3
3
|
solidProjectUrl?: string;
|
|
4
4
|
solidProjectName?: string;
|
|
@@ -8,13 +8,13 @@ export declare type FooterOptions = {
|
|
|
8
8
|
* @param store the data store
|
|
9
9
|
* @returns the footer
|
|
10
10
|
*/
|
|
11
|
-
export declare function initFooter(store:
|
|
11
|
+
export declare function initFooter(store: LiveStore, options?: FooterOptions): Promise<void>;
|
|
12
12
|
/**
|
|
13
13
|
* @ignore exporting this only for the unit test
|
|
14
14
|
*/
|
|
15
|
-
export declare function rebuildFooter(footer: HTMLElement, store:
|
|
15
|
+
export declare function rebuildFooter(footer: HTMLElement, store: LiveStore, pod: NamedNode | null, podOwner: NamedNode | null, options?: FooterOptions): () => Promise<void>;
|
|
16
16
|
/**
|
|
17
17
|
* @ignore exporting this only for the unit test
|
|
18
18
|
*/
|
|
19
|
-
export declare function createControllerInfoBlock(store:
|
|
19
|
+
export declare function createControllerInfoBlock(store: LiveStore, user: NamedNode | null, pod: NamedNode | null, podOwner: NamedNode | null, options?: FooterOptions): HTMLElement;
|
|
20
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/footer/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/footer/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAU7C,oBAAY,aAAa,GAAG;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAEH;;;;GAIG;AACH,wBAAsB,UAAU,CAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,aAAa,iBAU1E;AACD;;GAEG;AACH,wBAAgB,aAAa,CAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,uBAM/I;AACD;;GAEG;AACH,wBAAgB,yBAAyB,CAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,WAAW,CAyC5K"}
|
package/lib/footer/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/footer/index.ts"],"names":["DEFAULT_SOLID_PROJECT_URL","DEFAULT_SOLID_PROJECT_NAME","initFooter","store","options","footer","document","getElementById","pod","podOwner","rebuildFooter","authSession","onLogin","onLogout","user","authn","currentUser","innerHTML","createControllerInfoBlock","appendChild","profileLinkContainer","createElement","equals","podLinkPre","innerText","podLink","href","uri","profileLinkPre","profileLink","solidProjectLinkPre","solidProjectLink","solidProjectUrl","solidProjectName","solidProjectLinkPost"],"mappings":";;;;;;;;;;;;;;;AAKA;;AACA;;AANA;AACA;AACA;AACA;AAKA,IAAMA,yBAAyB,GAAG,0BAAlC;AACA,IAAMC,0BAA0B,GAAG,kBAAnC;AAEA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;SACsBC,U;;;AAWtB;AACA;AACA;;;;8FAbO,kBAA2BC,KAA3B,
|
|
1
|
+
{"version":3,"sources":["../../src/footer/index.ts"],"names":["DEFAULT_SOLID_PROJECT_URL","DEFAULT_SOLID_PROJECT_NAME","initFooter","store","options","footer","document","getElementById","pod","podOwner","rebuildFooter","authSession","onLogin","onLogout","user","authn","currentUser","innerHTML","createControllerInfoBlock","appendChild","profileLinkContainer","createElement","equals","podLinkPre","innerText","podLink","href","uri","profileLinkPre","profileLink","solidProjectLinkPre","solidProjectLink","solidProjectUrl","solidProjectName","solidProjectLinkPost"],"mappings":"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","sourcesContent":["/*\n This file was copied from mashlib/src/global/footer.ts file. It is modified to\n work in solid-ui by adjusting where imported functions are found.\n */\nimport { LiveStore, NamedNode } from 'rdflib'\nimport { authn, authSession } from 'solid-logic'\nimport { addStyleClassToElement, getName, getPod, getPodOwner } from '../utils/headerFooterHelpers'\n\nconst DEFAULT_SOLID_PROJECT_URL = 'https://solidproject.org'\nconst DEFAULT_SOLID_PROJECT_NAME = 'solidproject.org'\n\n/*\n FooterOptions allow for customizing the link and name of the link part of the footer.\n */\nexport type FooterOptions = {\n solidProjectUrl?: string,\n solidProjectName?: string\n }\n\n/**\n * Initialize footer component, the footer object returned depends on whether the user is authenticated.\n * @param store the data store\n * @returns the footer\n */\nexport async function initFooter (store: LiveStore, options?: FooterOptions) {\n const footer = document.getElementById('PageFooter')\n if (!footer) {\n return\n }\n const pod = getPod()\n const podOwner = await getPodOwner(pod, store)\n rebuildFooter(footer, store, pod, podOwner, options)()\n authSession.onLogin(rebuildFooter(footer, store, pod, podOwner, options))\n authSession.onLogout(rebuildFooter(footer, store, pod, podOwner, options))\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function rebuildFooter (footer: HTMLElement, store: LiveStore, pod: NamedNode | null, podOwner: NamedNode | null, options?: FooterOptions) {\n return async () => {\n const user = authn.currentUser()\n footer.innerHTML = ''\n footer.appendChild(await createControllerInfoBlock(store, user, pod, podOwner, options))\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createControllerInfoBlock (store: LiveStore, user: NamedNode | null, pod: NamedNode | null, podOwner: NamedNode | null, options?: FooterOptions): HTMLElement {\n const profileLinkContainer = document.createElement('div')\n if (!pod || !podOwner || (user && user.equals(podOwner))) {\n return profileLinkContainer\n }\n\n addStyleClassToElement(profileLinkContainer, ['footer-pod-info', 'footer'], 'footer')\n\n const podLinkPre = document.createElement('span')\n podLinkPre.innerText = \"You're visiting \"\n\n const podLink = document.createElement('a')\n podLink.href = pod.uri\n podLink.innerText = 'the Pod'\n\n const profileLinkPre = document.createElement('span')\n profileLinkPre.innerText = ' controlled by '\n\n const profileLink = document.createElement('a')\n profileLink.href = podOwner.uri\n profileLink.innerText = getName(store, podOwner)\n\n const solidProjectLinkPre = document.createElement('span')\n solidProjectLinkPre.innerText = '. For more info, check out '\n\n const solidProjectLink = document.createElement('a')\n solidProjectLink.href = options && options.solidProjectUrl ? options.solidProjectUrl : DEFAULT_SOLID_PROJECT_URL\n solidProjectLink.innerText = options && options.solidProjectName ? options.solidProjectName : DEFAULT_SOLID_PROJECT_NAME\n\n const solidProjectLinkPost = document.createElement('span')\n solidProjectLinkPost.innerText = '.'\n\n profileLinkContainer.appendChild(podLinkPre)\n profileLinkContainer.appendChild(podLink)\n profileLinkContainer.appendChild(profileLinkPre)\n profileLinkContainer.appendChild(profileLink)\n profileLinkContainer.appendChild(solidProjectLinkPre)\n profileLinkContainer.appendChild(solidProjectLink)\n profileLinkContainer.appendChild(solidProjectLinkPost)\n\n return profileLinkContainer\n}\n"],"file":"index.js"}
|
package/lib/index.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ import * as tabs from './tabs';
|
|
|
27
27
|
import * as utils from './utils';
|
|
28
28
|
import * as login from './login/login';
|
|
29
29
|
import * as widgets from './widgets/index';
|
|
30
|
-
import versionInfo from './versionInfo';
|
|
30
|
+
import { versionInfo } from './versionInfo';
|
|
31
31
|
import { initHeader } from './header';
|
|
32
32
|
import { initFooter } from './footer';
|
|
33
33
|
import * as createTypes from './create/types';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2BA;;;;GAIG;AAEH;;;GAGG;AAGH,OAAO,KAAK,GAAG,MAAM,QAAQ,CAAA;AAE7B,OAAO,KAAK,EAAE,MAAM,MAAM,CAAA;AAC1B,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,uCAAuC,CAAA;AACjE,OAAO,KAAK,GAAG,MAAM,OAAO,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,KAAK,GAAG,MAAM,OAAO,CAAA;AAE5B,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAA;AAEhD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,OAAO,EAAE,mBAAmB,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAE9B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,WAAW,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2BA;;;;GAIG;AAEH;;;GAGG;AAGH,OAAO,KAAK,GAAG,MAAM,QAAQ,CAAA;AAE7B,OAAO,KAAK,EAAE,MAAM,MAAM,CAAA;AAC1B,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,uCAAuC,CAAA;AACjE,OAAO,KAAK,GAAG,MAAM,OAAO,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,KAAK,GAAG,MAAM,OAAO,CAAA;AAE5B,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAA;AAEhD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,OAAO,EAAE,mBAAmB,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAE9B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE1C,QAAA,MAAM,GAAG,iBAAkC,CAAA;AAoC3C,OAAO,EACL,KAAK,EACL,KAAK,EACL,EAAE,EACF,GAAG,EACH,GAAG,EACH,UAAU,EACV,MAAM,EACN,WAAW,EACX,GAAG,EACH,KAAK,EACL,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,EACN,KAAK,EACL,WAAW,EACX,mBAAmB,EACnB,GAAG,EACH,aAAa,EACb,WAAW,EACX,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,OAAO,EACP,WAAW,EACX,UAAU,EACV,UAAU,EACX,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -37,8 +37,6 @@ https://github.com/solid/solid
|
|
|
37
37
|
*/
|
|
38
38
|
// REMOVE @ts-ignore as you migrate files to TypeScript
|
|
39
39
|
|
|
40
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
41
|
-
|
|
42
40
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
43
41
|
|
|
44
42
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -130,7 +128,7 @@ exports.utils = exports.tabs = void 0;
|
|
|
130
128
|
Object.defineProperty(exports, "versionInfo", {
|
|
131
129
|
enumerable: true,
|
|
132
130
|
get: function get() {
|
|
133
|
-
return _versionInfo
|
|
131
|
+
return _versionInfo.versionInfo;
|
|
134
132
|
}
|
|
135
133
|
});
|
|
136
134
|
exports.widgets = void 0;
|
|
@@ -199,7 +197,7 @@ var widgets = _interopRequireWildcard(require("./widgets/index"));
|
|
|
199
197
|
|
|
200
198
|
exports.widgets = widgets;
|
|
201
199
|
|
|
202
|
-
var _versionInfo =
|
|
200
|
+
var _versionInfo = require("./versionInfo");
|
|
203
201
|
|
|
204
202
|
var _header = require("./header");
|
|
205
203
|
|
|
@@ -258,7 +256,7 @@ if (typeof window !== 'undefined') {
|
|
|
258
256
|
tabs: tabs,
|
|
259
257
|
utils: utils,
|
|
260
258
|
widgets: widgets,
|
|
261
|
-
versionInfo: _versionInfo
|
|
259
|
+
versionInfo: _versionInfo.versionInfo,
|
|
262
260
|
initHeader: _header.initHeader,
|
|
263
261
|
initFooter: _footer.initFooter
|
|
264
262
|
}; // Simpler access by non-node scripts
|