solid-ui 2.4.23 → 2.4.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +2159 -5039
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.js +4 -67
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.js +59 -137
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.js +14 -54
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.js +32 -107
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.js +0 -92
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.js +1 -3
- package/lib/acl/index.js.map +1 -1
- package/lib/acl/styles.js +1 -2
- package/lib/acl/styles.js.map +1 -1
- package/lib/chat/bookmarks.js +8 -80
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +109 -180
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +6 -91
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +33 -185
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +37 -150
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +23 -96
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +33 -91
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.js +19 -51
- package/lib/create/create.js.map +1 -1
- package/lib/create/index.js +0 -2
- package/lib/create/index.js.map +1 -1
- package/lib/debug.js +0 -8
- package/lib/debug.js.map +1 -1
- package/lib/folders.js +4 -27
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +2 -24
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.js.map +1 -1
- package/lib/header/empty-profile.js.map +1 -1
- package/lib/header/index.js +3 -72
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.js +4 -3
- package/lib/header/styleMap.js.map +1 -1
- package/lib/iconBase.js +3 -4
- package/lib/iconBase.js.map +1 -1
- package/lib/index.js +5 -46
- package/lib/index.js.map +1 -1
- package/lib/jss/index.js +3 -9
- package/lib/jss/index.js.map +1 -1
- package/lib/log.js +15 -51
- package/lib/log.js.map +1 -1
- package/lib/login/login.js +74 -303
- package/lib/login/login.js.map +1 -1
- package/lib/matrix/index.js +0 -2
- package/lib/matrix/index.js.map +1 -1
- package/lib/matrix/matrix.js +7 -55
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/media/index.js +0 -2
- package/lib/media/index.js.map +1 -1
- package/lib/media/media-capture.js +13 -33
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js +23 -64
- package/lib/messageArea.js.map +1 -1
- package/lib/noun_Camera_1618446_000000.js.map +1 -1
- package/lib/ns.js +5 -7
- package/lib/ns.js.map +1 -1
- package/lib/pad.js +48 -234
- package/lib/pad.js.map +1 -1
- package/lib/participation.js +10 -65
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +21 -42
- package/lib/preferences.js.map +1 -1
- package/lib/signup/config-default.js +1 -8
- package/lib/signup/config-default.js.map +1 -1
- package/lib/signup/signup.js +6 -13
- package/lib/signup/signup.js.map +1 -1
- package/lib/stories/decorators.js +0 -2
- package/lib/stories/decorators.js.map +1 -1
- package/lib/style.js +8 -5
- package/lib/style.js.map +1 -1
- package/lib/style_multiSelect.js +1 -5
- package/lib/style_multiSelect.js.map +1 -1
- package/lib/table.js +309 -322
- package/lib/table.js.map +1 -1
- package/lib/tabs.js +20 -100
- package/lib/tabs.js.map +1 -1
- package/lib/utils/headerFooterHelpers.js +4 -52
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/index.js +41 -135
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +13 -34
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +4 -4
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.js +0 -8
- package/lib/widgets/buttons/iconLinks.js.map +1 -1
- package/lib/widgets/buttons.js +115 -291
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +12 -41
- package/lib/widgets/dragAndDrop.js.map +1 -1
- package/lib/widgets/error.js +3 -9
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +6 -55
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +12 -131
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.js +12 -55
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.js +1 -15
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +3 -16
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.js +0 -12
- package/lib/widgets/forms/fieldParams.js.map +1 -1
- package/lib/widgets/forms/formStyle.js +1 -14
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +70 -474
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js +0 -21
- package/lib/widgets/index.js.map +1 -1
- package/lib/widgets/multiSelect.js +48 -171
- package/lib/widgets/multiSelect.js.map +1 -1
- package/lib/widgets/peoplePicker.js +20 -90
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/lib/widgets/widgetHelpers.js +2 -9
- package/lib/widgets/widgetHelpers.js.map +1 -1
- package/package.json +28 -28
package/lib/chat/message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"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","mostRecentVersion","content","sioc","originalMessage","originalVersion","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","sentimentStripLinked","children","length","td3","toolsButton","button","icons","iconBase","_event","toolTR","parentNode","removeChild","toolsTR","tools","messageToolbar","nextSibling","parentElement","insertBefore","toolsTD","switchToEditor","messageTable","editRow","renderMessageEditor","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","sendMessage","field","fromMainField","sendComplete","_text2","insertMessageIntoTable","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","ensureLoggedIn","then","Object","assign","findBookmarkDocument","_context"],"sources":["../../src/chat/message.js"],"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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"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","mostRecentVersion","content","sioc","originalMessage","originalVersion","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","sentimentStripLinked","children","length","td3","toolsButton","button","icons","iconBase","_event","toolTR","parentNode","removeChild","toolsTR","tools","messageToolbar","nextSibling","parentElement","insertBefore","toolsTD","switchToEditor","messageTable","editRow","renderMessageEditor","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","sendMessage","field","fromMainField","sendComplete","_text2","insertMessageIntoTable","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","ensureLoggedIn","then","Object","assign","findBookmarkDocument","_context"],"sources":["../../src/chat/message.js"],"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"],"mappings":"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"}
|
package/lib/chat/messageTools.js
CHANGED
|
@@ -1,46 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.messageToolbar = messageToolbar;
|
|
11
9
|
exports.sentimentStrip = sentimentStrip;
|
|
12
10
|
exports.sentimentStripLinked = sentimentStripLinked;
|
|
13
|
-
|
|
14
11
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
-
|
|
16
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
-
|
|
18
13
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
19
|
-
|
|
20
14
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
21
|
-
|
|
22
15
|
var _iconBase = require("../iconBase");
|
|
23
|
-
|
|
24
16
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
25
|
-
|
|
26
17
|
var rdf = _interopRequireWildcard(require("rdflib"));
|
|
27
|
-
|
|
28
18
|
var utils = _interopRequireWildcard(require("../utils"));
|
|
29
|
-
|
|
30
19
|
var widgets = _interopRequireWildcard(require("../widgets"));
|
|
31
|
-
|
|
32
20
|
var _bookmarks = require("./bookmarks");
|
|
33
|
-
|
|
34
21
|
var _solidLogic = require("solid-logic");
|
|
35
|
-
|
|
36
22
|
var _chatLogic = require("./chatLogic");
|
|
37
|
-
|
|
38
23
|
var _message = require("./message");
|
|
39
|
-
|
|
40
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
-
|
|
42
25
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
-
|
|
44
26
|
/**
|
|
45
27
|
* Tools for doing things with a message
|
|
46
28
|
* Let us be creative here. Allow all sorts of things to
|
|
@@ -50,35 +32,37 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
50
32
|
* If you made it originally: edit, delete, attach
|
|
51
33
|
* @packageDocumentation
|
|
52
34
|
*/
|
|
35
|
+
|
|
53
36
|
// import { media } from '../media/index'
|
|
37
|
+
|
|
54
38
|
// import * as pad from '../pad'
|
|
55
39
|
// pull in first avoid cross-refs
|
|
56
40
|
// import * as style from '../style'
|
|
57
|
-
|
|
41
|
+
|
|
42
|
+
var dom = window.document;
|
|
43
|
+
|
|
44
|
+
// THE UNUSED ICONS are here as reminders for possible future functionality
|
|
58
45
|
// const BOOKMARK_ICON = 'noun_45961.svg'
|
|
59
46
|
// const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites
|
|
60
47
|
// const MENU_ICON = 'noun_897914.svg'
|
|
61
48
|
// const PAPERCLIP_ICON = 'noun_25830.svg' -> add attachments to this message
|
|
62
49
|
// const PIN_ICON = 'noun_562340.svg' -> pin this message permanently in the chat UI
|
|
63
|
-
|
|
64
50
|
var PENCIL_ICON = 'noun_253504.svg'; // edit a message
|
|
65
51
|
// const SPANNER_ICON = 'noun_344563.svg' -> settings
|
|
66
|
-
|
|
67
52
|
var THUMBS_UP_ICON = 'noun_1384132.svg';
|
|
68
53
|
var THUMBS_DOWN_ICON = 'noun_1384135.svg';
|
|
69
54
|
/**
|
|
70
55
|
* Emoji in Unicode
|
|
71
56
|
*/
|
|
72
|
-
|
|
73
57
|
var emoji = {};
|
|
74
58
|
emoji[ns.schema('AgreeAction')] = '👍';
|
|
75
59
|
emoji[ns.schema('DisagreeAction')] = '👎';
|
|
76
60
|
emoji[ns.schema('EndorseAction')] = '⭐️';
|
|
77
61
|
emoji[ns.schema('LikeAction')] = '❤️';
|
|
62
|
+
|
|
78
63
|
/**
|
|
79
64
|
* Create strip of sentiments expressed
|
|
80
65
|
*/
|
|
81
|
-
|
|
82
66
|
function sentimentStrip(target, doc) {
|
|
83
67
|
// alain seems not used
|
|
84
68
|
var latest = (0, _chatLogic.mostRecentVersion)(target);
|
|
@@ -98,11 +82,8 @@ function sentimentStrip(target, doc) {
|
|
|
98
82
|
* @param target {NamedNode} - The thing about which they are expressed
|
|
99
83
|
* @param doc {NamedNode} - The document in which they are expressed
|
|
100
84
|
*/
|
|
101
|
-
|
|
102
|
-
|
|
103
85
|
function sentimentStripLinked(target, doc) {
|
|
104
86
|
var strip = dom.createElement('span');
|
|
105
|
-
|
|
106
87
|
function refresh() {
|
|
107
88
|
strip.innerHTML = '';
|
|
108
89
|
var actions = (0, _chatLogic.mostRecentVersion)(target).uri !== ns.schema('dateDeleted').uri ? _solidLogic.store.each(null, ns.schema('target'), target, doc) : [];
|
|
@@ -112,23 +93,19 @@ function sentimentStripLinked(target, doc) {
|
|
|
112
93
|
sentiments.sort();
|
|
113
94
|
sentiments.forEach(function (ss) {
|
|
114
95
|
var _ss = (0, _slicedToArray2["default"])(ss, 2),
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
96
|
+
theClass = _ss[0],
|
|
97
|
+
agent = _ss[1];
|
|
118
98
|
var res;
|
|
119
|
-
|
|
120
99
|
if (agent) {
|
|
121
100
|
res = dom.createElement('a');
|
|
122
101
|
res.setAttribute('href', agent.uri);
|
|
123
102
|
} else {
|
|
124
103
|
res = dom.createTextNode('');
|
|
125
104
|
}
|
|
126
|
-
|
|
127
105
|
res.textContent = emoji[theClass] || '*';
|
|
128
106
|
strip.appendChild(res);
|
|
129
107
|
});
|
|
130
108
|
}
|
|
131
|
-
|
|
132
109
|
refresh();
|
|
133
110
|
strip.refresh = refresh;
|
|
134
111
|
return strip;
|
|
@@ -136,13 +113,10 @@ function sentimentStripLinked(target, doc) {
|
|
|
136
113
|
/**
|
|
137
114
|
* Creates a message toolbar component
|
|
138
115
|
*/
|
|
139
|
-
|
|
140
|
-
|
|
141
116
|
function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
142
117
|
function deleteMessage() {
|
|
143
118
|
return _deleteMessage.apply(this, arguments);
|
|
144
119
|
}
|
|
145
|
-
|
|
146
120
|
function _deleteMessage() {
|
|
147
121
|
_deleteMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
148
122
|
var author, msg, area;
|
|
@@ -151,30 +125,24 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
151
125
|
switch (_context2.prev = _context2.next) {
|
|
152
126
|
case 0:
|
|
153
127
|
author = _solidLogic.store.any(message, ns.foaf('maker'));
|
|
154
|
-
|
|
155
128
|
if (me) {
|
|
156
129
|
_context2.next = 5;
|
|
157
130
|
break;
|
|
158
131
|
}
|
|
159
|
-
|
|
160
132
|
alert('You can\'t delete the message, you are not logged in.');
|
|
161
133
|
_context2.next = 22;
|
|
162
134
|
break;
|
|
163
|
-
|
|
164
135
|
case 5:
|
|
165
136
|
if (!me.sameTerm(author)) {
|
|
166
137
|
_context2.next = 21;
|
|
167
138
|
break;
|
|
168
139
|
}
|
|
169
|
-
|
|
170
140
|
_context2.prev = 6;
|
|
171
141
|
_context2.next = 9;
|
|
172
142
|
return channelObject.deleteMessage(message);
|
|
173
|
-
|
|
174
143
|
case 9:
|
|
175
144
|
_context2.next = 18;
|
|
176
145
|
break;
|
|
177
|
-
|
|
178
146
|
case 11:
|
|
179
147
|
_context2.prev = 11;
|
|
180
148
|
_context2.t0 = _context2["catch"](6);
|
|
@@ -183,18 +151,14 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
183
151
|
alert(msg);
|
|
184
152
|
area = userContext.statusArea || messageRow.parentNode;
|
|
185
153
|
area.appendChild(widgets.errorMessageBlock(dom, msg));
|
|
186
|
-
|
|
187
154
|
case 18:
|
|
188
155
|
messageRow.parentNode.removeChild(messageRow);
|
|
189
156
|
_context2.next = 22;
|
|
190
157
|
break;
|
|
191
|
-
|
|
192
158
|
case 21:
|
|
193
159
|
alert('You can\'t delete the message, you are not logged in as the author, ' + author);
|
|
194
|
-
|
|
195
160
|
case 22:
|
|
196
161
|
closeToolbar();
|
|
197
|
-
|
|
198
162
|
case 23:
|
|
199
163
|
case "end":
|
|
200
164
|
return _context2.stop();
|
|
@@ -204,12 +168,9 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
204
168
|
}));
|
|
205
169
|
return _deleteMessage.apply(this, arguments);
|
|
206
170
|
}
|
|
207
|
-
|
|
208
171
|
function editMessage(_x) {
|
|
209
172
|
return _editMessage.apply(this, arguments);
|
|
210
173
|
} // alain TODO allow chat owner to fully delete message + sentiments and replacing messages
|
|
211
|
-
|
|
212
|
-
|
|
213
174
|
function _editMessage() {
|
|
214
175
|
_editMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(messageRow) {
|
|
215
176
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
@@ -218,10 +179,8 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
218
179
|
case 0:
|
|
219
180
|
if (me.value === _solidLogic.store.any(message, ns.foaf('maker')).value) {
|
|
220
181
|
closeToolbar(); // edit is a one-off action
|
|
221
|
-
|
|
222
182
|
(0, _message.switchToEditor)(messageRow, message, channelObject, userContext);
|
|
223
183
|
}
|
|
224
|
-
|
|
225
184
|
case 1:
|
|
226
185
|
case "end":
|
|
227
186
|
return _context3.stop();
|
|
@@ -231,20 +190,15 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
231
190
|
}));
|
|
232
191
|
return _editMessage.apply(this, arguments);
|
|
233
192
|
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
193
|
+
var div = dom.createElement('div');
|
|
194
|
+
// is message deleted ?
|
|
237
195
|
if ((0, _chatLogic.mostRecentVersion)(message).value === ns.schema('dateDeleted').value) return div;
|
|
238
|
-
|
|
239
196
|
function closeToolbar() {
|
|
240
197
|
div.parentElement.parentElement.removeChild(div.parentElement); // remive the TR
|
|
241
198
|
}
|
|
242
|
-
|
|
243
199
|
function deleteThingThen(_x2) {
|
|
244
200
|
return _deleteThingThen.apply(this, arguments);
|
|
245
201
|
} // Things only the original author can do
|
|
246
|
-
|
|
247
|
-
|
|
248
202
|
function _deleteThingThen() {
|
|
249
203
|
_deleteThingThen = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(x) {
|
|
250
204
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
@@ -253,7 +207,6 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
253
207
|
case 0:
|
|
254
208
|
_context4.next = 2;
|
|
255
209
|
return _solidLogic.store.updater.update(_solidLogic.store.connectedStatements(x), []);
|
|
256
|
-
|
|
257
210
|
case 2:
|
|
258
211
|
case "end":
|
|
259
212
|
return _context4.stop();
|
|
@@ -263,20 +216,16 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
263
216
|
}));
|
|
264
217
|
return _deleteThingThen.apply(this, arguments);
|
|
265
218
|
}
|
|
266
|
-
|
|
267
219
|
var me = _solidLogic.authn.currentUser(); // If already logged on
|
|
268
|
-
|
|
269
|
-
|
|
270
220
|
if (me && _solidLogic.store.holds(message, ns.foaf('maker'), me)) {
|
|
271
221
|
// button to delete the message
|
|
272
|
-
div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage));
|
|
273
|
-
|
|
222
|
+
div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage));
|
|
223
|
+
// button to edit the message
|
|
274
224
|
div.appendChild(widgets.button(dom, _iconBase.icons.iconBase + PENCIL_ICON, 'edit', function () {
|
|
275
225
|
return editMessage(messageRow);
|
|
276
226
|
}));
|
|
277
227
|
} // if mine
|
|
278
228
|
// Things anyone can do if they have a bookmark list async
|
|
279
|
-
|
|
280
229
|
/*
|
|
281
230
|
var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)
|
|
282
231
|
if (bookmarkButton) {
|
|
@@ -285,10 +234,10 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
285
234
|
*/
|
|
286
235
|
// Things anyone can do if they have a bookmark list
|
|
287
236
|
|
|
288
|
-
|
|
289
237
|
(0, _bookmarks.renderBookmarksButton)(userContext).then(function (bookmarkButton) {
|
|
290
238
|
if (bookmarkButton) div.appendChild(bookmarkButton);
|
|
291
239
|
});
|
|
240
|
+
|
|
292
241
|
/** Button to allow user to express a sentiment (like, endorse, etc) about a target
|
|
293
242
|
*
|
|
294
243
|
* @param context {Object} - Provide dom and me
|
|
@@ -298,12 +247,10 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
298
247
|
* @param doc - {NamedNode} - the Solid document iunto which the data should be written
|
|
299
248
|
* @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive
|
|
300
249
|
*/
|
|
301
|
-
|
|
302
250
|
function sentimentButton(context, target, icon, actionClass, doc, mutuallyExclusive) {
|
|
303
251
|
function setColor() {
|
|
304
252
|
button.style.backgroundColor = action ? 'yellow' : 'white';
|
|
305
253
|
}
|
|
306
|
-
|
|
307
254
|
var button = widgets.button(dom, icon, utils.label(actionClass), /*#__PURE__*/function () {
|
|
308
255
|
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_event) {
|
|
309
256
|
var insertMe, dirty, i, a;
|
|
@@ -315,66 +262,52 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
315
262
|
_context.next = 7;
|
|
316
263
|
break;
|
|
317
264
|
}
|
|
318
|
-
|
|
319
265
|
_context.next = 3;
|
|
320
266
|
return deleteThingThen(action);
|
|
321
|
-
|
|
322
267
|
case 3:
|
|
323
268
|
action = null;
|
|
324
269
|
setColor();
|
|
325
270
|
_context.next = 25;
|
|
326
271
|
break;
|
|
327
|
-
|
|
328
272
|
case 7:
|
|
329
273
|
// no action
|
|
330
274
|
action = widgets.newThing(doc);
|
|
331
275
|
insertMe = [rdf.st(action, ns.schema('agent'), context.me, doc), rdf.st(action, ns.rdf('type'), actionClass, doc), rdf.st(action, ns.schema('target'), target, doc)];
|
|
332
276
|
_context.next = 11;
|
|
333
277
|
return _solidLogic.store.updater.update([], insertMe);
|
|
334
|
-
|
|
335
278
|
case 11:
|
|
336
279
|
setColor();
|
|
337
|
-
|
|
338
280
|
if (!mutuallyExclusive) {
|
|
339
281
|
_context.next = 25;
|
|
340
282
|
break;
|
|
341
283
|
}
|
|
342
|
-
|
|
343
284
|
// Delete incompative sentiments
|
|
344
285
|
dirty = false;
|
|
345
286
|
i = 0;
|
|
346
|
-
|
|
347
287
|
case 15:
|
|
348
288
|
if (!(i < mutuallyExclusive.length)) {
|
|
349
289
|
_context.next = 24;
|
|
350
290
|
break;
|
|
351
291
|
}
|
|
352
|
-
|
|
353
292
|
a = existingAction(mutuallyExclusive[i]);
|
|
354
|
-
|
|
355
293
|
if (!a) {
|
|
356
294
|
_context.next = 21;
|
|
357
295
|
break;
|
|
358
296
|
}
|
|
359
|
-
|
|
360
297
|
_context.next = 20;
|
|
361
298
|
return deleteThingThen(a);
|
|
362
|
-
|
|
363
299
|
case 20:
|
|
364
300
|
// but how refresh? refreshTree the parent?
|
|
365
301
|
dirty = true;
|
|
366
|
-
|
|
367
302
|
case 21:
|
|
368
303
|
i++;
|
|
369
304
|
_context.next = 15;
|
|
370
305
|
break;
|
|
371
|
-
|
|
372
306
|
case 24:
|
|
373
307
|
if (dirty) {
|
|
374
308
|
// widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings
|
|
375
309
|
widgets.refreshTree(messageRow); // requires them all to be immediate siblings
|
|
376
310
|
}
|
|
377
|
-
|
|
378
311
|
case 25:
|
|
379
312
|
case "end":
|
|
380
313
|
return _context.stop();
|
|
@@ -382,36 +315,30 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
382
315
|
}
|
|
383
316
|
}, _callee);
|
|
384
317
|
}));
|
|
385
|
-
|
|
386
318
|
return function (_x3) {
|
|
387
319
|
return _ref.apply(this, arguments);
|
|
388
320
|
};
|
|
389
321
|
}());
|
|
390
|
-
|
|
391
322
|
function existingAction(actionClass) {
|
|
392
323
|
var actions = _solidLogic.store.each(null, ns.schema('agent'), context.me, doc).filter(function (x) {
|
|
393
324
|
return _solidLogic.store.holds(x, ns.rdf('type'), actionClass, doc);
|
|
394
325
|
}).filter(function (x) {
|
|
395
326
|
return _solidLogic.store.holds(x, ns.schema('target'), target, doc);
|
|
396
327
|
});
|
|
397
|
-
|
|
398
328
|
return actions.length ? actions[0] : null;
|
|
399
329
|
}
|
|
400
|
-
|
|
401
330
|
function refresh() {
|
|
402
331
|
action = existingAction(actionClass);
|
|
403
332
|
setColor();
|
|
404
333
|
}
|
|
405
|
-
|
|
406
334
|
var action;
|
|
407
335
|
button.refresh = refresh; // If the file changes, refresh live
|
|
408
|
-
|
|
409
336
|
refresh();
|
|
410
337
|
return button;
|
|
411
|
-
}
|
|
412
|
-
// https://schema.org/AgreeAction
|
|
413
|
-
|
|
338
|
+
}
|
|
414
339
|
|
|
340
|
+
// THUMBS_UP_ICON
|
|
341
|
+
// https://schema.org/AgreeAction
|
|
415
342
|
me = _solidLogic.authn.currentUser(); // If already logged on
|
|
416
343
|
// debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))
|
|
417
344
|
|
|
@@ -421,13 +348,13 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
421
348
|
dom: dom,
|
|
422
349
|
div: div
|
|
423
350
|
};
|
|
424
|
-
div.appendChild(sentimentButton(context1, message,
|
|
425
|
-
|
|
426
|
-
|
|
351
|
+
div.appendChild(sentimentButton(context1, message,
|
|
352
|
+
// @@ TODO use widgets.sentimentButton
|
|
353
|
+
_iconBase.icons.iconBase + THUMBS_UP_ICON, ns.schema('AgreeAction'), message.doc(), [ns.schema('DisagreeAction')]));
|
|
354
|
+
// Thumbs down
|
|
427
355
|
div.appendChild(sentimentButton(context1, message, _iconBase.icons.iconBase + THUMBS_DOWN_ICON, ns.schema('DisagreeAction'), message.doc(), [ns.schema('AgreeAction')]));
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
|
|
356
|
+
}
|
|
357
|
+
// X button to remove the tool UI itself
|
|
431
358
|
var cancelButton = div.appendChild(widgets.cancelButton(dom));
|
|
432
359
|
cancelButton.style["float"] = 'right';
|
|
433
360
|
cancelButton.firstChild.style.opacity = '0.3';
|