solid-ui 2.4.32 → 2.4.33-alpha

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 (267) hide show
  1. package/LICENSE.md +0 -0
  2. package/README.md +0 -0
  3. package/dist/{670.solid-ui.min.js → 320.solid-ui.min.js} +1 -1
  4. package/dist/376.solid-ui.min.js +3 -0
  5. package/dist/{805.solid-ui.min.js.LICENSE.txt → 376.solid-ui.min.js.LICENSE.txt} +0 -0
  6. package/dist/376.solid-ui.min.js.map +1 -0
  7. package/dist/_2b19.solid-ui.js +0 -0
  8. package/dist/_2b19.solid-ui.js.map +1 -1
  9. package/dist/index.html +0 -0
  10. package/dist/solid-ui.js +2300 -1562
  11. package/dist/solid-ui.js.map +1 -1
  12. package/dist/solid-ui.min.js +1 -1
  13. package/dist/solid-ui.min.js.LICENSE.txt +0 -0
  14. package/dist/solid-ui.min.js.map +1 -1
  15. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +1 -1
  16. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +1 -1
  17. package/lib/acl/access-controller.d.ts +0 -0
  18. package/lib/acl/access-controller.d.ts.map +0 -0
  19. package/lib/acl/access-controller.js +0 -0
  20. package/lib/acl/access-controller.js.map +0 -0
  21. package/lib/acl/access-groups.d.ts +0 -0
  22. package/lib/acl/access-groups.d.ts.map +0 -0
  23. package/lib/acl/access-groups.js +0 -0
  24. package/lib/acl/access-groups.js.map +0 -0
  25. package/lib/acl/acl-control.d.ts +0 -0
  26. package/lib/acl/acl-control.d.ts.map +0 -0
  27. package/lib/acl/acl-control.js +0 -0
  28. package/lib/acl/acl-control.js.map +0 -0
  29. package/lib/acl/acl.d.ts +0 -0
  30. package/lib/acl/acl.d.ts.map +0 -0
  31. package/lib/acl/acl.js +0 -0
  32. package/lib/acl/acl.js.map +0 -0
  33. package/lib/acl/add-agent-buttons.d.ts +0 -0
  34. package/lib/acl/add-agent-buttons.d.ts.map +0 -0
  35. package/lib/acl/add-agent-buttons.js +0 -0
  36. package/lib/acl/add-agent-buttons.js.map +0 -0
  37. package/lib/acl/index.d.ts +0 -0
  38. package/lib/acl/index.d.ts.map +0 -0
  39. package/lib/acl/index.js +0 -0
  40. package/lib/acl/index.js.map +0 -0
  41. package/lib/acl/types.d.ts +0 -0
  42. package/lib/acl/types.d.ts.map +0 -0
  43. package/lib/acl/types.js +0 -0
  44. package/lib/acl/types.js.map +0 -0
  45. package/lib/chat/bookmarks.js +7 -42
  46. package/lib/chat/bookmarks.js.map +1 -1
  47. package/lib/chat/chatLogic.js +226 -101
  48. package/lib/chat/chatLogic.js.map +1 -1
  49. package/lib/chat/dateFolder.js +139 -136
  50. package/lib/chat/dateFolder.js.map +1 -1
  51. package/lib/chat/infinite.js +618 -432
  52. package/lib/chat/infinite.js.map +1 -1
  53. package/lib/chat/keys.d.ts +0 -0
  54. package/lib/chat/keys.d.ts.map +0 -0
  55. package/lib/chat/keys.js +3 -3
  56. package/lib/chat/keys.js.map +1 -1
  57. package/lib/chat/message.js +323 -191
  58. package/lib/chat/message.js.map +1 -1
  59. package/lib/chat/messageTools.js +459 -276
  60. package/lib/chat/messageTools.js.map +1 -1
  61. package/lib/chat/signature.d.ts +0 -0
  62. package/lib/chat/signature.d.ts.map +0 -0
  63. package/lib/chat/signature.js +0 -0
  64. package/lib/chat/signature.js.map +0 -0
  65. package/lib/chat/thread.js +299 -208
  66. package/lib/chat/thread.js.map +1 -1
  67. package/lib/create/create.d.ts +0 -0
  68. package/lib/create/create.d.ts.map +0 -0
  69. package/lib/create/create.js +0 -0
  70. package/lib/create/create.js.map +0 -0
  71. package/lib/create/index.d.ts +0 -0
  72. package/lib/create/index.d.ts.map +0 -0
  73. package/lib/create/index.js +0 -0
  74. package/lib/create/index.js.map +0 -0
  75. package/lib/create/types.d.ts +0 -0
  76. package/lib/create/types.d.ts.map +0 -0
  77. package/lib/create/types.js +0 -0
  78. package/lib/create/types.js.map +0 -0
  79. package/lib/debug.d.ts +0 -0
  80. package/lib/debug.d.ts.map +0 -0
  81. package/lib/debug.js +0 -0
  82. package/lib/debug.js.map +0 -0
  83. package/lib/folders.js +0 -0
  84. package/lib/folders.js.map +0 -0
  85. package/lib/footer/index.d.ts +0 -0
  86. package/lib/footer/index.d.ts.map +0 -0
  87. package/lib/footer/index.js +0 -0
  88. package/lib/footer/index.js.map +0 -0
  89. package/lib/header/empty-profile.d.ts +0 -0
  90. package/lib/header/empty-profile.d.ts.map +0 -0
  91. package/lib/header/empty-profile.js +0 -0
  92. package/lib/header/empty-profile.js.map +0 -0
  93. package/lib/header/index.d.ts +0 -0
  94. package/lib/header/index.d.ts.map +0 -0
  95. package/lib/header/index.js +0 -0
  96. package/lib/header/index.js.map +0 -0
  97. package/lib/iconBase.d.ts +0 -0
  98. package/lib/iconBase.d.ts.map +0 -0
  99. package/lib/iconBase.js +0 -0
  100. package/lib/iconBase.js.map +0 -0
  101. package/lib/icons/solid_logo.d.ts +0 -0
  102. package/lib/icons/solid_logo.d.ts.map +0 -0
  103. package/lib/icons/solid_logo.js +0 -0
  104. package/lib/icons/solid_logo.js.map +0 -0
  105. package/lib/index.d.ts +0 -0
  106. package/lib/index.d.ts.map +0 -0
  107. package/lib/index.js +0 -0
  108. package/lib/index.js.map +0 -0
  109. package/lib/log.d.ts +0 -0
  110. package/lib/log.d.ts.map +0 -0
  111. package/lib/log.js +0 -0
  112. package/lib/log.js.map +0 -0
  113. package/lib/login/login.d.ts +0 -0
  114. package/lib/login/login.d.ts.map +0 -0
  115. package/lib/login/login.js +0 -0
  116. package/lib/login/login.js.map +0 -0
  117. package/lib/matrix/index.d.ts +0 -0
  118. package/lib/matrix/index.d.ts.map +0 -0
  119. package/lib/matrix/index.js +0 -0
  120. package/lib/matrix/index.js.map +0 -0
  121. package/lib/matrix/matrix.d.ts +0 -0
  122. package/lib/matrix/matrix.d.ts.map +0 -0
  123. package/lib/matrix/matrix.js +0 -0
  124. package/lib/matrix/matrix.js.map +0 -0
  125. package/lib/matrix/types.d.ts +0 -0
  126. package/lib/matrix/types.d.ts.map +0 -0
  127. package/lib/matrix/types.js +0 -0
  128. package/lib/matrix/types.js.map +0 -0
  129. package/lib/media/index.d.ts +0 -0
  130. package/lib/media/index.d.ts.map +0 -0
  131. package/lib/media/index.js +0 -0
  132. package/lib/media/index.js.map +0 -0
  133. package/lib/media/media-capture.d.ts +0 -0
  134. package/lib/media/media-capture.d.ts.map +0 -0
  135. package/lib/media/media-capture.js +0 -0
  136. package/lib/media/media-capture.js.map +0 -0
  137. package/lib/messageArea.js +0 -0
  138. package/lib/messageArea.js.map +0 -0
  139. package/lib/noun_Camera_1618446_000000.js +0 -0
  140. package/lib/noun_Camera_1618446_000000.js.map +0 -0
  141. package/lib/ns.js +0 -0
  142. package/lib/ns.js.map +0 -0
  143. package/lib/pad.d.ts +0 -0
  144. package/lib/pad.d.ts.map +0 -0
  145. package/lib/pad.js +6 -8
  146. package/lib/pad.js.map +1 -1
  147. package/lib/participation.d.ts +0 -0
  148. package/lib/participation.d.ts.map +0 -0
  149. package/lib/participation.js +5 -6
  150. package/lib/participation.js.map +1 -1
  151. package/lib/preferences.js +4 -0
  152. package/lib/preferences.js.map +1 -1
  153. package/lib/signup/config-default.js +0 -0
  154. package/lib/signup/config-default.js.map +0 -0
  155. package/lib/signup/signup.js +0 -0
  156. package/lib/signup/signup.js.map +0 -0
  157. package/lib/stories/decorators.js +0 -0
  158. package/lib/stories/decorators.js.map +0 -0
  159. package/lib/style.js +0 -0
  160. package/lib/style.js.map +0 -0
  161. package/lib/styleConstants.js +0 -0
  162. package/lib/styleConstants.js.map +0 -0
  163. package/lib/style_multiSelect.js +0 -0
  164. package/lib/style_multiSelect.js.map +0 -0
  165. package/lib/table.js +0 -0
  166. package/lib/table.js.map +0 -0
  167. package/lib/tabs.d.ts +0 -0
  168. package/lib/tabs.d.ts.map +0 -0
  169. package/lib/tabs.js +7 -10
  170. package/lib/tabs.js.map +1 -1
  171. package/lib/typings.d.js +0 -0
  172. package/lib/typings.d.js.map +0 -0
  173. package/lib/utils/headerFooterHelpers.d.ts +0 -0
  174. package/lib/utils/headerFooterHelpers.d.ts.map +0 -0
  175. package/lib/utils/headerFooterHelpers.js +0 -0
  176. package/lib/utils/headerFooterHelpers.js.map +0 -0
  177. package/lib/utils/index.js +0 -0
  178. package/lib/utils/index.js.map +0 -0
  179. package/lib/utils/keyHelpers/accessData.d.ts +2 -2
  180. package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
  181. package/lib/utils/keyHelpers/accessData.js +59 -115
  182. package/lib/utils/keyHelpers/accessData.js.map +1 -1
  183. package/lib/utils/keyHelpers/acl.d.ts +0 -0
  184. package/lib/utils/keyHelpers/acl.d.ts.map +0 -0
  185. package/lib/utils/keyHelpers/acl.js +14 -14
  186. package/lib/utils/keyHelpers/acl.js.map +1 -1
  187. package/lib/utils/keyHelpers/otherHelpers.d.ts +3 -0
  188. package/lib/utils/keyHelpers/otherHelpers.d.ts.map +1 -0
  189. package/lib/utils/keyHelpers/otherHelpers.js +22 -0
  190. package/lib/utils/keyHelpers/otherHelpers.js.map +1 -0
  191. package/lib/utils/label.d.ts +0 -0
  192. package/lib/utils/label.d.ts.map +0 -0
  193. package/lib/utils/label.js +0 -0
  194. package/lib/utils/label.js.map +0 -0
  195. package/lib/versionInfo.d.ts +17 -10
  196. package/lib/versionInfo.d.ts.map +1 -1
  197. package/lib/versionInfo.js +24 -17
  198. package/lib/versionInfo.js.map +1 -1
  199. package/lib/widgets/buttons/iconLinks.d.ts +0 -0
  200. package/lib/widgets/buttons/iconLinks.d.ts.map +0 -0
  201. package/lib/widgets/buttons/iconLinks.js +0 -0
  202. package/lib/widgets/buttons/iconLinks.js.map +0 -0
  203. package/lib/widgets/buttons.d.ts +0 -0
  204. package/lib/widgets/buttons.d.ts.map +0 -0
  205. package/lib/widgets/buttons.js +0 -0
  206. package/lib/widgets/buttons.js.map +0 -0
  207. package/lib/widgets/dragAndDrop.js +0 -0
  208. package/lib/widgets/dragAndDrop.js.map +0 -0
  209. package/lib/widgets/error.d.ts +0 -0
  210. package/lib/widgets/error.d.ts.map +0 -0
  211. package/lib/widgets/error.js +0 -0
  212. package/lib/widgets/error.js.map +0 -0
  213. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
  214. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
  215. package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -0
  216. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -0
  217. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
  218. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
  219. package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -0
  220. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -0
  221. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
  222. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
  223. package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -0
  224. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -0
  225. package/lib/widgets/forms/autocomplete/language.d.ts +0 -0
  226. package/lib/widgets/forms/autocomplete/language.d.ts.map +0 -0
  227. package/lib/widgets/forms/autocomplete/language.js +0 -0
  228. package/lib/widgets/forms/autocomplete/language.js.map +0 -0
  229. package/lib/widgets/forms/autocomplete/publicData.d.ts +0 -0
  230. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
  231. package/lib/widgets/forms/autocomplete/publicData.js +0 -0
  232. package/lib/widgets/forms/autocomplete/publicData.js.map +0 -0
  233. package/lib/widgets/forms/basic.d.ts +0 -0
  234. package/lib/widgets/forms/basic.d.ts.map +0 -0
  235. package/lib/widgets/forms/basic.js +0 -0
  236. package/lib/widgets/forms/basic.js.map +0 -0
  237. package/lib/widgets/forms/comment.d.ts +0 -0
  238. package/lib/widgets/forms/comment.d.ts.map +0 -0
  239. package/lib/widgets/forms/comment.js +0 -0
  240. package/lib/widgets/forms/comment.js.map +0 -0
  241. package/lib/widgets/forms/fieldFunction.d.ts +0 -0
  242. package/lib/widgets/forms/fieldFunction.d.ts.map +0 -0
  243. package/lib/widgets/forms/fieldFunction.js +0 -0
  244. package/lib/widgets/forms/fieldFunction.js.map +0 -0
  245. package/lib/widgets/forms/fieldParams.d.ts +0 -0
  246. package/lib/widgets/forms/fieldParams.d.ts.map +0 -0
  247. package/lib/widgets/forms/fieldParams.js +0 -0
  248. package/lib/widgets/forms/fieldParams.js.map +0 -0
  249. package/lib/widgets/forms/formStyle.d.ts +0 -0
  250. package/lib/widgets/forms/formStyle.d.ts.map +0 -0
  251. package/lib/widgets/forms/formStyle.js +0 -0
  252. package/lib/widgets/forms/formStyle.js.map +0 -0
  253. package/lib/widgets/forms.js +0 -0
  254. package/lib/widgets/forms.js.map +0 -0
  255. package/lib/widgets/index.js +0 -0
  256. package/lib/widgets/index.js.map +0 -0
  257. package/lib/widgets/multiSelect.js +0 -0
  258. package/lib/widgets/multiSelect.js.map +0 -0
  259. package/lib/widgets/peoplePicker.js +0 -0
  260. package/lib/widgets/peoplePicker.js.map +0 -0
  261. package/lib/widgets/widgetHelpers.d.ts +0 -0
  262. package/lib/widgets/widgetHelpers.d.ts.map +0 -0
  263. package/lib/widgets/widgetHelpers.js +0 -0
  264. package/lib/widgets/widgetHelpers.js.map +0 -0
  265. package/package.json +7 -7
  266. package/dist/805.solid-ui.min.js +0 -3
  267. package/dist/805.solid-ui.min.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","names":["_infinite","require","_messageTools","_bookmarks","_chatLogic","debug","_interopRequireWildcard","_iconBase","_solidLogic","_login","_index","ns","pad","style","utils","widgets","_signature","_keys","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","F","s","done","value","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","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","sym","text","term","uri","addEventListener","openHrefInOutlineMode","textContent","nickname","person","store","any","foaf","creatorAndDate","td1","creator","date","message","nickAnchor","fetcher","nowOrWhenFetched","doc","undefined","_ok","_body","creatorAndDateHorizontal","dateBit","fontSize","marginLeft","renderMessageRow","channelObject","fresh","userContext","unsignedMessage","colorizeByAuthor","dct","latestVersion","mostRecentVersion","latestVersionCreator","msgId","content","sioc","signature","concat","SEC","msg","getBlankMsg","id","created","maker","warn","getPublicKey","then","publicKey","log","regex","match","verifySignature","originalMessage","originalVersion","edited","sameTerm","sortDate","the","messageRow","AJAR_date","AJAR_subject","authorDateOnLeft","setImage","shortDate","bothDates","td2","isURI","para","isImage","expandImagesInline","anc","href","bgcolor","lightColorHash","getBgColor","strip","sentimentStripLinked","children","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","_x","_handleFieldInput","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee5","wrap","_callee5$","_context6","prev","sendMessage","field","stop","_x2","_x3","_sendMessage","_callee6","fromMainField","sendComplete","statusArea","_callee6$","_context7","_sendComplete","_text2","insertMessageIntoTable","oldRow","backgroundColor","disabled","scrollIntoView","newestFirst","focus","select","updateMessage","sent","t0","errorMessageBlock","abrupt","droppedFileHandler","files","base","chatDocument","dir","uploadFiles","_ref","_callee","theFile","destURI","_callee$","_context2","_x4","_x5","droppedURIHandler","_ref2","_callee2","uris","_iterator","_step","_callee2$","_context3","finish","_x6","turnOnInput","getImageDoc","imageDoc","Date","now","tookPicture","_x7","_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","_x8","makeDropTarget","sendButton","sendIcon","cancelButton","dateFolder","leafDocumentFromDate","media","cameraButton","recordParticipation","channel","context","ensureLoggedIn","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'\nimport { getBlankMsg, verifySignature, SEC } from './signature'\nimport { getPublicKey } from './keys'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * elementForImageURI\n * HTML component for an image\n * @param imageUri\n * @param options { inlineImageHeightEms }\n * @returns HTMLAnchorElement For 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 nickname (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * creatorAndDate\n * Displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nickname(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nickname(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * creatorAndDateHorizontal\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\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 = nickname(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 * renderMessageRow\n * Renders a chat message, read-only mode\n * @param channelObject\n * @param message\n * @param fresh\n * @param options\n * @param userContext\n * @returns Message Row HTML Table Element\n */\nexport function renderMessageRow (channelObject, message, fresh, options, userContext) {\n let unsignedMessage = false\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 latestVersionCreator = store.any(latestVersion, ns.foaf('maker'))\n\n // use latest content if same owner, else use original\n const msgId = creator.uri === latestVersionCreator.uri ? latestVersion : message\n const content = store.any(msgId, ns.sioc('content'))\n const signature = store.any(msgId, $rdf.sym(`${SEC}proofValue`))\n\n // set message object\n const msg = getBlankMsg()\n msg.id = msgId.uri\n msg.created = store.any(msgId, ns.dct('created')).value\n msg.content = content.value\n msg.maker = creator.uri\n\n // unsigned message\n if (!signature?.value) {\n unsignedMessage = true\n debug.warn(msgId.uri + ' is unsigned') // TODO replace with UI (colored message ?)\n } else { // signed message, get public key and check signature\n getPublicKey(creator).then(publicKey => {\n debug.log(creator.uri + '\\n' + msg.created + '\\n' + msg.id + '\\n' + publicKey)\n if (!publicKey) {\n // TODO try to recreate the publicKey\n // if(me.uri === creator.uri) await getPrivateKey(creator)\n debug.warn('message is signed but ' + creator.uri + ' is missing publicKey')\n }\n // check that publicKey is a valid hex string\n const regex = /[0-9A-Fa-f]{6}/g\n if (!publicKey?.match(regex)) debug.warn('invalid publicKey hex string\\n' + creator.uri + '\\n' + publicKey)\n // verify signature\n else if (signature?.value && !verifySignature(signature?.value, msg, publicKey)) debug.warn('invalid signature\\n' + msg.id)\n })\n }\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 if (unsignedMessage) messageRow.setAttribute('style', 'background-color: red')\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} // END OF RENDERMESSAGE\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 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","_signature","_keys","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","_createForOfIteratorHelper","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","done","value","_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","sym","text","term","uri","addEventListener","openHrefInOutlineMode","textContent","nickname","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","unsignedMessage","colorizeByAuthor","latestVersion","latestVersionCreator","msgId","content","versions","replies","thread","straightReplies","_iterator2","_step2","reply","signature","msg","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","concat","SEC","getBlankMsg","id","created","maker","warn","getPublicKey","then","publicKey","regex","match","verifySignature","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","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","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'\nimport { getBlankMsg, verifySignature, SEC } from './signature'\nimport { getPublicKey } from './keys'\n\nconst dom = window.document\nconst messageBodyStyle = style.messageBodyStyle\n\nconst label = utils.label\n\n/**\n * elementForImageURI\n * HTML component for an image\n * @param imageUri\n * @param options { inlineImageHeightEms }\n * @returns HTMLAnchorElement For 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 nickname (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + label(person)\n}\n\n/**\n * creatorAndDate\n * Displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\n */\nexport function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nickname(creator), creator))\n if (creator.uri) {\n store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nickname(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n}\n\n/**\n * creatorAndDateHorizontal\n * Horizontally displays creator and date for a chat message\n * inside the `td1` element\n * @param td1\n * @param creator\n * @param date\n * @param message\n * @returns HTMLAnchorElement For Image\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 = nickname(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 * renderMessageRow\n * Renders a chat message, read-only mode\n * @param channelObject\n * @param message\n * @param fresh\n * @param options\n * @param userContext\n * @returns Message Row HTML Table Element\n */\nexport async function renderMessageRow (channelObject, message, fresh, options, userContext) {\n let unsignedMessage = false\n const colorizeByAuthor =\n options.colorizeByAuthor === '1' || options.colorizeByAuthor === true\n\n // const id = store.any(latestVersion, ns.sioc('id'))\n // const replies = store.each(latestVersion, ns.sioc('has_reply'))\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 latestVersionCreator = store.any(latestVersion, ns.foaf('maker'))\n\n // use latest content if same owner, else use original\n // this is may be too strict. Should we find latest valid version if any ?\n const msgId = creator.uri === latestVersionCreator?.uri ? latestVersion : message\n const content = store.any(msgId, ns.sioc('content'))\n\n const versions = await allVersions(msgId)\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 if (!thread) {\n // thread = store.any(message, ns.sioc('has_reply'))\n thread = store.any(null, ns.sioc('has_member'), message)\n }\n // debug.log('@@@@ is thread' + thread)\n\n // get signature\n const signature = store.any(msgId, $rdf.sym(`${SEC}proofValue`))\n\n // set proof message object\n const msg = getBlankMsg()\n msg.id = msgId.uri\n msg.created = store.any(msgId, ns.dct('created')).value\n msg.content = content.value\n msg.maker = creator.uri\n\n // verify signature\n if (!signature?.value) { // unsigned message\n unsignedMessage = true\n debug.warn(msgId.uri + ' is unsigned') // TODO replace with UI (colored message ?)\n } else { // signed message, get public key and check signature\n getPublicKey(creator).then(publicKey => {\n // debug.log(creator.uri + '\\n' + msg.created + '\\n' + msg.id + '\\n' + publicKey)\n if (!publicKey) {\n debug.warn('message is signed but ' + creator.uri + ' is missing publicKey')\n }\n // check that publicKey is a valid hex string\n const regex = /[0-9A-Fa-f]{6}/g\n if (!publicKey?.match(regex)) debug.warn('invalid publicKey hex string\\n' + creator.uri + '\\n' + publicKey)\n // verify signature\n else if (signature?.value && !verifySignature(signature?.value, msg, publicKey)) debug.warn('invalid signature\\n' + msg.id)\n })\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 if (unsignedMessage) messageRow.setAttribute('style', 'background-color: red')\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} // END OF RENDERMESSAGE\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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"}