solid-ui 2.4.25 → 2.4.26-068520ea

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.
Files changed (82) hide show
  1. package/dist/main.js +1866 -1158
  2. package/dist/main.js.map +1 -1
  3. package/lib/acl/access-controller.js.map +1 -1
  4. package/lib/acl/access-groups.js.map +1 -1
  5. package/lib/acl/acl-control.js.map +1 -1
  6. package/lib/acl/acl.js.map +1 -1
  7. package/lib/acl/add-agent-buttons.js.map +1 -1
  8. package/lib/acl/index.js.map +1 -1
  9. package/lib/acl/styles.js.map +1 -1
  10. package/lib/chat/bookmarks.js +6 -7
  11. package/lib/chat/bookmarks.js.map +1 -1
  12. package/lib/chat/chatLogic.js +250 -61
  13. package/lib/chat/chatLogic.js.map +1 -1
  14. package/lib/chat/dateFolder.js.map +1 -1
  15. package/lib/chat/infinite.js +604 -426
  16. package/lib/chat/infinite.js.map +1 -1
  17. package/lib/chat/message.js +286 -158
  18. package/lib/chat/message.js.map +1 -1
  19. package/lib/chat/messageTools.js +464 -276
  20. package/lib/chat/messageTools.js.map +1 -1
  21. package/lib/chat/thread.js +166 -144
  22. package/lib/chat/thread.js.map +1 -1
  23. package/lib/create/create.js.map +1 -1
  24. package/lib/create/index.js.map +1 -1
  25. package/lib/debug.js.map +1 -1
  26. package/lib/folders.js.map +1 -1
  27. package/lib/footer/index.js.map +1 -1
  28. package/lib/footer/styleMap.js.map +1 -1
  29. package/lib/header/empty-profile.js.map +1 -1
  30. package/lib/header/index.js.map +1 -1
  31. package/lib/header/styleMap.js.map +1 -1
  32. package/lib/iconBase.js.map +1 -1
  33. package/lib/index.js.map +1 -1
  34. package/lib/jss/index.js.map +1 -1
  35. package/lib/log.js +7 -7
  36. package/lib/log.js.map +1 -1
  37. package/lib/login/login.js.map +1 -1
  38. package/lib/matrix/index.js.map +1 -1
  39. package/lib/matrix/matrix.js.map +1 -1
  40. package/lib/media/index.js.map +1 -1
  41. package/lib/media/media-capture.js.map +1 -1
  42. package/lib/messageArea.js.map +1 -1
  43. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  44. package/lib/ns.js.map +1 -1
  45. package/lib/pad.js.map +1 -1
  46. package/lib/participation.js.map +1 -1
  47. package/lib/preferences.js +4 -0
  48. package/lib/preferences.js.map +1 -1
  49. package/lib/signup/config-default.js.map +1 -1
  50. package/lib/signup/signup.js.map +1 -1
  51. package/lib/stories/decorators.js.map +1 -1
  52. package/lib/style.js.map +1 -1
  53. package/lib/style_multiSelect.js.map +1 -1
  54. package/lib/table.js.map +1 -1
  55. package/lib/tabs.js.map +1 -1
  56. package/lib/utils/headerFooterHelpers.js.map +1 -1
  57. package/lib/utils/index.js.map +1 -1
  58. package/lib/utils/label.js.map +1 -1
  59. package/lib/versionInfo.d.ts +2 -0
  60. package/lib/versionInfo.d.ts.map +1 -1
  61. package/lib/versionInfo.js +17 -15
  62. package/lib/versionInfo.js.map +1 -1
  63. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  64. package/lib/widgets/buttons.js.map +1 -1
  65. package/lib/widgets/dragAndDrop.js.map +1 -1
  66. package/lib/widgets/error.js.map +1 -1
  67. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  68. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  69. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  70. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  71. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  72. package/lib/widgets/forms/basic.js.map +1 -1
  73. package/lib/widgets/forms/comment.js.map +1 -1
  74. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  75. package/lib/widgets/forms/fieldParams.js.map +1 -1
  76. package/lib/widgets/forms/formStyle.js.map +1 -1
  77. package/lib/widgets/forms.js.map +1 -1
  78. package/lib/widgets/index.js.map +1 -1
  79. package/lib/widgets/multiSelect.js.map +1 -1
  80. package/lib/widgets/peoplePicker.js.map +1 -1
  81. package/lib/widgets/widgetHelpers.js.map +1 -1
  82. package/package.json +20 -19
@@ -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":["_infinite","require","_messageTools","_bookmarks","_chatLogic","debug","_interopRequireWildcard","_iconBase","_solidLogic","_login","_index","ns","pad","style","utils","widgets","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e2","f","TypeError","normalCompletion","didErr","err","step","next","_e3","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","dom","window","document","messageBodyStyle","label","elementForImageURI","imageUri","options","img","createElement","height","inlineImageHeightEms","trim","setAttribute","anchor","appendChild","makeDraggable","$rdf","text","term","a","uri","addEventListener","openHrefInOutlineMode","textContent","nick","person","store","any","foaf","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","_x","_x2","_x3","_x4","_x5","_renderMessageRow","_asyncToGenerator2","_regenerator","mark","_callee9","channelObject","fresh","userContext","colorizeByAuthor","latestVersion","content","versions","replies","thread","straightReplies","_iterator2","_step2","reply","originalMessage","edited","sortDate","messageRow","bothDates","td2","isURI","para","isImage","_img","anc","bgcolor","getBgColor","strip","td3","toolsButton","wrap","_callee9$","_context10","prev","_getBgColor","dct","mostRecentVersion","sent","sioc","allVersions","log","join","map","version","each","flat","holds","rdf","originalVersion","sameTerm","the","AJAR_date","AJAR_subject","authorDateOnLeft","setImage","shortDate","expandImagesInline","href","lightColorHash","sentimentStripLinked","children","button","icons","iconBase","_ref4","_callee8","_event","toolsTR","tools","toolsTD","_callee8$","_context9","toolTR","parentNode","removeChild","abrupt","messageToolbar","chatOptions","nextSibling","parentElement","insertBefore","stop","_x20","showThread","_e","switchToEditor","_x6","_x7","_x8","_x9","_switchToEditor","_callee10","messageTable","editRow","_callee10$","_context11","t0","renderMessageEditor","t1","t2","t3","t4","t5","originalRow","visibility","revertEditing","messageEditor","handleFieldInput","_x10","_handleFieldInput","_callee5","_callee5$","_context6","sendMessage","field","_x11","_x12","_sendMessage","_callee7","fromMainField","sendComplete","_sendComplete","statusArea","_callee7$","_context8","_sendComplete3","_callee6","_text2","oldRow","_callee6$","_context7","insertMessageIntoTable","warn","backgroundColor","disabled","scrollIntoView","newestFirst","focus","select","_sendComplete2","_x18","_x19","updateMessage","errorMessageBlock","droppedFileHandler","files","base","chatDocument","dir","uploadFiles","_ref","_callee","theFile","destURI","_callee$","_context2","_x13","_x14","droppedURIHandler","_ref2","_callee2","uris","_iterator","_step","_callee2$","_context3","finish","_x15","turnOnInput","getImageDoc","imageDoc","Date","now","tookPicture","_x16","_tookPicture","_callee4","_callee4$","_context5","menuButton","menuHandler","buttonStyle","rhs","me","authn","currentUser","menuOptions","div","newBase","event","chatChannel","lhs","middle","innerHTML","rows","anyValue","_ref3","_callee3","_callee3$","_context4","code","shiftKey","shiftEnterSendsMessage","_x17","makeDropTarget","sendButton","sendIcon","cancelButton","dateFolder","leafDocumentFromDate","media","cameraButton","recordParticipation","channel","context","ensureLoggedIn","then","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, allVersions } 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 async 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 = await mostRecentVersion(message)\n const content = store.any(latestVersion, ns.sioc('content'))\n // const id = store.any(latestVersion, ns.sioc('id'))\n // const replies = store.each(latestVersion, ns.sioc('has_reply'))\n const versions = await allVersions(message)\n if (versions.length > 1) {\n debug.log('renderMessageRow versions: ', versions.join(', '))\n }\n // be tolerant in accepting replies on any version of a message\n const replies = versions.map(version => store.each(version, ns.sioc('has_reply'))).flat()\n\n let thread = null\n const straightReplies = []\n for (const reply of replies) {\n if (store.holds(reply, ns.rdf('type'), ns.sioc('Thread'))) {\n thread = reply\n debug.log('renderMessageRow: found thread: ' + thread)\n } else {\n straightReplies.push(reply)\n }\n }\n if (straightReplies.length > 1) {\n debug.log('renderMessageRow: found normal replies: ', straightReplies)\n }\n\n const originalMessage = await originalVersion(message)\n const edited = !message.sameTerm(originalMessage)\n // @@ load it first @@ Or display the new data at the old date.\n // @@@ kludge!\n const sortDate = store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) || store.the(message, ns.dct('created'), null, message.doc())\n // 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 ? content.value.trim() : '??? no content?'\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 = await 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', async 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 = await messageToolbar(message, messageRow, { ...userContext, chatOptions: options }, 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 if (thread && options.showThread) {\n debug.log(' message has thread ' + thread)\n td3.appendChild(widgets.button(\n dom,\n icons.iconBase + 'noun_1180164.svg', // right arrow .. @@ think of stg better\n 'see thread',\n _e => {\n debug.log('@@@@ Calling showThread thread ' + thread)\n options.showThread(thread, options)\n }\n ))\n }\n return messageRow\n}\n\nexport async function switchToEditor (messageRow, message, channelObject, userContext) {\n const messageTable = messageRow.parentNode\n const editRow = renderMessageEditor(channelObject, messageTable, userContext,\n channelObject.options, await 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 async function sendComplete (message, _text2) {\n // const dateStamp = store.any(message, ns.dct('created'), null, message.doc())\n // const content = $rdf.literal(text2)\n await 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, null, options.thread)\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 await 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 // debug.log('Bookmark file: ' + context.bookmarkDocument)\n })\n })\n\n return messageEditor\n} // renderMessageEditor\n"],"mappings":"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"}