solid-ui 2.4.18 → 2.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +3 -2
  2. package/lib/acl/acl.d.ts.map +1 -1
  3. package/lib/acl/acl.js +2 -4
  4. package/lib/acl/acl.js.map +1 -1
  5. package/lib/acl/add-agent-buttons.d.ts.map +1 -1
  6. package/lib/acl/add-agent-buttons.js +5 -5
  7. package/lib/acl/add-agent-buttons.js.map +1 -1
  8. package/lib/chat/bookmarks.js +20 -22
  9. package/lib/chat/bookmarks.js.map +1 -1
  10. package/lib/chat/chatLogic.js +13 -15
  11. package/lib/chat/chatLogic.js.map +1 -1
  12. package/lib/chat/dateFolder.js +10 -10
  13. package/lib/chat/dateFolder.js.map +1 -1
  14. package/lib/chat/infinite.js +14 -16
  15. package/lib/chat/infinite.js.map +1 -1
  16. package/lib/chat/message.js +19 -23
  17. package/lib/chat/message.js.map +1 -1
  18. package/lib/chat/messageTools.js +16 -21
  19. package/lib/chat/messageTools.js.map +1 -1
  20. package/lib/chat/thread.js +24 -24
  21. package/lib/chat/thread.js.map +1 -1
  22. package/lib/create/create.d.ts.map +1 -1
  23. package/lib/create/create.js +9 -9
  24. package/lib/create/create.js.map +1 -1
  25. package/lib/folders.js +2 -6
  26. package/lib/folders.js.map +1 -1
  27. package/lib/footer/index.js +4 -4
  28. package/lib/footer/index.js.map +1 -1
  29. package/lib/header/index.d.ts.map +1 -1
  30. package/lib/header/index.js +11 -8
  31. package/lib/header/index.js.map +1 -1
  32. package/lib/index.d.ts +4 -4
  33. package/lib/index.d.ts.map +1 -1
  34. package/lib/index.js +30 -28
  35. package/lib/index.js.map +1 -1
  36. package/lib/login/login.d.ts +130 -0
  37. package/lib/login/login.d.ts.map +1 -0
  38. package/lib/login/login.js +1415 -0
  39. package/lib/login/login.js.map +1 -0
  40. package/lib/matrix/matrix.js +2 -2
  41. package/lib/matrix/matrix.js.map +1 -1
  42. package/lib/messageArea.js +9 -10
  43. package/lib/messageArea.js.map +1 -1
  44. package/lib/pad.js +2 -2
  45. package/lib/pad.js.map +1 -1
  46. package/lib/participation.d.ts.map +1 -1
  47. package/lib/participation.js +4 -5
  48. package/lib/participation.js.map +1 -1
  49. package/lib/preferences.js +8 -8
  50. package/lib/preferences.js.map +1 -1
  51. package/lib/{authn → signup}/config-default.js +0 -0
  52. package/lib/signup/config-default.js.map +1 -0
  53. package/lib/{authn → signup}/signup.js +0 -0
  54. package/lib/signup/signup.js.map +1 -0
  55. package/lib/table.js +2 -3
  56. package/lib/table.js.map +1 -1
  57. package/lib/tabs.js +3 -3
  58. package/lib/tabs.js.map +1 -1
  59. package/lib/utils/index.js +6 -6
  60. package/lib/utils/index.js.map +1 -1
  61. package/lib/utils/label.js +4 -5
  62. package/lib/utils/label.js.map +1 -1
  63. package/lib/versionInfo.js +2 -2
  64. package/lib/versionInfo.js.map +1 -1
  65. package/lib/webpack-bundle.js +8230 -24429
  66. package/lib/webpack-bundle.js.map +1 -1
  67. package/lib/widgets/buttons.js +16 -16
  68. package/lib/widgets/buttons.js.map +1 -1
  69. package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
  70. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  71. package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
  72. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  73. package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
  74. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  75. package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
  76. package/lib/widgets/forms/autocomplete/language.js +7 -10
  77. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  78. package/lib/widgets/forms/autocomplete/publicData.d.ts +1 -1
  79. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
  80. package/lib/widgets/forms/autocomplete/publicData.js +15 -16
  81. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  82. package/lib/widgets/forms/basic.d.ts +1 -1
  83. package/lib/widgets/forms/basic.d.ts.map +1 -1
  84. package/lib/widgets/forms/basic.js +2 -2
  85. package/lib/widgets/forms/basic.js.map +1 -1
  86. package/lib/widgets/forms/comment.d.ts +1 -1
  87. package/lib/widgets/forms/comment.js +3 -3
  88. package/lib/widgets/forms/comment.js.map +1 -1
  89. package/lib/widgets/forms/fieldFunction.js +2 -2
  90. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  91. package/lib/widgets/forms/formStyle.js +3 -3
  92. package/lib/widgets/forms/formStyle.js.map +1 -1
  93. package/lib/widgets/forms.js +10 -10
  94. package/lib/widgets/forms.js.map +1 -1
  95. package/lib/widgets/peoplePicker.js +2 -2
  96. package/lib/widgets/peoplePicker.js.map +1 -1
  97. package/package.json +12 -4
  98. package/lib/authn/authSession.d.ts +0 -4
  99. package/lib/authn/authSession.d.ts.map +0 -1
  100. package/lib/authn/authSession.js +0 -25
  101. package/lib/authn/authSession.js.map +0 -1
  102. package/lib/authn/authn.d.ts +0 -193
  103. package/lib/authn/authn.d.ts.map +0 -1
  104. package/lib/authn/authn.js +0 -2238
  105. package/lib/authn/authn.js.map +0 -1
  106. package/lib/authn/config-default.js.map +0 -1
  107. package/lib/authn/index.d.ts +0 -35
  108. package/lib/authn/index.d.ts.map +0 -1
  109. package/lib/authn/index.js +0 -44
  110. package/lib/authn/index.js.map +0 -1
  111. package/lib/authn/signup.js.map +0 -1
  112. package/lib/authn/types.d.ts +0 -25
  113. package/lib/authn/types.d.ts.map +0 -1
  114. package/lib/authn/types.js +0 -6
  115. package/lib/authn/types.js.map +0 -1
  116. package/lib/logic.d.ts +0 -8
  117. package/lib/logic.d.ts.map +0 -1
  118. package/lib/logic.js +0 -79
  119. package/lib/logic.js.map +0 -1
@@ -19,12 +19,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
19
19
 
20
20
  var debug = _interopRequireWildcard(require("../debug"));
21
21
 
22
- var _index = require("../authn/index");
23
-
24
22
  var _iconBase = require("../iconBase");
25
23
 
26
- var _logic = require("../logic");
27
-
28
24
  var ns = _interopRequireWildcard(require("../ns"));
29
25
 
30
26
  var rdf = _interopRequireWildcard(require("rdflib"));
@@ -35,6 +31,8 @@ var widgets = _interopRequireWildcard(require("../widgets"));
35
31
 
36
32
  var _bookmarks = require("./bookmarks");
37
33
 
34
+ var _solidLogic = require("solid-logic");
35
+
38
36
  var _chatLogic = require("./chatLogic");
39
37
 
40
38
  var _message = require("./message");
@@ -56,9 +54,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
56
54
  // import * as pad from '../pad'
57
55
  // pull in first avoid cross-refs
58
56
  // import * as style from '../style'
59
- // import { infiniteMessageArea } from './infinite.js'
60
- // import { renderMessage, creatorAndDate } from './message'
61
- // import * as debug from '../debug'
62
57
  var dom = window.document; // THE UNUSED ICONS are here as reminders for possible future functionality
63
58
  // const BOOKMARK_ICON = 'noun_45961.svg'
64
59
  // const HEART_ICON = 'noun_130259.svg' -> Add this to my (private) favorites
@@ -87,9 +82,9 @@ emoji[ns.schema('LikeAction')] = '❤️';
87
82
  function sentimentStrip(target, doc) {
88
83
  // alain seems not used
89
84
  var latest = (0, _chatLogic.mostRecentVersion)(target);
90
- var actions = _logic.store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? _logic.store.each(null, ns.schema('target'), target, doc) : [];
85
+ var actions = _solidLogic.store.holds(latest, ns.schema('dateDeleted').value, null, latest.doc()) ? _solidLogic.store.each(null, ns.schema('target'), target, doc) : [];
91
86
  var sentiments = actions.map(function (a) {
92
- return _logic.store.any(a, ns.rdf('type'), null, doc);
87
+ return _solidLogic.store.any(a, ns.rdf('type'), null, doc);
93
88
  });
94
89
  sentiments.sort();
95
90
  var strings = sentiments.map(function (x) {
@@ -110,9 +105,9 @@ function sentimentStripLinked(target, doc) {
110
105
 
111
106
  function refresh() {
112
107
  strip.innerHTML = '';
113
- var actions = (0, _chatLogic.mostRecentVersion)(target).uri !== ns.schema('dateDeleted').uri ? _logic.store.each(null, ns.schema('target'), target, doc) : [];
108
+ var actions = (0, _chatLogic.mostRecentVersion)(target).uri !== ns.schema('dateDeleted').uri ? _solidLogic.store.each(null, ns.schema('target'), target, doc) : [];
114
109
  var sentiments = actions.map(function (a) {
115
- return [_logic.store.any(a, ns.rdf('type'), null, doc), _logic.store.any(a, ns.schema('agent'), null, doc)];
110
+ return [_solidLogic.store.any(a, ns.rdf('type'), null, doc), _solidLogic.store.any(a, ns.schema('agent'), null, doc)];
116
111
  });
117
112
  sentiments.sort();
118
113
  sentiments.forEach(function (ss) {
@@ -155,7 +150,7 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
155
150
  while (1) {
156
151
  switch (_context2.prev = _context2.next) {
157
152
  case 0:
158
- author = _logic.store.any(message, ns.foaf('maker'));
153
+ author = _solidLogic.store.any(message, ns.foaf('maker'));
159
154
 
160
155
  if (me) {
161
156
  _context2.next = 5;
@@ -221,7 +216,7 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
221
216
  while (1) {
222
217
  switch (_context3.prev = _context3.next) {
223
218
  case 0:
224
- if (me.value === _logic.store.any(message, ns.foaf('maker')).value) {
219
+ if (me.value === _solidLogic.store.any(message, ns.foaf('maker')).value) {
225
220
  closeToolbar(); // edit is a one-off action
226
221
 
227
222
  (0, _message.switchToEditor)(messageRow, message, channelObject, userContext);
@@ -257,7 +252,7 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
257
252
  switch (_context4.prev = _context4.next) {
258
253
  case 0:
259
254
  _context4.next = 2;
260
- return _logic.store.updater.update(_logic.store.connectedStatements(x), []);
255
+ return _solidLogic.store.updater.update(_solidLogic.store.connectedStatements(x), []);
261
256
 
262
257
  case 2:
263
258
  case "end":
@@ -269,10 +264,10 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
269
264
  return _deleteThingThen.apply(this, arguments);
270
265
  }
271
266
 
272
- var me = _index.authn.currentUser(); // If already logged on
267
+ var me = _solidLogic.authn.currentUser(); // If already logged on
273
268
 
274
269
 
275
- if (me && _logic.store.holds(message, ns.foaf('maker'), me)) {
270
+ if (me && _solidLogic.store.holds(message, ns.foaf('maker'), me)) {
276
271
  // button to delete the message
277
272
  div.appendChild(widgets.deleteButtonWithCheck(dom, div, 'message', deleteMessage)); // button to edit the message
278
273
 
@@ -335,7 +330,7 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
335
330
  action = widgets.newThing(doc);
336
331
  insertMe = [rdf.st(action, ns.schema('agent'), context.me, doc), rdf.st(action, ns.rdf('type'), actionClass, doc), rdf.st(action, ns.schema('target'), target, doc)];
337
332
  _context.next = 11;
338
- return _logic.store.updater.update([], insertMe);
333
+ return _solidLogic.store.updater.update([], insertMe);
339
334
 
340
335
  case 11:
341
336
  setColor();
@@ -394,10 +389,10 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
394
389
  }());
395
390
 
396
391
  function existingAction(actionClass) {
397
- var actions = _logic.store.each(null, ns.schema('agent'), context.me, doc).filter(function (x) {
398
- return _logic.store.holds(x, ns.rdf('type'), actionClass, doc);
392
+ var actions = _solidLogic.store.each(null, ns.schema('agent'), context.me, doc).filter(function (x) {
393
+ return _solidLogic.store.holds(x, ns.rdf('type'), actionClass, doc);
399
394
  }).filter(function (x) {
400
- return _logic.store.holds(x, ns.schema('target'), target, doc);
395
+ return _solidLogic.store.holds(x, ns.schema('target'), target, doc);
401
396
  });
402
397
 
403
398
  return actions.length ? actions[0] : null;
@@ -417,7 +412,7 @@ function messageToolbar(message, messageRow, userContext, channelObject) {
417
412
  // https://schema.org/AgreeAction
418
413
 
419
414
 
420
- me = _index.authn.currentUser(); // If already logged on
415
+ me = _solidLogic.authn.currentUser(); // If already logged on
421
416
  // debug.log('Actions 3' + mostRecentVersion(message).value + ' ' + ns.schema('dateDeleted').value + ' ' + (mostRecentVersion(message).value !== ns.schema('dateDeleted').value))
422
417
 
423
418
  if (me && (0, _chatLogic.mostRecentVersion)(message).value !== ns.schema('dateDeleted').value) {
@@ -1 +1 @@
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
+ {"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 { 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"],"file":"messageTools.js"}
@@ -13,16 +13,16 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
13
13
 
14
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
15
 
16
- var _index = require("../authn/index");
17
-
18
16
  var _iconBase = require("../iconBase");
19
17
 
20
- var _logic = require("../logic");
18
+ var _solidLogic = require("solid-logic");
21
19
 
22
- var _index2 = require("../media/index");
20
+ var _index = require("../media/index");
23
21
 
24
22
  var ns = _interopRequireWildcard(require("../ns"));
25
23
 
24
+ var login = _interopRequireWildcard(require("../login/login"));
25
+
26
26
  var pad = _interopRequireWildcard(require("../pad"));
27
27
 
28
28
  var $rdf = _interopRequireWildcard(require("rdflib"));
@@ -43,12 +43,10 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
43
43
  */
44
44
  // pull in first avoid cross-refs
45
45
  var UI = {
46
- authn: _index.authn,
47
46
  icons: _iconBase.icons,
48
47
  ns: ns,
49
- media: _index2.media,
48
+ media: _index.media,
50
49
  pad: pad,
51
- store: _logic.store,
52
50
  style: style,
53
51
  utils: utils,
54
52
  widgets: widgets
@@ -57,8 +55,8 @@ var UI = {
57
55
  * HTML component for a chat thread
58
56
  */
59
57
 
60
- function thread(dom, store, subject, messageStore, options) {
61
- store = store || UI.store;
58
+ function thread(dom, kb, subject, messageStore, options) {
59
+ kb = kb || _solidLogic.store;
62
60
  messageStore = messageStore.doc(); // No hash
63
61
 
64
62
  var ns = UI.ns;
@@ -73,7 +71,7 @@ function thread(dom, store, subject, messageStore, options) {
73
71
  var messageTable; // Shared by initial build and addMessageFromBindings
74
72
 
75
73
  var me;
76
- var updater = UI.store.updater;
74
+ var updater = _solidLogic.store.updater;
77
75
 
78
76
  var anchor = function anchor(text, term) {
79
77
  // If there is no link return an element anyway
@@ -139,7 +137,7 @@ function thread(dom, store, subject, messageStore, options) {
139
137
  } else {
140
138
  var bindings = {
141
139
  '?msg': message,
142
- '?content': store.literal(field.value),
140
+ '?content': _solidLogic.store.literal(field.value),
143
141
  '?date': dateStamp,
144
142
  '?creator': me
145
143
  };
@@ -186,7 +184,7 @@ function thread(dom, store, subject, messageStore, options) {
186
184
  div: middle,
187
185
  dom: dom
188
186
  };
189
- UI.authn.logIn(context).then(function (context) {
187
+ login.ensureLoggedIn(context).then(function (context) {
190
188
  me = context.me;
191
189
  turnOnInput();
192
190
  });
@@ -261,7 +259,7 @@ function thread(dom, store, subject, messageStore, options) {
261
259
  var timestamp = '' + now.getTime();
262
260
  var dateStamp = $rdf.term(now); // http://www.w3schools.com/jsref/jsref_obj_date.asp
263
261
 
264
- var message = store.sym(messageStore.uri + '#' + 'Msg' + timestamp);
262
+ var message = _solidLogic.store.sym(messageStore.uri + '#' + 'Msg' + timestamp);
265
263
 
266
264
  if (options === 'edit' || options === 'delete') {
267
265
  sts.push(new $rdf.Statement(mostRecentVersion(oldMsg), DCT('isReplacedBy'), message, messageStore));
@@ -271,7 +269,7 @@ function thread(dom, store, subject, messageStore, options) {
271
269
 
272
270
 
273
271
  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));
272
+ sts.push(new $rdf.Statement(message, ns.sioc('content'), _solidLogic.store.literal(msgBody), messageStore));
275
273
  sts.push(new $rdf.Statement(message, DCT('created'), dateStamp, messageStore));
276
274
 
277
275
  if (me) {
@@ -286,7 +284,8 @@ function thread(dom, store, subject, messageStore, options) {
286
284
  };
287
285
 
288
286
  function nick(person) {
289
- var s = UI.store.any(person, UI.ns.foaf('nick'));
287
+ var s = _solidLogic.store.any(person, UI.ns.foaf('nick'));
288
+
290
289
  if (s) return '' + s.value;
291
290
  return '' + utils.label(person);
292
291
  }
@@ -295,7 +294,7 @@ function thread(dom, store, subject, messageStore, options) {
295
294
  var nickAnchor = td1.appendChild(anchor(nick(creator), creator));
296
295
 
297
296
  if (creator.uri) {
298
- UI.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (_ok, _body) {
297
+ _solidLogic.store.fetcher.nowOrWhenFetched(creator.doc(), undefined, function (_ok, _body) {
299
298
  nickAnchor.textContent = nick(creator);
300
299
  });
301
300
  }
@@ -315,7 +314,8 @@ function thread(dom, store, subject, messageStore, options) {
315
314
  }
316
315
  }
317
316
 
318
- var messages = store.each(about, ns.wf('message'));
317
+ var messages = _solidLogic.store.each(about, ns.wf('message'));
318
+
319
319
  var stored = {};
320
320
  messages.forEach(function (m) {
321
321
  stored[m.uri] = true;
@@ -341,7 +341,7 @@ function thread(dom, store, subject, messageStore, options) {
341
341
 
342
342
  while (msg) {
343
343
  // listMsg.push(msg)
344
- msg = store.statementsMatching(message, DCT('isReplacedBy'));
344
+ msg = _solidLogic.store.statementsMatching(message, DCT('isReplacedBy'));
345
345
  }
346
346
 
347
347
  return msg;
@@ -355,7 +355,7 @@ function thread(dom, store, subject, messageStore, options) {
355
355
  switch (_context.prev = _context.next) {
356
356
  case 0:
357
357
  _context.next = 2;
358
- return store.connectedStatements(message, messageStore);
358
+ return _solidLogic.store.connectedStatements(message, messageStore);
359
359
 
360
360
  case 2:
361
361
  deletions = _context.sent;
@@ -383,9 +383,9 @@ function thread(dom, store, subject, messageStore, options) {
383
383
  var addMessage = function addMessage(message) {
384
384
  var bindings = {
385
385
  '?msg': message,
386
- '?creator': store.any(message, ns.foaf('maker')),
387
- '?date': store.any(message, DCT('created')),
388
- '?content': store.any(message, ns.sioc('content'))
386
+ '?creator': _solidLogic.store.any(message, ns.foaf('maker')),
387
+ '?date': _solidLogic.store.any(message, DCT('created')),
388
+ '?content': _solidLogic.store.any(message, ns.sioc('content'))
389
389
  };
390
390
  renderMessage(bindings, true); // fresh from elsewhere
391
391
  };
@@ -453,7 +453,7 @@ function thread(dom, store, subject, messageStore, options) {
453
453
  td3.removeChild(sureButton);
454
454
  td3.removeChild(cancelButton); // deleteMessage(message) // alain or sendMessage(message, 'delete' or 'edit') //alain
455
455
 
456
- if (me.value === store.any(message, ns.foaf('maker')).value) {
456
+ if (me.value === _solidLogic.store.any(message, ns.foaf('maker')).value) {
457
457
  var _appendMsg2 = appendMsg(),
458
458
  sts = _appendMsg2.sts; // alain
459
459
 
@@ -500,7 +500,7 @@ function thread(dom, store, subject, messageStore, options) {
500
500
  messageTable.fresh = true; // any new are fresh and so will be greenish
501
501
  }
502
502
 
503
- store.query(query, renderMessage, undefined, doneQuery);
503
+ _solidLogic.store.query(query, renderMessage, undefined, doneQuery);
504
504
 
505
505
  div.refresh = function () {
506
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","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"}
1
+ {"version":3,"sources":["../../src/chat/thread.js"],"names":["UI","icons","ns","media","pad","style","utils","widgets","thread","dom","kb","subject","messageStore","options","store","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","ensureLoggedIn","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 { icons } from '../iconBase'\nimport { store } from 'solid-logic'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as login from '../login/login'\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 = { icons, ns, media, pad, style, utils, widgets }\n\n/**\n * HTML component for a chat thread\n */\nexport function thread (dom, kb, subject, messageStore, options) {\n kb = kb || 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 = 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 login.ensureLoggedIn(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 = 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 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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/create/create.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,kBAAkB,EAAkB,cAAc,EAAE,MAAM,eAAe,CAAA;AAClF,OAAO,EAAE,aAAa,EAAyB,MAAM,SAAS,CAAA;AAW9D,wBAAgB,UAAU,CACxB,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,GAC9B,IAAI,CAqNN"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/create/create.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAkB,cAAc,EAAE,MAAM,eAAe,CAAA;AAQlF,OAAO,EAAE,aAAa,EAAyB,MAAM,SAAS,CAAA;AAW9D,wBAAgB,UAAU,CACxB,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,GAC9B,IAAI,CAqNN"}
@@ -7,19 +7,19 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.newThingUI = newThingUI;
9
9
 
10
+ var _solidLogic = require("solid-logic");
11
+
10
12
  var debug = _interopRequireWildcard(require("../debug"));
11
13
 
12
14
  var _iconBase = require("../iconBase");
13
15
 
14
- var utils = _interopRequireWildcard(require("../utils"));
15
-
16
- var widgets = _interopRequireWildcard(require("../widgets"));
17
-
18
- var _logic = require("../logic");
16
+ var _login = require("../login/login");
19
17
 
20
18
  var ns = _interopRequireWildcard(require("../ns"));
21
19
 
22
- var _authn = require("../authn/authn");
20
+ var utils = _interopRequireWildcard(require("../utils"));
21
+
22
+ var widgets = _interopRequireWildcard(require("../widgets"));
23
23
 
24
24
  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); }
25
25
 
@@ -28,7 +28,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
28
28
  /* create.js UI to craete new objects in the solid-app-set world
29
29
  **
30
30
  */
31
- var kb = _logic.solidLogicSingleton.store;
31
+ var kb = _solidLogic.solidLogicSingleton.store;
32
32
  /* newThingUI -- return UI for user to select a new object, folder, etc
33
33
  **
34
34
  ** context must include: dom, div,
@@ -94,7 +94,7 @@ function newThingUI(createContext, dataBrowserContext, thePanes) {
94
94
  var selectUI; // , selectUIParent
95
95
 
96
96
  function callbackWS(ws, newBase) {
97
- (0, _authn.logInLoadProfile)(createContext).then(function (_context) {
97
+ (0, _login.ensureLoadedProfile)(createContext).then(function (_context) {
98
98
  var newPaneOptions = Object.assign({
99
99
  newBase: newBase,
100
100
  folder: options.folder || undefined,
@@ -158,7 +158,7 @@ function newThingUI(createContext, dataBrowserContext, thePanes) {
158
158
 
159
159
  if (!options.folder) {
160
160
  // No folder given? Ask user for full URI
161
- selectUI = (0, _authn.selectWorkspace)(dom, {
161
+ selectUI = (0, _login.selectWorkspace)(dom, {
162
162
  noun: options.noun,
163
163
  appPathSegment: options.appPathSegment
164
164
  }, callbackWS);