solid-ui 2.4.30 → 2.4.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/solid-ui.js +1520 -1074
  2. package/dist/solid-ui.js.map +1 -1
  3. package/dist/solid-ui.min.js +1 -1
  4. package/dist/solid-ui.min.js.map +1 -1
  5. package/lib/login/login.d.ts.map +1 -1
  6. package/lib/login/login.js +14 -18
  7. package/lib/login/login.js.map +1 -1
  8. package/lib/media/media-capture.d.ts +2 -2
  9. package/lib/media/media-capture.d.ts.map +1 -1
  10. package/lib/media/media-capture.js +11 -15
  11. package/lib/media/media-capture.js.map +1 -1
  12. package/lib/pad.d.ts +2 -2
  13. package/lib/pad.d.ts.map +1 -1
  14. package/lib/pad.js +15 -39
  15. package/lib/pad.js.map +1 -1
  16. package/lib/participation.d.ts +7 -7
  17. package/lib/participation.d.ts.map +1 -1
  18. package/lib/participation.js +26 -24
  19. package/lib/participation.js.map +1 -1
  20. package/lib/style.js +93 -85
  21. package/lib/style.js.map +1 -1
  22. package/lib/styleConstants.js +35 -0
  23. package/lib/styleConstants.js.map +1 -0
  24. package/lib/tabs.d.ts +0 -125
  25. package/lib/tabs.d.ts.map +1 -1
  26. package/lib/tabs.js +15 -8
  27. package/lib/tabs.js.map +1 -1
  28. package/lib/versionInfo.js +3 -3
  29. package/lib/versionInfo.js.map +1 -1
  30. package/lib/widgets/dragAndDrop.js +11 -19
  31. package/lib/widgets/dragAndDrop.js.map +1 -1
  32. package/lib/widgets/error.d.ts.map +1 -1
  33. package/lib/widgets/error.js +9 -2
  34. package/lib/widgets/error.js.map +1 -1
  35. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +1 -1
  36. package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -1
  37. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  38. package/lib/widgets/forms/basic.d.ts.map +1 -1
  39. package/lib/widgets/forms/basic.js +5 -4
  40. package/lib/widgets/forms/basic.js.map +1 -1
  41. package/lib/widgets/forms/fieldParams.js +2 -2
  42. package/lib/widgets/forms/fieldParams.js.map +1 -1
  43. package/lib/widgets/forms.js +9 -8
  44. package/lib/widgets/forms.js.map +1 -1
  45. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"media-capture.js","names":["debug","_interopRequireWildcard","require","_iconBase","widgets","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","cameraIcon","icons","iconBase","retakeIcon","canvasWidth","canvasHeight","controlStyle","concat","contentType","cameraCaptureControl","dom","store","getImageDoc","doneCallback","div","createElement","destination","imageBlob","player","canvas","table","appendChild","mainTR","main","setAttribute","buttons","cancelButton","addEventListener","_event","stopVideo","retakeButton","button","retake","style","visibility","shutterButton","grabCanvas","sendButton","continueButton","saveBlob","displayPlayer","navigator","mediaDevices","Error","getUserMedia","constraints","then","stream","srcObject","video","removeChild","context","getContext","drawImage","width","height","parentNode","toBlob","blob","msg","type","size","log","reviewImage","getVideoTracks","forEach","track","stop","fetcher","webOperation","uri","data","_resp","err","alert","cameraButton","but","control","restoreButton","_x","_restoreButton","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","imageDoc","wrap","_callee$","_context","prev","next"],"sources":["../../src/media/media-capture.ts"],"sourcesContent":["/// /////////////////////////////////////////////\n//\n// Media input widget\n//\n//\n// Workflow:\n// The HTML5 functionality (on mobille) is to prompt for either\n// a realtime camera capture , OR a selection from images already ont the device\n// (eg camera roll).\n//\n// The solid alternative is to either take a phtoto\n// or access cemra roll (etc) OR to access solid cloud storage of favorite photo almbums.\n// (Especially latest taken ones)\n//\nimport * as debug from '../debug'\n\n/** @module mediaCapture */\n\nimport { icons } from '../iconBase'\nimport * as widgets from '../widgets'\nimport { IndexedFormula, NamedNode } from 'rdflib'\n\nconst cameraIcon = icons.iconBase + 'noun_Camera_1618446_000000.svg' // Get it from github\nconst retakeIcon = icons.iconBase + 'noun_479395.svg' // Get it from github\n\nconst canvasWidth = '640'\nconst canvasHeight = '480'\n\nconst controlStyle = `border-radius: 0.5em; margin: 0.8em; width: ${canvasWidth}; height:${canvasHeight};`\n// const controlStyle = 'border-radius: 0.5em; margin: 0.8em; width: 320; height:240;'\nconst contentType = 'image/png'\n\n/** A control to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {NamedNode} getImageDoc() - NN of the image file to be created\n * @param {function} doneCallback - Called when a picture has been taken\n */\nexport function cameraCaptureControl (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n) {\n const div = dom.createElement('div')\n let destination, imageBlob, player, canvas\n\n const table = div.appendChild(dom.createElement('table'))\n const mainTR = table.appendChild(dom.createElement('tr'))\n const main = mainTR.appendChild(dom.createElement('td'))\n main.setAttribute('colspan', '4')\n\n const buttons = table.appendChild(dom.createElement('tr'))\n\n buttons\n .appendChild(dom.createElement('td')) // Cancel button\n .appendChild(widgets.cancelButton(dom))\n .addEventListener('click', _event => {\n stopVideo()\n doneCallback(null)\n })\n\n const retakeButton = buttons\n .appendChild(dom.createElement('td')) // Retake button\n .appendChild(widgets.button(dom, retakeIcon, 'Retake'))\n retakeButton.addEventListener('click', _event => {\n retake()\n })\n retakeButton.style.visibility = 'collapse' // Hide for now\n\n const shutterButton = buttons\n .appendChild(dom.createElement('td')) // Trigger capture button\n .appendChild(\n widgets.button(dom, icons.iconBase + 'noun_10636.svg', 'Snap')\n )\n shutterButton.addEventListener('click', grabCanvas)\n shutterButton.style.visibility = 'collapse' // Hide for now\n\n const sendButton = buttons\n .appendChild(dom.createElement('td')) // Confirm and save button\n .appendChild(widgets.continueButton(dom)) // @@ or send icon??\n sendButton.addEventListener('click', _event => {\n saveBlob(imageBlob, destination)\n })\n sendButton.style.visibility = 'collapse' // Hide for now\n\n function displayPlayer () {\n player = main.appendChild(dom.createElement('video'))\n player.setAttribute('controls', '1')\n player.setAttribute('autoplay', '1')\n player.setAttribute('style', controlStyle)\n if (!navigator.mediaDevices) {\n throw new Error('navigator.mediaDevices not available')\n }\n navigator.mediaDevices.getUserMedia(constraints).then(stream => {\n player.srcObject = stream\n shutterButton.style.visibility = 'visible' // Enable\n sendButton.style.visibility = 'collapse'\n retakeButton.style.visibility = 'collapse'\n })\n }\n\n const constraints = {\n video: true\n }\n\n function retake () {\n main.removeChild(canvas)\n displayPlayer() // Make new one as old one is stuck black\n }\n\n function grabCanvas () {\n // Draw the video frame to the canvas.\n canvas = dom.createElement('canvas')\n canvas.setAttribute('width', canvasWidth)\n canvas.setAttribute('height', canvasHeight)\n canvas.setAttribute('style', controlStyle)\n main.appendChild(canvas)\n\n const context = canvas.getContext('2d')\n context.drawImage(player, 0, 0, canvas.width, canvas.height)\n\n player.parentNode.removeChild(player)\n\n canvas.toBlob(blob => {\n const msg = `got blob type ${blob.type} size ${blob.size}`\n debug.log(msg)\n destination = getImageDoc()\n imageBlob = blob // save for review\n reviewImage()\n // alert(msg)\n }, contentType) // toBlob\n }\n\n function reviewImage () {\n sendButton.style.visibility = 'visible'\n retakeButton.style.visibility = 'visible'\n shutterButton.style.visibility = 'collapse' // Hide for now\n }\n\n function stopVideo () {\n if (player && player.srcObject) {\n player.srcObject.getVideoTracks().forEach(track => track.stop())\n }\n }\n function saveBlob (blob, destination) {\n const contentType = blob.type\n // if (!confirm('Save picture to ' + destination + ' ?')) return\n debug.log(\n 'Putting ' + blob.size + ' bytes of ' + contentType + ' to ' + destination\n )\n // @@ TODO Remove casting\n ;(store as any).fetcher\n .webOperation('PUT', destination.uri, {\n data: blob,\n contentType\n })\n .then(\n _resp => {\n debug.log('ok saved ' + destination)\n stopVideo()\n doneCallback(destination)\n },\n err => {\n stopVideo()\n alert(err)\n }\n )\n }\n\n // Attach the video stream to the video element and autoplay.\n displayPlayer()\n return div\n}\n\n/** A button to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {fuunction} getImageDoc - returns NN of the image file to be created\n * @param {function<Node>} doneCallback - called with the image taken\n * @returns {DomElement} - A div element with the buton in it\n *\n * This expacts the buttton to a large control when it is pressed\n */\n\nexport function cameraButton (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n): HTMLElement {\n const div = dom.createElement('div')\n const but = widgets.button(dom, cameraIcon, 'Take picture')\n let control\n async function restoreButton (imageDoc) {\n div.removeChild(control)\n div.appendChild(but)\n doneCallback(imageDoc)\n }\n div.appendChild(but)\n but.addEventListener('click', _event => {\n div.removeChild(but)\n control = cameraCaptureControl(\n dom,\n store,\n getImageDoc,\n restoreButton\n )\n div.appendChild(control)\n })\n return div\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"media-capture.js","names":["debug","_interopRequireWildcard","require","_iconBase","style","widgets","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","cameraIcon","icons","iconBase","retakeIcon","contentType","cameraCaptureControl","dom","store","getImageDoc","doneCallback","div","createElement","destination","imageBlob","player","canvas","table","appendChild","mainTR","main","setAttribute","buttons","cancelButton","addEventListener","_event","stopVideo","retakeButton","button","retake","visibility","shutterButton","grabCanvas","sendButton","continueButton","saveBlob","displayPlayer","controlStyle","navigator","mediaDevices","Error","getUserMedia","constraints","then","stream","srcObject","video","removeChild","canvasWidth","canvasHeight","context","getContext","drawImage","width","height","parentNode","toBlob","blob","msg","concat","type","size","log","reviewImage","getVideoTracks","forEach","track","stop","fetcher","webOperation","uri","data","_resp","err","alert","cameraButton","but","control","restoreButton","_x","_restoreButton","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","imageDoc","wrap","_callee$","_context","prev","next"],"sources":["../../src/media/media-capture.ts"],"sourcesContent":["//\n// Media input widget\n//\n//\n// Workflow:\n// The HTML5 functionality (on mobile) is to prompt for either\n// a realtime camera capture, OR a selection from images already on the device\n// (eg camera roll).\n//\n// The solid alternative is to either take a photo\n// or access camera roll (etc) OR to access solid cloud storage of favorite photo albums.\n// (Especially latest taken ones)\n//\nimport * as debug from '../debug'\n\n/** @module mediaCapture */\n\nimport { icons } from '../iconBase'\nimport * as style from '../style'\nimport * as widgets from '../widgets'\nimport { IndexedFormula, NamedNode } from 'rdflib'\n\nconst cameraIcon = icons.iconBase + 'noun_Camera_1618446_000000.svg' // Get it from github\nconst retakeIcon = icons.iconBase + 'noun_479395.svg' // Get it from github\n\nconst contentType = 'image/png'\n\n/** A control to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {NamedNode} getImageDoc() - NN of the image file to be created\n * @param {function} doneCallback - Called when a picture has been taken\n */\nexport function cameraCaptureControl (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n) {\n const div = dom.createElement('div')\n let destination, imageBlob, player, canvas\n\n const table = div.appendChild(dom.createElement('table'))\n const mainTR = table.appendChild(dom.createElement('tr'))\n const main = mainTR.appendChild(dom.createElement('td'))\n main.setAttribute('colspan', '4')\n\n const buttons = table.appendChild(dom.createElement('tr'))\n\n buttons\n .appendChild(dom.createElement('td')) // Cancel button\n .appendChild(widgets.cancelButton(dom))\n .addEventListener('click', _event => {\n stopVideo()\n doneCallback(null)\n })\n\n const retakeButton = buttons\n .appendChild(dom.createElement('td')) // Retake button\n .appendChild(widgets.button(dom, retakeIcon, 'Retake'))\n retakeButton.addEventListener('click', _event => {\n retake()\n })\n retakeButton.style.visibility = 'collapse' // Hide for now\n\n const shutterButton = buttons\n .appendChild(dom.createElement('td')) // Trigger capture button\n .appendChild(\n widgets.button(dom, icons.iconBase + 'noun_10636.svg', 'Snap')\n )\n shutterButton.addEventListener('click', grabCanvas)\n shutterButton.style.visibility = 'collapse' // Hide for now\n\n const sendButton = buttons\n .appendChild(dom.createElement('td')) // Confirm and save button\n .appendChild(widgets.continueButton(dom)) // @@ or send icon??\n sendButton.addEventListener('click', _event => {\n saveBlob(imageBlob, destination)\n })\n sendButton.style.visibility = 'collapse' // Hide for now\n\n function displayPlayer () {\n player = main.appendChild(dom.createElement('video'))\n player.setAttribute('controls', '1')\n player.setAttribute('autoplay', '1')\n player.setAttribute('style', style.controlStyle)\n if (!navigator.mediaDevices) {\n throw new Error('navigator.mediaDevices not available')\n }\n navigator.mediaDevices.getUserMedia(constraints).then(stream => {\n player.srcObject = stream\n shutterButton.style.visibility = 'visible' // Enable\n sendButton.style.visibility = 'collapse'\n retakeButton.style.visibility = 'collapse'\n })\n }\n\n const constraints = {\n video: true\n }\n\n function retake () {\n main.removeChild(canvas)\n displayPlayer() // Make new one as old one is stuck black\n }\n\n function grabCanvas () {\n // Draw the video frame to the canvas.\n canvas = dom.createElement('canvas')\n canvas.setAttribute('width', style.canvasWidth)\n canvas.setAttribute('height', style.canvasHeight)\n canvas.setAttribute('style', style.controlStyle)\n main.appendChild(canvas)\n\n const context = canvas.getContext('2d')\n context.drawImage(player, 0, 0, canvas.width, canvas.height)\n\n player.parentNode.removeChild(player)\n\n canvas.toBlob(blob => {\n const msg = `got blob type ${blob.type} size ${blob.size}`\n debug.log(msg)\n destination = getImageDoc()\n imageBlob = blob // save for review\n reviewImage()\n // alert(msg)\n }, contentType) // toBlob\n }\n\n function reviewImage () {\n sendButton.style.visibility = 'visible'\n retakeButton.style.visibility = 'visible'\n shutterButton.style.visibility = 'collapse' // Hide for now\n }\n\n function stopVideo () {\n if (player && player.srcObject) {\n player.srcObject.getVideoTracks().forEach(track => track.stop())\n }\n }\n function saveBlob (blob, destination) {\n const contentType = blob.type\n // if (!confirm('Save picture to ' + destination + ' ?')) return\n debug.log(\n 'Putting ' + blob.size + ' bytes of ' + contentType + ' to ' + destination\n )\n // @@ TODO Remove casting\n ;(store as any).fetcher\n .webOperation('PUT', destination.uri, {\n data: blob,\n contentType\n })\n .then(\n _resp => {\n debug.log('ok saved ' + destination)\n stopVideo()\n doneCallback(destination)\n },\n err => {\n stopVideo()\n alert(err)\n }\n )\n }\n\n // Attach the video stream to the video element and autoplay.\n displayPlayer()\n return div\n}\n\n/** A button to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {fuunction} getImageDoc - returns NN of the image file to be created\n * @param {function<Node>} doneCallback - called with the image taken\n * @returns {DomElement} - A div element with the button in it\n *\n * This expands the button to a large control when it is pressed\n */\n\nexport function cameraButton (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n): HTMLElement {\n const div = dom.createElement('div')\n const but = widgets.button(dom, cameraIcon, 'Take picture')\n let control\n async function restoreButton (imageDoc) {\n div.removeChild(control)\n div.appendChild(but)\n doneCallback(imageDoc)\n }\n div.appendChild(but)\n but.addEventListener('click', _event => {\n div.removeChild(but)\n control = cameraCaptureControl(\n dom,\n store,\n getImageDoc,\n restoreButton\n )\n div.appendChild(control)\n })\n return div\n}\n"],"mappings":"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"}
package/lib/pad.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Notepad Widget
3
3
  */
4
4
  import { NamedNode, IndexedFormula } from 'rdflib';
5
- export { renderPartipants, participationObject, manageParticipation, recordParticipation } from './participation';
5
+ export { renderParticipants, participationObject, manageParticipation, recordParticipation } from './participation';
6
6
  type notepadOptions = {
7
7
  statusArea?: HTMLDivElement;
8
8
  exists?: boolean;
@@ -16,7 +16,7 @@ export declare function lightColorHash(author?: NamedNode): string;
16
16
  /** notepad
17
17
  *
18
18
  * @param {HTMLDocument} dom - the web page of the browser
19
- * @param {NamedNode} padDoc - the document into which the particpation should be shown
19
+ * @param {NamedNode} padDoc - the document in which the participation should be shown
20
20
  * @param {NamedNode} subject - the thing in which participation is happening
21
21
  * @param {NamedNode} me - person who is logged into the pod
22
22
  * @param {notepadOptions} options - the options that can be passed in consist of statusArea, exists
package/lib/pad.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pad.d.ts","sourceRoot":"","sources":["../src/pad.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAa,SAAS,EAAM,cAAc,EAAE,MAAM,QAAQ,CAAA;AAKjE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAMjH,KAAK,cAAc,GAAG;IACpB,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAgBD;;;;GAIG;AACH,wBAAgB,cAAc,CAAE,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAU1D;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc,OAwuBzH;AAED;;;GAGG;AAGH,wBAAgB,SAAS,CAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,SAUhE;AAED;;GAEG;AAEH,wBAAgB,SAAS,CAAE,GAAG,KAAA,OAE7B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,cAAc,UA6C1D"}
1
+ {"version":3,"file":"pad.d.ts","sourceRoot":"","sources":["../src/pad.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAa,SAAS,EAAM,cAAc,EAAE,MAAM,QAAQ,CAAA;AAMjE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAMnH,KAAK,cAAc,GAAG;IACpB,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAgBD;;;;GAIG;AACH,wBAAgB,cAAc,CAAE,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAU1D;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc,OAusBzH;AAED;;;GAGG;AAGH,wBAAgB,SAAS,CAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,SAUhE;AAED;;GAEG;AAEH,wBAAgB,SAAS,CAAE,GAAG,KAAA,OAE7B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,cAAc,UA6C1D"}
package/lib/pad.js CHANGED
@@ -27,10 +27,10 @@ Object.defineProperty(exports, "recordParticipation", {
27
27
  return _participation.recordParticipation;
28
28
  }
29
29
  });
30
- Object.defineProperty(exports, "renderPartipants", {
30
+ Object.defineProperty(exports, "renderParticipants", {
31
31
  enumerable: true,
32
32
  get: function get() {
33
- return _participation.renderPartipants;
33
+ return _participation.renderParticipants;
34
34
  }
35
35
  });
36
36
  exports.xmlEncode = xmlEncode;
@@ -48,6 +48,7 @@ var _widgets = require("./widgets");
48
48
  var _utils = require("./utils");
49
49
  var _debug = require("./debug");
50
50
  var _solidLogic = require("solid-logic");
51
+ var style = _interopRequireWildcard(require("./style"));
51
52
  var _participation = require("./participation");
52
53
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
53
54
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -115,7 +116,7 @@ function lightColorHash(author) {
115
116
  /** notepad
116
117
  *
117
118
  * @param {HTMLDocument} dom - the web page of the browser
118
- * @param {NamedNode} padDoc - the document into which the particpation should be shown
119
+ * @param {NamedNode} padDoc - the document in which the participation should be shown
119
120
  * @param {NamedNode} subject - the thing in which participation is happening
120
121
  * @param {NamedNode} me - person who is logged into the pod
121
122
  * @param {notepadOptions} options - the options that can be passed in consist of statusArea, exists
@@ -128,7 +129,7 @@ function notepad(dom, padDoc, subject, me, options) {
128
129
  if (me && !me.uri) throw new Error('UI.pad.notepad: Invalid userid');
129
130
  var updater = store.updater;
130
131
  var PAD = (0, _rdflib.Namespace)('http://www.w3.org/ns/pim/pad#');
131
- table.setAttribute('style', 'padding: 1em; overflow: auto; resize: horizontal; min-width: 40em;');
132
+ table.setAttribute('style', style.notepadStyle);
132
133
  var upstreamStatus = null;
133
134
  var downstreamStatus = null;
134
135
  if (options.statusArea) {
@@ -137,10 +138,10 @@ function notepad(dom, padDoc, subject, me, options) {
137
138
  upstreamStatus = tr.appendChild(dom.createElement('td'));
138
139
  downstreamStatus = tr.appendChild(dom.createElement('td'));
139
140
  if (upstreamStatus) {
140
- upstreamStatus.setAttribute('style', 'width:50%');
141
+ upstreamStatus.setAttribute('style', style.upstreamStatus);
141
142
  }
142
143
  if (downstreamStatus) {
143
- downstreamStatus.setAttribute('style', 'width:50%');
144
+ downstreamStatus.setAttribute('style', style.downstreamStatus);
144
145
  }
145
146
  }
146
147
  /* @@ TODO want to look into this, it seems upstream should be a boolean and default to false ?
@@ -163,9 +164,9 @@ function notepad(dom, padDoc, subject, me, options) {
163
164
  var setPartStyle = function setPartStyle(part, colors, pending) {
164
165
  var chunk = part.subject;
165
166
  colors = colors || '';
166
- var baseStyle = 'font-size: 100%; font-family: monospace; width: 100%; border: none; white-space: pre-wrap;';
167
- var headingCore = 'font-family: sans-serif; font-weight: bold; border: none;';
168
- var headingStyle = ['font-size: 110%; padding-top: 0.5em; padding-bottom: 0.5em; width: 100%;', 'font-size: 120%; padding-top: 1em; padding-bottom: 1em; width: 100%;', 'font-size: 150%; padding-top: 1em; padding-bottom: 1em; width: 100%;'];
167
+ var baseStyle = style.baseStyle;
168
+ var headingCore = style.headingCore;
169
+ var headingStyle = style.headingStyle;
169
170
  var author = kb.any(chunk, ns.dc('author'));
170
171
  if (!colors && author) {
171
172
  // Hash the user webid for now -- later allow user selection!
@@ -177,9 +178,9 @@ function notepad(dom, padDoc, subject, me, options) {
177
178
  // and when the indent is stored as a Number itself, not in an object.
178
179
  var indent = kb.any(chunk, PAD('indent'));
179
180
  indent = indent ? indent.value : 0;
180
- var style = indent >= 0 ? baseStyle + 'text-indent: ' + indent * 3 + 'em;' : headingCore + headingStyle[-1 - indent];
181
+ var localStyle = indent >= 0 ? baseStyle + 'text-indent: ' + indent * 3 + 'em;' : headingCore + headingStyle[-1 - indent];
181
182
  // ? baseStyle + 'padding-left: ' + (indent * 3) + 'em;'
182
- part.setAttribute('style', style + colors);
183
+ part.setAttribute('style', localStyle + colors);
183
184
  };
184
185
  var removePart = function removePart(part) {
185
186
  var chunk = part.subject;
@@ -258,29 +259,6 @@ function notepad(dom, padDoc, subject, me, options) {
258
259
  }
259
260
  });
260
261
  };
261
-
262
- // Use this sort of code to split the line when return pressed in the middle @@
263
- /*
264
- function doGetCaretPosition doGetCaretPosition (oField) {
265
- var iCaretPos = 0
266
- // IE Support
267
- if (document.selection) {
268
- // Set focus on the element to avoid IE bug
269
- oField.focus()
270
- // To get cursor position, get empty selection range
271
- var oSel = document.selection.createRange()
272
- // Move selection start to 0 position
273
- oSel.moveStart('character', -oField.value.length)
274
- // The caret position is selection length
275
- iCaretPos = oSel.text.length
276
- // Firefox suppor
277
- } else if (oField.selectionStart || oField.selectionStart === '0') {
278
- iCaretPos = oField.selectionStart
279
- }
280
- // Return results
281
- return (iCaretPos)
282
- }
283
- */
284
262
  var addListeners = function addListeners(part, chunk) {
285
263
  part.addEventListener('keydown', function (event) {
286
264
  if (!updater) {
@@ -321,9 +299,9 @@ function notepad(dom, padDoc, subject, me, options) {
321
299
  // contents need to be sent again
322
300
  part.state = 4; // delete me
323
301
  return;
324
- case 3: // being deleted already
302
+ case 3: // already being deleted
325
303
  case 4:
326
- // already deleme state
304
+ // already deleted state
327
305
  return;
328
306
  case undefined:
329
307
  case 0:
@@ -623,8 +601,6 @@ function notepad(dom, padDoc, subject, me, options) {
623
601
  }
624
602
  return;
625
603
  }
626
- // var last = kb.the(undefined, PAD('previous'), subject)
627
- // var chunk = first // = kb.the(subject, PAD('next'));
628
604
  var row;
629
605
 
630
606
  // First see which of the logical chunks have existing physical manifestations
@@ -686,7 +662,7 @@ function notepad(dom, padDoc, subject, me, options) {
686
662
  (0, _debug.log)(' reloaded OK');
687
663
  clearStatus();
688
664
  if (!consistencyCheck()) {
689
- complain('CONSITENCY CHECK FAILED');
665
+ complain('CONSISTENCY CHECK FAILED');
690
666
  } else {
691
667
  refreshTree(table);
692
668
  }
package/lib/pad.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pad.js","names":["ns","_interopRequireWildcard","require","_rdflib","_widgets","_utils","_debug","_solidLogic","_participation","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","store","solidLogicSingleton","PAD","Namespace","NotepadElement","_HTMLElement","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","_createClass2","_wrapNativeSuper2","HTMLElement","NotepadPart","_HTMLElement2","_super2","_this2","_len2","_key2","lightColorHash","author","hash","x","split","reduce","b","charCodeAt","uri","toString","notepad","dom","padDoc","subject","me","options","exists","table","createElement","kb","Error","updater","setAttribute","upstreamStatus","downstreamStatus","statusArea","appendChild","tr","complain","message","upstream","undefined","log","errorMessageBlock","clearStatus","_upsteam","innerHTML","setPartStyle","part","colors","pending","chunk","baseStyle","headingCore","headingStyle","any","dc","bgcolor","indent","value","style","removePart","prev","next","sameTerm","del","statementsMatching","ins","st","NamedNode","label","slice","update","ok","errorMessage","response","row","parentNode","before","previousSibling","removeChild","firstChild","focus","status","state","beep","setTimeout","reloadAndSync","res","changeIndent","delta","current","Number","object","newIndent","errorBody","requestDownstreamAction","addListeners","addEventListener","event","queueProperty","queue","keyCode","shiftKey","newChunk","preventDefault","nextSibling","updateStore","old","sioc","newOne","lastSent","xhr","inputChangeListener","_event","newPartAfter","tr1","text","insertBefore","ele","here","tagName","toLowerCase","newThing","push","_xhr","newPart","newLinesBefore","consistencyCheck","found","failed","complain2","msg","the","k","each","sts","forEach","sync","textContent","manif","children","refreshTree","root","refresh","reloading","checkAndSync","retryTimeout","tryReload","reload","holds","insertables","rdf","Date","getChunks","chunks","xmlEncode","str","replace","notepadToHTML","pad","html","title","anyValue","dct","level","increaseLevel","decreaseLevel","anyJS","rawContent","content","h"],"sources":["../src/pad.ts"],"sourcesContent":["/** **************\n * Notepad Widget\n */\n\n/** @module pad\n */\nimport * as ns from './ns'\nimport { Namespace, NamedNode, st, IndexedFormula } from 'rdflib'\nimport { newThing, errorMessageBlock } from './widgets'\nimport { beep } from './utils'\nimport { log } from './debug'\nimport { solidLogicSingleton } from 'solid-logic'\nexport { renderPartipants, participationObject, manageParticipation, recordParticipation } from './participation'\n\nconst store = solidLogicSingleton.store\n\nconst PAD = Namespace('http://www.w3.org/ns/pim/pad#')\n\ntype notepadOptions = {\n statusArea?: HTMLDivElement\n exists?: boolean\n}\n/**\n * @ignore\n */\nclass NotepadElement extends HTMLElement {\n subject?: NamedNode\n}\n/**\n * @ignore\n */\nclass NotepadPart extends HTMLElement {\n subject?: NamedNode | string\n value?: string\n state?: Number\n lastSent?: String\n}\n/** Figure out a random color from my webid\n *\n * @param {NamedNode} author - The author of text being displayed\n * @returns {String} The CSS color generated, constrained to be light for a background color\n */\nexport function lightColorHash (author?: NamedNode): string {\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return author && author.uri\n ? '#' + ((hash(author.uri) & 0xffffff) | 0xc0c0c0).toString(16)\n : '#ffffff' // c0c0c0 forces pale\n} // no id -> white\n\n/** notepad\n *\n * @param {HTMLDocument} dom - the web page of the browser\n * @param {NamedNode} padDoc - the document into which the particpation should be shown\n * @param {NamedNode} subject - the thing in which participation is happening\n * @param {NamedNode} me - person who is logged into the pod\n * @param {notepadOptions} options - the options that can be passed in consist of statusArea, exists\n */\nexport function notepad (dom: HTMLDocument, padDoc: NamedNode, subject: NamedNode, me: NamedNode, options?: notepadOptions) {\n options = options || {}\n const exists = options.exists\n const table: any = dom.createElement('table')\n const kb = store\n\n if (me && !me.uri) throw new Error('UI.pad.notepad: Invalid userid')\n\n const updater = store.updater\n\n const PAD = Namespace('http://www.w3.org/ns/pim/pad#')\n\n table.setAttribute(\n 'style',\n 'padding: 1em; overflow: auto; resize: horizontal; min-width: 40em;'\n )\n\n let upstreamStatus: HTMLElement | null = null\n let downstreamStatus: HTMLElement | null = null\n\n if (options.statusArea) {\n const t = options.statusArea.appendChild(dom.createElement('table'))\n const tr = t.appendChild(dom.createElement('tr'))\n upstreamStatus = tr.appendChild(dom.createElement('td'))\n downstreamStatus = tr.appendChild(dom.createElement('td'))\n\n if (upstreamStatus) {\n upstreamStatus.setAttribute('style', 'width:50%')\n }\n if (downstreamStatus) {\n downstreamStatus.setAttribute('style', 'width:50%')\n }\n }\n /* @@ TODO want to look into this, it seems upstream should be a boolean and default to false ?\n *\n */\n const complain = function (message: string, upstream: boolean = false) {\n log(message)\n if ((options as notepadOptions).statusArea) {\n ; (upstream ? upstreamStatus as HTMLElement : downstreamStatus as HTMLElement).appendChild(errorMessageBlock(dom, message, 'pink'))\n }\n }\n // @@ TODO need to refactor so that we don't have to type cast\n const clearStatus = function (_upsteam?: any) {\n if ((options as notepadOptions).statusArea) {\n ((options as notepadOptions).statusArea as HTMLElement).innerHTML = ''\n }\n }\n\n const setPartStyle = function (part: NotepadPart, colors?: string, pending?: any) {\n const chunk = part.subject\n colors = colors || ''\n const baseStyle =\n 'font-size: 100%; font-family: monospace; width: 100%; border: none; white-space: pre-wrap;'\n const headingCore =\n 'font-family: sans-serif; font-weight: bold; border: none;'\n const headingStyle = [\n 'font-size: 110%; padding-top: 0.5em; padding-bottom: 0.5em; width: 100%;',\n 'font-size: 120%; padding-top: 1em; padding-bottom: 1em; width: 100%;',\n 'font-size: 150%; padding-top: 1em; padding-bottom: 1em; width: 100%;'\n ]\n\n const author = kb.any(chunk as any, ns.dc('author'))\n if (!colors && author) {\n // Hash the user webid for now -- later allow user selection!\n const bgcolor = lightColorHash(author as any)\n colors =\n 'color: ' +\n (pending ? '#888' : 'black') +\n '; background-color: ' +\n bgcolor +\n ';'\n }\n\n // @@ TODO Need to research when this can be an object with the indent stored in value\n // and when the indent is stored as a Number itself, not in an object.\n let indent: any = kb.any(chunk as any, PAD('indent'))\n\n indent = indent ? indent.value : 0\n const style =\n indent >= 0\n ? baseStyle + 'text-indent: ' + indent * 3 + 'em;'\n : headingCore + headingStyle[-1 - indent]\n // ? baseStyle + 'padding-left: ' + (indent * 3) + 'em;'\n part.setAttribute('style', style + colors)\n }\n\n const removePart = function (part: NotepadPart) {\n const chunk = part.subject\n if (!chunk) throw new Error('No chunk for line to be deleted!') // just in case\n const prev: any = kb.any(undefined, PAD('next'), chunk as any)\n const next: any = kb.any(chunk as any, PAD('next'))\n if (prev.sameTerm(subject) && next.sameTerm(subject)) {\n // Last one\n log(\"You can't delete the only line.\")\n return\n }\n\n const del = kb\n .statementsMatching(chunk as any, undefined, undefined, padDoc)\n .concat(kb.statementsMatching(undefined, undefined, chunk as any, padDoc))\n const ins = [st(prev, PAD('next'), next, padDoc)]\n\n // @@ TODO what should we do if chunk is not a NamedNode should we\n // assume then it is a string?\n if (chunk instanceof NamedNode) {\n const label = chunk.uri.slice(-4)\n\n log('Deleting line ' + label)\n }\n if (!updater) {\n throw new Error('have no updater')\n }\n // @@ TODO below you can see that before is redefined and not a boolean\n updater.update(del, ins, function (uri, ok, errorMessage, response) {\n if (ok) {\n const row = part.parentNode\n if (row) {\n const before: any = row.previousSibling\n if (row.parentNode) {\n row.parentNode.removeChild(row)\n }\n // console.log(' deleted line ' + label + ' ok ' + part.value)\n if (before && before.firstChild) {\n // @@ TODO IMPORTANT FOCUS ISN'T A PROPERTY ON A CHILDNODE\n before.firstChild.focus()\n }\n }\n } else if (response && (response as any).status === 409) {\n // Conflict\n setPartStyle(part, 'color: black; background-color: #ffd;') // yellow\n part.state = 0 // Needs downstream refresh\n beep(0.5, 512) // Ooops clash with other person\n setTimeout(function () {\n // Ideally, beep! @@\n reloadAndSync() // Throw away our changes and\n // updater.requestDownstreamAction(padDoc, reloadAndSync)\n }, 1000)\n } else {\n log(' removePart FAILED ' + chunk + ': ' + errorMessage)\n log(\" removePart was deleteing :'\" + del)\n setPartStyle(part, 'color: black; background-color: #fdd;') // failed\n const res = response ? (response as any).status : ' [no response field] '\n complain('Error ' + res + ' saving changes: ' + (errorMessage as any).true) // upstream,\n // updater.requestDownstreamAction(padDoc, reloadAndSync);\n }\n })\n } // removePart\n\n const changeIndent = function (part: NotepadPart, chunk: string, delta) {\n const del = kb.statementsMatching(chunk as any, PAD('indent'))\n const current = del.length ? Number(del[0].object.value) : 0\n if (current + delta < -3) return // limit negative indent\n const newIndent = current + delta\n const ins = st(chunk as any, PAD('indent'), newIndent, padDoc)\n if (!updater) {\n throw new Error('no updater')\n }\n updater.update(del, ins as any, function (uri, ok, errorBody) {\n if (!ok) {\n log(\n \"Indent change FAILED '\" +\n newIndent +\n \"' for \" +\n padDoc +\n ': ' +\n errorBody\n )\n setPartStyle(part, 'color: black; background-color: #fdd;') // failed\n updater.requestDownstreamAction(padDoc, reloadAndSync)\n } else {\n setPartStyle(part) // Implement the indent\n }\n })\n }\n\n // Use this sort of code to split the line when return pressed in the middle @@\n /*\n function doGetCaretPosition doGetCaretPosition (oField) {\n var iCaretPos = 0\n // IE Support\n if (document.selection) {\n // Set focus on the element to avoid IE bug\n oField.focus()\n // To get cursor position, get empty selection range\n var oSel = document.selection.createRange()\n // Move selection start to 0 position\n oSel.moveStart('character', -oField.value.length)\n // The caret position is selection length\n iCaretPos = oSel.text.length\n // Firefox suppor\n } else if (oField.selectionStart || oField.selectionStart === '0') {\n iCaretPos = oField.selectionStart\n }\n // Return results\n return (iCaretPos)\n }\n */\n const addListeners = function (part: any, chunk: any) {\n part.addEventListener('keydown', function (event) {\n if (!updater) {\n throw new Error('no updater')\n }\n\n let queueProperty, queue\n // up 38; down 40; left 37; right 39 tab 9; shift 16; escape 27\n switch (event.keyCode) {\n case 13: // Return\n {\n const before: NotepadElement = event.shiftKey\n log('enter') // Shift-return inserts before -- only way to add to top of pad.\n if (before) {\n queue = kb.any(undefined, PAD('next'), chunk)\n queueProperty = 'newlinesAfter'\n } else {\n queue = kb.any(chunk, PAD('next'))\n queueProperty = 'newlinesBefore'\n }\n queue[queueProperty] = queue[queueProperty] || 0\n queue[queueProperty] += 1\n if (queue[queueProperty] > 1) {\n log(' queueing newline queue = ' + queue[queueProperty])\n return\n }\n log(' go ahead line before ' + queue[queueProperty])\n newChunk(part, before) // was document.activeElement\n break\n }\n case 8: // Delete\n if (part.value.length === 0) {\n log(\n 'Delete key line ' + chunk.uri.slice(-4) + ' state ' + part.state\n )\n\n switch (part.state) {\n case 1: // contents being sent\n case 2: // contents need to be sent again\n part.state = 4 // delete me\n return\n case 3: // being deleted already\n case 4: // already deleme state\n return\n case undefined:\n case 0:\n part.state = 3 // being deleted\n removePart(part)\n event.preventDefault()\n break // continue\n default:\n throw new Error('pad: Unexpected state ' + part)\n }\n }\n break\n case 9: // Tab\n {\n const delta = event.shiftKey ? -1 : 1\n changeIndent(part, chunk, delta)\n event.preventDefault() // default is to highlight next field\n break\n }\n case 27: // ESC\n log('escape')\n updater.requestDownstreamAction(padDoc, reloadAndSync)\n event.preventDefault()\n break\n\n case 38: // Up\n if (part.parentNode.previousSibling) {\n part.parentNode.previousSibling.firstChild.focus()\n event.preventDefault()\n }\n break\n\n case 40: // Down\n if (part.parentNode.nextSibling) {\n part.parentNode.nextSibling.firstChild.focus()\n event.preventDefault()\n }\n break\n\n default:\n }\n })\n\n const updateStore = function (part: NotepadPart) {\n const chunk: any = part.subject\n setPartStyle(part, undefined, true)\n const old = (kb.any(chunk, ns.sioc('content')) as any).value\n const del = [st(chunk, ns.sioc('content'), old, padDoc)]\n let ins\n if (part.value) {\n ins = [st(chunk, ns.sioc('content'), part.value as any, padDoc)]\n }\n const newOne = part.value\n\n // DEBUGGING ONLY\n if (part.lastSent) {\n if (old !== part.lastSent) {\n throw new Error(\n \"Out of order, last sent expected '\" +\n old +\n \"' but found '\" +\n part.lastSent +\n \"'\"\n )\n }\n }\n part.lastSent = newOne\n\n /* console.log(\n ' Patch proposed to ' +\n chunk.uri.slice(-4) +\n \" '\" +\n old +\n \"' -> '\" +\n newOne +\n \"' \"\n ) */\n if (!updater) {\n throw new Error('no updater')\n }\n\n updater.update(del, ins, function (uri, ok, errorBody, xhr) {\n if (!ok) {\n // alert(\"clash \" + errorBody);\n log(\n ' patch FAILED ' +\n (xhr as any).status +\n \" for '\" +\n old +\n \"' -> '\" +\n newOne +\n \"': \" +\n errorBody\n )\n if ((xhr as any).status === 409) {\n // Conflict - @@ we assume someone else\n setPartStyle(part, 'color: black; background-color: #fdd;')\n part.state = 0 // Needs downstream refresh\n beep(0.5, 512) // Ooops clash with other person\n setTimeout(function () {\n updater.requestDownstreamAction(padDoc, reloadAndSync)\n }, 1000)\n } else {\n setPartStyle(part, 'color: black; background-color: #fdd;') // failed pink\n part.state = 0\n complain(\n ' Error ' + (xhr as any).status + ' sending data: ' + errorBody,\n true\n )\n beep(1.0, 128) // Other\n // @@@ Do soemthing more serious with other errors eg auth, etc\n }\n } else {\n clearStatus(true) // upstream\n setPartStyle(part) // synced\n log(\" Patch ok '\" + old + \"' -> '\" + newOne + \"' \")\n\n if (part.state === 4) {\n // delete me\n part.state = 3\n removePart(part)\n } else if (part.state === 3) {\n // being deleted\n // pass\n } else if (part.state === 2) {\n part.state = 1 // pending: lock\n updateStore(part)\n } else {\n part.state = 0 // clear lock\n }\n }\n })\n }\n\n part.addEventListener('input', function inputChangeListener (_event) {\n // debug.log(\"input changed \"+part.value);\n setPartStyle(part, undefined, true) // grey out - not synced\n log(\n 'Input event state ' + part.state + \" value '\" + part.value + \"'\"\n )\n switch (part.state) {\n case 3: // being deleted\n return\n case 4: // needs to be deleted\n return\n case 2: // needs content updating, we know\n return\n case 1:\n part.state = 2 // lag we need another patch\n return\n case 0:\n case undefined:\n part.state = 1 // being upadted\n updateStore(part)\n }\n }) // listener\n } // addlisteners\n\n // @@ TODO Need to research before as it appears to be used as an Element and a boolean\n const newPartAfter = function (tr1: HTMLTableElement, chunk: String, before?: NotepadElement | boolean) {\n // @@ take chunk and add listeners\n let text: any = kb.any(chunk as any, ns.sioc('content'))\n text = text ? text.value : ''\n const tr = dom.createElement('tr')\n if (before) {\n table.insertBefore(tr, tr1)\n } else {\n // after\n if (tr1 && tr1.nextSibling) {\n table.insertBefore(tr, tr1.nextSibling)\n } else {\n table.appendChild(tr)\n }\n }\n const part: any = tr.appendChild(dom.createElement('input'))\n part.subject = chunk\n part.setAttribute('type', 'text')\n part.value = text\n if (me) {\n setPartStyle(part, '')\n addListeners(part, chunk)\n } else {\n setPartStyle(part, 'color: #222; background-color: #fff')\n log(\"Note can't add listeners - not logged in\")\n }\n return part\n }\n\n /* @@ TODO we need to look at indent, it can be a Number or an Object this doesn't seem correct.\n */\n const newChunk = function (ele?: NotepadElement, before?: NotepadElement) {\n // element of chunk being split\n const kb = store\n let indent: any = 0\n let queueProperty: string | null = null\n let here, prev, next, queue, tr1: any\n\n if (ele) {\n if (ele.tagName.toLowerCase() !== 'input') {\n log('return pressed when current document is: ' + ele.tagName)\n }\n here = ele.subject\n indent = kb.any(here, PAD('indent'))\n indent = indent ? Number(indent.value) : 0\n if (before) {\n prev = kb.any(undefined, PAD('next'), here)\n next = here\n queue = prev\n queueProperty = 'newlinesAfter'\n } else {\n prev = here\n next = kb.any(here, PAD('next'))\n queue = next\n queueProperty = 'newlinesBefore'\n }\n tr1 = ele.parentNode\n } else {\n prev = subject\n next = subject\n tr1 = undefined\n }\n\n const chunk = newThing(padDoc)\n const label = chunk.uri.slice(-4)\n\n const del = [st(prev, PAD('next'), next, padDoc)]\n const ins = [\n st(prev, PAD('next'), chunk, padDoc),\n st(chunk, PAD('next'), next, padDoc),\n st(chunk, ns.dc('author'), me, padDoc),\n st(chunk, ns.sioc('content'), '' as any, padDoc)\n ]\n if (indent > 0) {\n // Do not inherit\n ins.push(st(chunk, PAD('indent'), indent, padDoc))\n }\n\n log(' Fresh chunk ' + label + ' proposed')\n if (!updater) {\n throw new Error('no updater')\n }\n updater.update(del, ins, function (uri, ok, errorBody, _xhr) {\n if (!ok) {\n // alert(\"Error writing new line \" + label + \": \" + errorBody);\n log(' ERROR writing new line ' + label + ': ' + errorBody)\n } else {\n const newPart = newPartAfter(tr1, chunk, before)\n setPartStyle(newPart)\n newPart.focus() // Note this is delayed\n if (queueProperty) {\n log(\n ' Fresh chunk ' +\n label +\n ' updated, queue = ' +\n queue[queueProperty]\n )\n queue[queueProperty] -= 1\n if (queue[queueProperty] > 0) {\n log(\n ' Implementing queued newlines = ' + next.newLinesBefore\n )\n newChunk(newPart, before)\n }\n }\n }\n })\n }\n\n const consistencyCheck = function () {\n const found: { [uri: string]: boolean } = {}\n let failed = 0\n function complain2 (msg) {\n complain(msg)\n failed++\n }\n\n if (!kb.the(subject, PAD('next'))) {\n complain2('No initial next pointer')\n return false // can't do linked list\n }\n // var chunk = kb.the(subject, PAD('next'))\n let prev = subject\n let chunk\n for (; ;) {\n chunk = kb.the(prev, PAD('next'))\n if (!chunk) {\n complain2('No next pointer from ' + prev)\n }\n if (chunk.sameTerm(subject)) {\n break\n }\n prev = chunk\n const label = chunk.uri.split('#')[1]\n if (found[chunk.uri]) {\n complain2('Loop!')\n return false\n }\n\n found[chunk.uri] = true\n let k = kb.each(chunk, PAD('next')).length\n if (k !== 1) {\n complain2('Should be 1 not ' + k + ' next pointer for ' + label)\n }\n\n k = kb.each(chunk, PAD('indent')).length\n if (k > 1) {\n complain2('Should be 0 or 1 not ' + k + ' indent for ' + label)\n }\n\n k = kb.each(chunk, ns.sioc('content')).length\n if (k !== 1) {\n complain2('Should be 1 not ' + k + ' contents for ' + label)\n }\n\n k = kb.each(chunk, ns.dc('author')).length\n if (k !== 1) {\n complain2('Should be 1 not ' + k + ' author for ' + label)\n }\n\n const sts = kb.statementsMatching(undefined, ns.sioc('contents'))\n sts.forEach(function (st) {\n if (!found[st.subject.value]) {\n complain2('Loose chunk! ' + st.subject.value)\n }\n })\n }\n return !failed\n }\n\n // Ensure that the display matches the current state of the\n // @@ TODO really need to refactor this so that we don't need to cast types\n const sync = function () {\n // var first = kb.the(subject, PAD('next'))\n if (kb.each(subject, PAD('next')).length !== 1) {\n const msg =\n 'Pad: Inconsistent data - NEXT pointers: ' +\n kb.each(subject, PAD('next')).length\n log(msg)\n if ((options as notepadOptions).statusArea) {\n ((options as notepadOptions).statusArea as HTMLElement).textContent += msg\n }\n return\n }\n // var last = kb.the(undefined, PAD('previous'), subject)\n // var chunk = first // = kb.the(subject, PAD('next'));\n let row\n\n // First see which of the logical chunks have existing physical manifestations\n const manif: any = []\n // Find which lines correspond to existing chunks\n\n for (\n let chunk = kb.the(subject, PAD('next')) as unknown as any;\n !chunk.sameTerm(subject);\n chunk = kb.the(chunk, PAD('next'))\n ) {\n for (let i = 0; i < table.children.length; i++) {\n const tr: any = table.children[i]\n if (tr.firstChild) {\n if (tr.firstChild.subject.sameTerm(chunk)) {\n manif[chunk.uri] = tr.firstChild\n }\n }\n }\n }\n\n // Remove any deleted lines\n for (let i = table.children.length - 1; i >= 0; i--) {\n row = table.children[i]\n if (!manif[row.firstChild.subject.uri]) {\n table.removeChild(row)\n }\n }\n // Insert any new lines and update old ones\n row = table.firstChild // might be null\n for (\n let chunk = kb.the(subject, PAD('next')) as unknown as any;\n !chunk.sameTerm(subject);\n chunk = kb.the(chunk, PAD('next'))\n ) {\n const text = (kb.any(chunk, ns.sioc('content')) as any).value\n // superstitious -- don't mess with unchanged input fields\n // which may be selected by the user\n if (row && manif[chunk.uri]) {\n const part = row.firstChild\n if (text !== part.value) {\n part.value = text\n }\n setPartStyle(part)\n part.state = 0 // Clear the state machine\n delete part.lastSent // DEBUG ONLY\n row = row.nextSibling\n } else {\n newPartAfter(row, chunk, true) // actually before\n }\n }\n }\n\n // Refresh the DOM tree\n\n const refreshTree = function (root) {\n if (root.refresh) {\n root.refresh()\n return\n }\n for (let i = 0; i < root.children.length; i++) {\n refreshTree(root.children[i])\n }\n }\n\n let reloading = false\n\n const checkAndSync = function () {\n log(' reloaded OK')\n clearStatus()\n if (!consistencyCheck()) {\n complain('CONSITENCY CHECK FAILED')\n } else {\n refreshTree(table)\n }\n }\n\n const reloadAndSync = function () {\n if (reloading) {\n log(' Already reloading - stop')\n return // once only needed\n }\n reloading = true\n let retryTimeout = 1000 // ms\n const tryReload = function () {\n log('try reload - timeout = ' + retryTimeout)\n if (!updater) {\n throw new Error('no updater')\n }\n updater.reload(updater.store, padDoc, function (ok, message, xhr) {\n reloading = false\n if (ok) {\n checkAndSync()\n } else {\n if ((xhr as any).status === 0) {\n complain(\n 'Network error refreshing the pad. Retrying in ' +\n retryTimeout / 1000\n )\n reloading = true\n retryTimeout = retryTimeout * 2\n setTimeout(tryReload, retryTimeout)\n } else {\n complain(\n 'Error ' +\n (xhr as any).status +\n 'refreshing the pad:' +\n message +\n '. Stopped. ' +\n padDoc\n )\n }\n }\n })\n }\n tryReload()\n }\n\n table.refresh = sync // Catch downward propagating refresh events\n table.reloadAndSync = reloadAndSync\n\n if (!me) log('Warning: must be logged in for pad to be edited')\n\n if (exists) {\n log('Existing pad.')\n if (consistencyCheck()) {\n sync()\n if (kb.holds(subject, PAD('next'), subject)) {\n // Empty list untenable\n newChunk() // require at least one line\n }\n } else {\n log((table.textContent = 'Inconsistent data. Abort'))\n }\n } else {\n // Make new pad\n log('No pad exists - making new one.')\n const insertables = [\n st(subject, ns.rdf('type'), PAD('Notepad'), padDoc),\n st(subject, ns.dc('author'), me, padDoc),\n st(subject, ns.dc('created'), new Date() as any, padDoc),\n st(subject, PAD('next'), subject, padDoc)\n ]\n\n if (!updater) {\n throw new Error('no updater')\n }\n updater.update([], insertables, function (uri: string | null | undefined, ok: boolean, errorBody?: string) {\n if (!ok) {\n complain(errorBody || '')\n } else {\n log('Initial pad created')\n newChunk() // Add a first chunck\n // getResults();\n }\n })\n }\n return table\n}\n\n/**\n * Get the chunks of the notepad\n * They are stored in a RDF linked list\n */\n\n// @ignore exporting this only for the unit test\nexport function getChunks (subject: NamedNode, kb: IndexedFormula) {\n const chunks: any[] = []\n for (\n let chunk: any = kb.the(subject, PAD('next'));\n !chunk.sameTerm(subject);\n chunk = kb.the(chunk, PAD('next'))\n ) {\n chunks.push(chunk)\n }\n return chunks\n}\n\n/**\n * Encode content to be put in XML or HTML elements\n */\n// @ignore exporting this only for the unit test\nexport function xmlEncode (str) {\n return str.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;')\n}\n\n/**\n * Convert a notepad to HTML\n * @param { } pad - the notepad\n * @param {store} pad - the data store\n */\nexport function notepadToHTML (pad: any, kb: IndexedFormula) {\n const chunks = getChunks(pad, kb)\n let html = '<html>\\n <head>\\n'\n const title = kb.anyValue(pad, ns.dct('title'))\n if (title) {\n html += ` <title>${xmlEncode(title)}</title>\\n`\n }\n html += ' </head>\\n <body>\\n'\n let level = 0\n\n function increaseLevel (indent) {\n for (; level < indent; level++) {\n html += '<ul>\\n'\n }\n }\n\n function decreaseLevel (indent) {\n for (; level > indent; level--) {\n html += '</ul>\\n'\n }\n }\n chunks.forEach(chunk => {\n const indent = kb.anyJS(chunk, PAD('indent'))\n const rawContent = kb.anyJS(chunk, ns.sioc('content'))\n if (!rawContent) return // seed chunk is dummy\n const content = xmlEncode(rawContent)\n if (indent < 0) { // negative indent levels represent heading levels\n decreaseLevel(0)\n const h = indent >= -3 ? 4 + indent : 1 // -1 -> h4, -2 -> h3\n html += `\\n<h${h}>${content}</h${h}>\\n`\n } else { // >= 0\n if (indent > 0) { // Lists\n decreaseLevel(indent)\n increaseLevel(indent)\n html += `<li>${content}</li>\\n`\n } else { // indent 0\n decreaseLevel(indent)\n html += `<p>${content}</p>\\n`\n }\n }\n }) // foreach chunk\n // At the end decreaseLevel any open ULs\n decreaseLevel(0)\n html += ' </body>\\n</html>\\n'\n return html\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pad.js","names":["ns","_interopRequireWildcard","require","_rdflib","_widgets","_utils","_debug","_solidLogic","style","_participation","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","store","solidLogicSingleton","PAD","Namespace","NotepadElement","_HTMLElement","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","_createClass2","_wrapNativeSuper2","HTMLElement","NotepadPart","_HTMLElement2","_super2","_this2","_len2","_key2","lightColorHash","author","hash","x","split","reduce","b","charCodeAt","uri","toString","notepad","dom","padDoc","subject","me","options","exists","table","createElement","kb","Error","updater","setAttribute","notepadStyle","upstreamStatus","downstreamStatus","statusArea","appendChild","tr","complain","message","upstream","undefined","log","errorMessageBlock","clearStatus","_upsteam","innerHTML","setPartStyle","part","colors","pending","chunk","baseStyle","headingCore","headingStyle","any","dc","bgcolor","indent","value","localStyle","removePart","prev","next","sameTerm","del","statementsMatching","ins","st","NamedNode","label","slice","update","ok","errorMessage","response","row","parentNode","before","previousSibling","removeChild","firstChild","focus","status","state","beep","setTimeout","reloadAndSync","res","changeIndent","delta","current","Number","object","newIndent","errorBody","requestDownstreamAction","addListeners","addEventListener","event","queueProperty","queue","keyCode","shiftKey","newChunk","preventDefault","nextSibling","updateStore","old","sioc","newOne","lastSent","xhr","inputChangeListener","_event","newPartAfter","tr1","text","insertBefore","ele","here","tagName","toLowerCase","newThing","push","_xhr","newPart","newLinesBefore","consistencyCheck","found","failed","complain2","msg","the","k","each","sts","forEach","sync","textContent","manif","children","refreshTree","root","refresh","reloading","checkAndSync","retryTimeout","tryReload","reload","holds","insertables","rdf","Date","getChunks","chunks","xmlEncode","str","replace","notepadToHTML","pad","html","title","anyValue","dct","level","increaseLevel","decreaseLevel","anyJS","rawContent","content","h"],"sources":["../src/pad.ts"],"sourcesContent":["/** **************\n * Notepad Widget\n */\n\n/** @module pad\n */\nimport * as ns from './ns'\nimport { Namespace, NamedNode, st, IndexedFormula } from 'rdflib'\nimport { newThing, errorMessageBlock } from './widgets'\nimport { beep } from './utils'\nimport { log } from './debug'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as style from './style'\nexport { renderParticipants, participationObject, manageParticipation, recordParticipation } from './participation'\n\nconst store = solidLogicSingleton.store\n\nconst PAD = Namespace('http://www.w3.org/ns/pim/pad#')\n\ntype notepadOptions = {\n statusArea?: HTMLDivElement\n exists?: boolean\n}\n/**\n * @ignore\n */\nclass NotepadElement extends HTMLElement {\n subject?: NamedNode\n}\n/**\n * @ignore\n */\nclass NotepadPart extends HTMLElement {\n subject?: NamedNode | string\n value?: string\n state?: Number\n lastSent?: String\n}\n/** Figure out a random color from my webid\n *\n * @param {NamedNode} author - The author of text being displayed\n * @returns {String} The CSS color generated, constrained to be light for a background color\n */\nexport function lightColorHash (author?: NamedNode): string {\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return author && author.uri\n ? '#' + ((hash(author.uri) & 0xffffff) | 0xc0c0c0).toString(16)\n : '#ffffff' // c0c0c0 forces pale\n} // no id -> white\n\n/** notepad\n *\n * @param {HTMLDocument} dom - the web page of the browser\n * @param {NamedNode} padDoc - the document in which the participation should be shown\n * @param {NamedNode} subject - the thing in which participation is happening\n * @param {NamedNode} me - person who is logged into the pod\n * @param {notepadOptions} options - the options that can be passed in consist of statusArea, exists\n */\nexport function notepad (dom: HTMLDocument, padDoc: NamedNode, subject: NamedNode, me: NamedNode, options?: notepadOptions) {\n options = options || {}\n const exists = options.exists\n const table: any = dom.createElement('table')\n const kb = store\n\n if (me && !me.uri) throw new Error('UI.pad.notepad: Invalid userid')\n\n const updater = store.updater\n\n const PAD = Namespace('http://www.w3.org/ns/pim/pad#')\n\n table.setAttribute('style', style.notepadStyle)\n\n let upstreamStatus: HTMLElement | null = null\n let downstreamStatus: HTMLElement | null = null\n\n if (options.statusArea) {\n const t = options.statusArea.appendChild(dom.createElement('table'))\n const tr = t.appendChild(dom.createElement('tr'))\n upstreamStatus = tr.appendChild(dom.createElement('td'))\n downstreamStatus = tr.appendChild(dom.createElement('td'))\n\n if (upstreamStatus) {\n upstreamStatus.setAttribute('style', style.upstreamStatus)\n }\n if (downstreamStatus) {\n downstreamStatus.setAttribute('style', style.downstreamStatus)\n }\n }\n /* @@ TODO want to look into this, it seems upstream should be a boolean and default to false ?\n *\n */\n const complain = function (message: string, upstream: boolean = false) {\n log(message)\n if ((options as notepadOptions).statusArea) {\n ; (upstream ? upstreamStatus as HTMLElement : downstreamStatus as HTMLElement).appendChild(errorMessageBlock(dom, message, 'pink'))\n }\n }\n // @@ TODO need to refactor so that we don't have to type cast\n const clearStatus = function (_upsteam?: any) {\n if ((options as notepadOptions).statusArea) {\n ((options as notepadOptions).statusArea as HTMLElement).innerHTML = ''\n }\n }\n\n const setPartStyle = function (part: NotepadPart, colors?: string, pending?: any) {\n const chunk = part.subject\n colors = colors || ''\n const baseStyle = style.baseStyle\n const headingCore = style.headingCore\n const headingStyle = style.headingStyle\n\n const author = kb.any(chunk as any, ns.dc('author'))\n if (!colors && author) {\n // Hash the user webid for now -- later allow user selection!\n const bgcolor = lightColorHash(author as any)\n colors =\n 'color: ' +\n (pending ? '#888' : 'black') +\n '; background-color: ' +\n bgcolor +\n ';'\n }\n\n // @@ TODO Need to research when this can be an object with the indent stored in value\n // and when the indent is stored as a Number itself, not in an object.\n let indent: any = kb.any(chunk as any, PAD('indent'))\n\n indent = indent ? indent.value : 0\n const localStyle =\n indent >= 0\n ? baseStyle + 'text-indent: ' + indent * 3 + 'em;'\n : headingCore + headingStyle[-1 - indent]\n // ? baseStyle + 'padding-left: ' + (indent * 3) + 'em;'\n part.setAttribute('style', localStyle + colors)\n }\n\n const removePart = function (part: NotepadPart) {\n const chunk = part.subject\n if (!chunk) throw new Error('No chunk for line to be deleted!') // just in case\n const prev: any = kb.any(undefined, PAD('next'), chunk as any)\n const next: any = kb.any(chunk as any, PAD('next'))\n if (prev.sameTerm(subject) && next.sameTerm(subject)) {\n // Last one\n log(\"You can't delete the only line.\")\n return\n }\n\n const del = kb\n .statementsMatching(chunk as any, undefined, undefined, padDoc)\n .concat(kb.statementsMatching(undefined, undefined, chunk as any, padDoc))\n const ins = [st(prev, PAD('next'), next, padDoc)]\n\n // @@ TODO what should we do if chunk is not a NamedNode should we\n // assume then it is a string?\n if (chunk instanceof NamedNode) {\n const label = chunk.uri.slice(-4)\n\n log('Deleting line ' + label)\n }\n if (!updater) {\n throw new Error('have no updater')\n }\n // @@ TODO below you can see that before is redefined and not a boolean\n updater.update(del, ins, function (uri, ok, errorMessage, response) {\n if (ok) {\n const row = part.parentNode\n if (row) {\n const before: any = row.previousSibling\n if (row.parentNode) {\n row.parentNode.removeChild(row)\n }\n // console.log(' deleted line ' + label + ' ok ' + part.value)\n if (before && before.firstChild) {\n // @@ TODO IMPORTANT FOCUS ISN'T A PROPERTY ON A CHILDNODE\n before.firstChild.focus()\n }\n }\n } else if (response && (response as any).status === 409) {\n // Conflict\n setPartStyle(part, 'color: black; background-color: #ffd;') // yellow\n part.state = 0 // Needs downstream refresh\n beep(0.5, 512) // Ooops clash with other person\n setTimeout(function () {\n // Ideally, beep! @@\n reloadAndSync() // Throw away our changes and\n // updater.requestDownstreamAction(padDoc, reloadAndSync)\n }, 1000)\n } else {\n log(' removePart FAILED ' + chunk + ': ' + errorMessage)\n log(\" removePart was deleteing :'\" + del)\n setPartStyle(part, 'color: black; background-color: #fdd;') // failed\n const res = response ? (response as any).status : ' [no response field] '\n complain('Error ' + res + ' saving changes: ' + (errorMessage as any).true) // upstream,\n // updater.requestDownstreamAction(padDoc, reloadAndSync);\n }\n })\n } // removePart\n\n const changeIndent = function (part: NotepadPart, chunk: string, delta) {\n const del = kb.statementsMatching(chunk as any, PAD('indent'))\n const current = del.length ? Number(del[0].object.value) : 0\n if (current + delta < -3) return // limit negative indent\n const newIndent = current + delta\n const ins = st(chunk as any, PAD('indent'), newIndent, padDoc)\n if (!updater) {\n throw new Error('no updater')\n }\n updater.update(del, ins as any, function (uri, ok, errorBody) {\n if (!ok) {\n log(\n \"Indent change FAILED '\" +\n newIndent +\n \"' for \" +\n padDoc +\n ': ' +\n errorBody\n )\n setPartStyle(part, 'color: black; background-color: #fdd;') // failed\n updater.requestDownstreamAction(padDoc, reloadAndSync)\n } else {\n setPartStyle(part) // Implement the indent\n }\n })\n }\n\n const addListeners = function (part: any, chunk: any) {\n part.addEventListener('keydown', function (event) {\n if (!updater) {\n throw new Error('no updater')\n }\n\n let queueProperty, queue\n // up 38; down 40; left 37; right 39 tab 9; shift 16; escape 27\n switch (event.keyCode) {\n case 13: // Return\n {\n const before: NotepadElement = event.shiftKey\n log('enter') // Shift-return inserts before -- only way to add to top of pad.\n if (before) {\n queue = kb.any(undefined, PAD('next'), chunk)\n queueProperty = 'newlinesAfter'\n } else {\n queue = kb.any(chunk, PAD('next'))\n queueProperty = 'newlinesBefore'\n }\n queue[queueProperty] = queue[queueProperty] || 0\n queue[queueProperty] += 1\n if (queue[queueProperty] > 1) {\n log(' queueing newline queue = ' + queue[queueProperty])\n return\n }\n log(' go ahead line before ' + queue[queueProperty])\n newChunk(part, before) // was document.activeElement\n break\n }\n case 8: // Delete\n if (part.value.length === 0) {\n log(\n 'Delete key line ' + chunk.uri.slice(-4) + ' state ' + part.state\n )\n\n switch (part.state) {\n case 1: // contents being sent\n case 2: // contents need to be sent again\n part.state = 4 // delete me\n return\n case 3: // already being deleted\n case 4: // already deleted state\n return\n case undefined:\n case 0:\n part.state = 3 // being deleted\n removePart(part)\n event.preventDefault()\n break // continue\n default:\n throw new Error('pad: Unexpected state ' + part)\n }\n }\n break\n case 9: // Tab\n {\n const delta = event.shiftKey ? -1 : 1\n changeIndent(part, chunk, delta)\n event.preventDefault() // default is to highlight next field\n break\n }\n case 27: // ESC\n log('escape')\n updater.requestDownstreamAction(padDoc, reloadAndSync)\n event.preventDefault()\n break\n\n case 38: // Up\n if (part.parentNode.previousSibling) {\n part.parentNode.previousSibling.firstChild.focus()\n event.preventDefault()\n }\n break\n\n case 40: // Down\n if (part.parentNode.nextSibling) {\n part.parentNode.nextSibling.firstChild.focus()\n event.preventDefault()\n }\n break\n\n default:\n }\n })\n\n const updateStore = function (part: NotepadPart) {\n const chunk: any = part.subject\n setPartStyle(part, undefined, true)\n const old = (kb.any(chunk, ns.sioc('content')) as any).value\n const del = [st(chunk, ns.sioc('content'), old, padDoc)]\n let ins\n if (part.value) {\n ins = [st(chunk, ns.sioc('content'), part.value as any, padDoc)]\n }\n const newOne = part.value\n\n // DEBUGGING ONLY\n if (part.lastSent) {\n if (old !== part.lastSent) {\n throw new Error(\n \"Out of order, last sent expected '\" +\n old +\n \"' but found '\" +\n part.lastSent +\n \"'\"\n )\n }\n }\n part.lastSent = newOne\n\n /* console.log(\n ' Patch proposed to ' +\n chunk.uri.slice(-4) +\n \" '\" +\n old +\n \"' -> '\" +\n newOne +\n \"' \"\n ) */\n if (!updater) {\n throw new Error('no updater')\n }\n\n updater.update(del, ins, function (uri, ok, errorBody, xhr) {\n if (!ok) {\n // alert(\"clash \" + errorBody);\n log(\n ' patch FAILED ' +\n (xhr as any).status +\n \" for '\" +\n old +\n \"' -> '\" +\n newOne +\n \"': \" +\n errorBody\n )\n if ((xhr as any).status === 409) {\n // Conflict - @@ we assume someone else\n setPartStyle(part, 'color: black; background-color: #fdd;')\n part.state = 0 // Needs downstream refresh\n beep(0.5, 512) // Ooops clash with other person\n setTimeout(function () {\n updater.requestDownstreamAction(padDoc, reloadAndSync)\n }, 1000)\n } else {\n setPartStyle(part, 'color: black; background-color: #fdd;') // failed pink\n part.state = 0\n complain(\n ' Error ' + (xhr as any).status + ' sending data: ' + errorBody,\n true\n )\n beep(1.0, 128) // Other\n // @@@ Do soemthing more serious with other errors eg auth, etc\n }\n } else {\n clearStatus(true) // upstream\n setPartStyle(part) // synced\n log(\" Patch ok '\" + old + \"' -> '\" + newOne + \"' \")\n\n if (part.state === 4) {\n // delete me\n part.state = 3\n removePart(part)\n } else if (part.state === 3) {\n // being deleted\n // pass\n } else if (part.state === 2) {\n part.state = 1 // pending: lock\n updateStore(part)\n } else {\n part.state = 0 // clear lock\n }\n }\n })\n }\n\n part.addEventListener('input', function inputChangeListener (_event) {\n // debug.log(\"input changed \"+part.value);\n setPartStyle(part, undefined, true) // grey out - not synced\n log(\n 'Input event state ' + part.state + \" value '\" + part.value + \"'\"\n )\n switch (part.state) {\n case 3: // being deleted\n return\n case 4: // needs to be deleted\n return\n case 2: // needs content updating, we know\n return\n case 1:\n part.state = 2 // lag we need another patch\n return\n case 0:\n case undefined:\n part.state = 1 // being upadted\n updateStore(part)\n }\n }) // listener\n } // addlisteners\n\n // @@ TODO Need to research before as it appears to be used as an Element and a boolean\n const newPartAfter = function (tr1: HTMLTableElement, chunk: String, before?: NotepadElement | boolean) {\n // @@ take chunk and add listeners\n let text: any = kb.any(chunk as any, ns.sioc('content'))\n text = text ? text.value : ''\n const tr = dom.createElement('tr')\n if (before) {\n table.insertBefore(tr, tr1)\n } else {\n // after\n if (tr1 && tr1.nextSibling) {\n table.insertBefore(tr, tr1.nextSibling)\n } else {\n table.appendChild(tr)\n }\n }\n const part: any = tr.appendChild(dom.createElement('input'))\n part.subject = chunk\n part.setAttribute('type', 'text')\n part.value = text\n if (me) {\n setPartStyle(part, '')\n addListeners(part, chunk)\n } else {\n setPartStyle(part, 'color: #222; background-color: #fff')\n log(\"Note can't add listeners - not logged in\")\n }\n return part\n }\n\n /* @@ TODO we need to look at indent, it can be a Number or an Object this doesn't seem correct.\n */\n const newChunk = function (ele?: NotepadElement, before?: NotepadElement) {\n // element of chunk being split\n const kb = store\n let indent: any = 0\n let queueProperty: string | null = null\n let here, prev, next, queue, tr1: any\n\n if (ele) {\n if (ele.tagName.toLowerCase() !== 'input') {\n log('return pressed when current document is: ' + ele.tagName)\n }\n here = ele.subject\n indent = kb.any(here, PAD('indent'))\n indent = indent ? Number(indent.value) : 0\n if (before) {\n prev = kb.any(undefined, PAD('next'), here)\n next = here\n queue = prev\n queueProperty = 'newlinesAfter'\n } else {\n prev = here\n next = kb.any(here, PAD('next'))\n queue = next\n queueProperty = 'newlinesBefore'\n }\n tr1 = ele.parentNode\n } else {\n prev = subject\n next = subject\n tr1 = undefined\n }\n\n const chunk = newThing(padDoc)\n const label = chunk.uri.slice(-4)\n\n const del = [st(prev, PAD('next'), next, padDoc)]\n const ins = [\n st(prev, PAD('next'), chunk, padDoc),\n st(chunk, PAD('next'), next, padDoc),\n st(chunk, ns.dc('author'), me, padDoc),\n st(chunk, ns.sioc('content'), '' as any, padDoc)\n ]\n if (indent > 0) {\n // Do not inherit\n ins.push(st(chunk, PAD('indent'), indent, padDoc))\n }\n\n log(' Fresh chunk ' + label + ' proposed')\n if (!updater) {\n throw new Error('no updater')\n }\n updater.update(del, ins, function (uri, ok, errorBody, _xhr) {\n if (!ok) {\n // alert(\"Error writing new line \" + label + \": \" + errorBody);\n log(' ERROR writing new line ' + label + ': ' + errorBody)\n } else {\n const newPart = newPartAfter(tr1, chunk, before)\n setPartStyle(newPart)\n newPart.focus() // Note this is delayed\n if (queueProperty) {\n log(\n ' Fresh chunk ' +\n label +\n ' updated, queue = ' +\n queue[queueProperty]\n )\n queue[queueProperty] -= 1\n if (queue[queueProperty] > 0) {\n log(\n ' Implementing queued newlines = ' + next.newLinesBefore\n )\n newChunk(newPart, before)\n }\n }\n }\n })\n }\n\n const consistencyCheck = function () {\n const found: { [uri: string]: boolean } = {}\n let failed = 0\n function complain2 (msg) {\n complain(msg)\n failed++\n }\n\n if (!kb.the(subject, PAD('next'))) {\n complain2('No initial next pointer')\n return false // can't do linked list\n }\n // var chunk = kb.the(subject, PAD('next'))\n let prev = subject\n let chunk\n for (; ;) {\n chunk = kb.the(prev, PAD('next'))\n if (!chunk) {\n complain2('No next pointer from ' + prev)\n }\n if (chunk.sameTerm(subject)) {\n break\n }\n prev = chunk\n const label = chunk.uri.split('#')[1]\n if (found[chunk.uri]) {\n complain2('Loop!')\n return false\n }\n\n found[chunk.uri] = true\n let k = kb.each(chunk, PAD('next')).length\n if (k !== 1) {\n complain2('Should be 1 not ' + k + ' next pointer for ' + label)\n }\n\n k = kb.each(chunk, PAD('indent')).length\n if (k > 1) {\n complain2('Should be 0 or 1 not ' + k + ' indent for ' + label)\n }\n\n k = kb.each(chunk, ns.sioc('content')).length\n if (k !== 1) {\n complain2('Should be 1 not ' + k + ' contents for ' + label)\n }\n\n k = kb.each(chunk, ns.dc('author')).length\n if (k !== 1) {\n complain2('Should be 1 not ' + k + ' author for ' + label)\n }\n\n const sts = kb.statementsMatching(undefined, ns.sioc('contents'))\n sts.forEach(function (st) {\n if (!found[st.subject.value]) {\n complain2('Loose chunk! ' + st.subject.value)\n }\n })\n }\n return !failed\n }\n\n // Ensure that the display matches the current state of the\n // @@ TODO really need to refactor this so that we don't need to cast types\n const sync = function () {\n // var first = kb.the(subject, PAD('next'))\n if (kb.each(subject, PAD('next')).length !== 1) {\n const msg =\n 'Pad: Inconsistent data - NEXT pointers: ' +\n kb.each(subject, PAD('next')).length\n log(msg)\n if ((options as notepadOptions).statusArea) {\n ((options as notepadOptions).statusArea as HTMLElement).textContent += msg\n }\n return\n }\n let row\n\n // First see which of the logical chunks have existing physical manifestations\n const manif: any = []\n // Find which lines correspond to existing chunks\n\n for (\n let chunk = kb.the(subject, PAD('next')) as unknown as any;\n !chunk.sameTerm(subject);\n chunk = kb.the(chunk, PAD('next'))\n ) {\n for (let i = 0; i < table.children.length; i++) {\n const tr: any = table.children[i]\n if (tr.firstChild) {\n if (tr.firstChild.subject.sameTerm(chunk)) {\n manif[chunk.uri] = tr.firstChild\n }\n }\n }\n }\n\n // Remove any deleted lines\n for (let i = table.children.length - 1; i >= 0; i--) {\n row = table.children[i]\n if (!manif[row.firstChild.subject.uri]) {\n table.removeChild(row)\n }\n }\n // Insert any new lines and update old ones\n row = table.firstChild // might be null\n for (\n let chunk = kb.the(subject, PAD('next')) as unknown as any;\n !chunk.sameTerm(subject);\n chunk = kb.the(chunk, PAD('next'))\n ) {\n const text = (kb.any(chunk, ns.sioc('content')) as any).value\n // superstitious -- don't mess with unchanged input fields\n // which may be selected by the user\n if (row && manif[chunk.uri]) {\n const part = row.firstChild\n if (text !== part.value) {\n part.value = text\n }\n setPartStyle(part)\n part.state = 0 // Clear the state machine\n delete part.lastSent // DEBUG ONLY\n row = row.nextSibling\n } else {\n newPartAfter(row, chunk, true) // actually before\n }\n }\n }\n\n // Refresh the DOM tree\n\n const refreshTree = function (root) {\n if (root.refresh) {\n root.refresh()\n return\n }\n for (let i = 0; i < root.children.length; i++) {\n refreshTree(root.children[i])\n }\n }\n\n let reloading = false\n\n const checkAndSync = function () {\n log(' reloaded OK')\n clearStatus()\n if (!consistencyCheck()) {\n complain('CONSISTENCY CHECK FAILED')\n } else {\n refreshTree(table)\n }\n }\n\n const reloadAndSync = function () {\n if (reloading) {\n log(' Already reloading - stop')\n return // once only needed\n }\n reloading = true\n let retryTimeout = 1000 // ms\n const tryReload = function () {\n log('try reload - timeout = ' + retryTimeout)\n if (!updater) {\n throw new Error('no updater')\n }\n updater.reload(updater.store, padDoc, function (ok, message, xhr) {\n reloading = false\n if (ok) {\n checkAndSync()\n } else {\n if ((xhr as any).status === 0) {\n complain(\n 'Network error refreshing the pad. Retrying in ' +\n retryTimeout / 1000\n )\n reloading = true\n retryTimeout = retryTimeout * 2\n setTimeout(tryReload, retryTimeout)\n } else {\n complain(\n 'Error ' +\n (xhr as any).status +\n 'refreshing the pad:' +\n message +\n '. Stopped. ' +\n padDoc\n )\n }\n }\n })\n }\n tryReload()\n }\n\n table.refresh = sync // Catch downward propagating refresh events\n table.reloadAndSync = reloadAndSync\n\n if (!me) log('Warning: must be logged in for pad to be edited')\n\n if (exists) {\n log('Existing pad.')\n if (consistencyCheck()) {\n sync()\n if (kb.holds(subject, PAD('next'), subject)) {\n // Empty list untenable\n newChunk() // require at least one line\n }\n } else {\n log((table.textContent = 'Inconsistent data. Abort'))\n }\n } else {\n // Make new pad\n log('No pad exists - making new one.')\n const insertables = [\n st(subject, ns.rdf('type'), PAD('Notepad'), padDoc),\n st(subject, ns.dc('author'), me, padDoc),\n st(subject, ns.dc('created'), new Date() as any, padDoc),\n st(subject, PAD('next'), subject, padDoc)\n ]\n\n if (!updater) {\n throw new Error('no updater')\n }\n updater.update([], insertables, function (uri: string | null | undefined, ok: boolean, errorBody?: string) {\n if (!ok) {\n complain(errorBody || '')\n } else {\n log('Initial pad created')\n newChunk() // Add a first chunck\n // getResults();\n }\n })\n }\n return table\n}\n\n/**\n * Get the chunks of the notepad\n * They are stored in a RDF linked list\n */\n\n// @ignore exporting this only for the unit test\nexport function getChunks (subject: NamedNode, kb: IndexedFormula) {\n const chunks: any[] = []\n for (\n let chunk: any = kb.the(subject, PAD('next'));\n !chunk.sameTerm(subject);\n chunk = kb.the(chunk, PAD('next'))\n ) {\n chunks.push(chunk)\n }\n return chunks\n}\n\n/**\n * Encode content to be put in XML or HTML elements\n */\n// @ignore exporting this only for the unit test\nexport function xmlEncode (str) {\n return str.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;')\n}\n\n/**\n * Convert a notepad to HTML\n * @param { } pad - the notepad\n * @param {store} pad - the data store\n */\nexport function notepadToHTML (pad: any, kb: IndexedFormula) {\n const chunks = getChunks(pad, kb)\n let html = '<html>\\n <head>\\n'\n const title = kb.anyValue(pad, ns.dct('title'))\n if (title) {\n html += ` <title>${xmlEncode(title)}</title>\\n`\n }\n html += ' </head>\\n <body>\\n'\n let level = 0\n\n function increaseLevel (indent) {\n for (; level < indent; level++) {\n html += '<ul>\\n'\n }\n }\n\n function decreaseLevel (indent) {\n for (; level > indent; level--) {\n html += '</ul>\\n'\n }\n }\n chunks.forEach(chunk => {\n const indent = kb.anyJS(chunk, PAD('indent'))\n const rawContent = kb.anyJS(chunk, ns.sioc('content'))\n if (!rawContent) return // seed chunk is dummy\n const content = xmlEncode(rawContent)\n if (indent < 0) { // negative indent levels represent heading levels\n decreaseLevel(0)\n const h = indent >= -3 ? 4 + indent : 1 // -1 -> h4, -2 -> h3\n html += `\\n<h${h}>${content}</h${h}>\\n`\n } else { // >= 0\n if (indent > 0) { // Lists\n decreaseLevel(indent)\n increaseLevel(indent)\n html += `<li>${content}</li>\\n`\n } else { // indent 0\n decreaseLevel(indent)\n html += `<p>${content}</p>\\n`\n }\n }\n }) // foreach chunk\n // At the end decreaseLevel any open ULs\n decreaseLevel(0)\n html += ' </body>\\n</html>\\n'\n return html\n}\n"],"mappings":"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"}
@@ -14,12 +14,12 @@ declare class ParticipationTableElement extends HTMLTableElement {
14
14
  * @param {NamedNode} unused1/document - the document to render (this argument is no longer used, but left in for backwards compatibility)
15
15
  * @param {NamedNode} subject - the thing in which the participation is happening
16
16
  * @param {NamedNode} unused2/me - user that is logged into the pod (this argument is no longer used, but left in for backwards compatibility)
17
- * @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable these are used by the personTR button
17
+ * @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable; these are used by the personTR button
18
18
  */
19
- export declare function renderPartipants(dom: HTMLDocument, table: ParticipationTableElement, unused1: NamedNode, subject: NamedNode, unused2: NamedNode, options: ParticipationOptions): ParticipationTableElement;
20
- /** Record, or find old, Particpation object
19
+ export declare function renderParticipants(dom: HTMLDocument, table: ParticipationTableElement, unused1: NamedNode, subject: NamedNode, unused2: NamedNode, options: ParticipationOptions): ParticipationTableElement;
20
+ /** Record, or find old, Participation object
21
21
  *
22
- * A particpaption object is a place to record things specifically about
22
+ * A participation object is a place to record things specifically about
23
23
  * subject and the user, such as preferences, start of membership, etc
24
24
  * @param {NamedNode} subject - the thing in which the participation is happening
25
25
  * @param {NamedNode} document - where to record the data
@@ -30,7 +30,7 @@ export declare function participationObject(subject: NamedNode, padDoc: NamedNod
30
30
  /** Record my participation and display participants
31
31
  *
32
32
  * @param {NamedNode} subject - the thing in which participation is happening
33
- * @param {NamedNode} padDoc - the document into which the particpation should be recorded
33
+ * @param {NamedNode} padDoc - the document into which the participation should be recorded
34
34
  * @param {DOMNode} refreshable - a DOM element whose refresh() is to be called if the change works
35
35
  *
36
36
  */
@@ -39,10 +39,10 @@ export declare function recordParticipation(subject: NamedNode, padDoc: NamedNod
39
39
  *
40
40
  * @param {Document} dom - the web page loaded into the browser
41
41
  * @param {HTMLDivElement} container - the container element where the participants should be displayed
42
- * @param {NamedNode} document - the document into which the particpation should be shown
42
+ * @param {NamedNode} document - the document into which the participation should be shown
43
43
  * @param {NamedNode} subject - the thing in which participation is happening
44
44
  * @param {NamedNode} me - the logged in user
45
- * @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable these are used by the personTR button
45
+ * @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable; these are used by the personTR button
46
46
  *
47
47
  */
48
48
  export declare function manageParticipation(dom: Document, container: HTMLDivElement, padDoc: NamedNode, subject: NamedNode, me: NamedNode, options: ParticipationOptions): HTMLTableElement;
@@ -1 +1 @@
1
- {"version":3,"file":"participation.d.ts","sourceRoot":"","sources":["../src/participation.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,SAAS,EAAqB,MAAM,QAAQ,CAAA;AAQhE,KAAK,oBAAoB,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,cAAM,yBAA0B,SAAQ,gBAAgB;IACtD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAGD;;;;;;;;EAQE;AACF,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,6BA2C/K;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,oBAkDxF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OA0C3F;AAED;;;;;;;;;EASE;AACF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,SAAS,EAClB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,oBAAoB,oBAiB9B"}
1
+ {"version":3,"file":"participation.d.ts","sourceRoot":"","sources":["../src/participation.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,SAAS,EAAqB,MAAM,QAAQ,CAAA;AAUhE,KAAK,oBAAoB,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,cAAM,yBAA0B,SAAQ,gBAAgB;IACtD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAGD;;;;;;;;EAQE;AACF,wBAAgB,kBAAkB,CAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,6BA0CjL;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,oBAkDxF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAyC3F;AAED;;;;;;;;;EASE;AACF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,SAAS,EAClB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,oBAAoB,oBAiB9B"}