solid-ui 2.4.24 → 2.4.25
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/LICENSE.md +0 -0
- package/README.md +0 -0
- package/dist/index.html +0 -0
- package/dist/main.js +50483 -50370
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.d.ts +0 -0
- package/lib/acl/access-controller.d.ts.map +0 -0
- package/lib/acl/access-controller.js +90 -98
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.d.ts +0 -0
- package/lib/acl/access-groups.d.ts.map +0 -0
- package/lib/acl/access-groups.js +82 -90
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.d.ts +0 -0
- package/lib/acl/acl-control.d.ts.map +0 -0
- package/lib/acl/acl-control.js +50 -54
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.d.ts +3 -3
- package/lib/acl/acl.d.ts.map +1 -1
- package/lib/acl/acl.js +13 -15
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.d.ts +0 -0
- package/lib/acl/add-agent-buttons.d.ts.map +0 -0
- package/lib/acl/add-agent-buttons.js +142 -154
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.d.ts +0 -0
- package/lib/acl/index.d.ts.map +0 -0
- package/lib/acl/index.js +0 -0
- package/lib/acl/index.js.map +0 -0
- package/lib/acl/styles.d.ts +0 -0
- package/lib/acl/styles.d.ts.map +0 -0
- package/lib/acl/styles.js +0 -0
- package/lib/acl/styles.js.map +0 -0
- package/lib/acl/types.d.ts +6 -6
- package/lib/acl/types.d.ts.map +1 -1
- package/lib/acl/types.js +0 -0
- package/lib/acl/types.js.map +0 -0
- package/lib/chat/bookmarks.js +181 -191
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +96 -104
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +232 -224
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +634 -658
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +119 -131
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +106 -114
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +16 -18
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.d.ts +0 -0
- package/lib/create/create.d.ts.map +0 -0
- package/lib/create/create.js +0 -0
- package/lib/create/create.js.map +0 -0
- package/lib/create/index.d.ts +0 -0
- package/lib/create/index.d.ts.map +0 -0
- package/lib/create/index.js +0 -0
- package/lib/create/index.js.map +0 -0
- package/lib/create/types.d.ts +1 -1
- package/lib/create/types.d.ts.map +1 -1
- package/lib/create/types.js +0 -0
- package/lib/create/types.js.map +0 -0
- package/lib/debug.d.ts +0 -0
- package/lib/debug.d.ts.map +0 -0
- package/lib/debug.js +0 -0
- package/lib/debug.js.map +0 -0
- package/lib/folders.js +0 -0
- package/lib/folders.js.map +0 -0
- package/lib/footer/index.d.ts +1 -1
- package/lib/footer/index.d.ts.map +1 -1
- package/lib/footer/index.js +33 -37
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.d.ts +0 -0
- package/lib/footer/styleMap.d.ts.map +0 -0
- package/lib/footer/styleMap.js +0 -0
- package/lib/footer/styleMap.js.map +0 -0
- package/lib/header/empty-profile.d.ts +0 -0
- package/lib/header/empty-profile.d.ts.map +0 -0
- package/lib/header/empty-profile.js +0 -0
- package/lib/header/empty-profile.js.map +0 -0
- package/lib/header/index.d.ts +4 -4
- package/lib/header/index.d.ts.map +1 -1
- package/lib/header/index.js +126 -134
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.d.ts +0 -0
- package/lib/header/styleMap.d.ts.map +0 -0
- package/lib/header/styleMap.js +0 -0
- package/lib/header/styleMap.js.map +0 -0
- package/lib/iconBase.d.ts +0 -0
- package/lib/iconBase.d.ts.map +0 -0
- package/lib/iconBase.js +0 -0
- package/lib/iconBase.js.map +0 -0
- package/lib/icons/solid_logo.d.ts +0 -0
- package/lib/icons/solid_logo.d.ts.map +0 -0
- package/lib/icons/solid_logo.js +0 -0
- package/lib/icons/solid_logo.js.map +0 -0
- package/lib/index.d.ts +0 -0
- package/lib/index.d.ts.map +0 -0
- package/lib/index.js +0 -0
- package/lib/index.js.map +0 -0
- package/lib/jss/index.d.ts +0 -0
- package/lib/jss/index.d.ts.map +0 -0
- package/lib/jss/index.js +0 -0
- package/lib/jss/index.js.map +0 -0
- package/lib/log.d.ts +0 -0
- package/lib/log.d.ts.map +0 -0
- package/lib/log.js +0 -0
- package/lib/log.js.map +0 -0
- package/lib/login/login.d.ts +0 -0
- package/lib/login/login.d.ts.map +0 -0
- package/lib/login/login.js +470 -470
- package/lib/login/login.js.map +1 -1
- package/lib/matrix/index.d.ts +0 -0
- package/lib/matrix/index.d.ts.map +0 -0
- package/lib/matrix/index.js +0 -0
- package/lib/matrix/index.js.map +0 -0
- package/lib/matrix/matrix.d.ts +0 -0
- package/lib/matrix/matrix.d.ts.map +0 -0
- package/lib/matrix/matrix.js +0 -0
- package/lib/matrix/matrix.js.map +0 -0
- package/lib/matrix/types.d.ts +1 -1
- package/lib/matrix/types.d.ts.map +1 -1
- package/lib/matrix/types.js +0 -0
- package/lib/matrix/types.js.map +0 -0
- package/lib/media/index.d.ts +0 -0
- package/lib/media/index.d.ts.map +0 -0
- package/lib/media/index.js +0 -0
- package/lib/media/index.js.map +0 -0
- package/lib/media/media-capture.d.ts +0 -0
- package/lib/media/media-capture.d.ts.map +0 -0
- package/lib/media/media-capture.js +8 -10
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js +0 -0
- package/lib/messageArea.js.map +0 -0
- package/lib/noun_Camera_1618446_000000.js +0 -0
- package/lib/noun_Camera_1618446_000000.js.map +0 -0
- package/lib/ns.js +0 -0
- package/lib/ns.js.map +0 -0
- package/lib/pad.d.ts +1 -1
- package/lib/pad.d.ts.map +1 -1
- package/lib/pad.js +0 -0
- package/lib/pad.js.map +0 -0
- package/lib/participation.d.ts +1 -1
- package/lib/participation.d.ts.map +1 -1
- package/lib/participation.js +1 -1
- package/lib/participation.js.map +0 -0
- package/lib/preferences.js +0 -0
- package/lib/preferences.js.map +0 -0
- package/lib/signup/config-default.js +0 -0
- package/lib/signup/config-default.js.map +0 -0
- package/lib/signup/signup.js +0 -0
- package/lib/signup/signup.js.map +0 -0
- package/lib/stories/decorators.js +0 -0
- package/lib/stories/decorators.js.map +0 -0
- package/lib/style.js +0 -0
- package/lib/style.js.map +0 -0
- package/lib/style_multiSelect.js +0 -0
- package/lib/style_multiSelect.js.map +0 -0
- package/lib/table.js +0 -0
- package/lib/table.js.map +0 -0
- package/lib/tabs.d.ts +1 -1
- package/lib/tabs.d.ts.map +1 -1
- package/lib/tabs.js +0 -0
- package/lib/tabs.js.map +0 -0
- package/lib/typings.d.js +0 -0
- package/lib/typings.d.js.map +0 -0
- package/lib/utils/headerFooterHelpers.d.ts +1 -1
- package/lib/utils/headerFooterHelpers.d.ts.map +1 -1
- package/lib/utils/headerFooterHelpers.js +78 -80
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/index.js +2 -6
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.d.ts +0 -0
- package/lib/utils/label.d.ts.map +0 -0
- package/lib/utils/label.js +0 -0
- package/lib/utils/label.js.map +0 -0
- package/lib/versionInfo.d.ts +0 -0
- package/lib/versionInfo.d.ts.map +0 -0
- package/lib/versionInfo.js +13 -13
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.d.ts +0 -0
- package/lib/widgets/buttons/iconLinks.d.ts.map +0 -0
- package/lib/widgets/buttons/iconLinks.js +0 -0
- package/lib/widgets/buttons/iconLinks.js.map +0 -0
- package/lib/widgets/buttons.d.ts +5 -5
- package/lib/widgets/buttons.d.ts.map +1 -1
- package/lib/widgets/buttons.js +0 -0
- package/lib/widgets/buttons.js.map +0 -0
- package/lib/widgets/dragAndDrop.js +0 -0
- package/lib/widgets/dragAndDrop.js.map +0 -0
- package/lib/widgets/error.d.ts +0 -0
- package/lib/widgets/error.d.ts.map +0 -0
- package/lib/widgets/error.js +0 -0
- package/lib/widgets/error.js.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +217 -229
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.js +70 -74
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts +2 -2
- package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +363 -379
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/language.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/language.js +79 -83
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts +2 -2
- package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +263 -281
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.d.ts +0 -0
- package/lib/widgets/forms/basic.d.ts.map +0 -0
- package/lib/widgets/forms/basic.js +0 -0
- package/lib/widgets/forms/basic.js.map +0 -0
- package/lib/widgets/forms/comment.d.ts +0 -0
- package/lib/widgets/forms/comment.d.ts.map +0 -0
- package/lib/widgets/forms/comment.js +0 -0
- package/lib/widgets/forms/comment.js.map +0 -0
- package/lib/widgets/forms/fieldFunction.d.ts +1 -1
- package/lib/widgets/forms/fieldFunction.d.ts.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +1 -3
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.d.ts +1 -1
- package/lib/widgets/forms/fieldParams.d.ts.map +1 -1
- package/lib/widgets/forms/fieldParams.js +0 -0
- package/lib/widgets/forms/fieldParams.js.map +0 -0
- package/lib/widgets/forms/formStyle.d.ts +0 -0
- package/lib/widgets/forms/formStyle.d.ts.map +0 -0
- package/lib/widgets/forms/formStyle.js +0 -0
- package/lib/widgets/forms/formStyle.js.map +0 -0
- package/lib/widgets/forms.js +197 -225
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js +0 -0
- package/lib/widgets/index.js.map +0 -0
- package/lib/widgets/multiSelect.js +4 -4
- package/lib/widgets/multiSelect.js.map +1 -1
- package/lib/widgets/peoplePicker.js +0 -0
- package/lib/widgets/peoplePicker.js.map +0 -0
- package/lib/widgets/widgetHelpers.d.ts +0 -0
- package/lib/widgets/widgetHelpers.d.ts.map +0 -0
- package/lib/widgets/widgetHelpers.js +0 -0
- package/lib/widgets/widgetHelpers.js.map +0 -0
- package/package.json +34 -31
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
|
@@ -121,48 +121,46 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
121
121
|
_deleteMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
122
122
|
var author, msg, area;
|
|
123
123
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
124
|
-
while (1) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
_context2.next = 5;
|
|
130
|
-
break;
|
|
131
|
-
}
|
|
132
|
-
alert('You can\'t delete the message, you are not logged in.');
|
|
133
|
-
_context2.next = 22;
|
|
124
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
125
|
+
case 0:
|
|
126
|
+
author = _solidLogic.store.any(message, ns.foaf('maker'));
|
|
127
|
+
if (me) {
|
|
128
|
+
_context2.next = 5;
|
|
134
129
|
break;
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
_context2.next =
|
|
142
|
-
return channelObject.deleteMessage(message);
|
|
143
|
-
case 9:
|
|
144
|
-
_context2.next = 18;
|
|
145
|
-
break;
|
|
146
|
-
case 11:
|
|
147
|
-
_context2.prev = 11;
|
|
148
|
-
_context2.t0 = _context2["catch"](6);
|
|
149
|
-
msg = 'Error deleting messaage ' + _context2.t0;
|
|
150
|
-
debug.warn(msg);
|
|
151
|
-
alert(msg);
|
|
152
|
-
area = userContext.statusArea || messageRow.parentNode;
|
|
153
|
-
area.appendChild(widgets.errorMessageBlock(dom, msg));
|
|
154
|
-
case 18:
|
|
155
|
-
messageRow.parentNode.removeChild(messageRow);
|
|
156
|
-
_context2.next = 22;
|
|
130
|
+
}
|
|
131
|
+
alert('You can\'t delete the message, you are not logged in.');
|
|
132
|
+
_context2.next = 22;
|
|
133
|
+
break;
|
|
134
|
+
case 5:
|
|
135
|
+
if (!me.sameTerm(author)) {
|
|
136
|
+
_context2.next = 21;
|
|
157
137
|
break;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
138
|
+
}
|
|
139
|
+
_context2.prev = 6;
|
|
140
|
+
_context2.next = 9;
|
|
141
|
+
return channelObject.deleteMessage(message);
|
|
142
|
+
case 9:
|
|
143
|
+
_context2.next = 18;
|
|
144
|
+
break;
|
|
145
|
+
case 11:
|
|
146
|
+
_context2.prev = 11;
|
|
147
|
+
_context2.t0 = _context2["catch"](6);
|
|
148
|
+
msg = 'Error deleting messaage ' + _context2.t0;
|
|
149
|
+
debug.warn(msg);
|
|
150
|
+
alert(msg);
|
|
151
|
+
area = userContext.statusArea || messageRow.parentNode;
|
|
152
|
+
area.appendChild(widgets.errorMessageBlock(dom, msg));
|
|
153
|
+
case 18:
|
|
154
|
+
messageRow.parentNode.removeChild(messageRow);
|
|
155
|
+
_context2.next = 22;
|
|
156
|
+
break;
|
|
157
|
+
case 21:
|
|
158
|
+
alert('You can\'t delete the message, you are not logged in as the author, ' + author);
|
|
159
|
+
case 22:
|
|
160
|
+
closeToolbar();
|
|
161
|
+
case 23:
|
|
162
|
+
case "end":
|
|
163
|
+
return _context2.stop();
|
|
166
164
|
}
|
|
167
165
|
}, _callee2, null, [[6, 11]]);
|
|
168
166
|
}));
|
|
@@ -174,17 +172,15 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
174
172
|
function _editMessage() {
|
|
175
173
|
_editMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(messageRow) {
|
|
176
174
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
177
|
-
while (1) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
return _context3.stop();
|
|
187
|
-
}
|
|
175
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
176
|
+
case 0:
|
|
177
|
+
if (me.value === _solidLogic.store.any(message, ns.foaf('maker')).value) {
|
|
178
|
+
closeToolbar(); // edit is a one-off action
|
|
179
|
+
(0, _message.switchToEditor)(messageRow, message, channelObject, userContext);
|
|
180
|
+
}
|
|
181
|
+
case 1:
|
|
182
|
+
case "end":
|
|
183
|
+
return _context3.stop();
|
|
188
184
|
}
|
|
189
185
|
}, _callee3);
|
|
190
186
|
}));
|
|
@@ -202,15 +198,13 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
202
198
|
function _deleteThingThen() {
|
|
203
199
|
_deleteThingThen = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(x) {
|
|
204
200
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
205
|
-
while (1) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
return _context4.stop();
|
|
213
|
-
}
|
|
201
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
202
|
+
case 0:
|
|
203
|
+
_context4.next = 2;
|
|
204
|
+
return _solidLogic.store.updater.update(_solidLogic.store.connectedStatements(x), []);
|
|
205
|
+
case 2:
|
|
206
|
+
case "end":
|
|
207
|
+
return _context4.stop();
|
|
214
208
|
}
|
|
215
209
|
}, _callee4);
|
|
216
210
|
}));
|
|
@@ -255,63 +249,61 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
|
|
|
255
249
|
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_event) {
|
|
256
250
|
var insertMe, dirty, i, a;
|
|
257
251
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
258
|
-
while (1) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
252
|
+
while (1) switch (_context.prev = _context.next) {
|
|
253
|
+
case 0:
|
|
254
|
+
if (!action) {
|
|
255
|
+
_context.next = 7;
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
_context.next = 3;
|
|
259
|
+
return deleteThingThen(action);
|
|
260
|
+
case 3:
|
|
261
|
+
action = null;
|
|
262
|
+
setColor();
|
|
263
|
+
_context.next = 25;
|
|
264
|
+
break;
|
|
265
|
+
case 7:
|
|
266
|
+
// no action
|
|
267
|
+
action = widgets.newThing(doc);
|
|
268
|
+
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)];
|
|
269
|
+
_context.next = 11;
|
|
270
|
+
return _solidLogic.store.updater.update([], insertMe);
|
|
271
|
+
case 11:
|
|
272
|
+
setColor();
|
|
273
|
+
if (!mutuallyExclusive) {
|
|
270
274
|
_context.next = 25;
|
|
271
275
|
break;
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
setColor();
|
|
280
|
-
if (!mutuallyExclusive) {
|
|
281
|
-
_context.next = 25;
|
|
282
|
-
break;
|
|
283
|
-
}
|
|
284
|
-
// Delete incompative sentiments
|
|
285
|
-
dirty = false;
|
|
286
|
-
i = 0;
|
|
287
|
-
case 15:
|
|
288
|
-
if (!(i < mutuallyExclusive.length)) {
|
|
289
|
-
_context.next = 24;
|
|
290
|
-
break;
|
|
291
|
-
}
|
|
292
|
-
a = existingAction(mutuallyExclusive[i]);
|
|
293
|
-
if (!a) {
|
|
294
|
-
_context.next = 21;
|
|
295
|
-
break;
|
|
296
|
-
}
|
|
297
|
-
_context.next = 20;
|
|
298
|
-
return deleteThingThen(a);
|
|
299
|
-
case 20:
|
|
300
|
-
// but how refresh? refreshTree the parent?
|
|
301
|
-
dirty = true;
|
|
302
|
-
case 21:
|
|
303
|
-
i++;
|
|
304
|
-
_context.next = 15;
|
|
276
|
+
}
|
|
277
|
+
// Delete incompative sentiments
|
|
278
|
+
dirty = false;
|
|
279
|
+
i = 0;
|
|
280
|
+
case 15:
|
|
281
|
+
if (!(i < mutuallyExclusive.length)) {
|
|
282
|
+
_context.next = 24;
|
|
305
283
|
break;
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
284
|
+
}
|
|
285
|
+
a = existingAction(mutuallyExclusive[i]);
|
|
286
|
+
if (!a) {
|
|
287
|
+
_context.next = 21;
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
_context.next = 20;
|
|
291
|
+
return deleteThingThen(a);
|
|
292
|
+
case 20:
|
|
293
|
+
// but how refresh? refreshTree the parent?
|
|
294
|
+
dirty = true;
|
|
295
|
+
case 21:
|
|
296
|
+
i++;
|
|
297
|
+
_context.next = 15;
|
|
298
|
+
break;
|
|
299
|
+
case 24:
|
|
300
|
+
if (dirty) {
|
|
301
|
+
// widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings
|
|
302
|
+
widgets.refreshTree(messageRow); // requires them all to be immediate siblings
|
|
303
|
+
}
|
|
304
|
+
case 25:
|
|
305
|
+
case "end":
|
|
306
|
+
return _context.stop();
|
|
315
307
|
}
|
|
316
308
|
}, _callee);
|
|
317
309
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageTools.js","names":["dom","window","document","PENCIL_ICON","THUMBS_UP_ICON","THUMBS_DOWN_ICON","emoji","ns","schema","sentimentStrip","target","doc","latest","mostRecentVersion","actions","store","holds","value","each","sentiments","map","a","any","rdf","sort","strings","x","createTextNode","join","sentimentStripLinked","strip","createElement","refresh","innerHTML","uri","forEach","ss","theClass","agent","res","setAttribute","textContent","appendChild","messageToolbar","message","messageRow","userContext","channelObject","deleteMessage","author","foaf","me","alert","sameTerm","msg","debug","warn","area","statusArea","parentNode","widgets","errorMessageBlock","removeChild","closeToolbar","editMessage","switchToEditor","div","parentElement","deleteThingThen","updater","update","connectedStatements","authn","currentUser","deleteButtonWithCheck","button","icons","iconBase","renderBookmarksButton","then","bookmarkButton","sentimentButton","context","icon","actionClass","mutuallyExclusive","setColor","style","backgroundColor","action","utils","label","_event","newThing","insertMe","st","dirty","i","length","existingAction","refreshTree","filter","context1","cancelButton","firstChild","opacity","addEventListener"],"sources":["../../src/chat/messageTools.js"],"sourcesContent":["/**\n * Tools for doing things with a message\n * Let us be creative here. Allow all sorts of things to\n * be done to a message - linking to new or old objects in an open way\n *\n * Ideas: Bookmark, Like, star, pin at top of chat, reply as new thread,\n * If you made it originally: edit, delete, attach\n * @packageDocumentation\n */\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\n// import { media } from '../media/index'\nimport * as ns from '../ns'\n// import * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n// import * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { renderBookmarksButton } from './bookmarks'\nimport { authn, store } from 'solid-logic'\n\nimport { mostRecentVersion } from './chatLogic'\nimport { switchToEditor } from './message'\n\nconst dom = window.document\n\n// THE UNUSED ICONS are here as reminders for possible future functionality\n// const BOOKMARK_ICON = 'noun_45961.svg'\n// const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites\n// const MENU_ICON = 'noun_897914.svg'\n// const PAPERCLIP_ICON = 'noun_25830.svg' -> add attachments to this message\n// const PIN_ICON = 'noun_562340.svg' -> pin this message permanently in the chat UI\nconst PENCIL_ICON = 'noun_253504.svg' // edit a message\n// const SPANNER_ICON = 'noun_344563.svg' -> settings\nconst THUMBS_UP_ICON = 'noun_1384132.svg'\nconst THUMBS_DOWN_ICON = 'noun_1384135.svg'\n/**\n * Emoji in Unicode\n */\nconst emoji = {}\nemoji[ns.schema('AgreeAction')] = '👍'\nemoji[ns.schema('DisagreeAction')] = '👎'\nemoji[ns.schema('EndorseAction')] = '⭐️'\nemoji[ns.schema('LikeAction')] = '❤️'\n\n/**\n * Create strip of sentiments expressed\n */\nexport function sentimentStrip (target, doc) { // alain seems not used\n const latest = mostRecentVersion(target)\n const actions = store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => store.any(a, ns.rdf('type'), null, doc))\n sentiments.sort()\n const strings = sentiments.map(x => emoji[x] || '')\n return dom.createTextNode(strings.join(' '))\n}\n/**\n * Create strip of sentiments expressed, with hyperlinks\n *\n * @param target {NamedNode} - The thing about which they are expressed\n * @param doc {NamedNode} - The document in which they are expressed\n */\nexport function sentimentStripLinked (target, doc) {\n const strip = dom.createElement('span')\n function refresh () {\n strip.innerHTML = ''\n const actions = (mostRecentVersion(target).uri !== ns.schema('dateDeleted').uri) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => [\n store.any(a, ns.rdf('type'), null, doc),\n store.any(a, ns.schema('agent'), null, doc)\n ])\n sentiments.sort()\n sentiments.forEach(ss => {\n const [theClass, agent] = ss\n let res\n if (agent) {\n res = dom.createElement('a')\n res.setAttribute('href', agent.uri)\n } else {\n res = dom.createTextNode('')\n }\n res.textContent = emoji[theClass] || '*'\n strip.appendChild(res)\n })\n }\n refresh()\n strip.refresh = refresh\n return strip\n}\n/**\n * Creates a message toolbar component\n */\nexport function messageToolbar (message, messageRow, userContext, channelObject) {\n async function deleteMessage () {\n const author = store.any(message, ns.foaf('maker'))\n if (!me) {\n alert('You can\\'t delete the message, you are not logged in.')\n } else if (me.sameTerm(author)) {\n try {\n await channelObject.deleteMessage(message)\n } catch (err) {\n const msg = 'Error deleting messaage ' + err\n debug.warn(msg)\n alert(msg)\n const area = userContext.statusArea || messageRow.parentNode\n area.appendChild(widgets.errorMessageBlock(dom, msg))\n }\n messageRow.parentNode.removeChild(messageRow)\n } else {\n alert('You can\\'t delete the message, you are not logged in as the author, ' + author)\n }\n closeToolbar()\n }\n\n async function editMessage (messageRow) {\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n closeToolbar() // edit is a one-off action\n switchToEditor(messageRow, message, channelObject, userContext)\n }\n }\n\n // alain TODO allow chat owner to fully delete message + sentiments and replacing messages\n\n const div = dom.createElement('div')\n // is message deleted ?\n if (mostRecentVersion(message).value === ns.schema('dateDeleted').value) return div\n function closeToolbar () {\n div.parentElement.parentElement.removeChild(div.parentElement) // remive the TR\n }\n\n async function deleteThingThen (x) {\n await store.updater.update(store.connectedStatements(x), [])\n }\n\n // Things only the original author can do\n let me = authn.currentUser() // If already logged on\n if (me && store.holds(message, ns.foaf('maker'), me)) {\n // button to delete the message\n div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage))\n // button to edit the message\n div.appendChild(widgets.button(dom, icons.iconBase + PENCIL_ICON, 'edit', () => editMessage(messageRow)))\n } // if mine\n // Things anyone can do if they have a bookmark list async\n /*\n var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)\n if (bookmarkButton) {\n div.appendChild(bookmarkButton)\n }\n */\n // Things anyone can do if they have a bookmark list\n\n renderBookmarksButton(userContext).then(bookmarkButton => {\n if (bookmarkButton) div.appendChild(bookmarkButton)\n })\n\n /** Button to allow user to express a sentiment (like, endorse, etc) about a target\n *\n * @param context {Object} - Provide dom and me\n * @param target {NamedNode} - The thing the user expresses an opnion about\n * @param icon {uristring} - The icon to be used for the button\n * @param actionClass {NamedNode} - The RDF class - typically a subclass of schema:Action\n * @param doc - {NamedNode} - the Solid document iunto which the data should be written\n * @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive\n */\n function sentimentButton (\n context,\n target,\n icon,\n actionClass,\n doc,\n mutuallyExclusive\n ) {\n function setColor () {\n button.style.backgroundColor = action ? 'yellow' : 'white'\n }\n const button = widgets.button(\n dom,\n icon,\n utils.label(actionClass),\n async function (_event) {\n if (action) {\n await deleteThingThen(action)\n action = null\n setColor()\n } else {\n // no action\n action = widgets.newThing(doc)\n const insertMe = [\n rdf.st(action, ns.schema('agent'), context.me, doc),\n rdf.st(action, ns.rdf('type'), actionClass, doc),\n rdf.st(action, ns.schema('target'), target, doc)\n ]\n await store.updater.update([], insertMe)\n setColor()\n\n if (mutuallyExclusive) {\n // Delete incompative sentiments\n let dirty = false\n for (let i = 0; i < mutuallyExclusive.length; i++) {\n const a = existingAction(mutuallyExclusive[i])\n if (a) {\n await deleteThingThen(a) // but how refresh? refreshTree the parent?\n dirty = true\n }\n }\n if (dirty) {\n // widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings\n widgets.refreshTree(messageRow) // requires them all to be immediate siblings\n }\n }\n }\n }\n )\n function existingAction (actionClass) {\n const actions = store\n .each(null, ns.schema('agent'), context.me, doc)\n .filter(x => store.holds(x, ns.rdf('type'), actionClass, doc))\n .filter(x => store.holds(x, ns.schema('target'), target, doc))\n return actions.length ? actions[0] : null\n }\n function refresh () {\n action = existingAction(actionClass)\n setColor()\n }\n let action\n button.refresh = refresh // If the file changes, refresh live\n refresh()\n return button\n }\n\n // THUMBS_UP_ICON\n // https://schema.org/AgreeAction\n me = authn.currentUser() // If already logged on\n // debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))\n\n if (me && (mostRecentVersion(message).value !== ns.schema('dateDeleted').value)) {\n const context1 = { me, dom, div }\n div.appendChild(\n sentimentButton(\n context1,\n message, // @@ TODO use widgets.sentimentButton\n icons.iconBase + THUMBS_UP_ICON,\n ns.schema('AgreeAction'),\n message.doc(),\n [ns.schema('DisagreeAction')]\n )\n )\n // Thumbs down\n div.appendChild(\n sentimentButton(\n context1,\n message,\n icons.iconBase + THUMBS_DOWN_ICON,\n ns.schema('DisagreeAction'),\n message.doc(),\n [ns.schema('AgreeAction')]\n )\n )\n }\n // X button to remove the tool UI itself\n const cancelButton = div.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'right'\n cancelButton.firstChild.style.opacity = '0.3'\n cancelButton.addEventListener('click', closeToolbar)\n return div\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messageTools.js","names":["dom","window","document","PENCIL_ICON","THUMBS_UP_ICON","THUMBS_DOWN_ICON","emoji","ns","schema","sentimentStrip","target","doc","latest","mostRecentVersion","actions","store","holds","value","each","sentiments","map","a","any","rdf","sort","strings","x","createTextNode","join","sentimentStripLinked","strip","createElement","refresh","innerHTML","uri","forEach","ss","theClass","agent","res","setAttribute","textContent","appendChild","messageToolbar","message","messageRow","userContext","channelObject","deleteMessage","author","foaf","me","alert","sameTerm","msg","debug","warn","area","statusArea","parentNode","widgets","errorMessageBlock","removeChild","closeToolbar","editMessage","switchToEditor","div","parentElement","deleteThingThen","updater","update","connectedStatements","authn","currentUser","deleteButtonWithCheck","button","icons","iconBase","renderBookmarksButton","then","bookmarkButton","sentimentButton","context","icon","actionClass","mutuallyExclusive","setColor","style","backgroundColor","action","utils","label","_event","newThing","insertMe","st","dirty","i","length","existingAction","refreshTree","filter","context1","cancelButton","firstChild","opacity","addEventListener"],"sources":["../../src/chat/messageTools.js"],"sourcesContent":["/**\n * Tools for doing things with a message\n * Let us be creative here. Allow all sorts of things to\n * be done to a message - linking to new or old objects in an open way\n *\n * Ideas: Bookmark, Like, star, pin at top of chat, reply as new thread,\n * If you made it originally: edit, delete, attach\n * @packageDocumentation\n */\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\n// import { media } from '../media/index'\nimport * as ns from '../ns'\n// import * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n// import * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { renderBookmarksButton } from './bookmarks'\nimport { authn, store } from 'solid-logic'\n\nimport { mostRecentVersion } from './chatLogic'\nimport { switchToEditor } from './message'\n\nconst dom = window.document\n\n// THE UNUSED ICONS are here as reminders for possible future functionality\n// const BOOKMARK_ICON = 'noun_45961.svg'\n// const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites\n// const MENU_ICON = 'noun_897914.svg'\n// const PAPERCLIP_ICON = 'noun_25830.svg' -> add attachments to this message\n// const PIN_ICON = 'noun_562340.svg' -> pin this message permanently in the chat UI\nconst PENCIL_ICON = 'noun_253504.svg' // edit a message\n// const SPANNER_ICON = 'noun_344563.svg' -> settings\nconst THUMBS_UP_ICON = 'noun_1384132.svg'\nconst THUMBS_DOWN_ICON = 'noun_1384135.svg'\n/**\n * Emoji in Unicode\n */\nconst emoji = {}\nemoji[ns.schema('AgreeAction')] = '👍'\nemoji[ns.schema('DisagreeAction')] = '👎'\nemoji[ns.schema('EndorseAction')] = '⭐️'\nemoji[ns.schema('LikeAction')] = '❤️'\n\n/**\n * Create strip of sentiments expressed\n */\nexport function sentimentStrip (target, doc) { // alain seems not used\n const latest = mostRecentVersion(target)\n const actions = store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => store.any(a, ns.rdf('type'), null, doc))\n sentiments.sort()\n const strings = sentiments.map(x => emoji[x] || '')\n return dom.createTextNode(strings.join(' '))\n}\n/**\n * Create strip of sentiments expressed, with hyperlinks\n *\n * @param target {NamedNode} - The thing about which they are expressed\n * @param doc {NamedNode} - The document in which they are expressed\n */\nexport function sentimentStripLinked (target, doc) {\n const strip = dom.createElement('span')\n function refresh () {\n strip.innerHTML = ''\n const actions = (mostRecentVersion(target).uri !== ns.schema('dateDeleted').uri) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => [\n store.any(a, ns.rdf('type'), null, doc),\n store.any(a, ns.schema('agent'), null, doc)\n ])\n sentiments.sort()\n sentiments.forEach(ss => {\n const [theClass, agent] = ss\n let res\n if (agent) {\n res = dom.createElement('a')\n res.setAttribute('href', agent.uri)\n } else {\n res = dom.createTextNode('')\n }\n res.textContent = emoji[theClass] || '*'\n strip.appendChild(res)\n })\n }\n refresh()\n strip.refresh = refresh\n return strip\n}\n/**\n * Creates a message toolbar component\n */\nexport function messageToolbar (message, messageRow, userContext, channelObject) {\n async function deleteMessage () {\n const author = store.any(message, ns.foaf('maker'))\n if (!me) {\n alert('You can\\'t delete the message, you are not logged in.')\n } else if (me.sameTerm(author)) {\n try {\n await channelObject.deleteMessage(message)\n } catch (err) {\n const msg = 'Error deleting messaage ' + err\n debug.warn(msg)\n alert(msg)\n const area = userContext.statusArea || messageRow.parentNode\n area.appendChild(widgets.errorMessageBlock(dom, msg))\n }\n messageRow.parentNode.removeChild(messageRow)\n } else {\n alert('You can\\'t delete the message, you are not logged in as the author, ' + author)\n }\n closeToolbar()\n }\n\n async function editMessage (messageRow) {\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n closeToolbar() // edit is a one-off action\n switchToEditor(messageRow, message, channelObject, userContext)\n }\n }\n\n // alain TODO allow chat owner to fully delete message + sentiments and replacing messages\n\n const div = dom.createElement('div')\n // is message deleted ?\n if (mostRecentVersion(message).value === ns.schema('dateDeleted').value) return div\n function closeToolbar () {\n div.parentElement.parentElement.removeChild(div.parentElement) // remive the TR\n }\n\n async function deleteThingThen (x) {\n await store.updater.update(store.connectedStatements(x), [])\n }\n\n // Things only the original author can do\n let me = authn.currentUser() // If already logged on\n if (me && store.holds(message, ns.foaf('maker'), me)) {\n // button to delete the message\n div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage))\n // button to edit the message\n div.appendChild(widgets.button(dom, icons.iconBase + PENCIL_ICON, 'edit', () => editMessage(messageRow)))\n } // if mine\n // Things anyone can do if they have a bookmark list async\n /*\n var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)\n if (bookmarkButton) {\n div.appendChild(bookmarkButton)\n }\n */\n // Things anyone can do if they have a bookmark list\n\n renderBookmarksButton(userContext).then(bookmarkButton => {\n if (bookmarkButton) div.appendChild(bookmarkButton)\n })\n\n /** Button to allow user to express a sentiment (like, endorse, etc) about a target\n *\n * @param context {Object} - Provide dom and me\n * @param target {NamedNode} - The thing the user expresses an opnion about\n * @param icon {uristring} - The icon to be used for the button\n * @param actionClass {NamedNode} - The RDF class - typically a subclass of schema:Action\n * @param doc - {NamedNode} - the Solid document iunto which the data should be written\n * @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive\n */\n function sentimentButton (\n context,\n target,\n icon,\n actionClass,\n doc,\n mutuallyExclusive\n ) {\n function setColor () {\n button.style.backgroundColor = action ? 'yellow' : 'white'\n }\n const button = widgets.button(\n dom,\n icon,\n utils.label(actionClass),\n async function (_event) {\n if (action) {\n await deleteThingThen(action)\n action = null\n setColor()\n } else {\n // no action\n action = widgets.newThing(doc)\n const insertMe = [\n rdf.st(action, ns.schema('agent'), context.me, doc),\n rdf.st(action, ns.rdf('type'), actionClass, doc),\n rdf.st(action, ns.schema('target'), target, doc)\n ]\n await store.updater.update([], insertMe)\n setColor()\n\n if (mutuallyExclusive) {\n // Delete incompative sentiments\n let dirty = false\n for (let i = 0; i < mutuallyExclusive.length; i++) {\n const a = existingAction(mutuallyExclusive[i])\n if (a) {\n await deleteThingThen(a) // but how refresh? refreshTree the parent?\n dirty = true\n }\n }\n if (dirty) {\n // widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings\n widgets.refreshTree(messageRow) // requires them all to be immediate siblings\n }\n }\n }\n }\n )\n function existingAction (actionClass) {\n const actions = store\n .each(null, ns.schema('agent'), context.me, doc)\n .filter(x => store.holds(x, ns.rdf('type'), actionClass, doc))\n .filter(x => store.holds(x, ns.schema('target'), target, doc))\n return actions.length ? actions[0] : null\n }\n function refresh () {\n action = existingAction(actionClass)\n setColor()\n }\n let action\n button.refresh = refresh // If the file changes, refresh live\n refresh()\n return button\n }\n\n // THUMBS_UP_ICON\n // https://schema.org/AgreeAction\n me = authn.currentUser() // If already logged on\n // debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))\n\n if (me && (mostRecentVersion(message).value !== ns.schema('dateDeleted').value)) {\n const context1 = { me, dom, div }\n div.appendChild(\n sentimentButton(\n context1,\n message, // @@ TODO use widgets.sentimentButton\n icons.iconBase + THUMBS_UP_ICON,\n ns.schema('AgreeAction'),\n message.doc(),\n [ns.schema('DisagreeAction')]\n )\n )\n // Thumbs down\n div.appendChild(\n sentimentButton(\n context1,\n message,\n icons.iconBase + THUMBS_DOWN_ICON,\n ns.schema('DisagreeAction'),\n message.doc(),\n [ns.schema('AgreeAction')]\n )\n )\n }\n // X button to remove the tool UI itself\n const cancelButton = div.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'right'\n cancelButton.firstChild.style.opacity = '0.3'\n cancelButton.addEventListener('click', closeToolbar)\n return div\n}\n"],"mappings":"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"}
|
package/lib/chat/thread.js
CHANGED
|
@@ -309,24 +309,22 @@ function thread(dom, kb, subject, messageStore, options) {
|
|
|
309
309
|
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(message) {
|
|
310
310
|
var deletions;
|
|
311
311
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
312
|
-
while (1) {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
return _context.stop();
|
|
329
|
-
}
|
|
312
|
+
while (1) switch (_context.prev = _context.next) {
|
|
313
|
+
case 0:
|
|
314
|
+
_context.next = 2;
|
|
315
|
+
return _solidLogic.store.connectedStatements(message, messageStore);
|
|
316
|
+
case 2:
|
|
317
|
+
deletions = _context.sent;
|
|
318
|
+
updater.update(deletions, [], function (uri, ok, body) {
|
|
319
|
+
if (!ok) {
|
|
320
|
+
announce.error('Cant delete messages:' + body);
|
|
321
|
+
} else {
|
|
322
|
+
syncMessages(subject, messageTable);
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
case 4:
|
|
326
|
+
case "end":
|
|
327
|
+
return _context.stop();
|
|
330
328
|
}
|
|
331
329
|
}, _callee);
|
|
332
330
|
}));
|