solid-ui 2.4.15 → 2.4.16-9d83fb17

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/chat/messageTools.js"],"names":["UI","authn","icons","ns","media","pad","rdf","store","style","utils","widgets","dom","window","document","kb","THUMBS_UP_ICON","THUMBS_DOWN_ICON","updatePromise","del","ins","Promise","resolve","reject","updater","update","uri","ok","errorBody","Error","emoji","schema","sentimentStrip","target","doc","actions","each","sentiments","map","a","any","sort","strings","x","createTextNode","join","sentimentStripLinked","strip","createElement","refresh","innerHTML","forEach","ss","theClass","agent","res","setAttribute","textContent","appendChild","messageToolbar","message","messageRow","userContext","div","closeToolbar","parentElement","removeChild","deleteThingThen","connectedStatements","me","currentUser","holds","foaf","deleteButton","deleteButtonWithCheck","then","bookmarkButton","sentimentButton","context","icon","actionClass","mutuallyExclusive","setColor","button","backgroundColor","action","label","_event","newThing","insertMe","$rdf","st","dirty","i","length","existingAction","refreshTree","filter","context1","iconBase","cancelButton","firstChild","opacity","addEventListener"],"mappings":"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","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 */\n/* global $rdf */\n\nimport { authn } from '../authn/index'\nimport { icons } from '../iconBase'\nimport { store } from '../logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { renderBookmarksButton } from './bookmarks'\n\nconst UI = { authn, icons, ns, media, pad, rdf, store, style, utils, widgets }\n\nconst dom = window.document\n\nconst kb = store\n// const label = UI.utils.label\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\n// const PENCIL_ICON = 'noun_253504.svg'\n// const SPANNER_ICON = 'noun_344563.svg' -> settings\nconst THUMBS_UP_ICON = 'noun_1384132.svg'\nconst THUMBS_DOWN_ICON = 'noun_1384135.svg'\n\n// module.export = { messageTools, sentimentStripLinked, sentimentStrip }\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n kb.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/**\n * Emoji in Unicode\n */\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) {\n const actions = kb.each(null, ns.schema('target'), target, doc)\n const sentiments = actions.map(a => kb.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 = kb.each(null, ns.schema('target'), target, doc)\n const sentiments = actions.map(a => [\n kb.any(a, ns.rdf('type'), null, doc),\n kb.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/**\n * Creates a message toolbar component\n */\nexport function messageToolbar (message, messageRow, userContext) {\n const div = dom.createElement('div')\n function closeToolbar () {\n div.parentElement.parentElement.removeChild(div.parentElement) // remive the TR\n }\n\n async function deleteThingThen (x) {\n await updatePromise(kb.connectedStatements(x), [])\n }\n\n // Things only the original author can do\n let me = UI.authn.currentUser() // If already logged on\n if (me && kb.holds(message, ns.foaf('maker'), me)) {\n // button to delete the message\n const deleteButton = UI.widgets.deleteButtonWithCheck(\n dom,\n div,\n 'message',\n async function () {\n await kb.updater.update(kb.connectedStatements[message], [])\n closeToolbar()\n }\n )\n div.appendChild(deleteButton)\n } // if mine\n\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 = UI.widgets.button(\n dom,\n icon,\n UI.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 = UI.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 updatePromise([], 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 // UI.widgets.refreshTree(button.parentNode) // requires them all to be immediate siblings\n UI.widgets.refreshTree(messageRow) // requires them all to be immediate siblings\n }\n }\n }\n }\n )\n function existingAction (actionClass) {\n const actions = kb\n .each(null, ns.schema('agent'), context.me, doc)\n .filter(x => kb.holds(x, ns.rdf('type'), actionClass, doc))\n .filter(x => kb.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 = UI.authn.currentUser() // If already logged on\n if (me) {\n // Things you mnust be logged in for\n const context1 = { me, dom, div }\n div.appendChild(\n sentimentButton(\n context1,\n message, // @@ TODO use UI.widgets.sentimentButton\n UI.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 UI.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(UI.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"],"file":"messageTools.js"}
1
+ {"version":3,"sources":["../../src/chat/messageTools.js"],"names":["dom","window","document","PENCIL_ICON","THUMBS_UP_ICON","THUMBS_DOWN_ICON","emoji","ns","schema","sentimentStrip","target","doc","latest","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","div","parentElement","deleteThingThen","updater","update","connectedStatements","authn","currentUser","deleteButtonWithCheck","button","icons","iconBase","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"],"mappings":"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","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 { authn } from '../authn/index'\nimport { icons } from '../iconBase'\nimport { store } from '../logic'\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 { mostRecentVersion } from './chatLogic'\nimport { switchToEditor } from './message'\n\n// import { infiniteMessageArea } from './infinite.js'\n// import { renderMessage, creatorAndDate } from './message'\n// import * as debug from '../debug'\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"],"file":"messageTools.js"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  var _typeof = require("@babel/runtime/helpers/typeof");
4
6
 
5
7
  Object.defineProperty(exports, "__esModule", {
@@ -7,6 +9,10 @@ Object.defineProperty(exports, "__esModule", {
7
9
  });
8
10
  exports.thread = thread;
9
11
 
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
10
16
  var _index = require("../authn/index");
11
17
 
12
18
  var _iconBase = require("../iconBase");
@@ -51,8 +57,8 @@ var UI = {
51
57
  * HTML component for a chat thread
52
58
  */
53
59
 
54
- function thread(dom, kb, subject, messageStore, options) {
55
- kb = kb || UI.store;
60
+ function thread(dom, store, subject, messageStore, options) {
61
+ store = store || UI.store;
56
62
  messageStore = messageStore.doc(); // No hash
57
63
 
58
64
  var ns = UI.ns;
@@ -121,20 +127,11 @@ function thread(dom, kb, subject, messageStore, options) {
121
127
  // titlefield.disabled = true
122
128
  field.setAttribute('class', 'pendingedit');
123
129
  field.disabled = true;
124
- var sts = [];
125
- var now = new Date();
126
- var timestamp = '' + now.getTime();
127
- var dateStamp = $rdf.term(now); // http://www.w3schools.com/jsref/jsref_obj_date.asp
128
-
129
- var message = kb.sym(messageStore.uri + '#' + 'Msg' + timestamp);
130
- sts.push(new $rdf.Statement(subject, ns.wf('message'), message, messageStore)); // sts.push(new $rdf.Statement(message, ns.dc('title'), kb.literal(titlefield.value), messageStore))
131
-
132
- sts.push(new $rdf.Statement(message, ns.sioc('content'), kb.literal(field.value), messageStore));
133
- sts.push(new $rdf.Statement(message, DCT('created'), dateStamp, messageStore));
134
130
 
135
- if (me) {
136
- sts.push(new $rdf.Statement(message, ns.foaf('maker'), me, messageStore));
137
- }
131
+ var _appendMsg = appendMsg(field.value),
132
+ message = _appendMsg.message,
133
+ dateStamp = _appendMsg.dateStamp,
134
+ sts = _appendMsg.sts;
138
135
 
139
136
  var sendComplete = function sendComplete(uri, success, body) {
140
137
  if (!success) {
@@ -142,7 +139,7 @@ function thread(dom, kb, subject, messageStore, options) {
142
139
  } else {
143
140
  var bindings = {
144
141
  '?msg': message,
145
- '?content': kb.literal(field.value),
142
+ '?content': store.literal(field.value),
146
143
  '?date': dateStamp,
147
144
  '?creator': me
148
145
  };
@@ -195,6 +192,98 @@ function thread(dom, kb, subject, messageStore, options) {
195
192
  });
196
193
  return form;
197
194
  };
195
+ /* const sendMessage = function (oldMsg, options) { // alain
196
+ // titlefield.setAttribute('class','pendingedit')
197
+ // titlefield.disabled = true
198
+ field.setAttribute('class', 'pendingedit')
199
+ field.disabled = true
200
+ const sts = []
201
+ const now = new Date()
202
+ const timestamp = '' + now.getTime()
203
+ const dateStamp = $rdf.term(now)
204
+ // http://www.w3schools.com/jsref/jsref_obj_date.asp
205
+ const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)
206
+ if (options === 'edit' || options === 'delete') {
207
+ sts.push(
208
+ new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)
209
+ )
210
+ } else {
211
+ sts.push(
212
+ new $rdf.Statement(subject, ns.wf('message'), message, messageStore)
213
+ )
214
+ }
215
+ // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))
216
+ const msgBody = options !== 'delete' ? field.value : `message deleted\nby ${nick(me)}`
217
+ sts.push(
218
+ new $rdf.Statement(
219
+ message,
220
+ ns.sioc('content'),
221
+ store.literal(msgBody),
222
+ messageStore
223
+ )
224
+ )
225
+ sts.push(
226
+ new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)
227
+ )
228
+ if (me) {
229
+ sts.push(
230
+ new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)
231
+ )
232
+ }
233
+ const sendComplete = function (uri, success, body) {
234
+ if (!success) {
235
+ form.appendChild(
236
+ UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)
237
+ )
238
+ } else {
239
+ const bindings = {
240
+ '?msg': message,
241
+ '?content': store.literal(field.value),
242
+ '?date': dateStamp,
243
+ '?creator': me
244
+ }
245
+ renderMessage(bindings, false) // not green
246
+ field.value = '' // clear from out for reuse
247
+ field.setAttribute('class', '')
248
+ field.disabled = false
249
+ }
250
+ }
251
+ updater.update([], sts, sendComplete)
252
+ } */
253
+
254
+
255
+ var appendMsg = function appendMsg(fieldValue) {
256
+ var oldMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
257
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
258
+ // alain
259
+ var sts = [];
260
+ var now = new Date();
261
+ var timestamp = '' + now.getTime();
262
+ var dateStamp = $rdf.term(now); // http://www.w3schools.com/jsref/jsref_obj_date.asp
263
+
264
+ var message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp);
265
+
266
+ if (options === 'edit' || options === 'delete') {
267
+ sts.push(new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore));
268
+ } else {
269
+ sts.push(new $rdf.Statement(subject, ns.wf('message'), message, messageStore));
270
+ } // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))
271
+
272
+
273
+ var msgBody = options !== 'delete' ? fieldValue : "message deleted\nby ".concat(nick(me));
274
+ sts.push(new $rdf.Statement(message, ns.sioc('content'), store.literal(msgBody), messageStore));
275
+ sts.push(new $rdf.Statement(message, DCT('created'), dateStamp, messageStore));
276
+
277
+ if (me) {
278
+ sts.push(new $rdf.Statement(message, ns.foaf('maker'), me, messageStore));
279
+ }
280
+
281
+ return {
282
+ message: message,
283
+ dateStamp: dateStamp,
284
+ sts: sts
285
+ };
286
+ };
198
287
 
199
288
  function nick(person) {
200
289
  var s = UI.store.any(person, UI.ns.foaf('nick'));
@@ -226,7 +315,7 @@ function thread(dom, kb, subject, messageStore, options) {
226
315
  }
227
316
  }
228
317
 
229
- var messages = kb.each(about, ns.wf('message'));
318
+ var messages = store.each(about, ns.wf('message'));
230
319
  var stored = {};
231
320
  messages.forEach(function (m) {
232
321
  stored[m.uri] = true;
@@ -247,23 +336,56 @@ function thread(dom, kb, subject, messageStore, options) {
247
336
  }
248
337
  }
249
338
 
250
- var deleteMessage = function deleteMessage(message) {
251
- var deletions = kb.statementsMatching(message).concat(kb.statementsMatching(undefined, undefined, message));
252
- updater.update(deletions, [], function (uri, ok, body) {
253
- if (!ok) {
254
- announce.error('Cant delete messages:' + body);
255
- } else {
256
- syncMessages(subject, messageTable);
257
- }
258
- });
339
+ var mostRecentVersion = function mostRecentVersion(message) {
340
+ var msg = message; // const listMsg = []
341
+
342
+ while (msg) {
343
+ // listMsg.push(msg)
344
+ msg = store.statementsMatching(message, DCT('isReplacedBy'));
345
+ }
346
+
347
+ return msg;
259
348
  };
260
349
 
350
+ var _deleteMessage = /*#__PURE__*/function () {
351
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(message) {
352
+ var deletions;
353
+ return _regenerator["default"].wrap(function _callee$(_context) {
354
+ while (1) {
355
+ switch (_context.prev = _context.next) {
356
+ case 0:
357
+ _context.next = 2;
358
+ return store.connectedStatements(message, messageStore);
359
+
360
+ case 2:
361
+ deletions = _context.sent;
362
+ updater.update(deletions, [], function (uri, ok, body) {
363
+ if (!ok) {
364
+ announce.error('Cant delete messages:' + body);
365
+ } else {
366
+ syncMessages(subject, messageTable);
367
+ }
368
+ });
369
+
370
+ case 4:
371
+ case "end":
372
+ return _context.stop();
373
+ }
374
+ }
375
+ }, _callee);
376
+ }));
377
+
378
+ return function _deleteMessage(_x) {
379
+ return _ref.apply(this, arguments);
380
+ };
381
+ }();
382
+
261
383
  var addMessage = function addMessage(message) {
262
384
  var bindings = {
263
385
  '?msg': message,
264
- '?creator': kb.any(message, ns.foaf('maker')),
265
- '?date': kb.any(message, DCT('created')),
266
- '?content': kb.any(message, ns.sioc('content'))
386
+ '?creator': store.any(message, ns.foaf('maker')),
387
+ '?date': store.any(message, DCT('created')),
388
+ '?content': store.any(message, ns.sioc('content'))
267
389
  };
268
390
  renderMessage(bindings, true); // fresh from elsewhere
269
391
  };
@@ -327,9 +449,17 @@ function thread(dom, kb, subject, messageStore, options) {
327
449
  var sureButton = dom.createElement('button');
328
450
  sureButton.textContent = 'Delete message';
329
451
  td3.appendChild(sureButton).addEventListener('click', function (_event) {
452
+ // alain test for delete or edit depending on me = maker
330
453
  td3.removeChild(sureButton);
331
- td3.removeChild(cancelButton);
332
- deleteMessage(message);
454
+ td3.removeChild(cancelButton); // deleteMessage(message) // alain or sendMessage(message, 'delete' or 'edit') //alain
455
+
456
+ if (me.value === store.any(message, ns.foaf('maker')).value) {
457
+ var _appendMsg2 = appendMsg(),
458
+ sts = _appendMsg2.sts; // alain
459
+
460
+
461
+ updater.update([], sts);
462
+ }
333
463
  }, false);
334
464
  }, false);
335
465
  }; // Messages with date, author etc
@@ -370,7 +500,7 @@ function thread(dom, kb, subject, messageStore, options) {
370
500
  messageTable.fresh = true; // any new are fresh and so will be greenish
371
501
  }
372
502
 
373
- kb.query(query, renderMessage, undefined, doneQuery);
503
+ store.query(query, renderMessage, undefined, doneQuery);
374
504
 
375
505
  div.refresh = function () {
376
506
  syncMessages(subject, messageTable);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/chat/thread.js"],"names":["UI","authn","icons","ns","media","pad","store","style","utils","widgets","thread","dom","kb","subject","messageStore","options","doc","WF","$rdf","Namespace","DCT","newestFirst","messageBodyStyle","div","createElement","messageTable","me","updater","anchor","text","term","a","uri","setAttribute","addEventListener","openHrefInOutlineMode","textContent","mention","message","pre","appendChild","createTextNode","announce","log","warn","error","newMessageForm","form","lhs","middle","rhs","AJAR_date","sendMessage","field","disabled","sts","now","Date","timestamp","getTime","dateStamp","sym","push","Statement","wf","sioc","literal","value","foaf","sendComplete","success","body","errorMessageBlock","bindings","renderMessage","update","sendButton","turnOnInput","creatorAndDate","innerHTML","rows","e","keyCode","altKey","button","iconBase","buttonStyle","context","logIn","then","nick","person","s","any","label","td1","creator","date","nickAnchor","fetcher","nowOrWhenFetched","undefined","_ok","_body","syncMessages","about","displayed","ele","ele2","firstChild","nextSibling","AJAR_subject","messages","each","stored","forEach","m","addMessage","removeChild","deleteMessage","deletions","statementsMatching","concat","ok","fresh","content","dateString","tr","done","insertBefore","shortDate","td2","td3","delButton","_event","cancelButton","sureButton","query","Query","v","vs","x","vars","variable","pat","add","msg","dct","doneQuery","refresh"],"mappings":"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","sourcesContent":["/**\n * Contains the [[thread]] function\n * @packageDocumentation\n */\n\nimport { authn } from '../authn/index'\nimport { icons } from '../iconBase'\nimport { store } from '../logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst UI = { authn, icons, ns, media, pad, store, style, utils, widgets }\n\n/**\n * HTML component for a chat thread\n */\nexport function thread (dom, kb, subject, messageStore, options) {\n kb = kb || UI.store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = $rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n '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;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = UI.store.updater\n\n const 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', UI.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\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n /**\n * Form for a new message\n */\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = kb.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n // sts.push(new $rdf.Statement(message, ns.dc('title'), kb.literal(titlefield.value), messageStore))\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n kb.literal(field.value),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': kb.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom: dom }\n UI.authn.logIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n function nick (person) {\n const s = UI.store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n UI.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n }\n\n // ///////////////////////////////////////////////////////////////////////\n\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = kb.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n // eslint-disable-next-line space-in-parens\n for (ele = messageTable.firstChild; ele; ) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n }\n const deleteMessage = function (message) {\n const deletions = kb\n .statementsMatching(message)\n .concat(kb.statementsMatching(undefined, undefined, message))\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': kb.any(message, ns.foaf('maker')),\n '?date': kb.any(message, DCT('created')),\n '?content': kb.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n deleteMessage(message)\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new $rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n kb.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"file":"thread.js"}
1
+ {"version":3,"sources":["../../src/chat/thread.js"],"names":["UI","authn","icons","ns","media","pad","store","style","utils","widgets","thread","dom","subject","messageStore","options","doc","WF","$rdf","Namespace","DCT","newestFirst","messageBodyStyle","div","createElement","messageTable","me","updater","anchor","text","term","a","uri","setAttribute","addEventListener","openHrefInOutlineMode","textContent","mention","message","pre","appendChild","createTextNode","announce","log","warn","error","newMessageForm","form","lhs","middle","rhs","AJAR_date","sendMessage","field","disabled","appendMsg","value","dateStamp","sts","sendComplete","success","body","errorMessageBlock","bindings","literal","renderMessage","update","sendButton","turnOnInput","creatorAndDate","innerHTML","rows","e","keyCode","altKey","button","iconBase","buttonStyle","context","logIn","then","fieldValue","oldMsg","now","Date","timestamp","getTime","sym","push","Statement","mostRecentVersion","wf","msgBody","nick","sioc","foaf","person","s","any","label","td1","creator","date","nickAnchor","fetcher","nowOrWhenFetched","undefined","_ok","_body","syncMessages","about","displayed","ele","ele2","firstChild","nextSibling","AJAR_subject","messages","each","stored","forEach","m","addMessage","removeChild","msg","statementsMatching","_deleteMessage","connectedStatements","deletions","ok","fresh","content","dateString","tr","done","insertBefore","shortDate","td2","td3","delButton","_event","cancelButton","sureButton","query","Query","v","vs","x","vars","variable","pat","add","dct","doneQuery","refresh"],"mappings":"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","sourcesContent":["/**\n * Contains the [[thread]] function\n * @packageDocumentation\n */\n\nimport { authn } from '../authn/index'\nimport { icons } from '../iconBase'\nimport { store } from '../logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst UI = { authn, icons, ns, media, pad, store, style, utils, widgets }\n\n/**\n * HTML component for a chat thread\n */\nexport function thread (dom, store, subject, messageStore, options) {\n store = store || UI.store\n messageStore = messageStore.doc() // No hash\n const ns = UI.ns\n const WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#')\n const DCT = $rdf.Namespace('http://purl.org/dc/terms/')\n\n options = options || {}\n\n const newestFirst = !!options.newestFirst\n\n const messageBodyStyle =\n '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;'\n // 'font-size: 100%; margin: 0.1em 1em 0.1em 1em; background-color: white; white-space: pre-wrap; padding: 0.1em;'\n\n const div = dom.createElement('div')\n // eslint-disable-next-line prefer-const\n let messageTable // Shared by initial build and addMessageFromBindings\n\n let me\n\n const updater = UI.store.updater\n\n const 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', UI.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\n const mention = function mention (message, style) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', style || 'color: grey')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n return pre\n }\n\n const announce = {\n log: function (message) {\n mention(message, 'color: #111;')\n },\n warn: function (message) {\n mention(message, 'color: #880;')\n },\n error: function (message) {\n mention(message, 'color: #800;')\n }\n }\n\n /**\n * Form for a new message\n */\n const newMessageForm = function () {\n const form = dom.createElement('tr')\n const lhs = dom.createElement('td')\n const middle = dom.createElement('td')\n const rhs = dom.createElement('td')\n form.appendChild(lhs)\n form.appendChild(middle)\n form.appendChild(rhs)\n form.AJAR_date = '9999-01-01T00:00:00Z' // ISO format for field sort\n\n const sendMessage = function () {\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const { message, dateStamp, sts } = appendMsg(field.value)\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n }\n form.appendChild(dom.createElement('br'))\n\n let field, sendButton\n const turnOnInput = function () {\n creatorAndDate(lhs, me, '', null)\n\n field = dom.createElement('textarea')\n middle.innerHTML = ''\n middle.appendChild(field)\n field.rows = 3\n // field.cols = 40\n field.setAttribute('style', messageBodyStyle + 'background-color: #eef;')\n\n field.addEventListener(\n 'keyup',\n function (e) {\n // User preference?\n if (e.keyCode === 13) {\n if (!e.altKey) {\n // Alt-Enter just adds a new line\n sendMessage()\n }\n }\n },\n false\n )\n\n rhs.innerHTML = ''\n sendButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + 'noun_383448.svg',\n 'Send'\n )\n sendButton.setAttribute('style', UI.style.buttonStyle + 'float: right;')\n sendButton.addEventListener('click', sendMessage, false)\n rhs.appendChild(sendButton)\n }\n\n const context = { div: middle, dom: dom }\n UI.authn.logIn(context).then(context => {\n me = context.me\n turnOnInput()\n })\n\n return form\n }\n\n /* const sendMessage = function (oldMsg, options) { // alain\n // titlefield.setAttribute('class','pendingedit')\n // titlefield.disabled = true\n field.setAttribute('class', 'pendingedit')\n field.disabled = true\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? field.value : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n\n const sendComplete = function (uri, success, body) {\n if (!success) {\n form.appendChild(\n UI.widgets.errorMessageBlock(dom, 'Error writing message: ' + body)\n )\n } else {\n const bindings = {\n '?msg': message,\n '?content': store.literal(field.value),\n '?date': dateStamp,\n '?creator': me\n }\n renderMessage(bindings, false) // not green\n\n field.value = '' // clear from out for reuse\n field.setAttribute('class', '')\n field.disabled = false\n }\n }\n updater.update([], sts, sendComplete)\n } */\n\n const appendMsg = function (fieldValue, oldMsg = {}, options = '') { // alain\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n // http://www.w3schools.com/jsref/jsref_obj_date.asp\n const message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp)\n\n if (options === 'edit' || options === 'delete') {\n sts.push(\n new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore)\n )\n } else {\n sts.push(\n new $rdf.Statement(subject, ns.wf('message'), message, messageStore)\n )\n }\n // sts.push(new $rdf.Statement(message, ns.dc('title'), store.literal(titlefield.value), messageStore))\n const msgBody = options !== 'delete' ? fieldValue : `message deleted\\nby ${nick(me)}`\n sts.push(\n new $rdf.Statement(\n message,\n ns.sioc('content'),\n store.literal(msgBody),\n messageStore\n )\n )\n sts.push(\n new $rdf.Statement(message, DCT('created'), dateStamp, messageStore)\n )\n if (me) {\n sts.push(\n new $rdf.Statement(message, ns.foaf('maker'), me, messageStore)\n )\n }\n return { message, dateStamp, sts }\n }\n\n function nick (person) {\n const s = UI.store.any(person, UI.ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n }\n\n function creatorAndDate (td1, creator, date, message) {\n const nickAnchor = td1.appendChild(anchor(nick(creator), creator))\n if (creator.uri) {\n UI.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (\n _ok,\n _body\n ) {\n nickAnchor.textContent = nick(creator)\n })\n }\n td1.appendChild(dom.createElement('br'))\n td1.appendChild(anchor(date, message))\n }\n\n // ///////////////////////////////////////////////////////////////////////\n\n function syncMessages (about, messageTable) {\n const displayed = {}\n let ele, ele2\n for (ele = messageTable.firstChild; ele; ele = ele.nextSibling) {\n if (ele.AJAR_subject) {\n displayed[ele.AJAR_subject.uri] = true\n }\n }\n const messages = store.each(about, ns.wf('message'))\n const stored = {}\n messages.forEach(function (m) {\n stored[m.uri] = true\n if (!displayed[m.uri]) {\n addMessage(m)\n }\n })\n\n // eslint-disable-next-line space-in-parens\n for (ele = messageTable.firstChild; ele; ) {\n ele2 = ele.nextSibling\n if (ele.AJAR_subject && !stored[ele.AJAR_subject.uri]) {\n messageTable.removeChild(ele)\n }\n ele = ele2\n }\n }\n\n const mostRecentVersion = function (message) {\n let msg = message\n // const listMsg = []\n while (msg) {\n // listMsg.push(msg)\n msg = store.statementsMatching(message, DCT('isReplacedBy'))\n }\n return msg\n }\n\n const _deleteMessage = async function (message) { // alain: must delete message and all linked with isReplacedBy\n // alain: check that me is not the author and ask for confirmation.\n const deletions = await store.connectedStatements(message, messageStore)\n updater.update(deletions, [], function (uri, ok, body) {\n if (!ok) {\n announce.error('Cant delete messages:' + body)\n } else {\n syncMessages(subject, messageTable)\n }\n })\n }\n\n const addMessage = function (message) {\n const bindings = {\n '?msg': message,\n '?creator': store.any(message, ns.foaf('maker')),\n '?date': store.any(message, DCT('created')),\n '?content': store.any(message, ns.sioc('content'))\n }\n renderMessage(bindings, true) // fresh from elsewhere\n }\n\n const renderMessage = function (bindings, fresh) {\n const creator = bindings['?creator']\n const message = bindings['?msg']\n const date = bindings['?date']\n const content = bindings['?content']\n\n const dateString = date.value\n const tr = dom.createElement('tr')\n tr.AJAR_date = dateString\n tr.AJAR_subject = message\n\n let done = false\n for (let ele = messageTable.firstChild; ; ele = ele.nextSibling) {\n if (!ele) {\n // empty\n break\n }\n if (\n (dateString > ele.AJAR_date && newestFirst) ||\n (dateString < ele.AJAR_date && !newestFirst)\n ) {\n messageTable.insertBefore(tr, ele)\n done = true\n break\n }\n }\n if (!done) {\n messageTable.appendChild(tr)\n }\n\n const td1 = dom.createElement('td')\n tr.appendChild(td1)\n creatorAndDate(td1, creator, UI.widgets.shortDate(dateString), message)\n\n const td2 = dom.createElement('td')\n tr.appendChild(td2)\n const pre = dom.createElement('p')\n pre.setAttribute(\n 'style',\n messageBodyStyle +\n (fresh ? 'background-color: #e8ffe8;' : 'background-color: #white;')\n )\n td2.appendChild(pre)\n pre.textContent = content.value\n\n const td3 = dom.createElement('td')\n tr.appendChild(td3)\n\n const delButton = dom.createElement('button')\n td3.appendChild(delButton)\n delButton.textContent = '-'\n\n tr.setAttribute('class', 'hoverControl') // See tabbedtab.css (sigh global CSS)\n delButton.setAttribute('class', 'hoverControlHide')\n delButton.setAttribute('style', 'color: red;')\n delButton.addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(delButton) // Ask -- are you sure?\n const cancelButton = dom.createElement('button')\n cancelButton.textContent = 'cancel'\n td3.appendChild(cancelButton).addEventListener(\n 'click',\n function (_event) {\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n td3.appendChild(delButton)\n },\n false\n )\n const sureButton = dom.createElement('button')\n sureButton.textContent = 'Delete message'\n td3.appendChild(sureButton).addEventListener(\n 'click',\n function (_event) { // alain test for delete or edit depending on me = maker\n td3.removeChild(sureButton)\n td3.removeChild(cancelButton)\n // deleteMessage(message) // alain or sendMessage(message, 'delete' or 'edit') //alain\n if (me.value === store.any(message, ns.foaf('maker')).value) {\n const { sts } = appendMsg() // alain\n updater.update([], sts)\n }\n },\n false\n )\n },\n false\n )\n }\n\n // Messages with date, author etc\n\n messageTable = dom.createElement('table')\n messageTable.fresh = false\n div.appendChild(messageTable)\n messageTable.setAttribute('style', 'width: 100%;') // fill that div!\n\n const tr = newMessageForm()\n if (newestFirst) {\n messageTable.insertBefore(tr, messageTable.firstChild) // If newestFirst\n } else {\n messageTable.appendChild(tr) // not newestFirst\n }\n\n let query\n // Do this with a live query to pull in messages from web\n if (options.query) {\n query = options.query\n } else {\n query = new $rdf.Query('Messages')\n const v = {} // semicolon needed\n const vs = ['msg', 'date', 'creator', 'content']\n vs.forEach(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(subject, WF('message'), v.msg)\n query.pat.add(v.msg, ns.dct('created'), v.date)\n query.pat.add(v.msg, ns.foaf('maker'), v.creator)\n query.pat.add(v.msg, ns.sioc('content'), v.content)\n }\n\n function doneQuery () {\n messageTable.fresh = true // any new are fresh and so will be greenish\n }\n store.query(query, renderMessage, undefined, doneQuery)\n div.refresh = function () {\n syncMessages(subject, messageTable)\n }\n // syncMessages(subject, messageTable) // no the query will do this async\n return div\n}\n"],"file":"thread.js"}
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
  var _default = {
8
- buildTime: '2022-01-27T19:22:56Z',
9
- commit: 'fb2b21e1e0c28c850c52cb27596b0bd4d509a104',
8
+ buildTime: '2022-01-28T22:55:43Z',
9
+ commit: '9d83fb1702a1835b5d82fb97bc51b3cb98285373',
10
10
  npmInfo: {
11
- 'solid-ui': '2.4.15',
11
+ 'solid-ui': '2.4.16',
12
12
  npm: '6.14.15',
13
13
  ares: '1.18.1',
14
14
  brotli: '1.0.9',
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/versionInfo.ts"],"names":["buildTime","commit","npmInfo","npm","ares","brotli","cldr","icu","llhttp","modules","napi","nghttp2","node","openssl","tz","unicode","uv","v8","zlib"],"mappings":";;;;;;eAAe;AACbA,EAAAA,SAAS,EAAE,sBADE;AAEbC,EAAAA,MAAM,EAAE,0CAFK;AAGbC,EAAAA,OAAO,EACT;AACE,gBAAY,QADd;AAEEC,IAAAA,GAAG,EAAE,SAFP;AAGEC,IAAAA,IAAI,EAAE,QAHR;AAIEC,IAAAA,MAAM,EAAE,OAJV;AAKEC,IAAAA,IAAI,EAAE,MALR;AAMEC,IAAAA,GAAG,EAAE,MANP;AAOEC,IAAAA,MAAM,EAAE,OAPV;AAQEC,IAAAA,OAAO,EAAE,IARX;AASEC,IAAAA,IAAI,EAAE,GATR;AAUEC,IAAAA,OAAO,EAAE,QAVX;AAWEC,IAAAA,IAAI,EAAE,SAXR;AAYEC,IAAAA,OAAO,EAAE,QAZX;AAaEC,IAAAA,EAAE,EAAE,OAbN;AAcEC,IAAAA,OAAO,EAAE,MAdX;AAeEC,IAAAA,EAAE,EAAE,QAfN;AAgBEC,IAAAA,EAAE,EAAE,oBAhBN;AAiBEC,IAAAA,IAAI,EAAE;AAjBR;AAJe,C","sourcesContent":["export default {\n buildTime: '2022-01-27T19:22:56Z',\n commit: 'fb2b21e1e0c28c850c52cb27596b0bd4d509a104',\n npmInfo:\n{\n 'solid-ui': '2.4.15',\n npm: '6.14.15',\n ares: '1.18.1',\n brotli: '1.0.9',\n cldr: '39.0',\n icu: '69.1',\n llhttp: '2.1.4',\n modules: '83',\n napi: '8',\n nghttp2: '1.42.0',\n node: '14.18.3',\n openssl: '1.1.1l',\n tz: '2021a',\n unicode: '13.0',\n uv: '1.42.0',\n v8: '8.4.371.23-node.85',\n zlib: '1.2.11'\n}\n}\n"],"file":"versionInfo.js"}
1
+ {"version":3,"sources":["../src/versionInfo.ts"],"names":["buildTime","commit","npmInfo","npm","ares","brotli","cldr","icu","llhttp","modules","napi","nghttp2","node","openssl","tz","unicode","uv","v8","zlib"],"mappings":";;;;;;eAAe;AACbA,EAAAA,SAAS,EAAE,sBADE;AAEbC,EAAAA,MAAM,EAAE,0CAFK;AAGbC,EAAAA,OAAO,EACT;AACE,gBAAY,QADd;AAEEC,IAAAA,GAAG,EAAE,SAFP;AAGEC,IAAAA,IAAI,EAAE,QAHR;AAIEC,IAAAA,MAAM,EAAE,OAJV;AAKEC,IAAAA,IAAI,EAAE,MALR;AAMEC,IAAAA,GAAG,EAAE,MANP;AAOEC,IAAAA,MAAM,EAAE,OAPV;AAQEC,IAAAA,OAAO,EAAE,IARX;AASEC,IAAAA,IAAI,EAAE,GATR;AAUEC,IAAAA,OAAO,EAAE,QAVX;AAWEC,IAAAA,IAAI,EAAE,SAXR;AAYEC,IAAAA,OAAO,EAAE,QAZX;AAaEC,IAAAA,EAAE,EAAE,OAbN;AAcEC,IAAAA,OAAO,EAAE,MAdX;AAeEC,IAAAA,EAAE,EAAE,QAfN;AAgBEC,IAAAA,EAAE,EAAE,oBAhBN;AAiBEC,IAAAA,IAAI,EAAE;AAjBR;AAJe,C","sourcesContent":["export default {\n buildTime: '2022-01-28T22:55:43Z',\n commit: '9d83fb1702a1835b5d82fb97bc51b3cb98285373',\n npmInfo:\n{\n 'solid-ui': '2.4.16',\n npm: '6.14.15',\n ares: '1.18.1',\n brotli: '1.0.9',\n cldr: '39.0',\n icu: '69.1',\n llhttp: '2.1.4',\n modules: '83',\n napi: '8',\n nghttp2: '1.42.0',\n node: '14.18.3',\n openssl: '1.1.1l',\n tz: '2021a',\n unicode: '13.0',\n uv: '1.42.0',\n v8: '8.4.371.23-node.85',\n zlib: '1.2.11'\n}\n}\n"],"file":"versionInfo.js"}