solid-ui 2.4.23 → 2.4.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +2159 -5039
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.js +4 -67
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.js +59 -137
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.js +14 -54
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.js +32 -107
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.js +0 -92
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.js +1 -3
- package/lib/acl/index.js.map +1 -1
- package/lib/acl/styles.js +1 -2
- package/lib/acl/styles.js.map +1 -1
- package/lib/chat/bookmarks.js +8 -80
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +109 -180
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +6 -91
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +33 -185
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +37 -150
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +23 -96
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +33 -91
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.js +19 -51
- package/lib/create/create.js.map +1 -1
- package/lib/create/index.js +0 -2
- package/lib/create/index.js.map +1 -1
- package/lib/debug.js +0 -8
- package/lib/debug.js.map +1 -1
- package/lib/folders.js +4 -27
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +2 -24
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.js.map +1 -1
- package/lib/header/empty-profile.js.map +1 -1
- package/lib/header/index.js +3 -72
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.js +4 -3
- package/lib/header/styleMap.js.map +1 -1
- package/lib/iconBase.js +3 -4
- package/lib/iconBase.js.map +1 -1
- package/lib/index.js +5 -46
- package/lib/index.js.map +1 -1
- package/lib/jss/index.js +3 -9
- package/lib/jss/index.js.map +1 -1
- package/lib/log.js +15 -51
- package/lib/log.js.map +1 -1
- package/lib/login/login.js +74 -303
- package/lib/login/login.js.map +1 -1
- package/lib/matrix/index.js +0 -2
- package/lib/matrix/index.js.map +1 -1
- package/lib/matrix/matrix.js +7 -55
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/media/index.js +0 -2
- package/lib/media/index.js.map +1 -1
- package/lib/media/media-capture.js +13 -33
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js +23 -64
- package/lib/messageArea.js.map +1 -1
- package/lib/noun_Camera_1618446_000000.js.map +1 -1
- package/lib/ns.js +5 -7
- package/lib/ns.js.map +1 -1
- package/lib/pad.js +48 -234
- package/lib/pad.js.map +1 -1
- package/lib/participation.js +10 -65
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +21 -42
- package/lib/preferences.js.map +1 -1
- package/lib/signup/config-default.js +1 -8
- package/lib/signup/config-default.js.map +1 -1
- package/lib/signup/signup.js +6 -13
- package/lib/signup/signup.js.map +1 -1
- package/lib/stories/decorators.js +0 -2
- package/lib/stories/decorators.js.map +1 -1
- package/lib/style.js +8 -5
- package/lib/style.js.map +1 -1
- package/lib/style_multiSelect.js +1 -5
- package/lib/style_multiSelect.js.map +1 -1
- package/lib/table.js +309 -322
- package/lib/table.js.map +1 -1
- package/lib/tabs.js +20 -100
- package/lib/tabs.js.map +1 -1
- package/lib/utils/headerFooterHelpers.js +4 -52
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/index.js +41 -135
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +13 -34
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +4 -4
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.js +0 -8
- package/lib/widgets/buttons/iconLinks.js.map +1 -1
- package/lib/widgets/buttons.js +115 -291
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +12 -41
- package/lib/widgets/dragAndDrop.js.map +1 -1
- package/lib/widgets/error.js +3 -9
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +6 -55
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +12 -131
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.js +12 -55
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.js +1 -15
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +3 -16
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.js +0 -12
- package/lib/widgets/forms/fieldParams.js.map +1 -1
- package/lib/widgets/forms/formStyle.js +1 -14
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +70 -474
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js +0 -21
- package/lib/widgets/index.js.map +1 -1
- package/lib/widgets/multiSelect.js +48 -171
- package/lib/widgets/multiSelect.js.map +1 -1
- package/lib/widgets/peoplePicker.js +20 -90
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/lib/widgets/widgetHelpers.js +2 -9
- package/lib/widgets/widgetHelpers.js.map +1 -1
- package/package.json +28 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageTools.js","names":["dom","window","document","PENCIL_ICON","THUMBS_UP_ICON","THUMBS_DOWN_ICON","emoji","ns","schema","sentimentStrip","target","doc","latest","mostRecentVersion","actions","store","holds","value","each","sentiments","map","a","any","rdf","sort","strings","x","createTextNode","join","sentimentStripLinked","strip","createElement","refresh","innerHTML","uri","forEach","ss","theClass","agent","res","setAttribute","textContent","appendChild","messageToolbar","message","messageRow","userContext","channelObject","deleteMessage","author","foaf","me","alert","sameTerm","msg","debug","warn","area","statusArea","parentNode","widgets","errorMessageBlock","removeChild","closeToolbar","editMessage","switchToEditor","div","parentElement","deleteThingThen","updater","update","connectedStatements","authn","currentUser","deleteButtonWithCheck","button","icons","iconBase","renderBookmarksButton","then","bookmarkButton","sentimentButton","context","icon","actionClass","mutuallyExclusive","setColor","style","backgroundColor","action","utils","label","_event","newThing","insertMe","st","dirty","i","length","existingAction","refreshTree","filter","context1","cancelButton","firstChild","opacity","addEventListener"],"sources":["../../src/chat/messageTools.js"],"sourcesContent":["/**\n * Tools for doing things with a message\n * Let us be creative here. Allow all sorts of things to\n * be done to a message - linking to new or old objects in an open way\n *\n * Ideas: Bookmark, Like, star, pin at top of chat, reply as new thread,\n * If you made it originally: edit, delete, attach\n * @packageDocumentation\n */\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\n// import { media } from '../media/index'\nimport * as ns from '../ns'\n// import * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n// import * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { renderBookmarksButton } from './bookmarks'\nimport { authn, store } from 'solid-logic'\n\nimport { mostRecentVersion } from './chatLogic'\nimport { switchToEditor } from './message'\n\nconst dom = window.document\n\n// THE UNUSED ICONS are here as reminders for possible future functionality\n// const BOOKMARK_ICON = 'noun_45961.svg'\n// const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites\n// const MENU_ICON = 'noun_897914.svg'\n// const PAPERCLIP_ICON = 'noun_25830.svg' -> add attachments to this message\n// const PIN_ICON = 'noun_562340.svg' -> pin this message permanently in the chat UI\nconst PENCIL_ICON = 'noun_253504.svg' // edit a message\n// const SPANNER_ICON = 'noun_344563.svg' -> settings\nconst THUMBS_UP_ICON = 'noun_1384132.svg'\nconst THUMBS_DOWN_ICON = 'noun_1384135.svg'\n/**\n * Emoji in Unicode\n */\nconst emoji = {}\nemoji[ns.schema('AgreeAction')] = '👍'\nemoji[ns.schema('DisagreeAction')] = '👎'\nemoji[ns.schema('EndorseAction')] = '⭐️'\nemoji[ns.schema('LikeAction')] = '❤️'\n\n/**\n * Create strip of sentiments expressed\n */\nexport function sentimentStrip (target, doc) { // alain seems not used\n const latest = mostRecentVersion(target)\n const actions = store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => store.any(a, ns.rdf('type'), null, doc))\n sentiments.sort()\n const strings = sentiments.map(x => emoji[x] || '')\n return dom.createTextNode(strings.join(' '))\n}\n/**\n * Create strip of sentiments expressed, with hyperlinks\n *\n * @param target {NamedNode} - The thing about which they are expressed\n * @param doc {NamedNode} - The document in which they are expressed\n */\nexport function sentimentStripLinked (target, doc) {\n const strip = dom.createElement('span')\n function refresh () {\n strip.innerHTML = ''\n const actions = (mostRecentVersion(target).uri !== ns.schema('dateDeleted').uri) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => [\n store.any(a, ns.rdf('type'), null, doc),\n store.any(a, ns.schema('agent'), null, doc)\n ])\n sentiments.sort()\n sentiments.forEach(ss => {\n const [theClass, agent] = ss\n let res\n if (agent) {\n res = dom.createElement('a')\n res.setAttribute('href', agent.uri)\n } else {\n res = dom.createTextNode('')\n }\n res.textContent = emoji[theClass] || '*'\n strip.appendChild(res)\n })\n }\n refresh()\n strip.refresh = refresh\n return strip\n}\n/**\n * Creates a message toolbar component\n */\nexport function messageToolbar (message, messageRow, userContext, channelObject) {\n async function deleteMessage () {\n const author = store.any(message, ns.foaf('maker'))\n if (!me) {\n alert('You can\\'t delete the message, you are not logged in.')\n } else if (me.sameTerm(author)) {\n try {\n await channelObject.deleteMessage(message)\n } catch (err) {\n const msg = 'Error deleting messaage ' + err\n debug.warn(msg)\n alert(msg)\n const area = userContext.statusArea || messageRow.parentNode\n area.appendChild(widgets.errorMessageBlock(dom, msg))\n }\n messageRow.parentNode.removeChild(messageRow)\n } else {\n alert('You can\\'t delete the message, you are not logged in as the author, ' + author)\n }\n closeToolbar()\n }\n\n async function editMessage (messageRow) {\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n closeToolbar() // edit is a one-off action\n switchToEditor(messageRow, message, channelObject, userContext)\n }\n }\n\n // alain TODO allow chat owner to fully delete message + sentiments and replacing messages\n\n const div = dom.createElement('div')\n // is message deleted ?\n if (mostRecentVersion(message).value === ns.schema('dateDeleted').value) return div\n function closeToolbar () {\n div.parentElement.parentElement.removeChild(div.parentElement) // remive the TR\n }\n\n async function deleteThingThen (x) {\n await store.updater.update(store.connectedStatements(x), [])\n }\n\n // Things only the original author can do\n let me = authn.currentUser() // If already logged on\n if (me && store.holds(message, ns.foaf('maker'), me)) {\n // button to delete the message\n div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage))\n // button to edit the message\n div.appendChild(widgets.button(dom, icons.iconBase + PENCIL_ICON, 'edit', () => editMessage(messageRow)))\n } // if mine\n // Things anyone can do if they have a bookmark list async\n /*\n var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)\n if (bookmarkButton) {\n div.appendChild(bookmarkButton)\n }\n */\n // Things anyone can do if they have a bookmark list\n\n renderBookmarksButton(userContext).then(bookmarkButton => {\n if (bookmarkButton) div.appendChild(bookmarkButton)\n })\n\n /** Button to allow user to express a sentiment (like, endorse, etc) about a target\n *\n * @param context {Object} - Provide dom and me\n * @param target {NamedNode} - The thing the user expresses an opnion about\n * @param icon {uristring} - The icon to be used for the button\n * @param actionClass {NamedNode} - The RDF class - typically a subclass of schema:Action\n * @param doc - {NamedNode} - the Solid document iunto which the data should be written\n * @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive\n */\n function sentimentButton (\n context,\n target,\n icon,\n actionClass,\n doc,\n mutuallyExclusive\n ) {\n function setColor () {\n button.style.backgroundColor = action ? 'yellow' : 'white'\n }\n const button = widgets.button(\n dom,\n icon,\n utils.label(actionClass),\n async function (_event) {\n if (action) {\n await deleteThingThen(action)\n action = null\n setColor()\n } else {\n // no action\n action = widgets.newThing(doc)\n const insertMe = [\n rdf.st(action, ns.schema('agent'), context.me, doc),\n rdf.st(action, ns.rdf('type'), actionClass, doc),\n rdf.st(action, ns.schema('target'), target, doc)\n ]\n await store.updater.update([], insertMe)\n setColor()\n\n if (mutuallyExclusive) {\n // Delete incompative sentiments\n let dirty = false\n for (let i = 0; i < mutuallyExclusive.length; i++) {\n const a = existingAction(mutuallyExclusive[i])\n if (a) {\n await deleteThingThen(a) // but how refresh? refreshTree the parent?\n dirty = true\n }\n }\n if (dirty) {\n // widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings\n widgets.refreshTree(messageRow) // requires them all to be immediate siblings\n }\n }\n }\n }\n )\n function existingAction (actionClass) {\n const actions = store\n .each(null, ns.schema('agent'), context.me, doc)\n .filter(x => store.holds(x, ns.rdf('type'), actionClass, doc))\n .filter(x => store.holds(x, ns.schema('target'), target, doc))\n return actions.length ? actions[0] : null\n }\n function refresh () {\n action = existingAction(actionClass)\n setColor()\n }\n let action\n button.refresh = refresh // If the file changes, refresh live\n refresh()\n return button\n }\n\n // THUMBS_UP_ICON\n // https://schema.org/AgreeAction\n me = authn.currentUser() // If already logged on\n // debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))\n\n if (me && (mostRecentVersion(message).value !== ns.schema('dateDeleted').value)) {\n const context1 = { me, dom, div }\n div.appendChild(\n sentimentButton(\n context1,\n message, // @@ TODO use widgets.sentimentButton\n icons.iconBase + THUMBS_UP_ICON,\n ns.schema('AgreeAction'),\n message.doc(),\n [ns.schema('DisagreeAction')]\n )\n )\n // Thumbs down\n div.appendChild(\n sentimentButton(\n context1,\n message,\n icons.iconBase + THUMBS_DOWN_ICON,\n ns.schema('DisagreeAction'),\n message.doc(),\n [ns.schema('AgreeAction')]\n )\n )\n }\n // X button to remove the tool UI itself\n const cancelButton = div.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'right'\n cancelButton.firstChild.style.opacity = '0.3'\n cancelButton.addEventListener('click', closeToolbar)\n return div\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messageTools.js","names":["dom","window","document","PENCIL_ICON","THUMBS_UP_ICON","THUMBS_DOWN_ICON","emoji","ns","schema","sentimentStrip","target","doc","latest","mostRecentVersion","actions","store","holds","value","each","sentiments","map","a","any","rdf","sort","strings","x","createTextNode","join","sentimentStripLinked","strip","createElement","refresh","innerHTML","uri","forEach","ss","theClass","agent","res","setAttribute","textContent","appendChild","messageToolbar","message","messageRow","userContext","channelObject","deleteMessage","author","foaf","me","alert","sameTerm","msg","debug","warn","area","statusArea","parentNode","widgets","errorMessageBlock","removeChild","closeToolbar","editMessage","switchToEditor","div","parentElement","deleteThingThen","updater","update","connectedStatements","authn","currentUser","deleteButtonWithCheck","button","icons","iconBase","renderBookmarksButton","then","bookmarkButton","sentimentButton","context","icon","actionClass","mutuallyExclusive","setColor","style","backgroundColor","action","utils","label","_event","newThing","insertMe","st","dirty","i","length","existingAction","refreshTree","filter","context1","cancelButton","firstChild","opacity","addEventListener"],"sources":["../../src/chat/messageTools.js"],"sourcesContent":["/**\n * Tools for doing things with a message\n * Let us be creative here. Allow all sorts of things to\n * be done to a message - linking to new or old objects in an open way\n *\n * Ideas: Bookmark, Like, star, pin at top of chat, reply as new thread,\n * If you made it originally: edit, delete, attach\n * @packageDocumentation\n */\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\n// import { media } from '../media/index'\nimport * as ns from '../ns'\n// import * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n// import * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { renderBookmarksButton } from './bookmarks'\nimport { authn, store } from 'solid-logic'\n\nimport { mostRecentVersion } from './chatLogic'\nimport { switchToEditor } from './message'\n\nconst dom = window.document\n\n// THE UNUSED ICONS are here as reminders for possible future functionality\n// const BOOKMARK_ICON = 'noun_45961.svg'\n// const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites\n// const MENU_ICON = 'noun_897914.svg'\n// const PAPERCLIP_ICON = 'noun_25830.svg' -> add attachments to this message\n// const PIN_ICON = 'noun_562340.svg' -> pin this message permanently in the chat UI\nconst PENCIL_ICON = 'noun_253504.svg' // edit a message\n// const SPANNER_ICON = 'noun_344563.svg' -> settings\nconst THUMBS_UP_ICON = 'noun_1384132.svg'\nconst THUMBS_DOWN_ICON = 'noun_1384135.svg'\n/**\n * Emoji in Unicode\n */\nconst emoji = {}\nemoji[ns.schema('AgreeAction')] = '👍'\nemoji[ns.schema('DisagreeAction')] = '👎'\nemoji[ns.schema('EndorseAction')] = '⭐️'\nemoji[ns.schema('LikeAction')] = '❤️'\n\n/**\n * Create strip of sentiments expressed\n */\nexport function sentimentStrip (target, doc) { // alain seems not used\n const latest = mostRecentVersion(target)\n const actions = store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => store.any(a, ns.rdf('type'), null, doc))\n sentiments.sort()\n const strings = sentiments.map(x => emoji[x] || '')\n return dom.createTextNode(strings.join(' '))\n}\n/**\n * Create strip of sentiments expressed, with hyperlinks\n *\n * @param target {NamedNode} - The thing about which they are expressed\n * @param doc {NamedNode} - The document in which they are expressed\n */\nexport function sentimentStripLinked (target, doc) {\n const strip = dom.createElement('span')\n function refresh () {\n strip.innerHTML = ''\n const actions = (mostRecentVersion(target).uri !== ns.schema('dateDeleted').uri) ? store.each(null, ns.schema('target'), target, doc) : []\n const sentiments = actions.map(a => [\n store.any(a, ns.rdf('type'), null, doc),\n store.any(a, ns.schema('agent'), null, doc)\n ])\n sentiments.sort()\n sentiments.forEach(ss => {\n const [theClass, agent] = ss\n let res\n if (agent) {\n res = dom.createElement('a')\n res.setAttribute('href', agent.uri)\n } else {\n res = dom.createTextNode('')\n }\n res.textContent = emoji[theClass] || '*'\n strip.appendChild(res)\n })\n }\n refresh()\n strip.refresh = refresh\n return strip\n}\n/**\n * Creates a message toolbar component\n */\nexport function messageToolbar (message, messageRow, userContext, channelObject) {\n async function deleteMessage () {\n const author = store.any(message, ns.foaf('maker'))\n if (!me) {\n alert('You can\\'t delete the message, you are not logged in.')\n } else if (me.sameTerm(author)) {\n try {\n await channelObject.deleteMessage(message)\n } catch (err) {\n const msg = 'Error deleting messaage ' + err\n debug.warn(msg)\n alert(msg)\n const area = userContext.statusArea || messageRow.parentNode\n area.appendChild(widgets.errorMessageBlock(dom, msg))\n }\n messageRow.parentNode.removeChild(messageRow)\n } else {\n alert('You can\\'t delete the message, you are not logged in as the author, ' + author)\n }\n closeToolbar()\n }\n\n async function editMessage (messageRow) {\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n closeToolbar() // edit is a one-off action\n switchToEditor(messageRow, message, channelObject, userContext)\n }\n }\n\n // alain TODO allow chat owner to fully delete message + sentiments and replacing messages\n\n const div = dom.createElement('div')\n // is message deleted ?\n if (mostRecentVersion(message).value === ns.schema('dateDeleted').value) return div\n function closeToolbar () {\n div.parentElement.parentElement.removeChild(div.parentElement) // remive the TR\n }\n\n async function deleteThingThen (x) {\n await store.updater.update(store.connectedStatements(x), [])\n }\n\n // Things only the original author can do\n let me = authn.currentUser() // If already logged on\n if (me && store.holds(message, ns.foaf('maker'), me)) {\n // button to delete the message\n div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage))\n // button to edit the message\n div.appendChild(widgets.button(dom, icons.iconBase + PENCIL_ICON, 'edit', () => editMessage(messageRow)))\n } // if mine\n // Things anyone can do if they have a bookmark list async\n /*\n var bookmarkButton = await bookmarks.renderBookmarksButton(userContext)\n if (bookmarkButton) {\n div.appendChild(bookmarkButton)\n }\n */\n // Things anyone can do if they have a bookmark list\n\n renderBookmarksButton(userContext).then(bookmarkButton => {\n if (bookmarkButton) div.appendChild(bookmarkButton)\n })\n\n /** Button to allow user to express a sentiment (like, endorse, etc) about a target\n *\n * @param context {Object} - Provide dom and me\n * @param target {NamedNode} - The thing the user expresses an opnion about\n * @param icon {uristring} - The icon to be used for the button\n * @param actionClass {NamedNode} - The RDF class - typically a subclass of schema:Action\n * @param doc - {NamedNode} - the Solid document iunto which the data should be written\n * @param mutuallyExclusive {Array<NamedNode>} - Any RDF classes of sentimentswhich are mutiually exclusive\n */\n function sentimentButton (\n context,\n target,\n icon,\n actionClass,\n doc,\n mutuallyExclusive\n ) {\n function setColor () {\n button.style.backgroundColor = action ? 'yellow' : 'white'\n }\n const button = widgets.button(\n dom,\n icon,\n utils.label(actionClass),\n async function (_event) {\n if (action) {\n await deleteThingThen(action)\n action = null\n setColor()\n } else {\n // no action\n action = widgets.newThing(doc)\n const insertMe = [\n rdf.st(action, ns.schema('agent'), context.me, doc),\n rdf.st(action, ns.rdf('type'), actionClass, doc),\n rdf.st(action, ns.schema('target'), target, doc)\n ]\n await store.updater.update([], insertMe)\n setColor()\n\n if (mutuallyExclusive) {\n // Delete incompative sentiments\n let dirty = false\n for (let i = 0; i < mutuallyExclusive.length; i++) {\n const a = existingAction(mutuallyExclusive[i])\n if (a) {\n await deleteThingThen(a) // but how refresh? refreshTree the parent?\n dirty = true\n }\n }\n if (dirty) {\n // widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings\n widgets.refreshTree(messageRow) // requires them all to be immediate siblings\n }\n }\n }\n }\n )\n function existingAction (actionClass) {\n const actions = store\n .each(null, ns.schema('agent'), context.me, doc)\n .filter(x => store.holds(x, ns.rdf('type'), actionClass, doc))\n .filter(x => store.holds(x, ns.schema('target'), target, doc))\n return actions.length ? actions[0] : null\n }\n function refresh () {\n action = existingAction(actionClass)\n setColor()\n }\n let action\n button.refresh = refresh // If the file changes, refresh live\n refresh()\n return button\n }\n\n // THUMBS_UP_ICON\n // https://schema.org/AgreeAction\n me = authn.currentUser() // If already logged on\n // debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))\n\n if (me && (mostRecentVersion(message).value !== ns.schema('dateDeleted').value)) {\n const context1 = { me, dom, div }\n div.appendChild(\n sentimentButton(\n context1,\n message, // @@ TODO use widgets.sentimentButton\n icons.iconBase + THUMBS_UP_ICON,\n ns.schema('AgreeAction'),\n message.doc(),\n [ns.schema('DisagreeAction')]\n )\n )\n // Thumbs down\n div.appendChild(\n sentimentButton(\n context1,\n message,\n icons.iconBase + THUMBS_DOWN_ICON,\n ns.schema('DisagreeAction'),\n message.doc(),\n [ns.schema('AgreeAction')]\n )\n )\n }\n // X button to remove the tool UI itself\n const cancelButton = div.appendChild(widgets.cancelButton(dom))\n cancelButton.style.float = 'right'\n cancelButton.firstChild.style.opacity = '0.3'\n cancelButton.addEventListener('click', closeToolbar)\n return div\n}\n"],"mappings":"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"}
|
package/lib/chat/thread.js
CHANGED
|
@@ -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;';
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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;
|
|
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);
|
|
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
|
-
}
|
|
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
|
-
});
|
|
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;
|
|
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);
|
|
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
|
-
|
|
459
|
-
|
|
460
|
-
|
|
406
|
+
sts = _appendMsg2.sts; // alain
|
|
461
407
|
updater.update([], sts);
|
|
462
408
|
}
|
|
463
409
|
}, false);
|
|
464
410
|
}, false);
|
|
465
|
-
};
|
|
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;
|
|
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
|
-
};
|
|
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
|