solid-ui 2.4.23 → 2.4.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/main.js +2159 -5039
  2. package/dist/main.js.map +1 -1
  3. package/lib/acl/access-controller.js +4 -67
  4. package/lib/acl/access-controller.js.map +1 -1
  5. package/lib/acl/access-groups.js +59 -137
  6. package/lib/acl/access-groups.js.map +1 -1
  7. package/lib/acl/acl-control.js +14 -54
  8. package/lib/acl/acl-control.js.map +1 -1
  9. package/lib/acl/acl.js +32 -107
  10. package/lib/acl/acl.js.map +1 -1
  11. package/lib/acl/add-agent-buttons.js +0 -92
  12. package/lib/acl/add-agent-buttons.js.map +1 -1
  13. package/lib/acl/index.js +1 -3
  14. package/lib/acl/index.js.map +1 -1
  15. package/lib/acl/styles.js +1 -2
  16. package/lib/acl/styles.js.map +1 -1
  17. package/lib/chat/bookmarks.js +8 -80
  18. package/lib/chat/bookmarks.js.map +1 -1
  19. package/lib/chat/chatLogic.js +109 -180
  20. package/lib/chat/chatLogic.js.map +1 -1
  21. package/lib/chat/dateFolder.js +6 -91
  22. package/lib/chat/dateFolder.js.map +1 -1
  23. package/lib/chat/infinite.js +33 -185
  24. package/lib/chat/infinite.js.map +1 -1
  25. package/lib/chat/message.js +37 -150
  26. package/lib/chat/message.js.map +1 -1
  27. package/lib/chat/messageTools.js +23 -96
  28. package/lib/chat/messageTools.js.map +1 -1
  29. package/lib/chat/thread.js +33 -91
  30. package/lib/chat/thread.js.map +1 -1
  31. package/lib/create/create.js +19 -51
  32. package/lib/create/create.js.map +1 -1
  33. package/lib/create/index.js +0 -2
  34. package/lib/create/index.js.map +1 -1
  35. package/lib/debug.js +0 -8
  36. package/lib/debug.js.map +1 -1
  37. package/lib/folders.js +4 -27
  38. package/lib/folders.js.map +1 -1
  39. package/lib/footer/index.js +2 -24
  40. package/lib/footer/index.js.map +1 -1
  41. package/lib/footer/styleMap.js.map +1 -1
  42. package/lib/header/empty-profile.js.map +1 -1
  43. package/lib/header/index.js +3 -72
  44. package/lib/header/index.js.map +1 -1
  45. package/lib/header/styleMap.js +4 -3
  46. package/lib/header/styleMap.js.map +1 -1
  47. package/lib/iconBase.js +3 -4
  48. package/lib/iconBase.js.map +1 -1
  49. package/lib/index.js +5 -46
  50. package/lib/index.js.map +1 -1
  51. package/lib/jss/index.js +3 -9
  52. package/lib/jss/index.js.map +1 -1
  53. package/lib/log.js +15 -51
  54. package/lib/log.js.map +1 -1
  55. package/lib/login/login.js +74 -303
  56. package/lib/login/login.js.map +1 -1
  57. package/lib/matrix/index.js +0 -2
  58. package/lib/matrix/index.js.map +1 -1
  59. package/lib/matrix/matrix.js +7 -55
  60. package/lib/matrix/matrix.js.map +1 -1
  61. package/lib/media/index.js +0 -2
  62. package/lib/media/index.js.map +1 -1
  63. package/lib/media/media-capture.js +13 -33
  64. package/lib/media/media-capture.js.map +1 -1
  65. package/lib/messageArea.js +23 -64
  66. package/lib/messageArea.js.map +1 -1
  67. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  68. package/lib/ns.js +5 -7
  69. package/lib/ns.js.map +1 -1
  70. package/lib/pad.js +48 -234
  71. package/lib/pad.js.map +1 -1
  72. package/lib/participation.js +10 -65
  73. package/lib/participation.js.map +1 -1
  74. package/lib/preferences.js +21 -42
  75. package/lib/preferences.js.map +1 -1
  76. package/lib/signup/config-default.js +1 -8
  77. package/lib/signup/config-default.js.map +1 -1
  78. package/lib/signup/signup.js +6 -13
  79. package/lib/signup/signup.js.map +1 -1
  80. package/lib/stories/decorators.js +0 -2
  81. package/lib/stories/decorators.js.map +1 -1
  82. package/lib/style.js +8 -5
  83. package/lib/style.js.map +1 -1
  84. package/lib/style_multiSelect.js +1 -5
  85. package/lib/style_multiSelect.js.map +1 -1
  86. package/lib/table.js +309 -322
  87. package/lib/table.js.map +1 -1
  88. package/lib/tabs.js +20 -100
  89. package/lib/tabs.js.map +1 -1
  90. package/lib/utils/headerFooterHelpers.js +4 -52
  91. package/lib/utils/headerFooterHelpers.js.map +1 -1
  92. package/lib/utils/index.js +41 -135
  93. package/lib/utils/index.js.map +1 -1
  94. package/lib/utils/label.js +13 -34
  95. package/lib/utils/label.js.map +1 -1
  96. package/lib/versionInfo.js +4 -4
  97. package/lib/versionInfo.js.map +1 -1
  98. package/lib/widgets/buttons/iconLinks.js +0 -8
  99. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  100. package/lib/widgets/buttons.js +115 -291
  101. package/lib/widgets/buttons.js.map +1 -1
  102. package/lib/widgets/dragAndDrop.js +12 -41
  103. package/lib/widgets/dragAndDrop.js.map +1 -1
  104. package/lib/widgets/error.js +3 -9
  105. package/lib/widgets/error.js.map +1 -1
  106. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
  107. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  108. package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
  109. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  110. package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
  111. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  112. package/lib/widgets/forms/autocomplete/language.js +6 -55
  113. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  114. package/lib/widgets/forms/autocomplete/publicData.js +12 -131
  115. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  116. package/lib/widgets/forms/basic.js +12 -55
  117. package/lib/widgets/forms/basic.js.map +1 -1
  118. package/lib/widgets/forms/comment.js +1 -15
  119. package/lib/widgets/forms/comment.js.map +1 -1
  120. package/lib/widgets/forms/fieldFunction.js +3 -16
  121. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  122. package/lib/widgets/forms/fieldParams.js +0 -12
  123. package/lib/widgets/forms/fieldParams.js.map +1 -1
  124. package/lib/widgets/forms/formStyle.js +1 -14
  125. package/lib/widgets/forms/formStyle.js.map +1 -1
  126. package/lib/widgets/forms.js +70 -474
  127. package/lib/widgets/forms.js.map +1 -1
  128. package/lib/widgets/index.js +0 -21
  129. package/lib/widgets/index.js.map +1 -1
  130. package/lib/widgets/multiSelect.js +48 -171
  131. package/lib/widgets/multiSelect.js.map +1 -1
  132. package/lib/widgets/peoplePicker.js +20 -90
  133. package/lib/widgets/peoplePicker.js.map +1 -1
  134. package/lib/widgets/widgetHelpers.js +2 -9
  135. package/lib/widgets/widgetHelpers.js.map +1 -1
  136. package/package.json +28 -28
@@ -1 +1 @@
1
- {"version":3,"file":"messageTools.js","names":["dom","window","document","PENCIL_ICON","THUMBS_UP_ICON","THUMBS_DOWN_ICON","emoji","ns","schema","sentimentStrip","target","doc","latest","mostRecentVersion","actions","store","holds","value","each","sentiments","map","a","any","rdf","sort","strings","x","createTextNode","join","sentimentStripLinked","strip","createElement","refresh","innerHTML","uri","forEach","ss","theClass","agent","res","setAttribute","textContent","appendChild","messageToolbar","message","messageRow","userContext","channelObject","deleteMessage","author","foaf","me","alert","sameTerm","msg","debug","warn","area","statusArea","parentNode","widgets","errorMessageBlock","removeChild","closeToolbar","editMessage","switchToEditor","div","parentElement","deleteThingThen","updater","update","connectedStatements","authn","currentUser","deleteButtonWithCheck","button","icons","iconBase","renderBookmarksButton","then","bookmarkButton","sentimentButton","context","icon","actionClass","mutuallyExclusive","setColor","style","backgroundColor","action","utils","label","_event","newThing","insertMe","st","dirty","i","length","existingAction","refreshTree","filter","context1","cancelButton","firstChild","opacity","addEventListener"],"sources":["../../src/chat/messageTools.js"],"sourcesContent":["/**\n * Tools for doing things with a message\n * Let us be creative here. Allow all sorts of things to\n * be done to a message - linking to new or old objects in an open way\n *\n * Ideas: Bookmark, Like, star, pin at top of chat, reply as new thread,\n * If you made it originally: edit, delete, attach\n * @packageDocumentation\n */\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\n// import { media } from '../media/index'\nimport * as ns from '../ns'\n// import * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n// import * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { renderBookmarksButton } from './bookmarks'\nimport { authn, store } from 'solid-logic'\n\nimport { mostRecentVersion } from './chatLogic'\nimport { switchToEditor } from './message'\n\nconst dom = window.document\n\n// THE UNUSED ICONS are here as reminders for possible future functionality\n// const BOOKMARK_ICON = 'noun_45961.svg'\n// const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites\n// const MENU_ICON = 'noun_897914.svg'\n// const PAPERCLIP_ICON = 'noun_25830.svg' -> add attachments to this message\n// const PIN_ICON = 'noun_562340.svg' -> pin this message permanently in the chat UI\nconst PENCIL_ICON = 'noun_253504.svg' // edit a message\n// const SPANNER_ICON = 'noun_344563.svg' -> settings\nconst THUMBS_UP_ICON = 'noun_1384132.svg'\nconst THUMBS_DOWN_ICON = 'noun_1384135.svg'\n/**\n * Emoji in Unicode\n */\nconst emoji = {}\nemoji[ns.schema('AgreeAction')] = '👍'\nemoji[ns.schema('DisagreeAction')] = '👎'\nemoji[ns.schema('EndorseAction')] = '⭐️'\nemoji[ns.schema('LikeAction')] = '❤️'\n\n/**\n * Create strip of sentiments expressed\n */\nexport function sentimentStrip (target, doc) { // alain seems not used\n const latest = mostRecentVersion(target)\n const actions = store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => store.any(a, ns.rdf('type'), null, doc))\n sentiments.sort()\n const strings = sentiments.map(x => emoji[x] || '')\n return dom.createTextNode(strings.join(' '))\n}\n/**\n * Create strip of sentiments expressed, with hyperlinks\n *\n * @param target {NamedNode} - The thing about which they are expressed\n * @param doc {NamedNode} - The document in which they are expressed\n */\nexport function sentimentStripLinked (target, doc) {\n const strip = dom.createElement('span')\n function refresh () {\n strip.innerHTML = ''\n const actions = (mostRecentVersion(target).uri !== ns.schema('dateDeleted').uri) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => [\n store.any(a, ns.rdf('type'), null, doc),\n store.any(a, ns.schema('agent'), null, doc)\n ])\n sentiments.sort()\n sentiments.forEach(ss => {\n const [theClass, agent] = ss\n let res\n if (agent) {\n res = dom.createElement('a')\n res.setAttribute('href', agent.uri)\n } else {\n res = dom.createTextNode('')\n }\n res.textContent = emoji[theClass] || '*'\n strip.appendChild(res)\n })\n }\n refresh()\n strip.refresh = refresh\n return strip\n}\n/**\n * Creates a message toolbar component\n */\nexport function messageToolbar (message, messageRow, userContext, channelObject) {\n async function deleteMessage () {\n const author = store.any(message, ns.foaf('maker'))\n if (!me) {\n alert('You can\\'t delete the message, you are not logged in.')\n } else if (me.sameTerm(author)) {\n try {\n await channelObject.deleteMessage(message)\n } catch (err) {\n const msg = 'Error deleting messaage ' + err\n debug.warn(msg)\n alert(msg)\n const area = userContext.statusArea || messageRow.parentNode\n area.appendChild(widgets.errorMessageBlock(dom, msg))\n }\n messageRow.parentNode.removeChild(messageRow)\n } else {\n alert('You can\\'t delete the message, you are not logged in as the author, ' + author)\n }\n closeToolbar()\n }\n\n async function editMessage (messageRow) {\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n closeToolbar() // edit is a one-off action\n switchToEditor(messageRow, message, channelObject, userContext)\n }\n }\n\n // alain TODO allow chat owner to fully delete message + sentiments and replacing messages\n\n const div = dom.createElement('div')\n // is message deleted ?\n if (mostRecentVersion(message).value === ns.schema('dateDeleted').value) return div\n function closeToolbar () {\n div.parentElement.parentElement.removeChild(div.parentElement) // remive the TR\n }\n\n async function deleteThingThen (x) {\n await store.updater.update(store.connectedStatements(x), [])\n }\n\n // Things only the original author can do\n let me = authn.currentUser() // If already logged on\n if (me && store.holds(message, ns.foaf('maker'), me)) {\n // button to delete the message\n div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage))\n // button to edit the message\n div.appendChild(widgets.button(dom, icons.iconBase + PENCIL_ICON, 'edit', () => editMessage(messageRow)))\n } // if mine\n // Things anyone can do if they have a bookmark list async\n /*\n var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)\n if (bookmarkButton) {\n div.appendChild(bookmarkButton)\n }\n */\n // Things anyone can do if they have a bookmark list\n\n renderBookmarksButton(userContext).then(bookmarkButton => {\n if (bookmarkButton) div.appendChild(bookmarkButton)\n })\n\n /** Button to allow user to express a sentiment (like, endorse, etc) about a target\n *\n * @param context {Object} - Provide dom and me\n * @param target {NamedNode} - The thing the user expresses an opnion about\n * @param icon {uristring} - The icon to be used for the button\n * @param actionClass {NamedNode} - The RDF class - typically a subclass of schema:Action\n * @param doc - {NamedNode} - the Solid document iunto which the data should be written\n * @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive\n */\n function sentimentButton (\n context,\n target,\n icon,\n actionClass,\n doc,\n mutuallyExclusive\n ) {\n function setColor () {\n button.style.backgroundColor = action ? 'yellow' : 'white'\n }\n const button = widgets.button(\n dom,\n icon,\n utils.label(actionClass),\n async function (_event) {\n if (action) {\n await deleteThingThen(action)\n action = null\n setColor()\n } else {\n // no action\n action = widgets.newThing(doc)\n const insertMe = [\n rdf.st(action, ns.schema('agent'), context.me, doc),\n rdf.st(action, ns.rdf('type'), actionClass, doc),\n rdf.st(action, ns.schema('target'), target, doc)\n ]\n await store.updater.update([], insertMe)\n setColor()\n\n if (mutuallyExclusive) {\n // Delete incompative sentiments\n let dirty = false\n for (let i = 0; i < mutuallyExclusive.length; i++) {\n const a = existingAction(mutuallyExclusive[i])\n if (a) {\n await deleteThingThen(a) // but how refresh? refreshTree the parent?\n dirty = true\n }\n }\n if (dirty) {\n // widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings\n widgets.refreshTree(messageRow) // requires them all to be immediate siblings\n }\n }\n }\n }\n )\n function existingAction (actionClass) {\n const actions = store\n .each(null, ns.schema('agent'), context.me, doc)\n .filter(x => store.holds(x, ns.rdf('type'), actionClass, doc))\n .filter(x => store.holds(x, ns.schema('target'), target, doc))\n return actions.length ? actions[0] : null\n }\n function refresh () {\n action = existingAction(actionClass)\n setColor()\n }\n let action\n button.refresh = refresh // If the file changes, refresh live\n refresh()\n return button\n }\n\n // THUMBS_UP_ICON\n // https://schema.org/AgreeAction\n me = authn.currentUser() // If already logged on\n // debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))\n\n if (me && (mostRecentVersion(message).value !== ns.schema('dateDeleted').value)) {\n const context1 = { me, dom, div }\n div.appendChild(\n sentimentButton(\n context1,\n message, // @@ TODO use widgets.sentimentButton\n icons.iconBase + THUMBS_UP_ICON,\n ns.schema('AgreeAction'),\n message.doc(),\n [ns.schema('DisagreeAction')]\n )\n )\n // Thumbs down\n div.appendChild(\n sentimentButton(\n context1,\n message,\n icons.iconBase + THUMBS_DOWN_ICON,\n ns.schema('DisagreeAction'),\n message.doc(),\n [ns.schema('AgreeAction')]\n )\n )\n }\n // X button to remove the tool UI itself\n const cancelButton = div.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'right'\n cancelButton.firstChild.style.opacity = '0.3'\n cancelButton.addEventListener('click', closeToolbar)\n return div\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"messageTools.js","names":["dom","window","document","PENCIL_ICON","THUMBS_UP_ICON","THUMBS_DOWN_ICON","emoji","ns","schema","sentimentStrip","target","doc","latest","mostRecentVersion","actions","store","holds","value","each","sentiments","map","a","any","rdf","sort","strings","x","createTextNode","join","sentimentStripLinked","strip","createElement","refresh","innerHTML","uri","forEach","ss","theClass","agent","res","setAttribute","textContent","appendChild","messageToolbar","message","messageRow","userContext","channelObject","deleteMessage","author","foaf","me","alert","sameTerm","msg","debug","warn","area","statusArea","parentNode","widgets","errorMessageBlock","removeChild","closeToolbar","editMessage","switchToEditor","div","parentElement","deleteThingThen","updater","update","connectedStatements","authn","currentUser","deleteButtonWithCheck","button","icons","iconBase","renderBookmarksButton","then","bookmarkButton","sentimentButton","context","icon","actionClass","mutuallyExclusive","setColor","style","backgroundColor","action","utils","label","_event","newThing","insertMe","st","dirty","i","length","existingAction","refreshTree","filter","context1","cancelButton","firstChild","opacity","addEventListener"],"sources":["../../src/chat/messageTools.js"],"sourcesContent":["/**\n * Tools for doing things with a message\n * Let us be creative here. Allow all sorts of things to\n * be done to a message - linking to new or old objects in an open way\n *\n * Ideas: Bookmark, Like, star, pin at top of chat, reply as new thread,\n * If you made it originally: edit, delete, attach\n * @packageDocumentation\n */\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\n// import { media } from '../media/index'\nimport * as ns from '../ns'\n// import * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n// import * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { renderBookmarksButton } from './bookmarks'\nimport { authn, store } from 'solid-logic'\n\nimport { mostRecentVersion } from './chatLogic'\nimport { switchToEditor } from './message'\n\nconst dom = window.document\n\n// THE UNUSED ICONS are here as reminders for possible future functionality\n// const BOOKMARK_ICON = 'noun_45961.svg'\n// const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites\n// const MENU_ICON = 'noun_897914.svg'\n// const PAPERCLIP_ICON = 'noun_25830.svg' -> add attachments to this message\n// const PIN_ICON = 'noun_562340.svg' -> pin this message permanently in the chat UI\nconst PENCIL_ICON = 'noun_253504.svg' // edit a message\n// const SPANNER_ICON = 'noun_344563.svg' -> settings\nconst THUMBS_UP_ICON = 'noun_1384132.svg'\nconst THUMBS_DOWN_ICON = 'noun_1384135.svg'\n/**\n * Emoji in Unicode\n */\nconst emoji = {}\nemoji[ns.schema('AgreeAction')] = '👍'\nemoji[ns.schema('DisagreeAction')] = '👎'\nemoji[ns.schema('EndorseAction')] = '⭐️'\nemoji[ns.schema('LikeAction')] = '❤️'\n\n/**\n * Create strip of sentiments expressed\n */\nexport function sentimentStrip (target, doc) { // alain seems not used\n const latest = mostRecentVersion(target)\n const actions = store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => store.any(a, ns.rdf('type'), null, doc))\n sentiments.sort()\n const strings = sentiments.map(x => emoji[x] || '')\n return dom.createTextNode(strings.join(' '))\n}\n/**\n * Create strip of sentiments expressed, with hyperlinks\n *\n * @param target {NamedNode} - The thing about which they are expressed\n * @param doc {NamedNode} - The document in which they are expressed\n */\nexport function sentimentStripLinked (target, doc) {\n const strip = dom.createElement('span')\n function refresh () {\n strip.innerHTML = ''\n const actions = (mostRecentVersion(target).uri !== ns.schema('dateDeleted').uri) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => [\n store.any(a, ns.rdf('type'), null, doc),\n store.any(a, ns.schema('agent'), null, doc)\n ])\n sentiments.sort()\n sentiments.forEach(ss => {\n const [theClass, agent] = ss\n let res\n if (agent) {\n res = dom.createElement('a')\n res.setAttribute('href', agent.uri)\n } else {\n res = dom.createTextNode('')\n }\n res.textContent = emoji[theClass] || '*'\n strip.appendChild(res)\n })\n }\n refresh()\n strip.refresh = refresh\n return strip\n}\n/**\n * Creates a message toolbar component\n */\nexport function messageToolbar (message, messageRow, userContext, channelObject) {\n async function deleteMessage () {\n const author = store.any(message, ns.foaf('maker'))\n if (!me) {\n alert('You can\\'t delete the message, you are not logged in.')\n } else if (me.sameTerm(author)) {\n try {\n await channelObject.deleteMessage(message)\n } catch (err) {\n const msg = 'Error deleting messaage ' + err\n debug.warn(msg)\n alert(msg)\n const area = userContext.statusArea || messageRow.parentNode\n area.appendChild(widgets.errorMessageBlock(dom, msg))\n }\n messageRow.parentNode.removeChild(messageRow)\n } else {\n alert('You can\\'t delete the message, you are not logged in as the author, ' + author)\n }\n closeToolbar()\n }\n\n async function editMessage (messageRow) {\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n closeToolbar() // edit is a one-off action\n switchToEditor(messageRow, message, channelObject, userContext)\n }\n }\n\n // alain TODO allow chat owner to fully delete message + sentiments and replacing messages\n\n const div = dom.createElement('div')\n // is message deleted ?\n if (mostRecentVersion(message).value === ns.schema('dateDeleted').value) return div\n function closeToolbar () {\n div.parentElement.parentElement.removeChild(div.parentElement) // remive the TR\n }\n\n async function deleteThingThen (x) {\n await store.updater.update(store.connectedStatements(x), [])\n }\n\n // Things only the original author can do\n let me = authn.currentUser() // If already logged on\n if (me && store.holds(message, ns.foaf('maker'), me)) {\n // button to delete the message\n div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage))\n // button to edit the message\n div.appendChild(widgets.button(dom, icons.iconBase + PENCIL_ICON, 'edit', () => editMessage(messageRow)))\n } // if mine\n // Things anyone can do if they have a bookmark list async\n /*\n var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)\n if (bookmarkButton) {\n div.appendChild(bookmarkButton)\n }\n */\n // Things anyone can do if they have a bookmark list\n\n renderBookmarksButton(userContext).then(bookmarkButton => {\n if (bookmarkButton) div.appendChild(bookmarkButton)\n })\n\n /** Button to allow user to express a sentiment (like, endorse, etc) about a target\n *\n * @param context {Object} - Provide dom and me\n * @param target {NamedNode} - The thing the user expresses an opnion about\n * @param icon {uristring} - The icon to be used for the button\n * @param actionClass {NamedNode} - The RDF class - typically a subclass of schema:Action\n * @param doc - {NamedNode} - the Solid document iunto which the data should be written\n * @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive\n */\n function sentimentButton (\n context,\n target,\n icon,\n actionClass,\n doc,\n mutuallyExclusive\n ) {\n function setColor () {\n button.style.backgroundColor = action ? 'yellow' : 'white'\n }\n const button = widgets.button(\n dom,\n icon,\n utils.label(actionClass),\n async function (_event) {\n if (action) {\n await deleteThingThen(action)\n action = null\n setColor()\n } else {\n // no action\n action = widgets.newThing(doc)\n const insertMe = [\n rdf.st(action, ns.schema('agent'), context.me, doc),\n rdf.st(action, ns.rdf('type'), actionClass, doc),\n rdf.st(action, ns.schema('target'), target, doc)\n ]\n await store.updater.update([], insertMe)\n setColor()\n\n if (mutuallyExclusive) {\n // Delete incompative sentiments\n let dirty = false\n for (let i = 0; i < mutuallyExclusive.length; i++) {\n const a = existingAction(mutuallyExclusive[i])\n if (a) {\n await deleteThingThen(a) // but how refresh? refreshTree the parent?\n dirty = true\n }\n }\n if (dirty) {\n // widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings\n widgets.refreshTree(messageRow) // requires them all to be immediate siblings\n }\n }\n }\n }\n )\n function existingAction (actionClass) {\n const actions = store\n .each(null, ns.schema('agent'), context.me, doc)\n .filter(x => store.holds(x, ns.rdf('type'), actionClass, doc))\n .filter(x => store.holds(x, ns.schema('target'), target, doc))\n return actions.length ? actions[0] : null\n }\n function refresh () {\n action = existingAction(actionClass)\n setColor()\n }\n let action\n button.refresh = refresh // If the file changes, refresh live\n refresh()\n return button\n }\n\n // THUMBS_UP_ICON\n // https://schema.org/AgreeAction\n me = authn.currentUser() // If already logged on\n // debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))\n\n if (me && (mostRecentVersion(message).value !== ns.schema('dateDeleted').value)) {\n const context1 = { me, dom, div }\n div.appendChild(\n sentimentButton(\n context1,\n message, // @@ TODO use widgets.sentimentButton\n icons.iconBase + THUMBS_UP_ICON,\n ns.schema('AgreeAction'),\n message.doc(),\n [ns.schema('DisagreeAction')]\n )\n )\n // Thumbs down\n div.appendChild(\n sentimentButton(\n context1,\n message,\n icons.iconBase + THUMBS_DOWN_ICON,\n ns.schema('DisagreeAction'),\n message.doc(),\n [ns.schema('AgreeAction')]\n )\n )\n }\n // X button to remove the tool UI itself\n const cancelButton = div.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'right'\n cancelButton.firstChild.style.opacity = '0.3'\n cancelButton.addEventListener('click', closeToolbar)\n return div\n}\n"],"mappings":"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"}
@@ -1,47 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.thread = thread;
11
-
12
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
-
14
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
11
  var _iconBase = require("../iconBase");
17
-
18
12
  var _solidLogic = require("solid-logic");
19
-
20
13
  var _index = require("../media/index");
21
-
22
14
  var ns = _interopRequireWildcard(require("../ns"));
23
-
24
15
  var login = _interopRequireWildcard(require("../login/login"));
25
-
26
16
  var pad = _interopRequireWildcard(require("../pad"));
27
-
28
17
  var $rdf = _interopRequireWildcard(require("rdflib"));
29
-
30
18
  var style = _interopRequireWildcard(require("../style"));
31
-
32
19
  var utils = _interopRequireWildcard(require("../utils"));
33
-
34
20
  var widgets = _interopRequireWildcard(require("../widgets"));
35
-
36
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
-
38
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
-
40
23
  /**
41
24
  * Contains the [[thread]] function
42
25
  * @packageDocumentation
43
26
  */
27
+
44
28
  // pull in first avoid cross-refs
29
+
45
30
  var UI = {
46
31
  icons: _iconBase.icons,
47
32
  ns: ns,
@@ -51,32 +36,30 @@ var UI = {
51
36
  utils: utils,
52
37
  widgets: widgets
53
38
  };
39
+
54
40
  /**
55
41
  * HTML component for a chat thread
56
42
  */
57
-
58
43
  function thread(dom, kb, subject, messageStore, options) {
59
44
  kb = kb || _solidLogic.store;
60
45
  messageStore = messageStore.doc(); // No hash
61
-
62
46
  var ns = UI.ns;
63
47
  var WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#');
64
48
  var DCT = $rdf.Namespace('http://purl.org/dc/terms/');
65
49
  options = options || {};
66
50
  var newestFirst = !!options.newestFirst;
67
- var messageBodyStyle = 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;'; // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'
68
-
69
- var div = dom.createElement('div'); // eslint-disable-next-line prefer-const
51
+ var messageBodyStyle = 'white-space: pre-wrap; width: 90%; font-size:100%; border: 0.07em solid #eee; padding: .2em 0.5em; margin: 0.1em 1em 0.1em 1em;';
52
+ // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'
70
53
 
54
+ var div = dom.createElement('div');
55
+ // eslint-disable-next-line prefer-const
71
56
  var messageTable; // Shared by initial build and addMessageFromBindings
72
57
 
73
58
  var me;
74
59
  var updater = _solidLogic.store.updater;
75
-
76
60
  var anchor = function anchor(text, term) {
77
61
  // If there is no link return an element anyway
78
62
  var a = dom.createElement('a');
79
-
80
63
  if (term && term.uri) {
81
64
  a.setAttribute('href', term.uri);
82
65
  a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true);
@@ -86,7 +69,6 @@ function thread(dom, kb, subject, messageStore, options) {
86
69
  a.textContent = text;
87
70
  return a;
88
71
  };
89
-
90
72
  var mention = function mention(message, style) {
91
73
  var pre = dom.createElement('pre');
92
74
  pre.setAttribute('style', style || 'color: grey');
@@ -94,7 +76,6 @@ function thread(dom, kb, subject, messageStore, options) {
94
76
  pre.appendChild(dom.createTextNode(message));
95
77
  return pre;
96
78
  };
97
-
98
79
  var announce = {
99
80
  log: function log(message) {
100
81
  mention(message, 'color: #111;');
@@ -106,10 +87,10 @@ function thread(dom, kb, subject, messageStore, options) {
106
87
  mention(message, 'color: #800;');
107
88
  }
108
89
  };
90
+
109
91
  /**
110
92
  * Form for a new message
111
93
  */
112
-
113
94
  var newMessageForm = function newMessageForm() {
114
95
  var form = dom.createElement('tr');
115
96
  var lhs = dom.createElement('td');
@@ -125,12 +106,10 @@ function thread(dom, kb, subject, messageStore, options) {
125
106
  // titlefield.disabled = true
126
107
  field.setAttribute('class', 'pendingedit');
127
108
  field.disabled = true;
128
-
129
109
  var _appendMsg = appendMsg(field.value),
130
- message = _appendMsg.message,
131
- dateStamp = _appendMsg.dateStamp,
132
- sts = _appendMsg.sts;
133
-
110
+ message = _appendMsg.message,
111
+ dateStamp = _appendMsg.dateStamp,
112
+ sts = _appendMsg.sts;
134
113
  var sendComplete = function sendComplete(uri, success, body) {
135
114
  if (!success) {
136
115
  form.appendChild(UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body));
@@ -144,25 +123,21 @@ function thread(dom, kb, subject, messageStore, options) {
144
123
  renderMessage(bindings, false); // not green
145
124
 
146
125
  field.value = ''; // clear from out for reuse
147
-
148
126
  field.setAttribute('class', '');
149
127
  field.disabled = false;
150
128
  }
151
129
  };
152
-
153
130
  updater.update([], sts, sendComplete);
154
131
  };
155
-
156
132
  form.appendChild(dom.createElement('br'));
157
133
  var field, sendButton;
158
-
159
134
  var turnOnInput = function turnOnInput() {
160
135
  creatorAndDate(lhs, me, '', null);
161
136
  field = dom.createElement('textarea');
162
137
  middle.innerHTML = '';
163
138
  middle.appendChild(field);
164
- field.rows = 3; // field.cols = 40
165
-
139
+ field.rows = 3;
140
+ // field.cols = 40
166
141
  field.setAttribute('style', messageBodyStyle + 'background-color: #eef;');
167
142
  field.addEventListener('keyup', function (e) {
168
143
  // User preference?
@@ -179,7 +154,6 @@ function thread(dom, kb, subject, messageStore, options) {
179
154
  sendButton.addEventListener('click', sendMessage, false);
180
155
  rhs.appendChild(sendButton);
181
156
  };
182
-
183
157
  var context = {
184
158
  div: middle,
185
159
  dom: dom
@@ -190,6 +164,7 @@ function thread(dom, kb, subject, messageStore, options) {
190
164
  });
191
165
  return form;
192
166
  };
167
+
193
168
  /* const sendMessage = function (oldMsg, options) { // alain
194
169
  // titlefield.setAttribute('class','pendingedit')
195
170
  // titlefield.disabled = true
@@ -249,7 +224,6 @@ function thread(dom, kb, subject, messageStore, options) {
249
224
  updater.update([], sts, sendComplete)
250
225
  } */
251
226
 
252
-
253
227
  var appendMsg = function appendMsg(fieldValue) {
254
228
  var oldMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
255
229
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
@@ -257,96 +231,80 @@ function thread(dom, kb, subject, messageStore, options) {
257
231
  var sts = [];
258
232
  var now = new Date();
259
233
  var timestamp = '' + now.getTime();
260
- var dateStamp = $rdf.term(now); // http://www.w3schools.com/jsref/jsref_obj_date.asp
261
-
234
+ var dateStamp = $rdf.term(now);
235
+ // http://www.w3schools.com/jsref/jsref_obj_date.asp
262
236
  var message = _solidLogic.store.sym(messageStore.uri + '#' + 'Msg' + timestamp);
263
-
264
237
  if (options === 'edit' || options === 'delete') {
265
238
  sts.push(new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore));
266
239
  } else {
267
240
  sts.push(new $rdf.Statement(subject, ns.wf('message'), message, messageStore));
268
- } // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))
269
-
270
-
241
+ }
242
+ // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))
271
243
  var msgBody = options !== 'delete' ? fieldValue : "message deleted\nby ".concat(nick(me));
272
244
  sts.push(new $rdf.Statement(message, ns.sioc('content'), _solidLogic.store.literal(msgBody), messageStore));
273
245
  sts.push(new $rdf.Statement(message, DCT('created'), dateStamp, messageStore));
274
-
275
246
  if (me) {
276
247
  sts.push(new $rdf.Statement(message, ns.foaf('maker'), me, messageStore));
277
248
  }
278
-
279
249
  return {
280
250
  message: message,
281
251
  dateStamp: dateStamp,
282
252
  sts: sts
283
253
  };
284
254
  };
285
-
286
255
  function nick(person) {
287
256
  var s = _solidLogic.store.any(person, UI.ns.foaf('nick'));
288
-
289
257
  if (s) return '' + s.value;
290
258
  return '' + utils.label(person);
291
259
  }
292
-
293
260
  function creatorAndDate(td1, creator, date, message) {
294
261
  var nickAnchor = td1.appendChild(anchor(nick(creator), creator));
295
-
296
262
  if (creator.uri) {
297
263
  _solidLogic.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (_ok, _body) {
298
264
  nickAnchor.textContent = nick(creator);
299
265
  });
300
266
  }
301
-
302
267
  td1.appendChild(dom.createElement('br'));
303
268
  td1.appendChild(anchor(date, message));
304
- } // ///////////////////////////////////////////////////////////////////////
269
+ }
305
270
 
271
+ // ///////////////////////////////////////////////////////////////////////
306
272
 
307
273
  function syncMessages(about, messageTable) {
308
274
  var displayed = {};
309
275
  var ele, ele2;
310
-
311
276
  for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {
312
277
  if (ele.AJAR_subject) {
313
278
  displayed[ele.AJAR_subject.uri] = true;
314
279
  }
315
280
  }
316
-
317
281
  var messages = _solidLogic.store.each(about, ns.wf('message'));
318
-
319
282
  var stored = {};
320
283
  messages.forEach(function (m) {
321
284
  stored[m.uri] = true;
322
-
323
285
  if (!displayed[m.uri]) {
324
286
  addMessage(m);
325
287
  }
326
- }); // eslint-disable-next-line space-in-parens
288
+ });
327
289
 
290
+ // eslint-disable-next-line space-in-parens
328
291
  for (ele = messageTable.firstChild; ele;) {
329
292
  ele2 = ele.nextSibling;
330
-
331
293
  if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {
332
294
  messageTable.removeChild(ele);
333
295
  }
334
-
335
296
  ele = ele2;
336
297
  }
337
298
  }
338
-
339
299
  var mostRecentVersion = function mostRecentVersion(message) {
340
- var msg = message; // const listMsg = []
341
-
300
+ var msg = message;
301
+ // const listMsg = []
342
302
  while (msg) {
343
303
  // listMsg.push(msg)
344
304
  msg = _solidLogic.store.statementsMatching(message, DCT('isReplacedBy'));
345
305
  }
346
-
347
306
  return msg;
348
307
  };
349
-
350
308
  var _deleteMessage = /*#__PURE__*/function () {
351
309
  var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(message) {
352
310
  var deletions;
@@ -356,7 +314,6 @@ function thread(dom, kb, subject, messageStore, options) {
356
314
  case 0:
357
315
  _context.next = 2;
358
316
  return _solidLogic.store.connectedStatements(message, messageStore);
359
-
360
317
  case 2:
361
318
  deletions = _context.sent;
362
319
  updater.update(deletions, [], function (uri, ok, body) {
@@ -366,7 +323,6 @@ function thread(dom, kb, subject, messageStore, options) {
366
323
  syncMessages(subject, messageTable);
367
324
  }
368
325
  });
369
-
370
326
  case 4:
371
327
  case "end":
372
328
  return _context.stop();
@@ -374,12 +330,10 @@ function thread(dom, kb, subject, messageStore, options) {
374
330
  }
375
331
  }, _callee);
376
332
  }));
377
-
378
333
  return function _deleteMessage(_x) {
379
334
  return _ref.apply(this, arguments);
380
335
  };
381
336
  }();
382
-
383
337
  var addMessage = function addMessage(message) {
384
338
  var bindings = {
385
339
  '?msg': message,
@@ -400,24 +354,20 @@ function thread(dom, kb, subject, messageStore, options) {
400
354
  tr.AJAR_date = dateString;
401
355
  tr.AJAR_subject = message;
402
356
  var done = false;
403
-
404
357
  for (var ele = messageTable.firstChild;; ele = ele.nextSibling) {
405
358
  if (!ele) {
406
359
  // empty
407
360
  break;
408
361
  }
409
-
410
362
  if (dateString > ele.AJAR_date && newestFirst || dateString < ele.AJAR_date && !newestFirst) {
411
363
  messageTable.insertBefore(tr, ele);
412
364
  done = true;
413
365
  break;
414
366
  }
415
367
  }
416
-
417
368
  if (!done) {
418
369
  messageTable.appendChild(tr);
419
370
  }
420
-
421
371
  var td1 = dom.createElement('td');
422
372
  tr.appendChild(td1);
423
373
  creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message);
@@ -433,12 +383,10 @@ function thread(dom, kb, subject, messageStore, options) {
433
383
  td3.appendChild(delButton);
434
384
  delButton.textContent = '-';
435
385
  tr.setAttribute('class', 'hoverControl'); // See tabbedtab.css (sigh global CSS)
436
-
437
386
  delButton.setAttribute('class', 'hoverControlHide');
438
387
  delButton.setAttribute('style', 'color: red;');
439
388
  delButton.addEventListener('click', function (_event) {
440
389
  td3.removeChild(delButton); // Ask -- are you sure?
441
-
442
390
  var cancelButton = dom.createElement('button');
443
391
  cancelButton.textContent = 'cancel';
444
392
  td3.appendChild(cancelButton).addEventListener('click', function (_event) {
@@ -451,19 +399,18 @@ function thread(dom, kb, subject, messageStore, options) {
451
399
  td3.appendChild(sureButton).addEventListener('click', function (_event) {
452
400
  // alain test for delete or edit depending on me = maker
453
401
  td3.removeChild(sureButton);
454
- td3.removeChild(cancelButton); // deleteMessage(message) // alain or sendMessage(message, 'delete' or 'edit') //alain
455
-
402
+ td3.removeChild(cancelButton);
403
+ // deleteMessage(message) // alain or sendMessage(message, 'delete' or 'edit') //alain
456
404
  if (me.value === _solidLogic.store.any(message, ns.foaf('maker')).value) {
457
405
  var _appendMsg2 = appendMsg(),
458
- sts = _appendMsg2.sts; // alain
459
-
460
-
406
+ sts = _appendMsg2.sts; // alain
461
407
  updater.update([], sts);
462
408
  }
463
409
  }, false);
464
410
  }, false);
465
- }; // Messages with date, author etc
411
+ };
466
412
 
413
+ // Messages with date, author etc
467
414
 
468
415
  messageTable = dom.createElement('table');
469
416
  messageTable.fresh = false;
@@ -471,21 +418,19 @@ function thread(dom, kb, subject, messageStore, options) {
471
418
  messageTable.setAttribute('style', 'width: 100%;'); // fill that div!
472
419
 
473
420
  var tr = newMessageForm();
474
-
475
421
  if (newestFirst) {
476
422
  messageTable.insertBefore(tr, messageTable.firstChild); // If newestFirst
477
423
  } else {
478
424
  messageTable.appendChild(tr); // not newestFirst
479
425
  }
480
426
 
481
- var query; // Do this with a live query to pull in messages from web
482
-
427
+ var query;
428
+ // Do this with a live query to pull in messages from web
483
429
  if (options.query) {
484
430
  query = options.query;
485
431
  } else {
486
432
  query = new $rdf.Query('Messages');
487
433
  var v = {}; // semicolon needed
488
-
489
434
  var vs = ['msg', 'date', 'creator', 'content'];
490
435
  vs.forEach(function (x) {
491
436
  query.vars.push(v[x] = $rdf.variable(x));
@@ -495,18 +440,15 @@ function thread(dom, kb, subject, messageStore, options) {
495
440
  query.pat.add(v.msg, ns.foaf('maker'), v.creator);
496
441
  query.pat.add(v.msg, ns.sioc('content'), v.content);
497
442
  }
498
-
499
443
  function doneQuery() {
500
444
  messageTable.fresh = true; // any new are fresh and so will be greenish
501
445
  }
502
446
 
503
447
  _solidLogic.store.query(query, renderMessage, undefined, doneQuery);
504
-
505
448
  div.refresh = function () {
506
449
  syncMessages(subject, messageTable);
507
- }; // syncMessages(subject, messageTable) // no the query will do this async
508
-
509
-
450
+ };
451
+ // syncMessages(subject, messageTable) // no the query will do this async
510
452
  return div;
511
453
  }
512
454
  //# sourceMappingURL=thread.js.map