meeting-pane 2.3.8 → 2.3.9-095f1276

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md CHANGED
File without changes
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
1
  # meeting-pane
2
2
 
3
- Bring together schedule, people, materials, discussion around a meeting.
3
+ Bring together schedule, people, materials, discussion around a meeting.
File without changes
File without changes
@@ -5,6 +5,8 @@
5
5
  ** Putting together some of the tools we have to manage a Meeting
6
6
  */
7
7
  // const VideoRoomPrefix = 'https://appear.in/'
8
+ var logic = require('solid-logic');
9
+
8
10
  var VideoRoomPrefix = 'https://meet.jit.si/';
9
11
 
10
12
  var UI = require('solid-ui');
@@ -41,7 +43,7 @@ module.exports = {
41
43
  options.newInstance = options.newInstance || kb.sym(options.newBase + 'index.ttl#this');
42
44
  var meeting = options.newInstance;
43
45
  var meetingDoc = meeting.doc();
44
- var me = UI.authn.currentUser();
46
+ var me = logic.authn.currentUser();
45
47
 
46
48
  if (me) {
47
49
  kb.add(meeting, ns.dc('author'), me, meetingDoc);
@@ -363,7 +365,7 @@ module.exports = {
363
365
  /*
364
366
  var makeAddressBook = function (toolObject) {
365
367
  var newBase = meetingBase + 'Group/'
366
- var kb = UI.store
368
+ var kb = store
367
369
  var group = kb.any(meeting, ns.meeting('addressBook'))
368
370
  if (!group) {
369
371
  group = $rdf.sym(newBase + 'index.ttl#this')
@@ -372,7 +374,7 @@ module.exports = {
372
374
  var div = dom.createElement('div')
373
375
  var context = { dom: dom, div: div }
374
376
  var book
375
- UI.authn.findAppInstances(context, ns.vcard('AddressBook')).then(
377
+ UI.login.findAppInstances(context, ns.vcard('AddressBook')).then(
376
378
  function (context) {
377
379
  if (context.instances.length === 0) {
378
380
  complain('You have no solid address book. It is really handy to have one to keep track of people and groups')
@@ -669,7 +671,7 @@ module.exports = {
669
671
  });
670
672
  };
671
673
 
672
- var mintUI = UI.authn.selectWorkspace(dom, appDetails, gotWS);
674
+ var mintUI = UI.login.selectWorkspace(dom, appDetails, gotWS);
673
675
  parameterCell.appendChild(mintUI);
674
676
  }; // //////////////////////////////////////////////////////////// end of new tab creation functions
675
677
 
@@ -750,7 +752,7 @@ module.exports = {
750
752
  };
751
753
 
752
754
  var loginOutButton;
753
- UI.authn.checkUser().then(function (webId) {
755
+ logic.authn.checkUser().then(function (webId) {
754
756
  if (webId) {
755
757
  me = webId;
756
758
  star.addEventListener('click', selectNewTool);
@@ -758,7 +760,7 @@ module.exports = {
758
760
  return;
759
761
  }
760
762
 
761
- loginOutButton = UI.authn.loginStatusBox(dom, function (webIdUri) {
763
+ loginOutButton = UI.login.loginStatusBox(dom, function (webIdUri) {
762
764
  if (webIdUri) {
763
765
  me = kb.sym(webIdUri);
764
766
  parameterCell.removeChild(loginOutButton); // loginOutButton.setAttribute('',iconStyle) // make it match the icons
@@ -948,7 +950,7 @@ module.exports = {
948
950
  };
949
951
 
950
952
  selectedGroup = kb.any(meeting, ns.meeting('particpantGroup'));
951
- UI.authn.loadTypeIndexes(context).then(function () {
953
+ logic.loadTypeIndexes(context).then(function () {
952
954
  // Assumes that the type index has an entry for addressbook
953
955
  var options = {
954
956
  defaultNewGroupName: 'Meeting Participants',
@@ -964,7 +966,7 @@ module.exports = {
964
966
  var form = $rdf.sym('https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#main');
965
967
  UI.widgets.appendForm(document, containerDiv, {}, meeting, form, meeting.doc(), complainIfBad);
966
968
  containerDiv.appendChild(tipDiv('Drag URL-bar icons of web pages into the tab bar on the left to add new meeting materials.'));
967
- me = UI.authn.currentUser();
969
+ me = logic.authn.currentUser();
968
970
 
969
971
  if (me) {
970
972
  kb.add(meeting, ns.dc('author'), me, meetingDoc); // @@ should nly be on initial creation?
@@ -977,7 +979,7 @@ module.exports = {
977
979
  div: containerDiv,
978
980
  dom: dom
979
981
  };
980
- UI.authn.registrationControl(context, meeting, ns.meeting('Meeting')).then(function (_context) {
982
+ UI.login.registrationControl(context, meeting, ns.meeting('Meeting')).then(function (_context) {
981
983
  console.log('Registration control finsished.');
982
984
  });
983
985
  var options = {};
@@ -1027,7 +1029,8 @@ module.exports = {
1027
1029
  } else if (subject.sameTerm(meeting)) {
1028
1030
  // self reference? force details form
1029
1031
  renderDetails();
1030
- } else if (subject.sameTerm(subject.doc()) && !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('Chat')) && !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('PaneView'))) {} else {
1032
+ } else if (subject.sameTerm(subject.doc()) && !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('Chat')) && !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('PaneView')) // eslint-disable-next-line no-empty
1033
+ ) {} else {
1031
1034
  table = containerDiv.appendChild(dom.createElement('table'));
1032
1035
  dataBrowserContext.getOutliner(dom).GotoSubject(subject, true, undefined, false, undefined, table);
1033
1036
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/meetingPane.js"],"names":["VideoRoomPrefix","UI","require","ns","$rdf","meetingDetailsFormText","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","holds","rdf","meeting","mintClass","mintNew","options","Promise","resolve","reject","newInstance","sym","newBase","meetingDoc","doc","me","authn","currentUser","add","dc","Date","ui","Literal","undefined","xsd","toolList","Collection","elements","push","updater","put","statementsMatching","uri2","ok","message","Error","render","dataBrowserContext","dom","thisPane","complain","color","console","log","pre","createElement","setAttribute","div","appendChild","createTextNode","complainIfBad","meetingBase","dir","uri","table","style","topTR","mainTR","toolBar0","toolBar1","toolBar","saveBackMeetingDoc","tabs","refresh","resetTools","saveAppDocumentLinkAndAddNewThing","tool","thing","pred","appDoc","makeToolNode","target","iconURI","x","widgets","newThing","rdfs","the","googleMapsSpecial","page","initialPrefix","finalPrefix","myPersonalApiKEY","match","startsWith","map","replace","handleDroppedThing","addIframeTool","wf","utils","addLink","toolObject","limit","shareTab","newPaneOptions","pane","paneRegistry","byName","predicate","tabTitle","view","noIndexHTML","makeNewPaneTool","addParticipant","pref","any","foaf","obj","group","addPersonToGroup","ins","st","vcard","fetcher","nowOrWhenFetched","_body","update","body","makeParticipantsGroup","then","putBack","contentType","_xhr","err","u","indexOf","mess","addAttachmentTab","types","findTypeURIs","ty","hh","getHeader","ok2","j","length","droppedURIHandler","uris","all","_a","droppedFileHandler","files","uploadFiles","theFile","_destURI","type","makePicturesFolder","makeMaterialsFolder","makeGroup","_toolObject","makePoll","useExisting","folderName","_folderName","instanceClass","instanceName","makePad","makeMeeting","askName","parameterCell","URIsegment","encodeURIComponent","e","existing","makeAgenda","makeActions","stateStore","anyValue","cal","makeChat","messageStore","makeVideoCall","genUuid","makeAttachment","makeSharing","makeNewMeeting","appDetails","noun","gotWS","ws","base","removeChild","mintUI","p","innerHTML","errorMessageBlock","selectWorkspace","toolIcons","maker","hint","disabled","settingsForm","parse","iconStyle","iconCell","star","visible","selectNewTool","_event","styleTheIcons","loginOutButton","checkUser","webId","addEventListener","loginStatusBox","webIdUri","iconArray","i","foo","selectTool","renderTab","item","value","s","textContent","tr","left","right","img","tipDiv","text","d","renderTabSettings","containerDiv","form","appendForm","document","delButton","deleteButtonWithCheck","sameTerm","splice","ds","concat","remove","renderMain","selectedGroup","showIframe","iframe","padding","renderPeoplePicker","groupPickedCb","toIns","loadTypeIndexes","defaultNewGroupName","picker","PeoplePicker","index","renderDetails","statusArea","registrationControl","_context","pad","manageParticipation","imageStyle","detailsBottom","spawn","forka","fork","width","getOutliner","GotoSubject","ordered","orientation","backgroundColor","tabWidget","aclControl","preventBrowserDropEvents","makeDropTarget","tabContainer"],"mappings":"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","sourcesContent":["/* Meeting materials and tools Pane\n **\n ** Putting together some of the tools we have to manage a Meeting\n */\n\n// const VideoRoomPrefix = 'https://appear.in/'\nconst VideoRoomPrefix = 'https://meet.jit.si/'\n\nconst UI = require('solid-ui')\nconst ns = UI.ns\nconst $rdf = require('rdflib')\n\nconst meetingDetailsFormText = require('./meetingDetailsForm.js')\n\nmodule.exports = {\n icon: UI.icons.iconBase + 'noun_66617.svg',\n\n name: 'meeting',\n\n audience: [ns.solid('PowerUser')],\n\n label: function (subject, context) {\n var kb = context.session.store\n var ns = UI.ns\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Meeting'))) {\n return 'Meeting'\n }\n return null // Suppress pane otherwise\n },\n\n // Create a new Meeting thing\n //\n // returns: A promise of a meeting object\n //\n\n mintClass: UI.ns.meeting('Meeting'),\n\n mintNew: function (context, options) {\n return new Promise(function (resolve, reject) {\n var kb = context.session.store\n var ns = UI.ns\n options.newInstance =\n options.newInstance || kb.sym(options.newBase + 'index.ttl#this')\n var meeting = options.newInstance\n var meetingDoc = meeting.doc()\n\n var me = UI.authn.currentUser()\n\n if (me) {\n kb.add(meeting, ns.dc('author'), me, meetingDoc)\n }\n\n kb.add(meeting, ns.rdf('type'), ns.meeting('Meeting'), meetingDoc)\n kb.add(meeting, ns.dc('created'), new Date(), meetingDoc)\n kb.add(\n meeting,\n ns.ui('backgroundColor'),\n new $rdf.Literal('#ddddcc', undefined, ns.xsd('color')),\n meetingDoc\n )\n var toolList = new $rdf.Collection()\n kb.add(meeting, ns.meeting('toolList'), toolList, meetingDoc)\n\n toolList.elements.push(meeting) // Add the meeting itself - see renderMain()\n\n kb.updater.put(\n meetingDoc,\n kb.statementsMatching(undefined, undefined, undefined, meetingDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n resolve(options)\n } else {\n reject(new Error('Error writing meeting configuration: ' + message))\n }\n }\n )\n })\n },\n\n // Returns a div\n\n render: function (subject, dataBrowserContext) {\n const dom = dataBrowserContext.dom\n var kb = dataBrowserContext.session.store\n var ns = UI.ns\n var updater = kb.updater\n var thisPane = this\n\n var complain = function complain (message, color) {\n console.log(message)\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 complainIfBad = function (ok, message) {\n if (!ok) complain(message)\n }\n\n var meeting = subject\n var meetingDoc = subject.doc()\n var meetingBase = subject.dir().uri\n var div = dom.createElement('div')\n var table = div.appendChild(dom.createElement('table'))\n table.style = 'width: 100%; height: 100%; margin:0;'\n var topTR = table.appendChild(dom.createElement('tr'))\n topTR.appendChild(dom.createElement('div')) // topDiv\n var mainTR = table.appendChild(dom.createElement('tr'))\n\n var toolBar0 = table.appendChild(dom.createElement('td'))\n var toolBar1 = toolBar0.appendChild(dom.createElement('table'))\n var toolBar = toolBar1.appendChild(dom.createElement('tr'))\n\n topTR.setAttribute('style', 'height: 2em;') // spacer if notthing else\n\n var me = null // @@ Put code to find out logged in person\n\n var saveBackMeetingDoc = function () {\n updater.put(\n meetingDoc,\n kb.statementsMatching(undefined, undefined, undefined, meetingDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n tabs.refresh()\n resetTools()\n } else {\n message =\n 'FAILED to save new thing at: ' + meetingDoc + ' : ' + message\n complain(message)\n }\n }\n )\n }\n\n var saveAppDocumentLinkAndAddNewThing = function (tool, thing, pred) {\n var appDoc = thing.doc()\n if (pred) {\n kb.add(meeting, pred, thing, appDoc) // Specific Link back to meeting\n }\n kb.add(thing, ns.meeting('parentMeeting'), meeting, appDoc) // Generic link back to meeting\n updater.put(\n appDoc,\n kb.statementsMatching(undefined, undefined, undefined, appDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n saveBackMeetingDoc()\n } else {\n complain('FAILED to save new tool at: ' + thing + ' : ' + message)\n }\n }\n )\n }\n\n var makeToolNode = function (target, pred, label, iconURI) {\n if (pred) {\n kb.add(meeting, pred, target, meetingDoc)\n }\n var x = UI.widgets.newThing(meetingDoc)\n if (label) kb.add(x, ns.rdfs('label'), label, meetingDoc)\n if (iconURI) kb.add(x, ns.meeting('icon'), kb.sym(iconURI), meetingDoc)\n kb.add(x, ns.rdf('type'), ns.meeting('Tool'), meetingDoc)\n kb.add(x, ns.meeting('target'), target, meetingDoc)\n var toolList = kb.the(meeting, ns.meeting('toolList'))\n toolList.elements.push(x)\n return x\n }\n\n // Map from end-user non-iframeable Google maps URI to G Maps API\n // Input: like https://www.google.co.uk/maps/place/Mastercard/@53.2717971,-6.2042699,17z/...\n // Output:\n function googleMapsSpecial (page) {\n const initialPrefix = /https:\\/\\/www\\.google\\..*\\/maps\\//\n const finalPrefix = 'https://www.google.com/maps/embed/v1/'\n const myPersonalApiKEY = 'AIzaSyB8aaT6bY9tcLCmc2oPCkdUYLmTOWM8R54' // Get your own key!\n // GET YOUR KEY AT https://developers.google.com/maps/documentation/javascript/\n const uri = page.uri\n if (!uri.match(initialPrefix)) return page\n if (uri.startsWith(finalPrefix)) return page // Already done\n const map =\n uri.replace(initialPrefix, finalPrefix) + '&key=' + myPersonalApiKEY\n console.log('Converted Google Map URI! ' + map)\n return $rdf.sym(map)\n }\n\n // //////////////////// DRAG and Drop\n\n var handleDroppedThing = function (target) {\n // @@ idea: look\n return new Promise(function (resolve) {\n // Add a meeting tab for a web resource. Alas many resource canot be framed\n // as they block framing, or are insecure.\n var addIframeTool = function (target) {\n var tool = makeToolNode(\n target,\n UI.ns.wf('attachment'),\n UI.utils.label(target),\n null\n )\n kb.add(tool, UI.ns.meeting('view'), 'iframe', meetingDoc)\n }\n\n var addLink = function (target) {\n const pred = ns.wf('attachment')\n kb.add(subject, pred, target, subject.doc())\n var toolObject = {\n icon: 'noun_160581.svg', // right arrow \"link\"\n limit: 1,\n shareTab: true // but many things behind it\n }\n var newPaneOptions = {\n newInstance: subject, // kb.sym(subject.doc().uri + '#LinkListTool'),\n pane: dataBrowserContext.session.paneRegistry.byName('link'), // the pane to be used to mint a new thing\n predicate: ns.meeting('attachmentTool'),\n tabTitle: 'Links',\n view: 'link', // The pane to be used when it is viewed\n noIndexHTML: true\n }\n return makeNewPaneTool(toolObject, newPaneOptions)\n }\n\n // When paerson added to he meeting, make an ad hoc group\n // of meeting participants is one does not already exist, and add them\n var addParticipant = function (target) {\n var pref = kb.any(target, ns.foaf('preferredURI'))\n var obj = pref ? kb.sym(pref) : target\n var group = kb.any(meeting, ns.meeting('attendeeGroup'))\n var addPersonToGroup = function (obj, group) {\n var ins = [\n $rdf.st(group, UI.ns.vcard('hasMember'), obj, group.doc())\n ] // @@@ Complex rules about webid?\n var name =\n kb.any(obj, ns.vcard('fn')) || kb.any(obj, ns.foaf('name'))\n if (name) {\n ins.push($rdf.st(obj, UI.ns.vcard('fn'), name, group.doc()))\n }\n kb.fetcher.nowOrWhenFetched(group.doc(), undefined, function (\n ok,\n _body\n ) {\n if (!ok) {\n complain(\"Can't read group to add person\" + group)\n return\n }\n kb.updater.update([], ins, function (uri, ok, body) {\n complainIfBad(ok, body)\n if (ok) {\n console.log('Addded to particpants OK: ' + obj)\n }\n })\n })\n }\n if (group) {\n addPersonToGroup(obj, group)\n return\n }\n makeParticipantsGroup()\n .then(function (options) {\n var group = options.newInstance\n addPersonToGroup(obj, group)\n kb.fetcher\n .putBack(meetingDoc, { contentType: 'text/turtle' })\n .then(function (_xhr) {\n console.log('Particiants Group created: ' + group)\n })\n })\n .catch(function (err) {\n complain(err)\n })\n }\n\n console.log('Dropped on thing ' + target) // icon was: UI.icons.iconBase + 'noun_25830.svg'\n var u = target.uri\n if (u.startsWith('http:') && u.indexOf('#') < 0) {\n // insecure Plain document\n addLink(target)\n return resolve(target)\n }\n kb.fetcher.nowOrWhenFetched(target, function (ok, mess) {\n function addAttachmentTab (target) {\n target = googleMapsSpecial(target)\n console.log('make web page attachement tab ' + target) // icon was: UI.icons.iconBase + 'noun_25830.svg'\n var tool = makeToolNode(\n target,\n UI.ns.wf('attachment'),\n UI.utils.label(target),\n null\n )\n kb.add(tool, UI.ns.meeting('view'), 'iframe', meetingDoc)\n return resolve(target)\n }\n if (!ok) {\n console.log(\n 'Error looking up dropped thing, will just add it anyway. ' +\n target +\n ': ' +\n mess\n )\n return addAttachmentTab(target) // You can still try iframing it. (Could also add to list of links in PersonTR widgets)\n } else {\n var obj = target\n var types = kb.findTypeURIs(obj)\n for (var ty in types) {\n console.log(' drop object type includes: ' + ty)\n }\n if (\n ns.vcard('Individual').uri in types ||\n ns.foaf('Person').uri in types ||\n ns.foaf('Agent').uri in types\n ) {\n addParticipant(target)\n return resolve(target)\n }\n if (u.startsWith('https:') && u.indexOf('#') < 0) {\n // Plain secure document\n // can we iframe it?\n var hh = kb.fetcher.getHeader(target, 'x-frame-options')\n var ok2 = true\n if (hh) {\n for (var j = 0; j < hh.length; j++) {\n console.log('x-frame-options: ' + hh[j])\n if (hh[j].indexOf('sameorigin') < 0) {\n // (and diff origin @@)\n ok2 = false\n }\n if (hh[j].indexOf('deny') < 0) {\n ok2 = false\n }\n }\n }\n if (ok2) {\n target = googleMapsSpecial(target) // tweak Google maps to embed OK\n addIframeTool(target) // Something we can maybe iframe\n return resolve(target)\n }\n } // Something we cannot iframe, and must link to:\n console.log('Default: assume web page attachement ' + target) // icon was: UI.icons.iconBase + 'noun_25830.svg'\n return addAttachmentTab(target)\n }\n })\n }) // promise\n }\n\n // When a set of URIs are dropped on the tabs\n var droppedURIHandler = function (uris) {\n Promise.all(\n uris.map(function (u) {\n var target = $rdf.sym(u) // Attachment needs text label to disinguish I think not icon.\n return handleDroppedThing(target) // can add to meetingDoc but must be sync\n })\n ).then(function (_a) {\n saveBackMeetingDoc()\n })\n }\n\n var droppedFileHandler = function (files) {\n UI.widgets.uploadFiles(\n kb.fetcher,\n files,\n meeting.dir().uri + 'Files',\n meeting.dir().uri + 'Pictures',\n function (theFile, _destURI) {\n if (theFile.type.startsWith('image/')) {\n makePicturesFolder('Files') // If necessary\n } else {\n makeMaterialsFolder('Pictures')\n }\n }\n )\n }\n\n // ////////////////////////////////////////////////////// end of drag drop\n\n var makeGroup = function (_toolObject) {\n var newBase = meetingBase + 'Group/'\n var kb = dataBrowserContext.session.store\n var group = kb.any(meeting, ns.meeting('particpants'))\n if (!group) {\n group = $rdf.sym(newBase + 'index.ttl#this')\n }\n console.log('Participant group: ' + group)\n\n var tool = makeToolNode(\n group,\n ns.meeting('particpants'),\n 'Particpants',\n UI.icons.iconBase + 'noun_339237.svg'\n ) // group: noun_339237.svg 'noun_15695.svg'\n kb.add(tool, UI.ns.meeting('view'), 'peoplePicker', meetingDoc)\n saveBackMeetingDoc()\n }\n /*\n var makeAddressBook = function (toolObject) {\n var newBase = meetingBase + 'Group/'\n var kb = UI.store\n var group = kb.any(meeting, ns.meeting('addressBook'))\n if (!group) {\n group = $rdf.sym(newBase + 'index.ttl#this')\n }\n\n // Create a tab for the addressbook\n var div = dom.createElement('div')\n var context = { dom: dom, div: div }\n var book\n UI.authn.findAppInstances(context, ns.vcard('AddressBook')).then(\n function (context) {\n if (context.instances.length === 0) {\n complain('You have no solid address book. It is really handy to have one to keep track of people and groups')\n } else if (context.instances.length > 1) {\n var s = context.instances.map(function (x) { return '' + x }).join(', ')\n complain('You have more than one solid address book: ' + s + ' Not supported yet.')\n } else { // addressbook\n book = context.instances[0]\n var tool = makeToolNode(book, ns.meeting('addressBook'), 'Address Book', UI.icons.iconBase + 'noun_15695.svg') // group: noun_339237.svg\n kb.add(tool, UI.ns.meeting('view'), 'contact', meetingDoc)\n saveBackMeetingDoc()\n }\n }\n )\n }\n */\n var makePoll = function (toolObject) {\n var newPaneOptions = {\n useExisting: meeting, // Regard the meeting as being the schedulable event itself.\n // newInstance: meeting,\n pane: dataBrowserContext.session.paneRegistry.byName('schedule'),\n view: 'schedule',\n // predicate: ns.meeting('schedulingPoll'),\n // newBase: meetingBase + 'Schedule/', Not needed as uses existing meeting\n tabTitle: 'Schedule poll',\n noIndexHTML: true\n }\n return makeNewPaneTool(toolObject, newPaneOptions)\n }\n\n var makePicturesFolder = function (folderName) {\n var toolObject = {\n icon: 'noun_598334.svg', // Slideshow @@ find a \"picture\" icon?\n limit: 1,\n shareTab: true // but many things behind it\n }\n var newPaneOptions = {\n newInstance: kb.sym(meeting.dir().uri + folderName + '/'),\n pane: dataBrowserContext.session.paneRegistry.byName('folder'), // @@ slideshow??\n predicate: ns.meeting('pictures'),\n shareTab: true,\n tabTitle: folderName,\n view: 'slideshow',\n noIndexHTML: true\n }\n return makeNewPaneTool(toolObject, newPaneOptions)\n }\n\n var makeMaterialsFolder = function (_folderName) {\n var toolObject = {\n icon: 'noun_681601.svg', // Document\n limit: 1,\n shareTab: true // but many things behind it\n }\n var options = {\n newInstance: kb.sym(meeting.dir().uri + 'Files/'),\n pane: dataBrowserContext.session.paneRegistry.byName('folder'),\n predicate: ns.meeting('materialsFolder'),\n tabTitle: 'Materials',\n noIndexHTML: true\n }\n return makeNewPaneTool(toolObject, options)\n }\n\n var makeParticipantsGroup = function () {\n var toolObject = {\n icon: 'noun_339237.svg', // Group of people\n limit: 1, // Only one tab\n shareTab: true // but many things behind it\n }\n var options = {\n newInstance: kb.sym(meeting.dir().uri + 'Attendees/index.ttl#this'),\n pane: dataBrowserContext.session.paneRegistry.byName('contact'),\n predicate: ns.meeting('attendeeGroup'),\n tabTitle: 'Attendees',\n instanceClass: ns.vcard('Group'),\n instanceName: UI.utils.label(subject) + ' attendees',\n noIndexHTML: true\n }\n\n return makeNewPaneTool(toolObject, options)\n }\n\n // Make Pad for notes of meeting\n\n var makePad = function (toolObject) {\n var newPaneOptions = {\n newBase: meetingBase + 'SharedNotes/',\n predicate: UI.ns.meeting('sharedNotes'),\n tabTitle: 'Shared Notes',\n pane: dataBrowserContext.session.paneRegistry.byName('pad')\n }\n return makeNewPaneTool(toolObject, newPaneOptions)\n }\n\n // Make Sub-meeting of meeting\n\n var makeMeeting = function (toolObject) {\n UI.widgets\n .askName(\n dom,\n kb,\n parameterCell,\n ns.foaf('name'),\n UI.ns.meeting('Meeting')\n )\n .then(function (name) {\n if (!name) {\n return resetTools()\n }\n var URIsegment = encodeURIComponent(name)\n var options = {\n newBase: meetingBase + URIsegment + '/', // @@@ sanitize\n predicate: UI.ns.meeting('subMeeting'),\n tabTitle: name,\n pane: dataBrowserContext.session.paneRegistry.byName('meeting')\n }\n return makeNewPaneTool(toolObject, options)\n })\n .catch(function (e) {\n complain('Error making new sub-meeting: ' + e)\n })\n }\n\n // Returns promise of newPaneOptions\n // In: options.\n // me?, predicate, newInstance ?, newBase, instanceClass\n // out: options. the above plus\n // me, newInstance\n\n function makeNewPaneTool (toolObject, options) {\n return new Promise(function (resolve, reject) {\n var kb = dataBrowserContext.session.store\n if (!options.useExisting) {\n // useExisting means use existing object in new role\n var existing = kb.any(meeting, options.predicate)\n if (existing) {\n if (\n toolObject.limit &&\n toolObject.limit === 1 &&\n !toolObject.shareTab\n ) {\n complain(\n 'Already have ' +\n existing +\n ' as ' +\n UI.utils.label(options.predicate)\n )\n complain('Cant have two')\n return resolve(null)\n }\n if (toolObject.shareTab) {\n // return existing one\n console.log(\n 'Using existing ' +\n existing +\n ' as ' +\n UI.utils.label(options.predicate)\n )\n return resolve({\n me: me,\n newInstance: existing,\n instanceClass: options.instanceClass\n })\n }\n }\n }\n if (!me && !options.me) { reject(new Error('Username not defined for new tool')) }\n options.me = options.me || me\n options.newInstance =\n options.useExisting ||\n options.newInstance ||\n kb.sym(options.newBase + 'index.ttl#this')\n\n options.pane\n .mintNew(dataBrowserContext, options)\n .then(function (options) {\n var tool = makeToolNode(\n options.newInstance,\n options.predicate,\n options.tabTitle,\n options.pane.icon\n )\n if (options.view) {\n kb.add(tool, UI.ns.meeting('view'), options.view, meetingDoc)\n }\n saveBackMeetingDoc()\n kb.fetcher\n .putBack(meetingDoc, { contentType: 'text/turtle' })\n .then(function (_xhr) {\n resolve(options)\n })\n .catch(function (err) {\n reject(err)\n })\n })\n .catch(function (err) {\n complain(err)\n reject(err)\n })\n })\n }\n\n var makeAgenda = function (_toolObject) {\n // selectTool(icon)\n }\n\n var makeActions = function (_toolObject) {\n var newBase = meetingBase + 'Actions/'\n var kb = dataBrowserContext.session.store\n if (kb.holds(meeting, ns.meeting('actions'))) {\n console.log('Ignored - already have actions')\n return // already got one\n }\n var appDoc = kb.sym(newBase + 'config.ttl')\n var newInstance = kb.sym(newBase + 'config.ttl#this')\n var stateStore = kb.sym(newBase + 'state.ttl')\n\n kb.add(\n newInstance,\n ns.dc('title'),\n (kb.anyValue(meeting, ns.cal('summary')) || 'Meeting ') + ' actions',\n appDoc\n )\n kb.add(newInstance, ns.wf('issueClass'), ns.wf('Task'), appDoc)\n kb.add(newInstance, ns.wf('initialState'), ns.wf('Open'), appDoc)\n kb.add(newInstance, ns.wf('stateStore'), stateStore, appDoc)\n kb.add(newInstance, ns.wf('assigneeClass'), ns.foaf('Person'), appDoc) // @@ set to people in the meeting?\n\n kb.add(newInstance, ns.rdf('type'), ns.wf('Tracker'), appDoc)\n\n // Flag its type in the chat itself as well as in the master meeting config file\n kb.add(newInstance, ns.rdf('type'), ns.wf('Tracker'), appDoc)\n var tool = makeToolNode(\n newInstance,\n ns.meeting('actions'),\n 'Actions',\n UI.icons.iconBase + 'noun_17020.svg'\n )\n saveAppDocumentLinkAndAddNewThing(\n tool,\n newInstance,\n ns.meeting('actions')\n )\n }\n\n var makeChat = function (_toolObject) {\n var newBase = meetingBase + 'Chat/'\n var kb = dataBrowserContext.session.store\n if (kb.holds(meeting, ns.meeting('chat'))) {\n console.log('Ignored - already have chat')\n return // already got one\n }\n var messageStore = kb.sym(newBase + 'chat.ttl')\n\n kb.add(messageStore, ns.rdf('type'), ns.meeting('Chat'), messageStore)\n\n var tool = makeToolNode(\n messageStore,\n ns.meeting('chat'),\n 'Chat',\n UI.icons.iconBase + 'noun_346319.svg'\n )\n saveAppDocumentLinkAndAddNewThing(tool, messageStore, ns.meeting('chat'))\n }\n\n var makeVideoCall = function (_toolObject) {\n var kb = dataBrowserContext.session.store\n var newInstance = $rdf.sym(VideoRoomPrefix + UI.utils.genUuid())\n\n if (kb.holds(meeting, ns.meeting('videoCallPage'))) {\n console.log('Ignored - already have a videoCallPage')\n return // already got one\n }\n kb.add(\n newInstance,\n ns.rdf('type'),\n ns.meeting('VideoCallPage'),\n meetingDoc\n )\n var tool = makeToolNode(\n newInstance,\n ns.meeting('videoCallPage'),\n 'Video call',\n UI.icons.iconBase + 'noun_260227.svg'\n )\n kb.add(tool, ns.meeting('view'), 'iframe', meetingDoc)\n saveBackMeetingDoc()\n }\n\n var makeAttachment = function (_toolObject) {\n UI.widgets\n .askName(dom, kb, parameterCell, ns.log('uri'), UI.ns.rdf('Resource'))\n .then(function (uri) {\n if (!uri) {\n return resetTools()\n }\n var kb = dataBrowserContext.session.store\n var ns = UI.ns\n var target = kb.sym(uri)\n var tool = makeToolNode(\n target,\n ns.wf('attachment'),\n UI.utils.label(target),\n null\n )\n kb.add(tool, ns.meeting('view'), 'iframe', meetingDoc)\n saveBackMeetingDoc()\n })\n .catch(function (e) {\n complain('Error making new sub-meeting: ' + e)\n })\n }\n\n var makeSharing = function (toolObject) {\n var kb = dataBrowserContext.session.store\n var ns = UI.ns\n var target = meeting.dir()\n if (\n toolObject.limit &&\n toolObject.limit === 1 &&\n kb.holds(meeting, ns.wf('sharingControl'))\n ) {\n complain('Ignored - already have ' + UI.utils.label(options.predicate))\n return\n }\n var tool = makeToolNode(\n target,\n ns.wf('sharingControl'),\n 'Sharing',\n UI.icons.iconBase + 'noun_123691.svg'\n )\n kb.add(tool, ns.meeting('view'), 'sharing', meetingDoc)\n saveBackMeetingDoc()\n }\n\n var makeNewMeeting = function () {\n // @@@ make option of continuing series\n var appDetails = { noun: 'meeting' }\n var gotWS = function (ws, base) {\n thisPane\n .mintNew(dataBrowserContext, { newBase: base })\n .then(function (options) {\n var newInstance = options.newInstance\n parameterCell.removeChild(mintUI)\n var p = parameterCell.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 140%;')\n p.innerHTML =\n \"Your <a target='_blank' href='\" +\n newInstance.uri +\n \"'><b>new meeting</b></a> is ready to be set up. \" +\n \"<br/><br/><a target='_blank' href='\" +\n newInstance.uri +\n \"'>Go to your new meeting.</a>\"\n })\n .catch(function (err) {\n parameterCell.removeChild(mintUI)\n parameterCell.appendChild(UI.widgets.errorMessageBlock(dom, err))\n })\n }\n var mintUI = UI.authn.selectWorkspace(dom, appDetails, gotWS)\n parameterCell.appendChild(mintUI)\n }\n\n // //////////////////////////////////////////////////////////// end of new tab creation functions\n\n var toolIcons = [\n {\n icon: 'noun_339237.svg',\n maker: makeGroup,\n hint: 'Make a group of people',\n limit: 1\n },\n {\n icon: 'noun_346777.svg',\n maker: makePoll,\n hint: 'Make a poll to schedule the meeting'\n }, // When meet THIS or NEXT time\n {\n icon: 'noun_48218.svg',\n maker: makeAgenda,\n limit: 1,\n hint: 'Add an agenda list',\n disabled: true\n }, // When meet THIS or NEXT time\n { icon: 'noun_79217.svg', maker: makePad, hint: 'Add a shared notepad' },\n {\n icon: 'noun_346319.svg',\n maker: makeChat,\n limit: 1,\n hint: 'Add a chat channel for the meeting'\n },\n {\n icon: 'noun_17020.svg',\n maker: makeActions,\n limit: 1,\n hint: 'Add a list of action items'\n }, // When meet THIS or NEXT time\n {\n icon: 'noun_260227.svg',\n maker: makeVideoCall,\n limit: 1,\n hint: 'Add a video call for the meeting'\n },\n {\n icon: 'noun_25830.svg',\n maker: makeAttachment,\n hint: 'Attach meeting materials',\n disabled: false\n },\n {\n icon: 'noun_123691.svg',\n maker: makeSharing,\n limit: 1,\n hint: 'Control Sharing',\n disabled: false\n },\n {\n icon: 'noun_66617.svg',\n maker: makeMeeting,\n hint: 'Make a sub meeting',\n disabled: false\n }\n ] // 'noun_66617.svg'\n\n var settingsForm = $rdf.sym(\n 'https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings'\n )\n $rdf.parse(\n meetingDetailsFormText,\n kb,\n settingsForm.doc().uri,\n 'text/turtle'\n ) // Load form directly\n\n var iconStyle = 'padding: 1em; width: 3em; height: 3em;'\n var iconCell = toolBar.appendChild(dom.createElement('td'))\n var parameterCell = toolBar.appendChild(dom.createElement('td'))\n var star = iconCell.appendChild(dom.createElement('img'))\n var visible = false // the inividual tools tools\n\n star.setAttribute('src', UI.icons.iconBase + 'noun_19460_green.svg') // noun_272948.svg\n star.setAttribute('style', iconStyle + 'opacity: 50%;')\n star.setAttribute('title', 'Add another tool to the meeting')\n\n var selectNewTool = function (_event) {\n visible = !visible\n star.setAttribute(\n 'style',\n iconStyle + (visible ? 'background-color: yellow;' : '')\n )\n styleTheIcons(visible ? '' : 'display: none;')\n }\n\n var loginOutButton\n UI.authn.checkUser().then(webId => {\n if (webId) {\n me = webId\n star.addEventListener('click', selectNewTool)\n star.setAttribute('style', iconStyle)\n return\n }\n\n loginOutButton = UI.authn.loginStatusBox(dom, webIdUri => {\n if (webIdUri) {\n me = kb.sym(webIdUri)\n parameterCell.removeChild(loginOutButton)\n // loginOutButton.setAttribute('',iconStyle) // make it match the icons\n star.addEventListener('click', selectNewTool)\n star.setAttribute('style', iconStyle)\n } else {\n console.log('(Logged out)')\n me = null\n }\n })\n loginOutButton.setAttribute('style', 'margin: 0.5em 1em;')\n parameterCell.appendChild(loginOutButton)\n })\n\n var iconArray = []\n for (var i = 0; i < toolIcons.length; i++) {\n var foo = function () {\n var toolObject = toolIcons[i]\n var icon = iconCell.appendChild(dom.createElement('img'))\n icon.setAttribute('src', UI.icons.iconBase + toolObject.icon)\n icon.setAttribute('style', iconStyle + 'display: none;')\n iconArray.push(icon)\n icon.tool = toolObject\n var maker = toolObject.maker\n if (!toolObject.disabled) {\n icon.addEventListener('click', function (_event) {\n selectTool(icon)\n maker(toolObject)\n })\n }\n }\n foo()\n }\n\n var styleTheIcons = function (style) {\n for (var i = 0; i < iconArray.length; i++) {\n var st = iconStyle + style\n if (toolIcons[i].disabled) {\n st += 'opacity: 0.3;'\n }\n iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;'\n }\n }\n var resetTools = function () {\n styleTheIcons('display: none;')\n star.setAttribute('style', iconStyle)\n }\n\n var selectTool = function (icon) {\n styleTheIcons('display: none;') // 'background-color: #ccc;'\n icon.setAttribute('style', iconStyle + 'background-color: yellow;')\n }\n\n // //////////////////////////////\n\n var renderTab = function (div, item) {\n if (kb.holds(item, ns.rdf('type'), ns.meeting('Tool'))) {\n var target = kb.any(item, ns.meeting('target'))\n var label = kb.any(item, ns.rdfs('label'))\n label = label ? label.value : UI.utils.label(target)\n var s = div.appendChild(dom.createElement('div'))\n s.textContent = label\n s.setAttribute('style', 'margin-left: 0.7em')\n var icon = kb.any(item, ns.meeting('icon'))\n if (icon) {\n // Make sure the icon is cleanly on the left of the label\n var table = div.appendChild(dom.createElement('table'))\n var tr = table.appendChild(dom.createElement('tr'))\n var left = tr.appendChild(dom.createElement('td'))\n var right = tr.appendChild(dom.createElement('td'))\n // var img = div.appendChild(dom.createElement('img'))\n var img = left.appendChild(dom.createElement('img'))\n img.setAttribute('src', icon.uri)\n // img.setAttribute('style', 'max-width: 1.5em; max-height: 1.5em;') // @@ SVG shrinks to 0\n img.setAttribute('style', 'width: 1.5em; height: 1.5em;') // @\n img.setAttribute('title', label)\n right.appendChild(s)\n } else {\n div.appendChild(s)\n }\n } else {\n div.textContent = UI.utils.label(item)\n }\n }\n\n var tipDiv = function (text) {\n var d = dom.createElement('div')\n var p = d.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'margin: 0em; padding:3em; color: #888;')\n p.textContent = 'Tip: ' + text\n return d\n }\n\n var renderTabSettings = function (containerDiv, subject) {\n containerDiv.innerHTML = ''\n containerDiv.style += 'border-color: #eed;'\n containerDiv.appendChild(dom.createElement('h3')).textContent =\n 'Adjust this tab'\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Tool'))) {\n var form = $rdf.sym(\n 'https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings'\n )\n UI.widgets.appendForm(\n document,\n containerDiv,\n {},\n subject,\n form,\n meeting.doc(),\n complainIfBad\n )\n var delButton = UI.widgets.deleteButtonWithCheck(\n dom,\n containerDiv,\n 'tab',\n function () {\n var toolList = kb.the(meeting, ns.meeting('toolList'))\n for (var i = 0; i < toolList.elements.length; i++) {\n if (toolList.elements[i].sameTerm(subject)) {\n toolList.elements.splice(i, 1)\n break\n }\n }\n var target = kb.any(subject, ns.meeting('target'))\n var ds = kb\n .statementsMatching(subject)\n .concat(kb.statementsMatching(undefined, undefined, subject))\n .concat(kb.statementsMatching(meeting, undefined, target))\n kb.remove(ds) // Remove all links to and from the tab node\n saveBackMeetingDoc()\n }\n )\n delButton.setAttribute('style', 'width: 1.5em; height: 1.5em;')\n // delButton.setAttribute('class', '')\n // delButton.setAttribute('style', 'height: 2em; width: 2em; margin: 1em; border-radius: 0.5em; padding: 1em; font-size: 120%; background-color: red; color: white;')\n // delButton.textContent = 'Delete this tab'\n } else {\n containerDiv.appendChild(dom.createElement('h4')).textContent =\n '(No adjustments available)'\n }\n }\n\n var renderMain = function (containerDiv, subject) {\n var pane = null\n var table\n var selectedGroup = null\n containerDiv.innerHTML = ''\n var complainIfBad = function (ok, message) {\n if (!ok) {\n containerDiv.textContent = '' + message\n }\n }\n var showIframe = function (target) {\n var iframe = containerDiv.appendChild(dom.createElement('iframe'))\n // iframe.setAttribute('sandbox', '') // All restrictions\n iframe.setAttribute('src', target.uri)\n // See https://stackoverflow.com/questions/325273/make-iframe-to-fit-100-of-containers-remaining-height\n // Set the container position (sic) so it becaomes a 100% reference for the size of the iframe height 100%\n /* For now at least , leave the container style as set by the tab system. 20200115b\n containerDiv.setAttribute(\n 'style',\n 'position: relative; top: 0px; left:0px; right:0px; resize: both; overflow:scroll; min-width: 30em; min-height: 30em;'\n )\n */\n // iframe.setAttribute('style', 'height: 350px; border: 0; margin: 0; padding: 0; resize:both; overflow:scroll; width: 100%;')\n // iframe.setAttribute('style', 'border: none; margin: 0; padding: 0; height: 100%; width: 100%; resize: both; overflow:scroll;')\n iframe.setAttribute(\n 'style',\n 'border: none; margin: 0; padding: 0; height: 100%; width: 100%;'\n )\n // Following https://dev.chromium.org/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes :\n iframe.setAttribute('allow', 'microphone camera') // Allow iframe to request camera and mic\n // containerDiv.style.resize = 'none' // Remove scroll bars on outer div - don't seem to work so well\n iframe.setAttribute('name', 'disable-x-frame-options') // For electron: see https://github.com/electron/electron/pull/573\n containerDiv.style.padding = 0\n }\n var renderPeoplePicker = function () {\n var context = { div: containerDiv, dom: dom }\n containerDiv.appendChild(dom.createElement('h4')).textContent =\n 'Meeting Participants'\n var groupPickedCb = function (group) {\n var toIns = [\n $rdf.st(\n meeting,\n ns.meeting('particpantGroup'),\n group,\n meeting.doc()\n )\n ]\n kb.updater.update([], toIns, function (uri, ok, message) {\n if (ok) {\n selectedGroup = group\n } else {\n complain('Cant save participants group: ' + message)\n }\n })\n }\n selectedGroup = kb.any(meeting, ns.meeting('particpantGroup'))\n\n UI.authn.loadTypeIndexes(context).then(function () {\n // Assumes that the type index has an entry for addressbook\n var options = {\n defaultNewGroupName: 'Meeting Participants',\n selectedGroup: selectedGroup\n }\n var picker = new UI.widgets.PeoplePicker(\n context.div,\n context.index.private[0],\n groupPickedCb,\n options\n )\n picker.render()\n })\n }\n\n var renderDetails = function () {\n containerDiv.appendChild(dom.createElement('h3')).textContent =\n 'Details of meeting'\n var form = $rdf.sym(\n 'https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#main'\n )\n UI.widgets.appendForm(\n document,\n containerDiv,\n {},\n meeting,\n form,\n meeting.doc(),\n complainIfBad\n )\n containerDiv.appendChild(\n tipDiv(\n 'Drag URL-bar icons of web pages into the tab bar on the left to add new meeting materials.'\n )\n )\n me = UI.authn.currentUser()\n if (me) {\n kb.add(meeting, ns.dc('author'), me, meetingDoc) // @@ should nly be on initial creation?\n }\n var context = {\n noun: 'meeting',\n me: me,\n statusArea: containerDiv,\n div: containerDiv,\n dom: dom\n }\n UI.authn\n .registrationControl(context, meeting, ns.meeting('Meeting'))\n .then(function (_context) {\n console.log('Registration control finsished.')\n })\n var options = {}\n UI.pad.manageParticipation(\n dom,\n containerDiv,\n meetingDoc,\n meeting,\n me,\n options\n )\n\n // \"Make a new meeting\" button\n var imageStyle = 'height: 2em; width: 2em; margin:0.5em;'\n var detailsBottom = containerDiv.appendChild(dom.createElement('div'))\n var spawn = detailsBottom.appendChild(dom.createElement('img'))\n spawn.setAttribute('src', UI.icons.iconBase + 'noun_145978.svg')\n spawn.setAttribute('title', 'Make a fresh new meeting')\n spawn.addEventListener('click', makeNewMeeting)\n spawn.setAttribute('style', imageStyle)\n\n // \"Fork me on Github\" button\n var forka = detailsBottom.appendChild(dom.createElement('a'))\n forka.setAttribute('href', 'https://github.com/solid/solid-panes') // @@ Move when code moves\n forka.setAttribute('target', '_blank')\n var fork = forka.appendChild(dom.createElement('img'))\n fork.setAttribute('src', UI.icons.iconBase + 'noun_368567.svg')\n fork.setAttribute('title', 'Fork me on github')\n fork.setAttribute('style', imageStyle + 'opacity: 50%;')\n }\n\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Tool'))) {\n var target = kb.any(subject, ns.meeting('target'))\n if (target.sameTerm(meeting) && !kb.any(subject, ns.meeting('view'))) {\n // self reference? force details form\n renderDetails() // Legacy meeting instances\n } else {\n var view = kb.any(subject, ns.meeting('view'))\n view = view ? view.value : null\n if (view === 'details') {\n renderDetails()\n } else if (view === 'peoplePicker') {\n renderPeoplePicker()\n } else if (view === 'iframe') {\n showIframe(target)\n } else {\n pane = view\n ? dataBrowserContext.session.paneRegistry.byName(view)\n : null\n table = containerDiv.appendChild(dom.createElement('table'))\n table.style.width = '100%'\n dataBrowserContext\n .getOutliner(dom)\n .GotoSubject(target, true, pane, false, undefined, table)\n }\n }\n } else if (subject.sameTerm(meeting)) {\n // self reference? force details form\n renderDetails()\n } else if (\n subject.sameTerm(subject.doc()) &&\n !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('Chat')) &&\n !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('PaneView'))\n ) {\n } else {\n table = containerDiv.appendChild(dom.createElement('table'))\n dataBrowserContext\n .getOutliner(dom)\n .GotoSubject(subject, true, undefined, false, undefined, table)\n }\n }\n\n var options = { dom: dom }\n options.predicate = ns.meeting('toolList')\n options.subject = subject\n options.ordered = true\n options.orientation = 1 // tabs on LHS\n options.renderMain = renderMain\n options.renderTab = renderTab\n options.renderTabSettings = renderTabSettings\n options.backgroundColor =\n kb.anyValue(subject, ns.ui('backgroundColor')) || '#ddddcc'\n var tabs = mainTR.appendChild(UI.tabs.tabWidget(options))\n\n UI.aclControl.preventBrowserDropEvents(dom)\n\n UI.widgets.makeDropTarget(\n tabs.tabContainer,\n droppedURIHandler,\n droppedFileHandler\n )\n UI.widgets.makeDropTarget(iconCell, droppedURIHandler, droppedFileHandler)\n\n return div\n }\n}\n// ends\n"],"file":"meetingPane.js"}
1
+ {"version":3,"sources":["../src/meetingPane.js"],"names":["logic","require","VideoRoomPrefix","UI","ns","$rdf","meetingDetailsFormText","module","exports","icon","icons","iconBase","name","audience","solid","label","subject","context","kb","session","store","holds","rdf","meeting","mintClass","mintNew","options","Promise","resolve","reject","newInstance","sym","newBase","meetingDoc","doc","me","authn","currentUser","add","dc","Date","ui","Literal","undefined","xsd","toolList","Collection","elements","push","updater","put","statementsMatching","uri2","ok","message","Error","render","dataBrowserContext","dom","thisPane","complain","color","console","log","pre","createElement","setAttribute","div","appendChild","createTextNode","complainIfBad","meetingBase","dir","uri","table","style","topTR","mainTR","toolBar0","toolBar1","toolBar","saveBackMeetingDoc","tabs","refresh","resetTools","saveAppDocumentLinkAndAddNewThing","tool","thing","pred","appDoc","makeToolNode","target","iconURI","x","widgets","newThing","rdfs","the","googleMapsSpecial","page","initialPrefix","finalPrefix","myPersonalApiKEY","match","startsWith","map","replace","handleDroppedThing","addIframeTool","wf","utils","addLink","toolObject","limit","shareTab","newPaneOptions","pane","paneRegistry","byName","predicate","tabTitle","view","noIndexHTML","makeNewPaneTool","addParticipant","pref","any","foaf","obj","group","addPersonToGroup","ins","st","vcard","fetcher","nowOrWhenFetched","_body","update","body","makeParticipantsGroup","then","putBack","contentType","_xhr","err","u","indexOf","mess","addAttachmentTab","types","findTypeURIs","ty","hh","getHeader","ok2","j","length","droppedURIHandler","uris","all","_a","droppedFileHandler","files","uploadFiles","theFile","_destURI","type","makePicturesFolder","makeMaterialsFolder","makeGroup","_toolObject","makePoll","useExisting","folderName","_folderName","instanceClass","instanceName","makePad","makeMeeting","askName","parameterCell","URIsegment","encodeURIComponent","e","existing","makeAgenda","makeActions","stateStore","anyValue","cal","makeChat","messageStore","makeVideoCall","genUuid","makeAttachment","makeSharing","makeNewMeeting","appDetails","noun","gotWS","ws","base","removeChild","mintUI","p","innerHTML","errorMessageBlock","login","selectWorkspace","toolIcons","maker","hint","disabled","settingsForm","parse","iconStyle","iconCell","star","visible","selectNewTool","_event","styleTheIcons","loginOutButton","checkUser","webId","addEventListener","loginStatusBox","webIdUri","iconArray","i","foo","selectTool","renderTab","item","value","s","textContent","tr","left","right","img","tipDiv","text","d","renderTabSettings","containerDiv","form","appendForm","document","delButton","deleteButtonWithCheck","sameTerm","splice","ds","concat","remove","renderMain","selectedGroup","showIframe","iframe","padding","renderPeoplePicker","groupPickedCb","toIns","loadTypeIndexes","defaultNewGroupName","picker","PeoplePicker","index","renderDetails","statusArea","registrationControl","_context","pad","manageParticipation","imageStyle","detailsBottom","spawn","forka","fork","width","getOutliner","GotoSubject","ordered","orientation","backgroundColor","tabWidget","aclControl","preventBrowserDropEvents","makeDropTarget","tabContainer"],"mappings":"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","sourcesContent":["/* Meeting materials and tools Pane\n **\n ** Putting together some of the tools we have to manage a Meeting\n */\n\n// const VideoRoomPrefix = 'https://appear.in/'\nconst logic = require('solid-logic')\nconst VideoRoomPrefix = 'https://meet.jit.si/'\n\nconst UI = require('solid-ui')\nconst ns = UI.ns\nconst $rdf = require('rdflib')\n\nconst meetingDetailsFormText = require('./meetingDetailsForm.js')\n\nmodule.exports = {\n icon: UI.icons.iconBase + 'noun_66617.svg',\n\n name: 'meeting',\n\n audience: [ns.solid('PowerUser')],\n\n label: function (subject, context) {\n var kb = context.session.store\n var ns = UI.ns\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Meeting'))) {\n return 'Meeting'\n }\n return null // Suppress pane otherwise\n },\n\n // Create a new Meeting thing\n //\n // returns: A promise of a meeting object\n //\n\n mintClass: UI.ns.meeting('Meeting'),\n\n mintNew: function (context, options) {\n return new Promise(function (resolve, reject) {\n var kb = context.session.store\n var ns = UI.ns\n options.newInstance =\n options.newInstance || kb.sym(options.newBase + 'index.ttl#this')\n var meeting = options.newInstance\n var meetingDoc = meeting.doc()\n\n var me = logic.authn.currentUser()\n\n if (me) {\n kb.add(meeting, ns.dc('author'), me, meetingDoc)\n }\n\n kb.add(meeting, ns.rdf('type'), ns.meeting('Meeting'), meetingDoc)\n kb.add(meeting, ns.dc('created'), new Date(), meetingDoc)\n kb.add(\n meeting,\n ns.ui('backgroundColor'),\n new $rdf.Literal('#ddddcc', undefined, ns.xsd('color')),\n meetingDoc\n )\n var toolList = new $rdf.Collection()\n kb.add(meeting, ns.meeting('toolList'), toolList, meetingDoc)\n\n toolList.elements.push(meeting) // Add the meeting itself - see renderMain()\n\n kb.updater.put(\n meetingDoc,\n kb.statementsMatching(undefined, undefined, undefined, meetingDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n resolve(options)\n } else {\n reject(new Error('Error writing meeting configuration: ' + message))\n }\n }\n )\n })\n },\n\n // Returns a div\n\n render: function (subject, dataBrowserContext) {\n const dom = dataBrowserContext.dom\n var kb = dataBrowserContext.session.store\n var ns = UI.ns\n var updater = kb.updater\n var thisPane = this\n\n var complain = function complain (message, color) {\n console.log(message)\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 complainIfBad = function (ok, message) {\n if (!ok) complain(message)\n }\n\n var meeting = subject\n var meetingDoc = subject.doc()\n var meetingBase = subject.dir().uri\n var div = dom.createElement('div')\n var table = div.appendChild(dom.createElement('table'))\n table.style = 'width: 100%; height: 100%; margin:0;'\n var topTR = table.appendChild(dom.createElement('tr'))\n topTR.appendChild(dom.createElement('div')) // topDiv\n var mainTR = table.appendChild(dom.createElement('tr'))\n\n var toolBar0 = table.appendChild(dom.createElement('td'))\n var toolBar1 = toolBar0.appendChild(dom.createElement('table'))\n var toolBar = toolBar1.appendChild(dom.createElement('tr'))\n\n topTR.setAttribute('style', 'height: 2em;') // spacer if notthing else\n\n var me = null // @@ Put code to find out logged in person\n\n var saveBackMeetingDoc = function () {\n updater.put(\n meetingDoc,\n kb.statementsMatching(undefined, undefined, undefined, meetingDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n tabs.refresh()\n resetTools()\n } else {\n message =\n 'FAILED to save new thing at: ' + meetingDoc + ' : ' + message\n complain(message)\n }\n }\n )\n }\n\n var saveAppDocumentLinkAndAddNewThing = function (tool, thing, pred) {\n var appDoc = thing.doc()\n if (pred) {\n kb.add(meeting, pred, thing, appDoc) // Specific Link back to meeting\n }\n kb.add(thing, ns.meeting('parentMeeting'), meeting, appDoc) // Generic link back to meeting\n updater.put(\n appDoc,\n kb.statementsMatching(undefined, undefined, undefined, appDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n saveBackMeetingDoc()\n } else {\n complain('FAILED to save new tool at: ' + thing + ' : ' + message)\n }\n }\n )\n }\n\n var makeToolNode = function (target, pred, label, iconURI) {\n if (pred) {\n kb.add(meeting, pred, target, meetingDoc)\n }\n var x = UI.widgets.newThing(meetingDoc)\n if (label) kb.add(x, ns.rdfs('label'), label, meetingDoc)\n if (iconURI) kb.add(x, ns.meeting('icon'), kb.sym(iconURI), meetingDoc)\n kb.add(x, ns.rdf('type'), ns.meeting('Tool'), meetingDoc)\n kb.add(x, ns.meeting('target'), target, meetingDoc)\n var toolList = kb.the(meeting, ns.meeting('toolList'))\n toolList.elements.push(x)\n return x\n }\n\n // Map from end-user non-iframeable Google maps URI to G Maps API\n // Input: like https://www.google.co.uk/maps/place/Mastercard/@53.2717971,-6.2042699,17z/...\n // Output:\n function googleMapsSpecial (page) {\n const initialPrefix = /https:\\/\\/www\\.google\\..*\\/maps\\//\n const finalPrefix = 'https://www.google.com/maps/embed/v1/'\n const myPersonalApiKEY = 'AIzaSyB8aaT6bY9tcLCmc2oPCkdUYLmTOWM8R54' // Get your own key!\n // GET YOUR KEY AT https://developers.google.com/maps/documentation/javascript/\n const uri = page.uri\n if (!uri.match(initialPrefix)) return page\n if (uri.startsWith(finalPrefix)) return page // Already done\n const map =\n uri.replace(initialPrefix, finalPrefix) + '&key=' + myPersonalApiKEY\n console.log('Converted Google Map URI! ' + map)\n return $rdf.sym(map)\n }\n\n // //////////////////// DRAG and Drop\n\n var handleDroppedThing = function (target) {\n // @@ idea: look\n return new Promise(function (resolve) {\n // Add a meeting tab for a web resource. Alas many resource canot be framed\n // as they block framing, or are insecure.\n var addIframeTool = function (target) {\n var tool = makeToolNode(\n target,\n UI.ns.wf('attachment'),\n UI.utils.label(target),\n null\n )\n kb.add(tool, UI.ns.meeting('view'), 'iframe', meetingDoc)\n }\n\n var addLink = function (target) {\n const pred = ns.wf('attachment')\n kb.add(subject, pred, target, subject.doc())\n var toolObject = {\n icon: 'noun_160581.svg', // right arrow \"link\"\n limit: 1,\n shareTab: true // but many things behind it\n }\n var newPaneOptions = {\n newInstance: subject, // kb.sym(subject.doc().uri + '#LinkListTool'),\n pane: dataBrowserContext.session.paneRegistry.byName('link'), // the pane to be used to mint a new thing\n predicate: ns.meeting('attachmentTool'),\n tabTitle: 'Links',\n view: 'link', // The pane to be used when it is viewed\n noIndexHTML: true\n }\n return makeNewPaneTool(toolObject, newPaneOptions)\n }\n\n // When paerson added to he meeting, make an ad hoc group\n // of meeting participants is one does not already exist, and add them\n var addParticipant = function (target) {\n var pref = kb.any(target, ns.foaf('preferredURI'))\n var obj = pref ? kb.sym(pref) : target\n var group = kb.any(meeting, ns.meeting('attendeeGroup'))\n var addPersonToGroup = function (obj, group) {\n var ins = [\n $rdf.st(group, UI.ns.vcard('hasMember'), obj, group.doc())\n ] // @@@ Complex rules about webid?\n var name =\n kb.any(obj, ns.vcard('fn')) || kb.any(obj, ns.foaf('name'))\n if (name) {\n ins.push($rdf.st(obj, UI.ns.vcard('fn'), name, group.doc()))\n }\n kb.fetcher.nowOrWhenFetched(group.doc(), undefined, function (\n ok,\n _body\n ) {\n if (!ok) {\n complain(\"Can't read group to add person\" + group)\n return\n }\n kb.updater.update([], ins, function (uri, ok, body) {\n complainIfBad(ok, body)\n if (ok) {\n console.log('Addded to particpants OK: ' + obj)\n }\n })\n })\n }\n if (group) {\n addPersonToGroup(obj, group)\n return\n }\n makeParticipantsGroup()\n .then(function (options) {\n var group = options.newInstance\n addPersonToGroup(obj, group)\n kb.fetcher\n .putBack(meetingDoc, { contentType: 'text/turtle' })\n .then(function (_xhr) {\n console.log('Particiants Group created: ' + group)\n })\n })\n .catch(function (err) {\n complain(err)\n })\n }\n\n console.log('Dropped on thing ' + target) // icon was: UI.icons.iconBase + 'noun_25830.svg'\n var u = target.uri\n if (u.startsWith('http:') && u.indexOf('#') < 0) {\n // insecure Plain document\n addLink(target)\n return resolve(target)\n }\n kb.fetcher.nowOrWhenFetched(target, function (ok, mess) {\n function addAttachmentTab (target) {\n target = googleMapsSpecial(target)\n console.log('make web page attachement tab ' + target) // icon was: UI.icons.iconBase + 'noun_25830.svg'\n var tool = makeToolNode(\n target,\n UI.ns.wf('attachment'),\n UI.utils.label(target),\n null\n )\n kb.add(tool, UI.ns.meeting('view'), 'iframe', meetingDoc)\n return resolve(target)\n }\n if (!ok) {\n console.log(\n 'Error looking up dropped thing, will just add it anyway. ' +\n target +\n ': ' +\n mess\n )\n return addAttachmentTab(target) // You can still try iframing it. (Could also add to list of links in PersonTR widgets)\n } else {\n var obj = target\n var types = kb.findTypeURIs(obj)\n for (var ty in types) {\n console.log(' drop object type includes: ' + ty)\n }\n if (\n ns.vcard('Individual').uri in types ||\n ns.foaf('Person').uri in types ||\n ns.foaf('Agent').uri in types\n ) {\n addParticipant(target)\n return resolve(target)\n }\n if (u.startsWith('https:') && u.indexOf('#') < 0) {\n // Plain secure document\n // can we iframe it?\n var hh = kb.fetcher.getHeader(target, 'x-frame-options')\n var ok2 = true\n if (hh) {\n for (var j = 0; j < hh.length; j++) {\n console.log('x-frame-options: ' + hh[j])\n if (hh[j].indexOf('sameorigin') < 0) {\n // (and diff origin @@)\n ok2 = false\n }\n if (hh[j].indexOf('deny') < 0) {\n ok2 = false\n }\n }\n }\n if (ok2) {\n target = googleMapsSpecial(target) // tweak Google maps to embed OK\n addIframeTool(target) // Something we can maybe iframe\n return resolve(target)\n }\n } // Something we cannot iframe, and must link to:\n console.log('Default: assume web page attachement ' + target) // icon was: UI.icons.iconBase + 'noun_25830.svg'\n return addAttachmentTab(target)\n }\n })\n }) // promise\n }\n\n // When a set of URIs are dropped on the tabs\n var droppedURIHandler = function (uris) {\n Promise.all(\n uris.map(function (u) {\n var target = $rdf.sym(u) // Attachment needs text label to disinguish I think not icon.\n return handleDroppedThing(target) // can add to meetingDoc but must be sync\n })\n ).then(function (_a) {\n saveBackMeetingDoc()\n })\n }\n\n var droppedFileHandler = function (files) {\n UI.widgets.uploadFiles(\n kb.fetcher,\n files,\n meeting.dir().uri + 'Files',\n meeting.dir().uri + 'Pictures',\n function (theFile, _destURI) {\n if (theFile.type.startsWith('image/')) {\n makePicturesFolder('Files') // If necessary\n } else {\n makeMaterialsFolder('Pictures')\n }\n }\n )\n }\n\n // ////////////////////////////////////////////////////// end of drag drop\n\n var makeGroup = function (_toolObject) {\n var newBase = meetingBase + 'Group/'\n var kb = dataBrowserContext.session.store\n var group = kb.any(meeting, ns.meeting('particpants'))\n if (!group) {\n group = $rdf.sym(newBase + 'index.ttl#this')\n }\n console.log('Participant group: ' + group)\n\n var tool = makeToolNode(\n group,\n ns.meeting('particpants'),\n 'Particpants',\n UI.icons.iconBase + 'noun_339237.svg'\n ) // group: noun_339237.svg 'noun_15695.svg'\n kb.add(tool, UI.ns.meeting('view'), 'peoplePicker', meetingDoc)\n saveBackMeetingDoc()\n }\n /*\n var makeAddressBook = function (toolObject) {\n var newBase = meetingBase + 'Group/'\n var kb = store\n var group = kb.any(meeting, ns.meeting('addressBook'))\n if (!group) {\n group = $rdf.sym(newBase + 'index.ttl#this')\n }\n\n // Create a tab for the addressbook\n var div = dom.createElement('div')\n var context = { dom: dom, div: div }\n var book\n UI.login.findAppInstances(context, ns.vcard('AddressBook')).then(\n function (context) {\n if (context.instances.length === 0) {\n complain('You have no solid address book. It is really handy to have one to keep track of people and groups')\n } else if (context.instances.length > 1) {\n var s = context.instances.map(function (x) { return '' + x }).join(', ')\n complain('You have more than one solid address book: ' + s + ' Not supported yet.')\n } else { // addressbook\n book = context.instances[0]\n var tool = makeToolNode(book, ns.meeting('addressBook'), 'Address Book', UI.icons.iconBase + 'noun_15695.svg') // group: noun_339237.svg\n kb.add(tool, UI.ns.meeting('view'), 'contact', meetingDoc)\n saveBackMeetingDoc()\n }\n }\n )\n }\n */\n var makePoll = function (toolObject) {\n var newPaneOptions = {\n useExisting: meeting, // Regard the meeting as being the schedulable event itself.\n // newInstance: meeting,\n pane: dataBrowserContext.session.paneRegistry.byName('schedule'),\n view: 'schedule',\n // predicate: ns.meeting('schedulingPoll'),\n // newBase: meetingBase + 'Schedule/', Not needed as uses existing meeting\n tabTitle: 'Schedule poll',\n noIndexHTML: true\n }\n return makeNewPaneTool(toolObject, newPaneOptions)\n }\n\n var makePicturesFolder = function (folderName) {\n var toolObject = {\n icon: 'noun_598334.svg', // Slideshow @@ find a \"picture\" icon?\n limit: 1,\n shareTab: true // but many things behind it\n }\n var newPaneOptions = {\n newInstance: kb.sym(meeting.dir().uri + folderName + '/'),\n pane: dataBrowserContext.session.paneRegistry.byName('folder'), // @@ slideshow??\n predicate: ns.meeting('pictures'),\n shareTab: true,\n tabTitle: folderName,\n view: 'slideshow',\n noIndexHTML: true\n }\n return makeNewPaneTool(toolObject, newPaneOptions)\n }\n\n var makeMaterialsFolder = function (_folderName) {\n var toolObject = {\n icon: 'noun_681601.svg', // Document\n limit: 1,\n shareTab: true // but many things behind it\n }\n var options = {\n newInstance: kb.sym(meeting.dir().uri + 'Files/'),\n pane: dataBrowserContext.session.paneRegistry.byName('folder'),\n predicate: ns.meeting('materialsFolder'),\n tabTitle: 'Materials',\n noIndexHTML: true\n }\n return makeNewPaneTool(toolObject, options)\n }\n\n var makeParticipantsGroup = function () {\n var toolObject = {\n icon: 'noun_339237.svg', // Group of people\n limit: 1, // Only one tab\n shareTab: true // but many things behind it\n }\n var options = {\n newInstance: kb.sym(meeting.dir().uri + 'Attendees/index.ttl#this'),\n pane: dataBrowserContext.session.paneRegistry.byName('contact'),\n predicate: ns.meeting('attendeeGroup'),\n tabTitle: 'Attendees',\n instanceClass: ns.vcard('Group'),\n instanceName: UI.utils.label(subject) + ' attendees',\n noIndexHTML: true\n }\n\n return makeNewPaneTool(toolObject, options)\n }\n\n // Make Pad for notes of meeting\n\n var makePad = function (toolObject) {\n var newPaneOptions = {\n newBase: meetingBase + 'SharedNotes/',\n predicate: UI.ns.meeting('sharedNotes'),\n tabTitle: 'Shared Notes',\n pane: dataBrowserContext.session.paneRegistry.byName('pad')\n }\n return makeNewPaneTool(toolObject, newPaneOptions)\n }\n\n // Make Sub-meeting of meeting\n\n var makeMeeting = function (toolObject) {\n UI.widgets\n .askName(\n dom,\n kb,\n parameterCell,\n ns.foaf('name'),\n UI.ns.meeting('Meeting')\n )\n .then(function (name) {\n if (!name) {\n return resetTools()\n }\n var URIsegment = encodeURIComponent(name)\n var options = {\n newBase: meetingBase + URIsegment + '/', // @@@ sanitize\n predicate: UI.ns.meeting('subMeeting'),\n tabTitle: name,\n pane: dataBrowserContext.session.paneRegistry.byName('meeting')\n }\n return makeNewPaneTool(toolObject, options)\n })\n .catch(function (e) {\n complain('Error making new sub-meeting: ' + e)\n })\n }\n\n // Returns promise of newPaneOptions\n // In: options.\n // me?, predicate, newInstance ?, newBase, instanceClass\n // out: options. the above plus\n // me, newInstance\n\n function makeNewPaneTool (toolObject, options) {\n return new Promise(function (resolve, reject) {\n var kb = dataBrowserContext.session.store\n if (!options.useExisting) {\n // useExisting means use existing object in new role\n var existing = kb.any(meeting, options.predicate)\n if (existing) {\n if (\n toolObject.limit &&\n toolObject.limit === 1 &&\n !toolObject.shareTab\n ) {\n complain(\n 'Already have ' +\n existing +\n ' as ' +\n UI.utils.label(options.predicate)\n )\n complain('Cant have two')\n return resolve(null)\n }\n if (toolObject.shareTab) {\n // return existing one\n console.log(\n 'Using existing ' +\n existing +\n ' as ' +\n UI.utils.label(options.predicate)\n )\n return resolve({\n me: me,\n newInstance: existing,\n instanceClass: options.instanceClass\n })\n }\n }\n }\n if (!me && !options.me) { reject(new Error('Username not defined for new tool')) }\n options.me = options.me || me\n options.newInstance =\n options.useExisting ||\n options.newInstance ||\n kb.sym(options.newBase + 'index.ttl#this')\n\n options.pane\n .mintNew(dataBrowserContext, options)\n .then(function (options) {\n var tool = makeToolNode(\n options.newInstance,\n options.predicate,\n options.tabTitle,\n options.pane.icon\n )\n if (options.view) {\n kb.add(tool, UI.ns.meeting('view'), options.view, meetingDoc)\n }\n saveBackMeetingDoc()\n kb.fetcher\n .putBack(meetingDoc, { contentType: 'text/turtle' })\n .then(function (_xhr) {\n resolve(options)\n })\n .catch(function (err) {\n reject(err)\n })\n })\n .catch(function (err) {\n complain(err)\n reject(err)\n })\n })\n }\n\n var makeAgenda = function (_toolObject) {\n // selectTool(icon)\n }\n\n var makeActions = function (_toolObject) {\n var newBase = meetingBase + 'Actions/'\n var kb = dataBrowserContext.session.store\n if (kb.holds(meeting, ns.meeting('actions'))) {\n console.log('Ignored - already have actions')\n return // already got one\n }\n var appDoc = kb.sym(newBase + 'config.ttl')\n var newInstance = kb.sym(newBase + 'config.ttl#this')\n var stateStore = kb.sym(newBase + 'state.ttl')\n\n kb.add(\n newInstance,\n ns.dc('title'),\n (kb.anyValue(meeting, ns.cal('summary')) || 'Meeting ') + ' actions',\n appDoc\n )\n kb.add(newInstance, ns.wf('issueClass'), ns.wf('Task'), appDoc)\n kb.add(newInstance, ns.wf('initialState'), ns.wf('Open'), appDoc)\n kb.add(newInstance, ns.wf('stateStore'), stateStore, appDoc)\n kb.add(newInstance, ns.wf('assigneeClass'), ns.foaf('Person'), appDoc) // @@ set to people in the meeting?\n\n kb.add(newInstance, ns.rdf('type'), ns.wf('Tracker'), appDoc)\n\n // Flag its type in the chat itself as well as in the master meeting config file\n kb.add(newInstance, ns.rdf('type'), ns.wf('Tracker'), appDoc)\n var tool = makeToolNode(\n newInstance,\n ns.meeting('actions'),\n 'Actions',\n UI.icons.iconBase + 'noun_17020.svg'\n )\n saveAppDocumentLinkAndAddNewThing(\n tool,\n newInstance,\n ns.meeting('actions')\n )\n }\n\n var makeChat = function (_toolObject) {\n var newBase = meetingBase + 'Chat/'\n var kb = dataBrowserContext.session.store\n if (kb.holds(meeting, ns.meeting('chat'))) {\n console.log('Ignored - already have chat')\n return // already got one\n }\n var messageStore = kb.sym(newBase + 'chat.ttl')\n\n kb.add(messageStore, ns.rdf('type'), ns.meeting('Chat'), messageStore)\n\n var tool = makeToolNode(\n messageStore,\n ns.meeting('chat'),\n 'Chat',\n UI.icons.iconBase + 'noun_346319.svg'\n )\n saveAppDocumentLinkAndAddNewThing(tool, messageStore, ns.meeting('chat'))\n }\n\n var makeVideoCall = function (_toolObject) {\n var kb = dataBrowserContext.session.store\n var newInstance = $rdf.sym(VideoRoomPrefix + UI.utils.genUuid())\n\n if (kb.holds(meeting, ns.meeting('videoCallPage'))) {\n console.log('Ignored - already have a videoCallPage')\n return // already got one\n }\n kb.add(\n newInstance,\n ns.rdf('type'),\n ns.meeting('VideoCallPage'),\n meetingDoc\n )\n var tool = makeToolNode(\n newInstance,\n ns.meeting('videoCallPage'),\n 'Video call',\n UI.icons.iconBase + 'noun_260227.svg'\n )\n kb.add(tool, ns.meeting('view'), 'iframe', meetingDoc)\n saveBackMeetingDoc()\n }\n\n var makeAttachment = function (_toolObject) {\n UI.widgets\n .askName(dom, kb, parameterCell, ns.log('uri'), UI.ns.rdf('Resource'))\n .then(function (uri) {\n if (!uri) {\n return resetTools()\n }\n var kb = dataBrowserContext.session.store\n var ns = UI.ns\n var target = kb.sym(uri)\n var tool = makeToolNode(\n target,\n ns.wf('attachment'),\n UI.utils.label(target),\n null\n )\n kb.add(tool, ns.meeting('view'), 'iframe', meetingDoc)\n saveBackMeetingDoc()\n })\n .catch(function (e) {\n complain('Error making new sub-meeting: ' + e)\n })\n }\n\n var makeSharing = function (toolObject) {\n var kb = dataBrowserContext.session.store\n var ns = UI.ns\n var target = meeting.dir()\n if (\n toolObject.limit &&\n toolObject.limit === 1 &&\n kb.holds(meeting, ns.wf('sharingControl'))\n ) {\n complain('Ignored - already have ' + UI.utils.label(options.predicate))\n return\n }\n var tool = makeToolNode(\n target,\n ns.wf('sharingControl'),\n 'Sharing',\n UI.icons.iconBase + 'noun_123691.svg'\n )\n kb.add(tool, ns.meeting('view'), 'sharing', meetingDoc)\n saveBackMeetingDoc()\n }\n\n var makeNewMeeting = function () {\n // @@@ make option of continuing series\n var appDetails = { noun: 'meeting' }\n var gotWS = function (ws, base) {\n thisPane\n .mintNew(dataBrowserContext, { newBase: base })\n .then(function (options) {\n var newInstance = options.newInstance\n parameterCell.removeChild(mintUI)\n var p = parameterCell.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 140%;')\n p.innerHTML =\n \"Your <a target='_blank' href='\" +\n newInstance.uri +\n \"'><b>new meeting</b></a> is ready to be set up. \" +\n \"<br/><br/><a target='_blank' href='\" +\n newInstance.uri +\n \"'>Go to your new meeting.</a>\"\n })\n .catch(function (err) {\n parameterCell.removeChild(mintUI)\n parameterCell.appendChild(UI.widgets.errorMessageBlock(dom, err))\n })\n }\n var mintUI = UI.login.selectWorkspace(dom, appDetails, gotWS)\n parameterCell.appendChild(mintUI)\n }\n\n // //////////////////////////////////////////////////////////// end of new tab creation functions\n\n var toolIcons = [\n {\n icon: 'noun_339237.svg',\n maker: makeGroup,\n hint: 'Make a group of people',\n limit: 1\n },\n {\n icon: 'noun_346777.svg',\n maker: makePoll,\n hint: 'Make a poll to schedule the meeting'\n }, // When meet THIS or NEXT time\n {\n icon: 'noun_48218.svg',\n maker: makeAgenda,\n limit: 1,\n hint: 'Add an agenda list',\n disabled: true\n }, // When meet THIS or NEXT time\n { icon: 'noun_79217.svg', maker: makePad, hint: 'Add a shared notepad' },\n {\n icon: 'noun_346319.svg',\n maker: makeChat,\n limit: 1,\n hint: 'Add a chat channel for the meeting'\n },\n {\n icon: 'noun_17020.svg',\n maker: makeActions,\n limit: 1,\n hint: 'Add a list of action items'\n }, // When meet THIS or NEXT time\n {\n icon: 'noun_260227.svg',\n maker: makeVideoCall,\n limit: 1,\n hint: 'Add a video call for the meeting'\n },\n {\n icon: 'noun_25830.svg',\n maker: makeAttachment,\n hint: 'Attach meeting materials',\n disabled: false\n },\n {\n icon: 'noun_123691.svg',\n maker: makeSharing,\n limit: 1,\n hint: 'Control Sharing',\n disabled: false\n },\n {\n icon: 'noun_66617.svg',\n maker: makeMeeting,\n hint: 'Make a sub meeting',\n disabled: false\n }\n ] // 'noun_66617.svg'\n\n var settingsForm = $rdf.sym(\n 'https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings'\n )\n $rdf.parse(\n meetingDetailsFormText,\n kb,\n settingsForm.doc().uri,\n 'text/turtle'\n ) // Load form directly\n\n var iconStyle = 'padding: 1em; width: 3em; height: 3em;'\n var iconCell = toolBar.appendChild(dom.createElement('td'))\n var parameterCell = toolBar.appendChild(dom.createElement('td'))\n var star = iconCell.appendChild(dom.createElement('img'))\n var visible = false // the inividual tools tools\n\n star.setAttribute('src', UI.icons.iconBase + 'noun_19460_green.svg') // noun_272948.svg\n star.setAttribute('style', iconStyle + 'opacity: 50%;')\n star.setAttribute('title', 'Add another tool to the meeting')\n\n var selectNewTool = function (_event) {\n visible = !visible\n star.setAttribute(\n 'style',\n iconStyle + (visible ? 'background-color: yellow;' : '')\n )\n styleTheIcons(visible ? '' : 'display: none;')\n }\n\n var loginOutButton\n logic.authn.checkUser().then(webId => {\n if (webId) {\n me = webId\n star.addEventListener('click', selectNewTool)\n star.setAttribute('style', iconStyle)\n return\n }\n\n loginOutButton = UI.login.loginStatusBox(dom, webIdUri => {\n if (webIdUri) {\n me = kb.sym(webIdUri)\n parameterCell.removeChild(loginOutButton)\n // loginOutButton.setAttribute('',iconStyle) // make it match the icons\n star.addEventListener('click', selectNewTool)\n star.setAttribute('style', iconStyle)\n } else {\n console.log('(Logged out)')\n me = null\n }\n })\n loginOutButton.setAttribute('style', 'margin: 0.5em 1em;')\n parameterCell.appendChild(loginOutButton)\n })\n\n var iconArray = []\n for (var i = 0; i < toolIcons.length; i++) {\n var foo = function () {\n var toolObject = toolIcons[i]\n var icon = iconCell.appendChild(dom.createElement('img'))\n icon.setAttribute('src', UI.icons.iconBase + toolObject.icon)\n icon.setAttribute('style', iconStyle + 'display: none;')\n iconArray.push(icon)\n icon.tool = toolObject\n var maker = toolObject.maker\n if (!toolObject.disabled) {\n icon.addEventListener('click', function (_event) {\n selectTool(icon)\n maker(toolObject)\n })\n }\n }\n foo()\n }\n\n var styleTheIcons = function (style) {\n for (var i = 0; i < iconArray.length; i++) {\n var st = iconStyle + style\n if (toolIcons[i].disabled) {\n st += 'opacity: 0.3;'\n }\n iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;'\n }\n }\n var resetTools = function () {\n styleTheIcons('display: none;')\n star.setAttribute('style', iconStyle)\n }\n\n var selectTool = function (icon) {\n styleTheIcons('display: none;') // 'background-color: #ccc;'\n icon.setAttribute('style', iconStyle + 'background-color: yellow;')\n }\n\n // //////////////////////////////\n\n var renderTab = function (div, item) {\n if (kb.holds(item, ns.rdf('type'), ns.meeting('Tool'))) {\n var target = kb.any(item, ns.meeting('target'))\n var label = kb.any(item, ns.rdfs('label'))\n label = label ? label.value : UI.utils.label(target)\n var s = div.appendChild(dom.createElement('div'))\n s.textContent = label\n s.setAttribute('style', 'margin-left: 0.7em')\n var icon = kb.any(item, ns.meeting('icon'))\n if (icon) {\n // Make sure the icon is cleanly on the left of the label\n var table = div.appendChild(dom.createElement('table'))\n var tr = table.appendChild(dom.createElement('tr'))\n var left = tr.appendChild(dom.createElement('td'))\n var right = tr.appendChild(dom.createElement('td'))\n // var img = div.appendChild(dom.createElement('img'))\n var img = left.appendChild(dom.createElement('img'))\n img.setAttribute('src', icon.uri)\n // img.setAttribute('style', 'max-width: 1.5em; max-height: 1.5em;') // @@ SVG shrinks to 0\n img.setAttribute('style', 'width: 1.5em; height: 1.5em;') // @\n img.setAttribute('title', label)\n right.appendChild(s)\n } else {\n div.appendChild(s)\n }\n } else {\n div.textContent = UI.utils.label(item)\n }\n }\n\n var tipDiv = function (text) {\n var d = dom.createElement('div')\n var p = d.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'margin: 0em; padding:3em; color: #888;')\n p.textContent = 'Tip: ' + text\n return d\n }\n\n var renderTabSettings = function (containerDiv, subject) {\n containerDiv.innerHTML = ''\n containerDiv.style += 'border-color: #eed;'\n containerDiv.appendChild(dom.createElement('h3')).textContent =\n 'Adjust this tab'\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Tool'))) {\n var form = $rdf.sym(\n 'https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings'\n )\n UI.widgets.appendForm(\n document,\n containerDiv,\n {},\n subject,\n form,\n meeting.doc(),\n complainIfBad\n )\n var delButton = UI.widgets.deleteButtonWithCheck(\n dom,\n containerDiv,\n 'tab',\n function () {\n var toolList = kb.the(meeting, ns.meeting('toolList'))\n for (var i = 0; i < toolList.elements.length; i++) {\n if (toolList.elements[i].sameTerm(subject)) {\n toolList.elements.splice(i, 1)\n break\n }\n }\n var target = kb.any(subject, ns.meeting('target'))\n var ds = kb\n .statementsMatching(subject)\n .concat(kb.statementsMatching(undefined, undefined, subject))\n .concat(kb.statementsMatching(meeting, undefined, target))\n kb.remove(ds) // Remove all links to and from the tab node\n saveBackMeetingDoc()\n }\n )\n delButton.setAttribute('style', 'width: 1.5em; height: 1.5em;')\n // delButton.setAttribute('class', '')\n // delButton.setAttribute('style', 'height: 2em; width: 2em; margin: 1em; border-radius: 0.5em; padding: 1em; font-size: 120%; background-color: red; color: white;')\n // delButton.textContent = 'Delete this tab'\n } else {\n containerDiv.appendChild(dom.createElement('h4')).textContent =\n '(No adjustments available)'\n }\n }\n\n const renderMain = function (containerDiv, subject) {\n var pane = null\n var table\n var selectedGroup = null\n containerDiv.innerHTML = ''\n var complainIfBad = function (ok, message) {\n if (!ok) {\n containerDiv.textContent = '' + message\n }\n }\n var showIframe = function (target) {\n var iframe = containerDiv.appendChild(dom.createElement('iframe'))\n // iframe.setAttribute('sandbox', '') // All restrictions\n iframe.setAttribute('src', target.uri)\n // See https://stackoverflow.com/questions/325273/make-iframe-to-fit-100-of-containers-remaining-height\n // Set the container position (sic) so it becaomes a 100% reference for the size of the iframe height 100%\n /* For now at least , leave the container style as set by the tab system. 20200115b\n containerDiv.setAttribute(\n 'style',\n 'position: relative; top: 0px; left:0px; right:0px; resize: both; overflow:scroll; min-width: 30em; min-height: 30em;'\n )\n */\n // iframe.setAttribute('style', 'height: 350px; border: 0; margin: 0; padding: 0; resize:both; overflow:scroll; width: 100%;')\n // iframe.setAttribute('style', 'border: none; margin: 0; padding: 0; height: 100%; width: 100%; resize: both; overflow:scroll;')\n iframe.setAttribute(\n 'style',\n 'border: none; margin: 0; padding: 0; height: 100%; width: 100%;'\n )\n // Following https://dev.chromium.org/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes :\n iframe.setAttribute('allow', 'microphone camera') // Allow iframe to request camera and mic\n // containerDiv.style.resize = 'none' // Remove scroll bars on outer div - don't seem to work so well\n iframe.setAttribute('name', 'disable-x-frame-options') // For electron: see https://github.com/electron/electron/pull/573\n containerDiv.style.padding = 0\n }\n var renderPeoplePicker = function () {\n var context = { div: containerDiv, dom: dom }\n containerDiv.appendChild(dom.createElement('h4')).textContent =\n 'Meeting Participants'\n var groupPickedCb = function (group) {\n var toIns = [\n $rdf.st(\n meeting,\n ns.meeting('particpantGroup'),\n group,\n meeting.doc()\n )\n ]\n kb.updater.update([], toIns, function (uri, ok, message) {\n if (ok) {\n selectedGroup = group\n } else {\n complain('Cant save participants group: ' + message)\n }\n })\n }\n selectedGroup = kb.any(meeting, ns.meeting('particpantGroup'))\n\n logic.loadTypeIndexes(context).then(function () {\n // Assumes that the type index has an entry for addressbook\n var options = {\n defaultNewGroupName: 'Meeting Participants',\n selectedGroup: selectedGroup\n }\n var picker = new UI.widgets.PeoplePicker(\n context.div,\n context.index.private[0],\n groupPickedCb,\n options\n )\n picker.render()\n })\n }\n\n var renderDetails = function () {\n containerDiv.appendChild(dom.createElement('h3')).textContent =\n 'Details of meeting'\n var form = $rdf.sym(\n 'https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#main'\n )\n UI.widgets.appendForm(\n document,\n containerDiv,\n {},\n meeting,\n form,\n meeting.doc(),\n complainIfBad\n )\n containerDiv.appendChild(\n tipDiv(\n 'Drag URL-bar icons of web pages into the tab bar on the left to add new meeting materials.'\n )\n )\n me = logic.authn.currentUser()\n if (me) {\n kb.add(meeting, ns.dc('author'), me, meetingDoc) // @@ should nly be on initial creation?\n }\n var context = {\n noun: 'meeting',\n me: me,\n statusArea: containerDiv,\n div: containerDiv,\n dom: dom\n }\n UI.login\n .registrationControl(context, meeting, ns.meeting('Meeting'))\n .then(function (_context) {\n console.log('Registration control finsished.')\n })\n var options = {}\n UI.pad.manageParticipation(\n dom,\n containerDiv,\n meetingDoc,\n meeting,\n me,\n options\n )\n\n // \"Make a new meeting\" button\n var imageStyle = 'height: 2em; width: 2em; margin:0.5em;'\n var detailsBottom = containerDiv.appendChild(dom.createElement('div'))\n var spawn = detailsBottom.appendChild(dom.createElement('img'))\n spawn.setAttribute('src', UI.icons.iconBase + 'noun_145978.svg')\n spawn.setAttribute('title', 'Make a fresh new meeting')\n spawn.addEventListener('click', makeNewMeeting)\n spawn.setAttribute('style', imageStyle)\n\n // \"Fork me on Github\" button\n var forka = detailsBottom.appendChild(dom.createElement('a'))\n forka.setAttribute('href', 'https://github.com/solid/solid-panes') // @@ Move when code moves\n forka.setAttribute('target', '_blank')\n var fork = forka.appendChild(dom.createElement('img'))\n fork.setAttribute('src', UI.icons.iconBase + 'noun_368567.svg')\n fork.setAttribute('title', 'Fork me on github')\n fork.setAttribute('style', imageStyle + 'opacity: 50%;')\n }\n\n if (kb.holds(subject, ns.rdf('type'), ns.meeting('Tool'))) {\n var target = kb.any(subject, ns.meeting('target'))\n if (target.sameTerm(meeting) && !kb.any(subject, ns.meeting('view'))) {\n // self reference? force details form\n renderDetails() // Legacy meeting instances\n } else {\n var view = kb.any(subject, ns.meeting('view'))\n view = view ? view.value : null\n if (view === 'details') {\n renderDetails()\n } else if (view === 'peoplePicker') {\n renderPeoplePicker()\n } else if (view === 'iframe') {\n showIframe(target)\n } else {\n pane = view\n ? dataBrowserContext.session.paneRegistry.byName(view)\n : null\n table = containerDiv.appendChild(dom.createElement('table'))\n table.style.width = '100%'\n dataBrowserContext\n .getOutliner(dom)\n .GotoSubject(target, true, pane, false, undefined, table)\n }\n }\n } else if (subject.sameTerm(meeting)) {\n // self reference? force details form\n renderDetails()\n } else if (\n subject.sameTerm(subject.doc()) &&\n !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('Chat')) &&\n !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('PaneView'))\n // eslint-disable-next-line no-empty\n ) { } else {\n table = containerDiv.appendChild(dom.createElement('table'))\n dataBrowserContext\n .getOutliner(dom)\n .GotoSubject(subject, true, undefined, false, undefined, table)\n }\n }\n\n var options = { dom: dom }\n options.predicate = ns.meeting('toolList')\n options.subject = subject\n options.ordered = true\n options.orientation = 1 // tabs on LHS\n options.renderMain = renderMain\n options.renderTab = renderTab\n options.renderTabSettings = renderTabSettings\n options.backgroundColor =\n kb.anyValue(subject, ns.ui('backgroundColor')) || '#ddddcc'\n var tabs = mainTR.appendChild(UI.tabs.tabWidget(options))\n\n UI.aclControl.preventBrowserDropEvents(dom)\n\n UI.widgets.makeDropTarget(\n tabs.tabContainer,\n droppedURIHandler,\n droppedFileHandler\n )\n UI.widgets.makeDropTarget(iconCell, droppedURIHandler, droppedFileHandler)\n\n return div\n }\n}\n// ends\n"],"file":"meetingPane.js"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.versionInfo = void 0;
7
+ var versionInfo = {
8
+ buildTime: '2022-03-22T10:13:42Z',
9
+ commit: 'f283f808fdf9257a9b6fd12d9efbec142afd0735',
10
+ npmInfo: {
11
+ 'meeting-pane': '2.3.9',
12
+ npm: '8.3.1',
13
+ node: '16.14.0',
14
+ v8: '9.4.146.24-node.20',
15
+ uv: '1.43.0',
16
+ zlib: '1.2.11',
17
+ brotli: '1.0.9',
18
+ ares: '1.18.1',
19
+ modules: '93',
20
+ nghttp2: '1.45.1',
21
+ napi: '8',
22
+ llhttp: '6.0.4',
23
+ openssl: '1.1.1m+quic',
24
+ cldr: '40.0',
25
+ icu: '70.1',
26
+ tz: '2021a3',
27
+ unicode: '14.0',
28
+ ngtcp2: '0.1.0-DEV',
29
+ nghttp3: '0.1.0-DEV'
30
+ }
31
+ };
32
+ exports.versionInfo = versionInfo;
33
+ //# sourceMappingURL=versionInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/versionInfo.ts"],"names":["versionInfo","buildTime","commit","npmInfo","npm","node","v8","uv","zlib","brotli","ares","modules","nghttp2","napi","llhttp","openssl","cldr","icu","tz","unicode","ngtcp2","nghttp3"],"mappings":";;;;;;AAAO,IAAMA,WAAW,GAAG;AACzBC,EAAAA,SAAS,EAAE,sBADc;AAEzBC,EAAAA,MAAM,EAAE,0CAFiB;AAGzBC,EAAAA,OAAO,EACT;AACE,oBAAgB,OADlB;AAEEC,IAAAA,GAAG,EAAE,OAFP;AAGEC,IAAAA,IAAI,EAAE,SAHR;AAIEC,IAAAA,EAAE,EAAE,oBAJN;AAKEC,IAAAA,EAAE,EAAE,QALN;AAMEC,IAAAA,IAAI,EAAE,QANR;AAOEC,IAAAA,MAAM,EAAE,OAPV;AAQEC,IAAAA,IAAI,EAAE,QARR;AASEC,IAAAA,OAAO,EAAE,IATX;AAUEC,IAAAA,OAAO,EAAE,QAVX;AAWEC,IAAAA,IAAI,EAAE,GAXR;AAYEC,IAAAA,MAAM,EAAE,OAZV;AAaEC,IAAAA,OAAO,EAAE,aAbX;AAcEC,IAAAA,IAAI,EAAE,MAdR;AAeEC,IAAAA,GAAG,EAAE,MAfP;AAgBEC,IAAAA,EAAE,EAAE,QAhBN;AAiBEC,IAAAA,OAAO,EAAE,MAjBX;AAkBEC,IAAAA,MAAM,EAAE,WAlBV;AAmBEC,IAAAA,OAAO,EAAE;AAnBX;AAJ2B,CAApB","sourcesContent":["export const versionInfo = {\n buildTime: '2022-03-22T10:13:42Z',\n commit: 'f283f808fdf9257a9b6fd12d9efbec142afd0735',\n npmInfo:\n{\n 'meeting-pane': '2.3.9',\n npm: '8.3.1',\n node: '16.14.0',\n v8: '9.4.146.24-node.20',\n uv: '1.43.0',\n zlib: '1.2.11',\n brotli: '1.0.9',\n ares: '1.18.1',\n modules: '93',\n nghttp2: '1.45.1',\n napi: '8',\n llhttp: '6.0.4',\n openssl: '1.1.1m+quic',\n cldr: '40.0',\n icu: '70.1',\n tz: '2021a3',\n unicode: '14.0',\n ngtcp2: '0.1.0-DEV',\n nghttp3: '0.1.0-DEV'\n}\n}\n"],"file":"versionInfo.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meeting-pane",
3
- "version": "2.3.8",
3
+ "version": "2.3.9-095f1276",
4
4
  "description": "Solid-compatible Panes: meeting collaborative tool",
5
5
  "main": "./lib/meetingPane.js",
6
6
  "files": [
@@ -8,20 +8,21 @@
8
8
  "lib"
9
9
  ],
10
10
  "scripts": {
11
- "build": "webpack",
11
+ "build": "npm run clean && npm run build-lib && webpack",
12
12
  "build-browserified": "npm run build",
13
- "build-dist": "webpack --progress --colors --mode=production",
14
- "build-dev": "webpack --progress --colors --mode=development",
13
+ "build-dist": "webpack --progress --color --mode=production",
14
+ "build-dev": "webpack --progress --color --mode=development",
15
15
  "build-lib": "babel src -d lib --source-maps --extensions '.ts,.js'",
16
- "build-types": "tsc --emitDeclarationOnly",
16
+ "build-types": "npm run build-version && tsc --declaration --emitDeclarationOnly",
17
17
  "build-version": "./timestamp.sh > src/versionInfo.ts && eslint 'src/versionInfo.ts' --fix",
18
18
  "lint": "eslint '*.js'",
19
19
  "lint-fix": "eslint '*.js' --fix",
20
+ "clean": "rm -rf lib && rm -rf dist",
20
21
  "test": "npm run lint",
21
- "prepublishOnly": "npm test && npm run build-lib",
22
- "postpublish": "git push origin main --follow-tags",
22
+ "ignore:prepublishOnly": "npm test && npm run build-lib",
23
+ "ignore:postpublish": "git push origin main --follow-tags",
23
24
  "watch": "webpack --watch",
24
- "start": "webpack-dev-server --open"
25
+ "start": "webpack serve --open"
25
26
  },
26
27
  "repository": {
27
28
  "type": "git",
@@ -50,19 +51,22 @@
50
51
  "crypto-browserify": "^3.12.0",
51
52
  "path-browserify": "^1.0.1",
52
53
  "rdflib": "^2.2.17",
53
- "solid-ui": "^2.4.15"
54
+ "solid-logic": "^1.3.14",
55
+ "solid-ui": "^2.4.19"
54
56
  },
55
57
  "devDependencies": {
56
58
  "@babel/cli": "^7.16.0",
57
59
  "@babel/core": "^7.16.0",
58
60
  "@babel/preset-env": "^7.16.0",
61
+ "@webpack-cli/serve": "^1.6.1",
59
62
  "eslint": "^7.32.0",
60
63
  "html-webpack-plugin": "^4.5.2",
61
64
  "husky": "^7.0.4",
62
65
  "lint-staged": "^11.2.6",
63
66
  "standard": "^16.0.4",
67
+ "typescript": "^4.6.2",
64
68
  "webpack": "^4.46.0",
65
- "webpack-cli": "^3.3.12",
69
+ "webpack-cli": "^4.9.2",
66
70
  "webpack-dev-server": "^4.4.0"
67
71
  },
68
72
  "husky": {
File without changes
File without changes
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  // const VideoRoomPrefix = 'https://appear.in/'
7
+ const logic = require('solid-logic')
7
8
  const VideoRoomPrefix = 'https://meet.jit.si/'
8
9
 
9
10
  const UI = require('solid-ui')
@@ -44,7 +45,7 @@ module.exports = {
44
45
  var meeting = options.newInstance
45
46
  var meetingDoc = meeting.doc()
46
47
 
47
- var me = UI.authn.currentUser()
48
+ var me = logic.authn.currentUser()
48
49
 
49
50
  if (me) {
50
51
  kb.add(meeting, ns.dc('author'), me, meetingDoc)
@@ -395,7 +396,7 @@ module.exports = {
395
396
  /*
396
397
  var makeAddressBook = function (toolObject) {
397
398
  var newBase = meetingBase + 'Group/'
398
- var kb = UI.store
399
+ var kb = store
399
400
  var group = kb.any(meeting, ns.meeting('addressBook'))
400
401
  if (!group) {
401
402
  group = $rdf.sym(newBase + 'index.ttl#this')
@@ -405,7 +406,7 @@ module.exports = {
405
406
  var div = dom.createElement('div')
406
407
  var context = { dom: dom, div: div }
407
408
  var book
408
- UI.authn.findAppInstances(context, ns.vcard('AddressBook')).then(
409
+ UI.login.findAppInstances(context, ns.vcard('AddressBook')).then(
409
410
  function (context) {
410
411
  if (context.instances.length === 0) {
411
412
  complain('You have no solid address book. It is really handy to have one to keep track of people and groups')
@@ -766,7 +767,7 @@ module.exports = {
766
767
  parameterCell.appendChild(UI.widgets.errorMessageBlock(dom, err))
767
768
  })
768
769
  }
769
- var mintUI = UI.authn.selectWorkspace(dom, appDetails, gotWS)
770
+ var mintUI = UI.login.selectWorkspace(dom, appDetails, gotWS)
770
771
  parameterCell.appendChild(mintUI)
771
772
  }
772
773
 
@@ -861,7 +862,7 @@ module.exports = {
861
862
  }
862
863
 
863
864
  var loginOutButton
864
- UI.authn.checkUser().then(webId => {
865
+ logic.authn.checkUser().then(webId => {
865
866
  if (webId) {
866
867
  me = webId
867
868
  star.addEventListener('click', selectNewTool)
@@ -869,7 +870,7 @@ module.exports = {
869
870
  return
870
871
  }
871
872
 
872
- loginOutButton = UI.authn.loginStatusBox(dom, webIdUri => {
873
+ loginOutButton = UI.login.loginStatusBox(dom, webIdUri => {
873
874
  if (webIdUri) {
874
875
  me = kb.sym(webIdUri)
875
876
  parameterCell.removeChild(loginOutButton)
@@ -1013,7 +1014,7 @@ module.exports = {
1013
1014
  }
1014
1015
  }
1015
1016
 
1016
- var renderMain = function (containerDiv, subject) {
1017
+ const renderMain = function (containerDiv, subject) {
1017
1018
  var pane = null
1018
1019
  var table
1019
1020
  var selectedGroup = null
@@ -1070,7 +1071,7 @@ module.exports = {
1070
1071
  }
1071
1072
  selectedGroup = kb.any(meeting, ns.meeting('particpantGroup'))
1072
1073
 
1073
- UI.authn.loadTypeIndexes(context).then(function () {
1074
+ logic.loadTypeIndexes(context).then(function () {
1074
1075
  // Assumes that the type index has an entry for addressbook
1075
1076
  var options = {
1076
1077
  defaultNewGroupName: 'Meeting Participants',
@@ -1106,7 +1107,7 @@ module.exports = {
1106
1107
  'Drag URL-bar icons of web pages into the tab bar on the left to add new meeting materials.'
1107
1108
  )
1108
1109
  )
1109
- me = UI.authn.currentUser()
1110
+ me = logic.authn.currentUser()
1110
1111
  if (me) {
1111
1112
  kb.add(meeting, ns.dc('author'), me, meetingDoc) // @@ should nly be on initial creation?
1112
1113
  }
@@ -1117,7 +1118,7 @@ module.exports = {
1117
1118
  div: containerDiv,
1118
1119
  dom: dom
1119
1120
  }
1120
- UI.authn
1121
+ UI.login
1121
1122
  .registrationControl(context, meeting, ns.meeting('Meeting'))
1122
1123
  .then(function (_context) {
1123
1124
  console.log('Registration control finsished.')
@@ -1183,8 +1184,8 @@ module.exports = {
1183
1184
  subject.sameTerm(subject.doc()) &&
1184
1185
  !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('Chat')) &&
1185
1186
  !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('PaneView'))
1186
- ) {
1187
- } else {
1187
+ // eslint-disable-next-line no-empty
1188
+ ) { } else {
1188
1189
  table = containerDiv.appendChild(dom.createElement('table'))
1189
1190
  dataBrowserContext
1190
1191
  .getOutliner(dom)
@@ -0,0 +1,26 @@
1
+ export const versionInfo = {
2
+ buildTime: '2022-03-22T10:13:42Z',
3
+ commit: 'f283f808fdf9257a9b6fd12d9efbec142afd0735',
4
+ npmInfo:
5
+ {
6
+ 'meeting-pane': '2.3.9',
7
+ npm: '8.3.1',
8
+ node: '16.14.0',
9
+ v8: '9.4.146.24-node.20',
10
+ uv: '1.43.0',
11
+ zlib: '1.2.11',
12
+ brotli: '1.0.9',
13
+ ares: '1.18.1',
14
+ modules: '93',
15
+ nghttp2: '1.45.1',
16
+ napi: '8',
17
+ llhttp: '6.0.4',
18
+ openssl: '1.1.1m+quic',
19
+ cldr: '40.0',
20
+ icu: '70.1',
21
+ tz: '2021a3',
22
+ unicode: '14.0',
23
+ ngtcp2: '0.1.0-DEV',
24
+ nghttp3: '0.1.0-DEV'
25
+ }
26
+ }
package/lib/index.js DELETED
@@ -1,105 +0,0 @@
1
- "use strict";
2
-
3
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
-
5
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
6
-
7
- var MeetingPane = require('./meetingPane.js');
8
-
9
- var $rdf = require('rdflib');
10
-
11
- var UI = require('solid-ui'); // const SolidAuth = require('solid-auth-client')
12
-
13
-
14
- function appendMeetingPane(_x, _x2) {
15
- return _appendMeetingPane.apply(this, arguments);
16
- }
17
-
18
- function _appendMeetingPane() {
19
- _appendMeetingPane = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dom, uri) {
20
- var subject, doc, context, options, paneDiv;
21
- return regeneratorRuntime.wrap(function _callee$(_context) {
22
- while (1) {
23
- switch (_context.prev = _context.next) {
24
- case 0:
25
- subject = $rdf.sym(uri);
26
- doc = subject.doc();
27
- _context.next = 4;
28
- return new Promise(function (resolve, reject) {
29
- UI.store.fetcher.load(doc).then(resolve, reject);
30
- });
31
-
32
- case 4:
33
- context = {
34
- // see https://github.com/solid/solid-panes/blob/005f90295d83e499fd626bd84aeb3df10135d5c1/src/index.ts#L30-L34
35
- dom: dom,
36
- session: {
37
- store: UI.store
38
- }
39
- };
40
- options = {};
41
- paneDiv = MeetingPane.render(subject, context, options);
42
- dom.body.appendChild(paneDiv);
43
-
44
- case 8:
45
- case "end":
46
- return _context.stop();
47
- }
48
- }
49
- }, _callee);
50
- }));
51
- return _appendMeetingPane.apply(this, arguments);
52
- }
53
-
54
- document.addEventListener('DOMContentLoaded', function () {
55
- // Set up the view for the subject indicated in the fragment of the window's URL
56
- var uri = decodeURIComponent(window.location.hash.substr(1));
57
-
58
- if (uri.length === 0) {
59
- // window.location = '?#' + encodeURIComponent('https://michielbdejong.inrupt.net/meetings/Data%20browser%2016%20Dec%202019/index.ttl#this')
60
- window.location = '?#' + encodeURIComponent('https://timbl.com/timbl/Public/Test/Meeting/Brainstorming/index.ttl#this');
61
- }
62
-
63
- appendMeetingPane(document, uri);
64
- }); // window.onload = () => {
65
-
66
- console.log('document ready');
67
- var loginBanner = document.getElementById('loginBanner');
68
- loginBanner.appendChild(UI.authn.loginStatusBox(document, null, {}));
69
-
70
- function finishLogin() {
71
- return _finishLogin.apply(this, arguments);
72
- }
73
-
74
- function _finishLogin() {
75
- _finishLogin = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
76
- var session;
77
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
78
- while (1) {
79
- switch (_context2.prev = _context2.next) {
80
- case 0:
81
- _context2.next = 2;
82
- return UI.authn.authSession.handleIncomingRedirect();
83
-
84
- case 2:
85
- session = UI.authn.authSession;
86
-
87
- if (session.info.isLoggedIn) {
88
- console.log("Logged in as ".concat(session.webId));
89
- document.getElementById('loginBanner').innerHTML = "Logged in as ".concat(UI.authn.currentUser().uri);
90
- } else {
91
- console.log('The user is not logged in'); // document.getElementById('loginBanner').innerHTML = '<button onclick="popupLogin()">Log in</button>'
92
- }
93
-
94
- case 4:
95
- case "end":
96
- return _context2.stop();
97
- }
98
- }
99
- }, _callee2);
100
- }));
101
- return _finishLogin.apply(this, arguments);
102
- }
103
-
104
- finishLogin(); // }
105
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["MeetingPane","require","$rdf","UI","appendMeetingPane","dom","uri","subject","sym","doc","Promise","resolve","reject","store","fetcher","load","then","context","session","options","paneDiv","render","body","appendChild","document","addEventListener","decodeURIComponent","window","location","hash","substr","length","encodeURIComponent","console","log","loginBanner","getElementById","authn","loginStatusBox","finishLogin","authSession","handleIncomingRedirect","info","isLoggedIn","webId","innerHTML","currentUser"],"mappings":";;;;;;AAAA,IAAMA,WAAW,GAAGC,OAAO,CAAC,kBAAD,CAA3B;;AACA,IAAMC,IAAI,GAAGD,OAAO,CAAC,QAAD,CAApB;;AACA,IAAME,EAAE,GAAGF,OAAO,CAAC,UAAD,CAAlB,C,CACA;;;SAEeG,iB;;;;;+EAAf,iBAAkCC,GAAlC,EAAuCC,GAAvC;AAAA;AAAA;AAAA;AAAA;AAAA;AACQC,YAAAA,OADR,GACkBL,IAAI,CAACM,GAAL,CAASF,GAAT,CADlB;AAEQG,YAAAA,GAFR,GAEcF,OAAO,CAACE,GAAR,EAFd;AAAA;AAAA,mBAIQ,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACrCT,cAAAA,EAAE,CAACU,KAAH,CAASC,OAAT,CAAiBC,IAAjB,CAAsBN,GAAtB,EAA2BO,IAA3B,CAAgCL,OAAhC,EAAyCC,MAAzC;AACD,aAFK,CAJR;;AAAA;AAOQK,YAAAA,OAPR,GAOkB;AAAE;AAChBZ,cAAAA,GAAG,EAAHA,GADc;AAEda,cAAAA,OAAO,EAAE;AACPL,gBAAAA,KAAK,EAAEV,EAAE,CAACU;AADH;AAFK,aAPlB;AAaQM,YAAAA,OAbR,GAakB,EAblB;AAeQC,YAAAA,OAfR,GAekBpB,WAAW,CAACqB,MAAZ,CAAmBd,OAAnB,EAA4BU,OAA5B,EAAqCE,OAArC,CAflB;AAgBEd,YAAAA,GAAG,CAACiB,IAAJ,CAASC,WAAT,CAAqBH,OAArB;;AAhBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAmBAI,QAAQ,CAACC,gBAAT,CAA0B,kBAA1B,EAA8C,YAAY;AACxD;AACA,MAAMnB,GAAG,GAAGoB,kBAAkB,CAACC,MAAM,CAACC,QAAP,CAAgBC,IAAhB,CAAqBC,MAArB,CAA4B,CAA5B,CAAD,CAA9B;;AACA,MAAIxB,GAAG,CAACyB,MAAJ,KAAe,CAAnB,EAAsB;AACpB;AACAJ,IAAAA,MAAM,CAACC,QAAP,GAAkB,OAAOI,kBAAkB,CAAC,0EAAD,CAA3C;AACD;;AACD5B,EAAAA,iBAAiB,CAACoB,QAAD,EAAWlB,GAAX,CAAjB;AACD,CARD,E,CAUA;;AACA2B,OAAO,CAACC,GAAR,CAAY,gBAAZ;AACA,IAAMC,WAAW,GAAGX,QAAQ,CAACY,cAAT,CAAwB,aAAxB,CAApB;AACAD,WAAW,CAACZ,WAAZ,CAAwBpB,EAAE,CAACkC,KAAH,CAASC,cAAT,CAAwBd,QAAxB,EAAkC,IAAlC,EAAwC,EAAxC,CAAxB;;SAEee,W;;;;;yEAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBACQpC,EAAE,CAACkC,KAAH,CAASG,WAAT,CAAqBC,sBAArB,EADR;;AAAA;AAEQvB,YAAAA,OAFR,GAEkBf,EAAE,CAACkC,KAAH,CAASG,WAF3B;;AAGE,gBAAItB,OAAO,CAACwB,IAAR,CAAaC,UAAjB,EAA6B;AAC3BV,cAAAA,OAAO,CAACC,GAAR,wBAA4BhB,OAAO,CAAC0B,KAApC;AAEApB,cAAAA,QAAQ,CAACY,cAAT,CAAwB,aAAxB,EAAuCS,SAAvC,0BAAmE1C,EAAE,CAACkC,KAAH,CAASS,WAAT,GAAuBxC,GAA1F;AACD,aAJD,MAIO;AACL2B,cAAAA,OAAO,CAACC,GAAR,CAAY,2BAAZ,EADK,CAEL;AACD;;AAVH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAaAK,WAAW,G,CACX","sourcesContent":["const MeetingPane = require('./meetingPane.js')\nconst $rdf = require('rdflib')\nconst UI = require('solid-ui')\n// const SolidAuth = require('solid-auth-client')\n\nasync function appendMeetingPane (dom, uri) {\n const subject = $rdf.sym(uri)\n const doc = subject.doc()\n\n await new Promise((resolve, reject) => {\n UI.store.fetcher.load(doc).then(resolve, reject)\n })\n const context = { // see https://github.com/solid/solid-panes/blob/005f90295d83e499fd626bd84aeb3df10135d5c1/src/index.ts#L30-L34\n dom,\n session: {\n store: UI.store\n }\n }\n const options = {}\n\n const paneDiv = MeetingPane.render(subject, context, options)\n dom.body.appendChild(paneDiv)\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n // Set up the view for the subject indicated in the fragment of the window's URL\n const uri = decodeURIComponent(window.location.hash.substr(1))\n if (uri.length === 0) {\n // window.location = '?#' + encodeURIComponent('https://michielbdejong.inrupt.net/meetings/Data%20browser%2016%20Dec%202019/index.ttl#this')\n window.location = '?#' + encodeURIComponent('https://timbl.com/timbl/Public/Test/Meeting/Brainstorming/index.ttl#this')\n }\n appendMeetingPane(document, uri)\n})\n\n// window.onload = () => {\nconsole.log('document ready')\nconst loginBanner = document.getElementById('loginBanner')\nloginBanner.appendChild(UI.authn.loginStatusBox(document, null, {}))\n\nasync function finishLogin () {\n await UI.authn.authSession.handleIncomingRedirect()\n const session = UI.authn.authSession\n if (session.info.isLoggedIn) {\n console.log(`Logged in as ${session.webId}`)\n\n document.getElementById('loginBanner').innerHTML = `Logged in as ${UI.authn.currentUser().uri}`\n } else {\n console.log('The user is not logged in')\n // document.getElementById('loginBanner').innerHTML = '<button onclick=\"popupLogin()\">Log in</button>'\n }\n}\n\nfinishLogin()\n// }\n"],"file":"index.js"}
package/src/index.html DELETED
@@ -1,31 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <title>The Meetulator - a handy gadget for meetings</title>
6
- <style>
7
- body {
8
- margin: 10%;
9
- }
10
- input {
11
- background-color: #eef;
12
- padding: 0.5em;
13
- border: 0.5em solid white;
14
- font-size: 120%;
15
- }
16
- </style>
17
- </head>
18
- <body>
19
- <h1>The Meetulator</h1>
20
- <div id="loginBanner"> </div>
21
- <p>
22
- A handy gadget for keeping all the parts of a meeting in one place where
23
- you -- and others at the meeting -- can find them
24
- </p>
25
-
26
- <!-- div from meetingPane.render,
27
- which will contain the result of UI.tabs.tabWidget,
28
- will be inserted here -->
29
-
30
- </body>
31
- </html>
package/src/index.js DELETED
@@ -1,54 +0,0 @@
1
- const MeetingPane = require('./meetingPane.js')
2
- const $rdf = require('rdflib')
3
- const UI = require('solid-ui')
4
- // const SolidAuth = require('solid-auth-client')
5
-
6
- async function appendMeetingPane (dom, uri) {
7
- const subject = $rdf.sym(uri)
8
- const doc = subject.doc()
9
-
10
- await new Promise((resolve, reject) => {
11
- UI.store.fetcher.load(doc).then(resolve, reject)
12
- })
13
- const context = { // see https://github.com/solid/solid-panes/blob/005f90295d83e499fd626bd84aeb3df10135d5c1/src/index.ts#L30-L34
14
- dom,
15
- session: {
16
- store: UI.store
17
- }
18
- }
19
- const options = {}
20
-
21
- const paneDiv = MeetingPane.render(subject, context, options)
22
- dom.body.appendChild(paneDiv)
23
- }
24
-
25
- document.addEventListener('DOMContentLoaded', function () {
26
- // Set up the view for the subject indicated in the fragment of the window's URL
27
- const uri = decodeURIComponent(window.location.hash.substr(1))
28
- if (uri.length === 0) {
29
- // window.location = '?#' + encodeURIComponent('https://michielbdejong.inrupt.net/meetings/Data%20browser%2016%20Dec%202019/index.ttl#this')
30
- window.location = '?#' + encodeURIComponent('https://timbl.com/timbl/Public/Test/Meeting/Brainstorming/index.ttl#this')
31
- }
32
- appendMeetingPane(document, uri)
33
- })
34
-
35
- // window.onload = () => {
36
- console.log('document ready')
37
- const loginBanner = document.getElementById('loginBanner')
38
- loginBanner.appendChild(UI.authn.loginStatusBox(document, null, {}))
39
-
40
- async function finishLogin () {
41
- await UI.authn.authSession.handleIncomingRedirect()
42
- const session = UI.authn.authSession
43
- if (session.info.isLoggedIn) {
44
- console.log(`Logged in as ${session.webId}`)
45
-
46
- document.getElementById('loginBanner').innerHTML = `Logged in as ${UI.authn.currentUser().uri}`
47
- } else {
48
- console.log('The user is not logged in')
49
- // document.getElementById('loginBanner').innerHTML = '<button onclick="popupLogin()">Log in</button>'
50
- }
51
- }
52
-
53
- finishLogin()
54
- // }