chat-pane 2.4.15 → 2.4.16

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/shortChatPane.js"],"names":["UI","require","ns","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","n","each","wf","length","holds","rdf","meeting","undefined","foaf","mintClass","mintNew","newPaneOptions","updater","me","uri","Error","newInstance","sym","newBase","newChatDoc","doc","add","dc","Date","Promise","resolve","reject","put","statementsMatching","uri2","ok","message","render","dom","complain","color","pre","createElement","setAttribute","div","appendChild","createTextNode","options","messageStore","any","ircLogQuery","query","$rdf","Query","v","vv","map","x","vars","push","variable","pat","chan","list","pred","msg","date","creator","content","messageArea","addDownstreamChangeListener","widgets","refreshTree"],"mappings":"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","sourcesContent":["/* Chat Pane\n **\n ** Plan is to support a finte number of chat graph shapes\n ** and investigate the interop between them.\n */\n/* global $rdf */\n\nconst UI = require('solid-ui')\nconst ns = UI.ns\n\nmodule.exports = {\n icon: UI.icons.iconBase + 'noun_346319.svg',\n\n name: 'chat',\n\n /*\n * As part of the work on merging the existing chat views (aka panes) into one view\n * https://github.com/solid/chat-pane/issues/17\n * we want to dis-incentivize the use of Small Chat until we've gotten the work done\n * by making it difficult to create new data resources that uses the Small Chat view\n * but we still want existing resources to be viewed by the Small Chat view\n */\n audience: [ns.solid('PowerUser')],\n\n /* AN RRSAgent IRC log:\n\n <irc://localhost:6667/&mit>\n a foaf:ChatChannel\n foaf:chatEventList\n [ rdf:_100\n <#T19-10-58>\n rdf:_101\n <#T19-10-58-1>\n rdf:_102\n ..\n <#T19-28-47-1>\n dc:creator\n [ a wn:Person; foaf:nick \"timbl\" ]\n dc:date\n \"2016-03-15T19:28:47Z\"\n dc:description\n \"timbl has joined &mit\"\n a foaf:chatEvent.\n\n */\n\n label: function (subject, context) {\n const kb = context.session.store\n var n = kb.each(subject, ns.wf('message')).length\n if (n > 0) return 'Chat (' + n + ')' // Show how many in hover text\n\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Chat'))) {\n // subject is the file\n return 'Meeting chat'\n }\n if (kb.holds(undefined, ns.rdf('type'), ns.foaf('ChatChannel'), subject)) {\n // subject is the file\n return 'IRC log' // contains anything of this type\n }\n return null // Suppress pane otherwise\n },\n\n mintClass: ns.meeting('Chat'),\n\n mintNew: function (context, newPaneOptions) {\n const kb = context.session.store\n var updater = kb.updater\n if (newPaneOptions.me && !newPaneOptions.me.uri) {\n throw new Error('chat mintNew: Invalid userid ' + newPaneOptions.me)\n }\n\n var newInstance = (newPaneOptions.newInstance =\n newPaneOptions.newInstance ||\n kb.sym(newPaneOptions.newBase + 'index.ttl#this'))\n var newChatDoc = newInstance.doc()\n\n kb.add(newInstance, ns.rdf('type'), ns.meeting('Chat'), newChatDoc)\n kb.add(newInstance, ns.dc('title'), 'Chat', newChatDoc)\n kb.add(newInstance, ns.dc('created'), new Date(), newChatDoc)\n if (newPaneOptions.me) {\n kb.add(newInstance, ns.dc('author'), newPaneOptions.me, newChatDoc)\n }\n\n return new Promise(function (resolve, reject) {\n updater.put(\n newChatDoc,\n kb.statementsMatching(undefined, undefined, undefined, newChatDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n resolve(newPaneOptions)\n } else {\n reject(\n new Error('FAILED to save new tool at: ' + uri2 + ' : ' + message)\n )\n }\n }\n )\n })\n },\n\n render: function (subject, context) {\n const kb = context.session.store\n const dom = context.dom\n var complain = function complain (message, color) {\n var pre = dom.createElement('pre')\n pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n\n var div = dom.createElement('div')\n div.setAttribute('class', 'chatPane')\n const options = {} // Like newestFirst\n var messageStore\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Chat'))) {\n // subject may be the file\n messageStore = subject.doc()\n } else if (kb.any(subject, UI.ns.wf('message'))) {\n messageStore = UI.store.any(subject, UI.ns.wf('message')).doc()\n } else if (\n kb.holds(undefined, ns.rdf('type'), ns.foaf('ChatChannel'), subject) ||\n kb.holds(subject, ns.rdf('type'), ns.foaf('ChatChannel'))\n ) {\n // subject is the file\n var ircLogQuery = function () {\n var query = new $rdf.Query('IRC log entries')\n var v = []\n var vv = ['chan', 'msg', 'date', 'list', 'pred', 'creator', 'content']\n vv.map(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(v.chan, ns.foaf('chatEventList'), v.list) // chatEventList\n query.pat.add(v.list, v.pred, v.msg) //\n query.pat.add(v.msg, ns.dc('date'), v.date)\n query.pat.add(v.msg, ns.dc('creator'), v.creator)\n query.pat.add(v.msg, ns.dc('description'), v.content)\n return query\n }\n messageStore = subject.doc()\n options.query = ircLogQuery()\n } else {\n complain('Unknown chat type')\n }\n\n // var context = {dom, div}\n // UI.authn.logIn(context).then( context => { // The widget itself sees to login\n\n div.appendChild(UI.messageArea(dom, kb, subject, messageStore, options))\n kb.updater.addDownstreamChangeListener(messageStore, function () {\n UI.widgets.refreshTree(div)\n }) // Live update\n // })\n\n return div\n }\n}\n"],"file":"shortChatPane.js"}
1
+ {"version":3,"sources":["../src/shortChatPane.js"],"names":["UI","require","ns","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","n","each","wf","length","holds","rdf","meeting","undefined","foaf","mintClass","mintNew","newPaneOptions","updater","me","uri","Error","newInstance","sym","newBase","newChatDoc","doc","add","dc","Date","Promise","resolve","reject","put","statementsMatching","uri2","ok","message","render","dom","complain","color","pre","createElement","setAttribute","div","appendChild","createTextNode","options","messageStore","any","ircLogQuery","query","$rdf","Query","v","vv","map","x","vars","push","variable","pat","chan","list","pred","msg","date","creator","content","messageArea","addDownstreamChangeListener","widgets","refreshTree"],"mappings":"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","sourcesContent":["/* Chat Pane\n **\n ** Plan is to support a finte number of chat graph shapes\n ** and investigate the interop between them.\n */\n/* global $rdf */\nimport { store } from 'solid-logic'\nconst UI = require('solid-ui')\nconst ns = UI.ns\n\nmodule.exports = {\n icon: UI.icons.iconBase + 'noun_346319.svg',\n\n name: 'chat',\n\n /*\n * As part of the work on merging the existing chat views (aka panes) into one view\n * https://github.com/solid/chat-pane/issues/17\n * we want to dis-incentivize the use of Small Chat until we've gotten the work done\n * by making it difficult to create new data resources that uses the Small Chat view\n * but we still want existing resources to be viewed by the Small Chat view\n */\n audience: [ns.solid('PowerUser')],\n\n /* AN RRSAgent IRC log:\n\n <irc://localhost:6667/&mit>\n a foaf:ChatChannel\n foaf:chatEventList\n [ rdf:_100\n <#T19-10-58>\n rdf:_101\n <#T19-10-58-1>\n rdf:_102\n ..\n <#T19-28-47-1>\n dc:creator\n [ a wn:Person; foaf:nick \"timbl\" ]\n dc:date\n \"2016-03-15T19:28:47Z\"\n dc:description\n \"timbl has joined &mit\"\n a foaf:chatEvent.\n\n */\n\n label: function (subject, context) {\n const kb = context.session.store\n var n = kb.each(subject, ns.wf('message')).length\n if (n > 0) return 'Chat (' + n + ')' // Show how many in hover text\n\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Chat'))) {\n // subject is the file\n return 'Meeting chat'\n }\n if (kb.holds(undefined, ns.rdf('type'), ns.foaf('ChatChannel'), subject)) {\n // subject is the file\n return 'IRC log' // contains anything of this type\n }\n return null // Suppress pane otherwise\n },\n\n mintClass: ns.meeting('Chat'),\n\n mintNew: function (context, newPaneOptions) {\n const kb = context.session.store\n var updater = kb.updater\n if (newPaneOptions.me && !newPaneOptions.me.uri) {\n throw new Error('chat mintNew: Invalid userid ' + newPaneOptions.me)\n }\n\n var newInstance = (newPaneOptions.newInstance =\n newPaneOptions.newInstance ||\n kb.sym(newPaneOptions.newBase + 'index.ttl#this'))\n var newChatDoc = newInstance.doc()\n\n kb.add(newInstance, ns.rdf('type'), ns.meeting('Chat'), newChatDoc)\n kb.add(newInstance, ns.dc('title'), 'Chat', newChatDoc)\n kb.add(newInstance, ns.dc('created'), new Date(), newChatDoc)\n if (newPaneOptions.me) {\n kb.add(newInstance, ns.dc('author'), newPaneOptions.me, newChatDoc)\n }\n\n return new Promise(function (resolve, reject) {\n updater.put(\n newChatDoc,\n kb.statementsMatching(undefined, undefined, undefined, newChatDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n resolve(newPaneOptions)\n } else {\n reject(\n new Error('FAILED to save new tool at: ' + uri2 + ' : ' + message)\n )\n }\n }\n )\n })\n },\n\n render: function (subject, context) {\n const kb = context.session.store\n const dom = context.dom\n var complain = function complain (message, color) {\n var pre = dom.createElement('pre')\n pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n\n var div = dom.createElement('div')\n div.setAttribute('class', 'chatPane')\n const options = {} // Like newestFirst\n var messageStore\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Chat'))) {\n // subject may be the file\n messageStore = subject.doc()\n } else if (kb.any(subject, UI.ns.wf('message'))) {\n messageStore = store.any(subject, UI.ns.wf('message')).doc()\n } else if (\n kb.holds(undefined, ns.rdf('type'), ns.foaf('ChatChannel'), subject) ||\n kb.holds(subject, ns.rdf('type'), ns.foaf('ChatChannel'))\n ) {\n // subject is the file\n var ircLogQuery = function () {\n var query = new $rdf.Query('IRC log entries')\n var v = []\n var vv = ['chan', 'msg', 'date', 'list', 'pred', 'creator', 'content']\n vv.map(function (x) {\n query.vars.push((v[x] = $rdf.variable(x)))\n })\n query.pat.add(v.chan, ns.foaf('chatEventList'), v.list) // chatEventList\n query.pat.add(v.list, v.pred, v.msg) //\n query.pat.add(v.msg, ns.dc('date'), v.date)\n query.pat.add(v.msg, ns.dc('creator'), v.creator)\n query.pat.add(v.msg, ns.dc('description'), v.content)\n return query\n }\n messageStore = subject.doc()\n options.query = ircLogQuery()\n } else {\n complain('Unknown chat type')\n }\n\n // var context = {dom, div}\n // UI.authn.logIn(context).then( context => { // The widget itself sees to login\n\n div.appendChild(UI.messageArea(dom, kb, subject, messageStore, options))\n kb.updater.addDownstreamChangeListener(messageStore, function () {\n UI.widgets.refreshTree(div)\n }) // Live update\n // })\n\n return div\n }\n}\n"],"file":"shortChatPane.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chat-pane",
3
- "version": "2.4.15",
3
+ "version": "2.4.16",
4
4
  "description": "Solid-compatible Panes: Chat",
5
5
  "main": "./lib/main.js",
6
6
  "files": [
@@ -12,11 +12,12 @@
12
12
  "lint": "eslint '*.js'",
13
13
  "lint-fix": "eslint '*.js' --fix",
14
14
  "test": "npm run lint",
15
+ "clean": "rm -rf lib && rm -rf dist",
15
16
  "prepublishOnly": "npm test && npm run build && npm run build-lib",
16
17
  "postpublish": "git push origin main --follow-tags",
17
18
  "watch": "webpack --watch",
18
19
  "start": "webpack-dev-server --open",
19
- "build": "webpack",
20
+ "build": "webpack && npm run build-lib",
20
21
  "build-lib": "babel src -d lib --source-maps --extensions '.ts,.js'"
21
22
  },
22
23
  "repository": {
@@ -47,8 +48,8 @@
47
48
  "buffer": "^6.0.3",
48
49
  "crypto-browserify": "^3.12.0",
49
50
  "path-browserify": "^1.0.1",
50
- "rdflib": "^2.2.17",
51
- "solid-ui": "^2.4.16",
51
+ "solid-logic": "^1.3.14",
52
+ "solid-ui": "^2.4.19",
52
53
  "stream-browserify": "^3.0.0"
53
54
  },
54
55
  "devDependencies": {
package/src/create.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { authn, store, ns, widgets } from 'solid-ui'
1
+ import { ns, widgets } from 'solid-ui'
2
+ import { authn, store } from 'solid-logic'
2
3
  import { NamedNode, st } from 'rdflib'
3
4
  import longChatPane, { CHAT_LOCATION_IN_CONTAINER } from './longChatPane'
4
5
 
package/src/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  /* global SolidAuthClient */
2
2
 
3
+ import { store, authn, authSession } from 'solid-logic'
3
4
  const ChatPane = require('./longChatPane.js')
4
5
  const $rdf = require('rdflib')
5
6
  const UI = require('solid-ui')
@@ -19,13 +20,13 @@ window.followLink = async function (from, follow, multiple) {
19
20
  const subject = $rdf.sym(from)
20
21
  const doc = subject.doc()
21
22
  await new Promise((resolve, reject) => {
22
- UI.store.fetcher.load(doc).then(resolve, reject)
23
+ store.fetcher.load(doc).then(resolve, reject)
23
24
  })
24
25
  const predicate = $rdf.sym(follow)
25
26
  if (multiple) {
26
- return UI.store.each(subject, predicate).map(n => n.value)
27
+ return store.each(subject, predicate).map(n => n.value)
27
28
  }
28
- return UI.store.any(subject, predicate).value
29
+ return store.any(subject, predicate).value
29
30
  }
30
31
 
31
32
  function toLi (uri) {
@@ -33,7 +34,7 @@ function toLi (uri) {
33
34
  }
34
35
 
35
36
  async function getChatsList () {
36
- const { instances } = await UI.authn.findAppInstances({}, $rdf.sym('http://www.w3.org/ns/pim/meeting#LongChat'))
37
+ const { instances } = await UI.login.findAppInstances({}, $rdf.sym('http://www.w3.org/ns/pim/meeting#LongChat'))
37
38
  return `<h2>Your chats:
38
39
  <ul>
39
40
  ${instances.map(n => n.value).map(toLi)}
@@ -41,7 +42,7 @@ async function getChatsList () {
41
42
  }
42
43
 
43
44
  window.inviteSomeone = async function () {
44
- const invitee = UI.store.namedNode(document.getElementById('invitee').value)
45
+ const invitee = store.namedNode(document.getElementById('invitee').value)
45
46
  const created = await getChat(invitee)
46
47
  console.log(created)
47
48
  renderMenuDiv()
@@ -78,12 +79,12 @@ async function appendChatPane (dom, uri) {
78
79
  const doc = subject.doc()
79
80
 
80
81
  await new Promise((resolve, reject) => {
81
- UI.store.fetcher.load(doc).then(resolve, reject)
82
+ store.fetcher.load(doc).then(resolve, reject)
82
83
  })
83
84
  const context = { // see https://github.com/solid/solid-panes/blob/005f90295d83e499fd626bd84aeb3df10135d5c1/src/index.ts#L30-L34
84
85
  dom,
85
86
  session: {
86
- store: UI.store
87
+ store: store
87
88
  }
88
89
  }
89
90
  const options = {}
@@ -100,7 +101,7 @@ document.addEventListener('DOMContentLoaded', function () {
100
101
  window.onload = () => {
101
102
  console.log('document ready')
102
103
  const onSessionChange = () => {
103
- const currentUser = UI.authn.currentUser()
104
+ const currentUser = authn.currentUser()
104
105
  if (!currentUser) {
105
106
  console.log('The user is not logged in')
106
107
  document.getElementById('loginBanner').innerHTML = '<button onclick="popupLogin()">Log in</button>'
@@ -116,16 +117,16 @@ window.onload = () => {
116
117
  appendChatPane(document, uri)
117
118
  }
118
119
  }
119
- UI.authn.authSession.onLogin(() => onSessionChange())
120
- UI.authn.authSession.onSessionRestore(() => onSessionChange())
120
+ authSession.onLogin(() => onSessionChange())
121
+ authSession.onSessionRestore(() => onSessionChange())
121
122
  onSessionChange()
122
123
  }
123
124
  window.logout = () => {
124
- UI.authn.authSession.logout()
125
+ authSession.logout()
125
126
  window.location = ''
126
127
  }
127
128
  window.popupLogin = async function () {
128
- if (!UI.authn.currentUser()) {
129
- UI.authn.renderSignInPopup(document)
129
+ if (!authn.currentUser()) {
130
+ UI.login.renderSignInPopup(document)
130
131
  }
131
132
  }
@@ -2,7 +2,7 @@
2
2
  **
3
3
  ** A long chat consists a of a series of chat files saved by date.
4
4
  */
5
-
5
+ import { authn } from 'solid-logic'
6
6
  const UI = require('solid-ui')
7
7
  const ns = UI.ns
8
8
  const $rdf = require('rdflib')
@@ -156,9 +156,9 @@ module.exports = {
156
156
  const registrationArea = menuTable.appendChild(dom.createElement('tr'))
157
157
  const statusArea = menuTable.appendChild(dom.createElement('tr'))
158
158
 
159
- var me = UI.authn.currentUser()
159
+ var me = authn.currentUser()
160
160
  if (me) {
161
- await UI.authn.registrationControl(
161
+ await UI.login.registrationControl(
162
162
  { noun, me, statusArea, dom, div: registrationArea },
163
163
  chatChannel,
164
164
  mainClass
@@ -217,7 +217,7 @@ module.exports = {
217
217
 
218
218
  function renderCreationControl (refreshTarget, noun) {
219
219
  var creationDiv = dom.createElement('div')
220
- var me = UI.authn.currentUser()
220
+ var me = authn.currentUser()
221
221
  var creationContext = {
222
222
  // folder: subject,
223
223
  div: creationDiv,
@@ -236,7 +236,7 @@ module.exports = {
236
236
  async function renderInstances (theClass, noun) {
237
237
  const instancesDiv = dom.createElement('div')
238
238
  var context = { dom, div: instancesDiv, noun: noun }
239
- await UI.authn.registrationList(context, { public: true, private: true, type: theClass })
239
+ await UI.login.registrationList(context, { public: true, private: true, type: theClass })
240
240
  instancesDiv.appendChild(renderCreationControl(instancesDiv, noun))
241
241
  return instancesDiv
242
242
  }
@@ -274,7 +274,7 @@ module.exports = {
274
274
  participantsArea.appendChild(panelCloseButton(participantsArea))
275
275
 
276
276
  // Record my participation and display participants
277
- var me = UI.authn.currentUser()
277
+ var me = authn.currentUser()
278
278
  if (!me) alert('Should be logeed in for partipants panel')
279
279
  UI.pad.manageParticipation(
280
280
  dom,
@@ -367,7 +367,7 @@ module.exports = {
367
367
  div.setAttribute('class', 'chatPane')
368
368
  const options = { infinite: true }
369
369
  const participantsHandlerContext = { noun: 'chat room', div, dom: dom }
370
- participantsHandlerContext.me = UI.authn.currentUser() // If already logged on
370
+ participantsHandlerContext.me = authn.currentUser() // If already logged on
371
371
 
372
372
  async function buildPane () {
373
373
  let prefMap
@@ -4,7 +4,7 @@
4
4
  ** and investigate the interop between them.
5
5
  */
6
6
  /* global $rdf */
7
-
7
+ import { store } from 'solid-logic'
8
8
  const UI = require('solid-ui')
9
9
  const ns = UI.ns
10
10
 
@@ -117,7 +117,7 @@ module.exports = {
117
117
  // subject may be the file
118
118
  messageStore = subject.doc()
119
119
  } else if (kb.any(subject, UI.ns.wf('message'))) {
120
- messageStore = UI.store.any(subject, UI.ns.wf('message')).doc()
120
+ messageStore = store.any(subject, UI.ns.wf('message')).doc()
121
121
  } else if (
122
122
  kb.holds(undefined, ns.rdf('type'), ns.foaf('ChatChannel'), subject) ||
123
123
  kb.holds(subject, ns.rdf('type'), ns.foaf('ChatChannel'))