solid-ui 2.4.33 → 2.4.34-bd841bfc

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 (72) hide show
  1. package/dist/841.solid-ui.min.js +1 -1
  2. package/dist/841.solid-ui.min.js.map +1 -1
  3. package/dist/solid-ui.js +4463 -1872
  4. package/dist/solid-ui.js.map +1 -1
  5. package/dist/solid-ui.min.js +1 -1
  6. package/dist/solid-ui.min.js.LICENSE.txt +7 -0
  7. package/dist/solid-ui.min.js.map +1 -1
  8. package/lib/acl/access-controller.js +4 -4
  9. package/lib/acl/access-controller.js.map +1 -1
  10. package/lib/acl/access-groups.js +3 -3
  11. package/lib/acl/access-groups.js.map +1 -1
  12. package/lib/acl/acl-control.js +2 -2
  13. package/lib/acl/acl-control.js.map +1 -1
  14. package/lib/acl/acl.js +14 -14
  15. package/lib/acl/acl.js.map +1 -1
  16. package/lib/acl/add-agent-buttons.js +6 -6
  17. package/lib/acl/add-agent-buttons.js.map +1 -1
  18. package/lib/chat/bookmarks.js +5 -5
  19. package/lib/chat/bookmarks.js.map +1 -1
  20. package/lib/chat/chatLogic.js +6 -6
  21. package/lib/chat/chatLogic.js.map +1 -1
  22. package/lib/chat/dateFolder.js +5 -5
  23. package/lib/chat/dateFolder.js.map +1 -1
  24. package/lib/chat/infinite.js +18 -18
  25. package/lib/chat/infinite.js.map +1 -1
  26. package/lib/chat/keys.js +3 -3
  27. package/lib/chat/keys.js.map +1 -1
  28. package/lib/chat/message.js +13 -13
  29. package/lib/chat/message.js.map +1 -1
  30. package/lib/chat/messageTools.js +10 -10
  31. package/lib/chat/messageTools.js.map +1 -1
  32. package/lib/chat/thread.js +8 -8
  33. package/lib/chat/thread.js.map +1 -1
  34. package/lib/footer/index.js +2 -2
  35. package/lib/footer/index.js.map +1 -1
  36. package/lib/header/index.js +4 -4
  37. package/lib/header/index.js.map +1 -1
  38. package/lib/login/login.js +14 -14
  39. package/lib/login/login.js.map +1 -1
  40. package/lib/media/media-capture.js +1 -1
  41. package/lib/media/media-capture.js.map +1 -1
  42. package/lib/messageArea.js.map +1 -1
  43. package/lib/pad.js +16 -16
  44. package/lib/pad.js.map +1 -1
  45. package/lib/participation.js +4 -4
  46. package/lib/participation.js.map +1 -1
  47. package/lib/tabs.js +3 -3
  48. package/lib/tabs.js.map +1 -1
  49. package/lib/utils/headerFooterHelpers.js +1 -1
  50. package/lib/utils/headerFooterHelpers.js.map +1 -1
  51. package/lib/utils/index.js.map +1 -1
  52. package/lib/utils/keyHelpers/accessData.js +3 -3
  53. package/lib/utils/keyHelpers/accessData.js.map +1 -1
  54. package/lib/utils/keyHelpers/acl.js +1 -1
  55. package/lib/utils/keyHelpers/acl.js.map +1 -1
  56. package/lib/versionInfo.js +19 -19
  57. package/lib/versionInfo.js.map +1 -1
  58. package/lib/widgets/forms/autocomplete/autocompleteBar.js +9 -9
  59. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  60. package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
  61. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  62. package/lib/widgets/forms/autocomplete/autocompletePicker.js +11 -11
  63. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  64. package/lib/widgets/forms/autocomplete/language.js +2 -2
  65. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  66. package/lib/widgets/forms/autocomplete/publicData.js +9 -9
  67. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  68. package/lib/widgets/forms.js +12 -12
  69. package/lib/widgets/forms.js.map +1 -1
  70. package/lib/widgets/multiSelect.js.map +1 -1
  71. package/lib/widgets/peoplePicker.js.map +1 -1
  72. package/package.json +2 -2
@@ -202,7 +202,7 @@ var AccessController = exports.AccessController = /*#__PURE__*/function () {
202
202
  }, {
203
203
  key: "addAcls",
204
204
  value: function () {
205
- var _addAcls = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
205
+ var _addAcls = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
206
206
  var _this6 = this;
207
207
  var message, aclGraph, _message;
208
208
  return _regenerator["default"].wrap(function _callee$(_context) {
@@ -246,7 +246,7 @@ var AccessController = exports.AccessController = /*#__PURE__*/function () {
246
246
  }, {
247
247
  key: "addDefaults",
248
248
  value: function () {
249
- var _addDefaults = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
249
+ var _addDefaults = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
250
250
  return _regenerator["default"].wrap(function _callee2$(_context2) {
251
251
  while (1) switch (_context2.prev = _context2.next) {
252
252
  case 0:
@@ -268,7 +268,7 @@ var AccessController = exports.AccessController = /*#__PURE__*/function () {
268
268
  }, {
269
269
  key: "removeAcls",
270
270
  value: function () {
271
- var _removeAcls = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
271
+ var _removeAcls = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
272
272
  var message;
273
273
  return _regenerator["default"].wrap(function _callee3$(_context3) {
274
274
  while (1) switch (_context3.prev = _context3.next) {
@@ -313,7 +313,7 @@ var AccessController = exports.AccessController = /*#__PURE__*/function () {
313
313
  }, {
314
314
  key: "removeDefaults",
315
315
  value: function () {
316
- var _removeDefaults = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
316
+ var _removeDefaults = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
317
317
  var fallbackCombo;
318
318
  return _regenerator["default"].wrap(function _callee4$(_context4) {
319
319
  while (1) switch (_context4.prev = _context4.next) {
@@ -1 +1 @@
1
- {"version":3,"file":"access-controller.js","names":["_acl","require","_rdflib","_accessGroups","_aclControl","utils","_interopRequireWildcard","debug","style","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AccessController","exports","subject","noun","context","statusElement","targetIsProtected","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","prospectiveDefaultHolder","store","dom","_classCallCheck2","_defineProperty2","rootElement","createElement","setAttribute","aclGroupContent","isContainer","uri","slice","isUsingDefaults","aclDefaultStore","adoptACLDefault","mainCombo","AccessGroups","defaults","defaultsCombo","defaultsDiffer","sameACL","aclMap","_createClass2","key","value","render","innerHTML","renderStatus","concat","defaultHolderLink","appendChild","href","innerText","shortNameForFolder","renderRemoveDefaultsController","isEditable","renderAddDefaultsController","renderAddAclsController","renderRemoveAclsController","_this","useDefaultButton","label","bigButton","addEventListener","removeAcls","then","error","_this2","addAclButton","addAcls","_this3","containerElement","defaultsController","noticeElement","defaultsControllerNotice","button","addDefaults","_this4","removeDefaults","renderTemporaryStatus","message","_this5","aclControlBoxStatusRevealed","temporaryStatusInit","setTimeout","temporaryStatusEnd","_addAcls","_asyncToGenerator2","_regenerator","mark","_callee","_this6","aclGraph","_message","wrap","_callee$","_context","prev","next","abrupt","Promise","reject","statements","forEach","st","add","predicate","object","fetcher","putBack","resolve","t0","stop","apply","arguments","_addDefaults","_callee2","_callee2$","_context2","_removeAcls","_callee3","_callee3$","_context3","getProspectiveHolder","sent","warn","t1","_removeDefaults","_callee4","fallbackCombo","_callee4$","_context4","save","_this7","newAClGraph","graph","makeACLGraphbyCombo","byCombo","fetch","_fetch","updater","UpdateManager","put","statementsMatching","undefined","ok","Error","unload","requested","log"],"sources":["../../src/acl/access-controller.ts"],"sourcesContent":["/**\n * Contains the [[AccessController]] class\n * @packageDocumentation\n */\n\nimport { adoptACLDefault, getProspectiveHolder, makeACLGraphbyCombo, sameACL } from './acl'\nimport { fetcher, graph, NamedNode, UpdateManager } from 'rdflib'\nimport { AccessGroups } from './access-groups'\nimport { DataBrowserContext } from 'pane-registry'\nimport { shortNameForFolder } from './acl-control'\nimport * as utils from '../utils'\nimport * as debug from '../debug'\nimport * as style from '../style'\n\n/**\n * Rendered HTML component used in the databrowser's Sharing pane.\n */\nexport class AccessController {\n public mainCombo: AccessGroups\n public defaultsCombo: AccessGroups | null\n private readonly isContainer: boolean\n private defaultsDiffer: boolean\n private readonly rootElement: HTMLDivElement\n private isUsingDefaults: boolean\n\n constructor (\n public subject: NamedNode,\n public noun: string,\n public context: DataBrowserContext,\n private statusElement: HTMLElement,\n public targetIsProtected: boolean,\n private targetDoc: NamedNode,\n private targetACLDoc: NamedNode,\n private defaultHolder: NamedNode | null,\n private defaultACLDoc: NamedNode | null,\n private prospectiveDefaultHolder: NamedNode | undefined,\n public store,\n public dom: HTMLDocument\n ) {\n this.rootElement = dom.createElement('div')\n this.rootElement.setAttribute('style', style.aclGroupContent)\n this.isContainer = targetDoc.uri.slice(-1) === '/' // Give default for all directories\n if (defaultHolder && defaultACLDoc) {\n this.isUsingDefaults = true\n const aclDefaultStore = adoptACLDefault(this.targetDoc, targetACLDoc, defaultHolder, defaultACLDoc)\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, aclDefaultStore, { defaults: this.isContainer })\n this.defaultsCombo = null\n this.defaultsDiffer = false\n } else {\n this.isUsingDefaults = false\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, store)\n this.defaultsCombo = new AccessGroups(targetDoc, targetACLDoc, this, store, { defaults: this.isContainer })\n this.defaultsDiffer = !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n }\n }\n\n public get isEditable (): boolean {\n return !this.isUsingDefaults\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n if (this.isUsingDefaults) {\n this.renderStatus(`The sharing for this ${this.noun} is the default for folder `)\n if (this.defaultHolder) {\n const defaultHolderLink = this.statusElement.appendChild(this.dom.createElement('a'))\n defaultHolderLink.href = this.defaultHolder.uri\n defaultHolderLink.innerText = shortNameForFolder(this.defaultHolder)\n }\n } else if (!this.defaultsDiffer && this.isContainer) {\n this.renderStatus('This is also the default for things in this folder.')\n } else {\n this.renderStatus('')\n }\n this.rootElement.appendChild(this.mainCombo.render())\n if (this.defaultsCombo && this.defaultsDiffer) {\n this.rootElement.appendChild(this.renderRemoveDefaultsController())\n this.rootElement.appendChild(this.defaultsCombo.render())\n } else if (this.isEditable && this.isContainer) {\n this.rootElement.appendChild(this.renderAddDefaultsController())\n }\n if (!this.targetIsProtected && this.isUsingDefaults) {\n this.rootElement.appendChild(this.renderAddAclsController())\n } else if (!this.targetIsProtected) {\n this.rootElement.appendChild(this.renderRemoveAclsController())\n }\n return this.rootElement\n }\n\n private renderRemoveAclsController (): HTMLElement {\n const useDefaultButton = this.dom.createElement('button')\n useDefaultButton.innerText = `Remove custom sharing settings for this ${this.noun} -- just use default${this.prospectiveDefaultHolder ? ` for ${utils.label(this.prospectiveDefaultHolder)}` : ''}`\n useDefaultButton.setAttribute('style', style.bigButton)\n useDefaultButton.addEventListener('click', () => this.removeAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return useDefaultButton\n }\n\n private renderAddAclsController (): HTMLElement {\n const addAclButton = this.dom.createElement('button')\n addAclButton.innerText = `Set specific sharing for this ${this.noun}`\n addAclButton.setAttribute('style', style.bigButton)\n addAclButton.addEventListener('click', () => this.addAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return addAclButton\n }\n\n private renderAddDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.setAttribute('style', style.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Sharing for things within the folder currently tracks sharing for the folder.'\n noticeElement.setAttribute('style', style.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set the sharing of folder contents separately from the sharing for the folder'\n button.setAttribute('style', style.bigButton)\n button.addEventListener('click', () => this.addDefaults()\n .then(() => this.render()))\n return containerElement\n }\n\n private renderRemoveDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.setAttribute('style', style.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Access to things within this folder:'\n noticeElement.setAttribute('style', style.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set default for folder contents to just track the sharing for the folder'\n button.setAttribute('style', style.bigButton)\n button.addEventListener('click', () => this.removeDefaults()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return containerElement\n }\n\n public renderTemporaryStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.setAttribute('style', style.aclControlBoxStatusRevealed)\n this.statusElement.innerText = message\n this.statusElement.setAttribute('style', style.temporaryStatusInit)\n setTimeout(() => {\n this.statusElement.setAttribute('style', style.temporaryStatusEnd)\n })\n setTimeout(() => {\n this.statusElement.innerText = ''\n }, 5000)\n }\n\n public renderStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n if (!message) {\n this.statusElement.setAttribute('style', style.aclControlBoxStatusRevealed)\n }\n this.statusElement.innerText = message\n }\n\n private async addAcls (): Promise<void> {\n if (!this.defaultHolder || !this.defaultACLDoc) {\n const message = 'Unable to find defaults to copy'\n debug.error(message)\n return Promise.reject(message)\n }\n const aclGraph = adoptACLDefault(this.targetDoc, this.targetACLDoc, this.defaultHolder, this.defaultACLDoc)\n aclGraph.statements.forEach(st => this.store.add(st.subject, st.predicate, st.object, this.targetACLDoc))\n try {\n await this.store.fetcher.putBack(this.targetACLDoc)\n this.isUsingDefaults = false\n return Promise.resolve()\n } catch (error) {\n const message = ` Error writing back access control file! ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async addDefaults (): Promise<void> {\n this.defaultsCombo = new AccessGroups(this.targetDoc, this.targetACLDoc, this, this.store, { defaults: true })\n this.defaultsDiffer = true\n }\n\n private async removeAcls (): Promise<void> {\n try {\n await this.store.fetcher.delete(this.targetACLDoc.uri, {})\n this.isUsingDefaults = true\n try {\n this.prospectiveDefaultHolder = await getProspectiveHolder(this.targetDoc.uri)\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n debug.warn(error)\n }\n } catch (error) {\n const message = `Error deleting access control file: ${this.targetACLDoc}: ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async removeDefaults (): Promise<void> {\n const fallbackCombo = this.defaultsCombo\n try {\n this.defaultsCombo = null\n this.defaultsDiffer = false\n await this.save()\n } catch (error) {\n this.defaultsCombo = fallbackCombo\n this.defaultsDiffer = true\n debug.error(error)\n return Promise.reject(error)\n }\n }\n\n public save (): Promise<void> {\n // build graph\n const newAClGraph = graph()\n if (!this.isContainer) {\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n } else if (this.defaultsCombo && this.defaultsDiffer) {\n // Pair of controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.defaultsCombo.byCombo, this.targetACLDoc, false, true)\n } else {\n // Linked controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true, true)\n }\n\n // add authenticated fetcher\n newAClGraph.fetcher = fetcher(newAClGraph, { fetch: this.store.fetcher._fetch })\n const updater = newAClGraph.updater || new UpdateManager(newAClGraph)\n\n // save ACL resource\n return new Promise((resolve, reject) => {\n updater.put(\n this.targetACLDoc,\n newAClGraph.statementsMatching(undefined, undefined, undefined, this.targetACLDoc),\n 'text/turtle',\n (uri, ok, message) => {\n if (!ok) {\n return reject(new Error(`ACL file save failed: ${message}`))\n }\n this.store.fetcher.unload(this.targetACLDoc)\n this.store.add(newAClGraph.statements)\n this.store.fetcher.requested[this.targetACLDoc.uri] = 'done' // missing: save headers\n this.mainCombo.store = this.store\n if (this.defaultsCombo) {\n this.defaultsCombo.store = this.store\n }\n this.defaultsDiffer = !!this.defaultsCombo && !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n debug.log('ACL modification: success!')\n resolve()\n }\n )\n })\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"access-controller.js","names":["_acl","require","_rdflib","_accessGroups","_aclControl","utils","_interopRequireWildcard","debug","style","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AccessController","exports","subject","noun","context","statusElement","targetIsProtected","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","prospectiveDefaultHolder","store","dom","_classCallCheck2","_defineProperty2","rootElement","createElement","setAttribute","aclGroupContent","isContainer","uri","slice","isUsingDefaults","aclDefaultStore","adoptACLDefault","mainCombo","AccessGroups","defaults","defaultsCombo","defaultsDiffer","sameACL","aclMap","_createClass2","key","value","render","innerHTML","renderStatus","concat","defaultHolderLink","appendChild","href","innerText","shortNameForFolder","renderRemoveDefaultsController","isEditable","renderAddDefaultsController","renderAddAclsController","renderRemoveAclsController","_this","useDefaultButton","label","bigButton","addEventListener","removeAcls","then","error","_this2","addAclButton","addAcls","_this3","containerElement","defaultsController","noticeElement","defaultsControllerNotice","button","addDefaults","_this4","removeDefaults","renderTemporaryStatus","message","_this5","aclControlBoxStatusRevealed","temporaryStatusInit","setTimeout","temporaryStatusEnd","_addAcls","_asyncToGenerator2","_regenerator","mark","_callee","_this6","aclGraph","_message","wrap","_callee$","_context","prev","next","abrupt","Promise","reject","statements","forEach","st","add","predicate","object","fetcher","putBack","resolve","t0","stop","apply","arguments","_addDefaults","_callee2","_callee2$","_context2","_removeAcls","_callee3","_callee3$","_context3","getProspectiveHolder","sent","warn","t1","_removeDefaults","_callee4","fallbackCombo","_callee4$","_context4","save","_this7","newAClGraph","graph","makeACLGraphbyCombo","byCombo","fetch","_fetch","updater","UpdateManager","put","statementsMatching","undefined","ok","Error","unload","requested","log"],"sources":["../../src/acl/access-controller.ts"],"sourcesContent":["/**\n * Contains the [[AccessController]] class\n * @packageDocumentation\n */\n\nimport { adoptACLDefault, getProspectiveHolder, makeACLGraphbyCombo, sameACL } from './acl'\nimport { fetcher, graph, NamedNode, UpdateManager } from 'rdflib'\nimport { AccessGroups } from './access-groups'\nimport { DataBrowserContext } from 'pane-registry'\nimport { shortNameForFolder } from './acl-control'\nimport * as utils from '../utils'\nimport * as debug from '../debug'\nimport * as style from '../style'\n\n/**\n * Rendered HTML component used in the databrowser's Sharing pane.\n */\nexport class AccessController {\n public mainCombo: AccessGroups\n public defaultsCombo: AccessGroups | null\n private readonly isContainer: boolean\n private defaultsDiffer: boolean\n private readonly rootElement: HTMLDivElement\n private isUsingDefaults: boolean\n\n constructor (\n public subject: NamedNode,\n public noun: string,\n public context: DataBrowserContext,\n private statusElement: HTMLElement,\n public targetIsProtected: boolean,\n private targetDoc: NamedNode,\n private targetACLDoc: NamedNode,\n private defaultHolder: NamedNode | null,\n private defaultACLDoc: NamedNode | null,\n private prospectiveDefaultHolder: NamedNode | undefined,\n public store,\n public dom: HTMLDocument\n ) {\n this.rootElement = dom.createElement('div')\n this.rootElement.setAttribute('style', style.aclGroupContent)\n this.isContainer = targetDoc.uri.slice(-1) === '/' // Give default for all directories\n if (defaultHolder && defaultACLDoc) {\n this.isUsingDefaults = true\n const aclDefaultStore = adoptACLDefault(this.targetDoc, targetACLDoc, defaultHolder, defaultACLDoc)\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, aclDefaultStore, { defaults: this.isContainer })\n this.defaultsCombo = null\n this.defaultsDiffer = false\n } else {\n this.isUsingDefaults = false\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, store)\n this.defaultsCombo = new AccessGroups(targetDoc, targetACLDoc, this, store, { defaults: this.isContainer })\n this.defaultsDiffer = !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n }\n }\n\n public get isEditable (): boolean {\n return !this.isUsingDefaults\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n if (this.isUsingDefaults) {\n this.renderStatus(`The sharing for this ${this.noun} is the default for folder `)\n if (this.defaultHolder) {\n const defaultHolderLink = this.statusElement.appendChild(this.dom.createElement('a'))\n defaultHolderLink.href = this.defaultHolder.uri\n defaultHolderLink.innerText = shortNameForFolder(this.defaultHolder)\n }\n } else if (!this.defaultsDiffer && this.isContainer) {\n this.renderStatus('This is also the default for things in this folder.')\n } else {\n this.renderStatus('')\n }\n this.rootElement.appendChild(this.mainCombo.render())\n if (this.defaultsCombo && this.defaultsDiffer) {\n this.rootElement.appendChild(this.renderRemoveDefaultsController())\n this.rootElement.appendChild(this.defaultsCombo.render())\n } else if (this.isEditable && this.isContainer) {\n this.rootElement.appendChild(this.renderAddDefaultsController())\n }\n if (!this.targetIsProtected && this.isUsingDefaults) {\n this.rootElement.appendChild(this.renderAddAclsController())\n } else if (!this.targetIsProtected) {\n this.rootElement.appendChild(this.renderRemoveAclsController())\n }\n return this.rootElement\n }\n\n private renderRemoveAclsController (): HTMLElement {\n const useDefaultButton = this.dom.createElement('button')\n useDefaultButton.innerText = `Remove custom sharing settings for this ${this.noun} -- just use default${this.prospectiveDefaultHolder ? ` for ${utils.label(this.prospectiveDefaultHolder)}` : ''}`\n useDefaultButton.setAttribute('style', style.bigButton)\n useDefaultButton.addEventListener('click', () => this.removeAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return useDefaultButton\n }\n\n private renderAddAclsController (): HTMLElement {\n const addAclButton = this.dom.createElement('button')\n addAclButton.innerText = `Set specific sharing for this ${this.noun}`\n addAclButton.setAttribute('style', style.bigButton)\n addAclButton.addEventListener('click', () => this.addAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return addAclButton\n }\n\n private renderAddDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.setAttribute('style', style.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Sharing for things within the folder currently tracks sharing for the folder.'\n noticeElement.setAttribute('style', style.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set the sharing of folder contents separately from the sharing for the folder'\n button.setAttribute('style', style.bigButton)\n button.addEventListener('click', () => this.addDefaults()\n .then(() => this.render()))\n return containerElement\n }\n\n private renderRemoveDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.setAttribute('style', style.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Access to things within this folder:'\n noticeElement.setAttribute('style', style.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set default for folder contents to just track the sharing for the folder'\n button.setAttribute('style', style.bigButton)\n button.addEventListener('click', () => this.removeDefaults()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return containerElement\n }\n\n public renderTemporaryStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.setAttribute('style', style.aclControlBoxStatusRevealed)\n this.statusElement.innerText = message\n this.statusElement.setAttribute('style', style.temporaryStatusInit)\n setTimeout(() => {\n this.statusElement.setAttribute('style', style.temporaryStatusEnd)\n })\n setTimeout(() => {\n this.statusElement.innerText = ''\n }, 5000)\n }\n\n public renderStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n if (!message) {\n this.statusElement.setAttribute('style', style.aclControlBoxStatusRevealed)\n }\n this.statusElement.innerText = message\n }\n\n private async addAcls (): Promise<void> {\n if (!this.defaultHolder || !this.defaultACLDoc) {\n const message = 'Unable to find defaults to copy'\n debug.error(message)\n return Promise.reject(message)\n }\n const aclGraph = adoptACLDefault(this.targetDoc, this.targetACLDoc, this.defaultHolder, this.defaultACLDoc)\n aclGraph.statements.forEach(st => this.store.add(st.subject, st.predicate, st.object, this.targetACLDoc))\n try {\n await this.store.fetcher.putBack(this.targetACLDoc)\n this.isUsingDefaults = false\n return Promise.resolve()\n } catch (error) {\n const message = ` Error writing back access control file! ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async addDefaults (): Promise<void> {\n this.defaultsCombo = new AccessGroups(this.targetDoc, this.targetACLDoc, this, this.store, { defaults: true })\n this.defaultsDiffer = true\n }\n\n private async removeAcls (): Promise<void> {\n try {\n await this.store.fetcher.delete(this.targetACLDoc.uri, {})\n this.isUsingDefaults = true\n try {\n this.prospectiveDefaultHolder = await getProspectiveHolder(this.targetDoc.uri)\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n debug.warn(error)\n }\n } catch (error) {\n const message = `Error deleting access control file: ${this.targetACLDoc}: ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async removeDefaults (): Promise<void> {\n const fallbackCombo = this.defaultsCombo\n try {\n this.defaultsCombo = null\n this.defaultsDiffer = false\n await this.save()\n } catch (error) {\n this.defaultsCombo = fallbackCombo\n this.defaultsDiffer = true\n debug.error(error)\n return Promise.reject(error)\n }\n }\n\n public save (): Promise<void> {\n // build graph\n const newAClGraph = graph()\n if (!this.isContainer) {\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n } else if (this.defaultsCombo && this.defaultsDiffer) {\n // Pair of controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.defaultsCombo.byCombo, this.targetACLDoc, false, true)\n } else {\n // Linked controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true, true)\n }\n\n // add authenticated fetcher\n newAClGraph.fetcher = fetcher(newAClGraph, { fetch: this.store.fetcher._fetch })\n const updater = newAClGraph.updater || new UpdateManager(newAClGraph)\n\n // save ACL resource\n return new Promise((resolve, reject) => {\n updater.put(\n this.targetACLDoc,\n newAClGraph.statementsMatching(undefined, undefined, undefined, this.targetACLDoc),\n 'text/turtle',\n (uri, ok, message) => {\n if (!ok) {\n return reject(new Error(`ACL file save failed: ${message}`))\n }\n this.store.fetcher.unload(this.targetACLDoc)\n this.store.add(newAClGraph.statements)\n this.store.fetcher.requested[this.targetACLDoc.uri] = 'done' // missing: save headers\n this.mainCombo.store = this.store\n if (this.defaultsCombo) {\n this.defaultsCombo.store = this.store\n }\n this.defaultsDiffer = !!this.defaultsCombo && !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n debug.log('ACL modification: success!')\n resolve()\n }\n )\n })\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -251,7 +251,7 @@ var AccessGroups = exports.AccessGroups = /*#__PURE__*/function () {
251
251
  }, {
252
252
  key: "deleteAgent",
253
253
  value: function () {
254
- var _deleteAgent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(combo, pred, obj) {
254
+ var _deleteAgent = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(combo, pred, obj) {
255
255
  var combos, comboToRemove;
256
256
  return _regenerator["default"].wrap(function _callee$(_context) {
257
257
  while (1) switch (_context.prev = _context.next) {
@@ -282,7 +282,7 @@ var AccessGroups = exports.AccessGroups = /*#__PURE__*/function () {
282
282
  }, {
283
283
  key: "addNewURI",
284
284
  value: function () {
285
- var _addNewURI = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(uri) {
285
+ var _addNewURI = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(uri) {
286
286
  return _regenerator["default"].wrap(function _callee2$(_context2) {
287
287
  while (1) switch (_context2.prev = _context2.next) {
288
288
  case 0:
@@ -305,7 +305,7 @@ var AccessGroups = exports.AccessGroups = /*#__PURE__*/function () {
305
305
  }, {
306
306
  key: "handleDroppedUris",
307
307
  value: function () {
308
- var _handleDroppedUris = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(uris, combo) {
308
+ var _handleDroppedUris = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(uris, combo) {
309
309
  var _this5 = this;
310
310
  return _regenerator["default"].wrap(function _callee3$(_context3) {
311
311
  while (1) switch (_context3.prev = _context3.next) {
@@ -1 +1 @@
1
- {"version":3,"file":"access-groups.js","names":["_rdflib","require","_acl","widgets","_interopRequireWildcard","ns","_addAgentButtons","debug","style","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ACL","acl","COLLOQUIAL","RECOMMENDED","EXPLANATION","AccessGroups","exports","doc","aclDoc","controller","store","options","arguments","length","undefined","_classCallCheck2","_defineProperty2","defaults","_store","aclMap","readACL","byCombo","ACLbyCombination","addAgentButton","AddAgentButtons","rootElement","dom","createElement","setAttribute","accessGroupList","_createClass2","key","value","render","_this","innerHTML","renderGroups","forEach","group","appendChild","isEditable","groupElements","comboIndex","combo","kToCombo","push","renderGroup","_this2","groupRow","accessGroupListItem","makeDropTarget","uris","handleDroppedUris","then","error","renderStatus","groupColumns","renderGroupElements","column","_this3","groupNameColumn","group1","group2","group3","group5","group9","group13","innerText","ktToList","groupAgentsColumn","groupAgentsTable","combos","map","_ref","_ref2","_slicedToArray2","pred","obj","renderAgent","agentElement","groupDescriptionElement","_this4","personRow","personTR","sym","deleteFunction","deleteAgent","removeChild","_deleteAgent","_asyncToGenerator2","_regenerator","mark","_callee","comboToRemove","wrap","_callee$","_context","prev","next","find","_ref3","_ref4","comboPred","comboObj","splice","indexOf","save","stop","_x","_x2","_x3","apply","_addNewURI","_callee2","uri","_callee2$","_context2","handleDroppedUri","addNewURI","_x4","_handleDroppedUris","_callee3","_this5","_callee3$","_context3","Promise","all","t0","abrupt","reject","_x5","_x6","_handleDroppedUri","_this6","secondAttempt","_callee4","agent","thing","_this6$_store","_this6$_store$fetcher","message","_callee4$","_context4","findAgent","log","concat","fetcher","load","Error","setACLCombo","subject","_x7","_x8","res","removeAgentFromCombos","k","y","sort","join","list","kb","types","findTypeURIs","ty","startsWith","split","endsWith","slice","vcard","sameTerm","foaf","rdf","owl","pref","any","solid"],"sources":["../../src/acl/access-groups.ts"],"sourcesContent":["/**\n * Contains the [[AccessGroups]]\n * and [[AccessGroupsOptions]] classes\n * @packageDocumentation\n */\n\nimport { NamedNode, sym, Store } from 'rdflib'\nimport { ACLbyCombination, readACL } from './acl'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { AccessController } from './access-controller'\nimport { AgentMapMap, ComboList, PartialAgentTriple } from './types'\nimport { AddAgentButtons } from './add-agent-buttons'\nimport * as debug from '../debug'\nimport * as style from '../style'\n\nconst ACL = ns.acl\n\nconst COLLOQUIAL = {\n 13: 'Owners',\n 9: 'Owners (write locked)',\n 5: 'Editors',\n 3: 'Posters',\n 2: 'Submitters',\n 1: 'Viewers'\n}\n\nconst RECOMMENDED = {\n 13: true,\n 5: true,\n 3: true,\n 2: true,\n 1: true\n}\n\nconst EXPLANATION = {\n 13: 'can read, write, and control sharing.',\n 9: 'can read and control sharing, currently write-locked.',\n 5: 'can read and change information',\n 3: 'can add new information, and read but not change existing information',\n 2: 'can add new information but not read any',\n 1: 'can read but not change information'\n}\n\n/**\n * Type for the options parameter of [[AccessGroups]]\n */\nexport interface AccessGroupsOptions {\n defaults?: boolean\n}\n\n/**\n * Renders the table of Owners, Editors, Posters, Submitters, Viewers\n * for https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md\n */\nexport class AccessGroups {\n private readonly defaults: boolean\n public byCombo: ComboList\n public aclMap: AgentMapMap\n private readonly addAgentButton: AddAgentButtons\n private readonly rootElement: HTMLElement\n private _store: Store // @@ was LiveStore but does not need to be connected to web\n\n constructor (\n private doc: NamedNode,\n private aclDoc: NamedNode,\n public controller: AccessController,\n store: Store, // @@ was LiveStore\n private options: AccessGroupsOptions = {}\n ) {\n this.defaults = options.defaults || false\n this._store = store\n this.aclMap = readACL(doc, aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n this.addAgentButton = new AddAgentButtons(this)\n this.rootElement = this.controller.dom.createElement('div')\n this.rootElement.setAttribute('style', style.accessGroupList)\n }\n\n public get store () {\n return this._store\n }\n\n public set store (store) {\n this._store = store\n this.aclMap = readACL(this.doc, this.aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.renderGroups().forEach(group => this.rootElement.appendChild(group))\n if (this.controller.isEditable) {\n this.rootElement.appendChild(this.addAgentButton.render())\n }\n return this.rootElement\n }\n\n private renderGroups (): HTMLElement[] {\n const groupElements: HTMLElement[] = []\n for (let comboIndex = 15; comboIndex > 0; comboIndex--) {\n const combo = kToCombo(comboIndex)\n if ((this.controller.isEditable && RECOMMENDED[comboIndex]) || this.byCombo[combo]) {\n groupElements.push(this.renderGroup(comboIndex, combo))\n }\n }\n return groupElements\n }\n\n private renderGroup (comboIndex: number, combo: string): HTMLElement {\n const groupRow = this.controller.dom.createElement('div')\n groupRow.setAttribute('style', style.accessGroupListItem)\n widgets.makeDropTarget(groupRow, (uris) => this.handleDroppedUris(uris, combo)\n .then(() => this.controller.render())\n .catch(error => this.controller.renderStatus(error)))\n const groupColumns = this.renderGroupElements(comboIndex, combo)\n groupColumns.forEach(column => groupRow.appendChild(column))\n return groupRow\n }\n\n private renderGroupElements (comboIndex, combo): HTMLElement[] {\n const groupNameColumn = this.controller.dom.createElement('div')\n groupNameColumn.setAttribute('style', style.group)\n if (this.controller.isEditable) {\n switch (comboIndex) {\n case 1:\n groupNameColumn.setAttribute('style', style.group1)\n break\n case 2:\n groupNameColumn.setAttribute('style', style.group2)\n break\n case 3:\n groupNameColumn.setAttribute('style', style.group3)\n break\n case 5:\n groupNameColumn.setAttribute('style', style.group5)\n break\n case 9:\n groupNameColumn.setAttribute('style', style.group9)\n break\n case 13:\n groupNameColumn.setAttribute('style', style.group13)\n break\n default:\n groupNameColumn.setAttribute('style', style.group)\n }\n }\n groupNameColumn.innerText = COLLOQUIAL[comboIndex] || ktToList(comboIndex)\n\n const groupAgentsColumn = this.controller.dom.createElement('div')\n groupAgentsColumn.setAttribute('style', style.group)\n if (this.controller.isEditable) {\n switch (comboIndex) {\n case 1:\n groupAgentsColumn.setAttribute('style', style.group1)\n break\n case 2:\n groupAgentsColumn.setAttribute('style', style.group2)\n break\n case 3:\n groupAgentsColumn.setAttribute('style', style.group3)\n break\n case 5:\n groupAgentsColumn.setAttribute('style', style.group5)\n break\n case 9:\n groupAgentsColumn.setAttribute('style', style.group9)\n break\n case 13:\n groupAgentsColumn.setAttribute('style', style.group13)\n break\n default:\n groupAgentsColumn.setAttribute('style', style.group)\n }\n }\n const groupAgentsTable = groupAgentsColumn.appendChild(this.controller.dom.createElement('table'))\n const combos = this.byCombo[combo] || []\n combos\n .map(([pred, obj]) => this.renderAgent(groupAgentsTable, combo, pred, obj))\n .forEach(agentElement => groupAgentsTable.appendChild(agentElement))\n\n const groupDescriptionElement = this.controller.dom.createElement('div')\n groupDescriptionElement.setAttribute('style', style.group)\n if (this.controller.isEditable) {\n switch (comboIndex) {\n case 1:\n groupDescriptionElement.setAttribute('style', style.group1)\n break\n case 2:\n groupDescriptionElement.setAttribute('style', style.group2)\n break\n case 3:\n groupDescriptionElement.setAttribute('style', style.group3)\n break\n case 5:\n groupDescriptionElement.setAttribute('style', style.group5)\n break\n case 9:\n groupDescriptionElement.setAttribute('style', style.group9)\n break\n case 13:\n groupDescriptionElement.setAttribute('style', style.group13)\n break\n default:\n groupDescriptionElement.setAttribute('style', style.group)\n }\n }\n groupDescriptionElement.innerText = EXPLANATION[comboIndex] || 'Unusual combination'\n\n return [groupNameColumn, groupAgentsColumn, groupDescriptionElement]\n }\n\n private renderAgent (groupAgentsTable, combo, pred, obj): HTMLElement {\n const personRow = widgets.personTR(this.controller.dom, ACL(pred), sym(obj), this.controller.isEditable\n ? {\n deleteFunction: () => this.deleteAgent(combo, pred, obj)\n .then(() => groupAgentsTable.removeChild(personRow))\n .catch(error => this.controller.renderStatus(error))\n }\n : {})\n return personRow\n }\n\n private async deleteAgent (combo, pred, obj): Promise<void> {\n const combos = this.byCombo[combo] || []\n const comboToRemove = combos.find(([comboPred, comboObj]) => comboPred === pred && comboObj === obj)\n if (comboToRemove) {\n combos.splice(combos.indexOf(comboToRemove), 1)\n }\n await this.controller.save()\n }\n\n public async addNewURI (uri: string): Promise<void> {\n await this.handleDroppedUri(uri, kToCombo(1))\n await this.controller.save()\n }\n\n private async handleDroppedUris (uris: string[], combo: string): Promise<void> {\n try {\n await Promise.all(uris.map(uri => this.handleDroppedUri(uri, combo)))\n await this.controller.save()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n private async handleDroppedUri (uri: string, combo: string, secondAttempt: boolean = false): Promise<void> {\n const agent = findAgent(uri, this.store) // eg 'agent', 'origin', agentClass'\n const thing = sym(uri)\n if (!agent && !secondAttempt) {\n debug.log(` Not obvious: looking up dropped thing ${thing}`)\n try {\n await this._store?.fetcher?.load(thing.doc())\n } catch (error) {\n const message = `Ignore error looking up dropped thing: ${error}`\n debug.error(message)\n return Promise.reject(new Error(message))\n }\n return this.handleDroppedUri(uri, combo, true)\n } else if (!agent) {\n const error = ` Error: Drop fails to drop appropriate thing! ${uri}`\n debug.error(error)\n return Promise.reject(new Error(error))\n }\n this.setACLCombo(combo, uri, agent, this.controller.subject)\n }\n\n private setACLCombo (combo: string, uri: string, res: PartialAgentTriple, subject: NamedNode): void {\n if (!(combo in this.byCombo)) {\n this.byCombo[combo] = []\n }\n this.removeAgentFromCombos(uri) // Combos are mutually distinct\n this.byCombo[combo].push([res.pred, res.obj.uri])\n debug.log(`ACL: setting access to ${subject} by ${res.pred}: ${res.obj}`)\n }\n\n private removeAgentFromCombos (uri: string): void {\n for (let k = 0; k < 16; k++) {\n const combos = this.byCombo[kToCombo(k)]\n if (combos) {\n for (let i = 0; i < combos.length; i++) {\n while (i < combos.length && combos[i][1] === uri) {\n combos.splice(i, 1)\n }\n }\n }\n }\n }\n}\n\nfunction kToCombo (k: number): string {\n const y = ['Read', 'Append', 'Write', 'Control']\n const combo: string[] = []\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n combo.push('http://www.w3.org/ns/auth/acl#' + y[i])\n }\n }\n combo.sort()\n return combo.join('\\n')\n}\n\nfunction ktToList (k: number): string {\n let list = ''\n const y = ['Read', 'Append', 'Write', 'Control']\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n list += y[i]\n }\n }\n return list\n}\n\nfunction findAgent (uri, kb): PartialAgentTriple | null {\n const obj = sym(uri)\n const types = kb.findTypeURIs(obj)\n for (const ty in types) {\n debug.log(' drop object type includes: ' + ty)\n }\n // An Origin URI is one like https://fred.github.io eith no trailing slash\n if (uri.startsWith('http') && uri.split('/').length === 3) {\n // there is no third slash\n return { pred: 'origin', obj } // The only way to know an origin alas\n }\n // @@ This is an almighty kludge needed because drag and drop adds extra slashes to origins\n if (\n uri.startsWith('http') &&\n uri.split('/').length === 4 &&\n uri.endsWith('/')\n ) {\n // there IS third slash\n debug.log('Assuming final slash on dragged origin URI was unintended!')\n return { pred: 'origin', obj: sym(uri.slice(0, -1)) } // Fix a URI where the drag and drop system has added a spurious slash\n }\n\n if (ns.vcard('WebID').uri in types) return { pred: 'agent', obj }\n\n if (ns.vcard('Group').uri in types) {\n return { pred: 'agentGroup', obj } // @@ note vcard membership not RDFs\n }\n if (\n obj.sameTerm(ns.foaf('Agent')) ||\n obj.sameTerm(ns.acl('AuthenticatedAgent')) || // AuthenticatedAgent\n obj.sameTerm(ns.rdf('Resource')) ||\n obj.sameTerm(ns.owl('Thing'))\n ) {\n return { pred: 'agentClass', obj }\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 const pref = kb.any(obj, ns.foaf('preferredURI'))\n if (pref) return { pred: 'agent', obj: sym(pref) }\n return { pred: 'agent', obj }\n }\n if (ns.solid('AppProvider').uri in types) {\n return { pred: 'origin', obj }\n }\n if (ns.solid('AppProviderClass').uri in types) {\n return { pred: 'originClass', obj }\n }\n debug.log(' Triage fails for ' + uri)\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"access-groups.js","names":["_rdflib","require","_acl","widgets","_interopRequireWildcard","ns","_addAgentButtons","debug","style","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ACL","acl","COLLOQUIAL","RECOMMENDED","EXPLANATION","AccessGroups","exports","doc","aclDoc","controller","store","options","arguments","length","undefined","_classCallCheck2","_defineProperty2","defaults","_store","aclMap","readACL","byCombo","ACLbyCombination","addAgentButton","AddAgentButtons","rootElement","dom","createElement","setAttribute","accessGroupList","_createClass2","key","value","render","_this","innerHTML","renderGroups","forEach","group","appendChild","isEditable","groupElements","comboIndex","combo","kToCombo","push","renderGroup","_this2","groupRow","accessGroupListItem","makeDropTarget","uris","handleDroppedUris","then","error","renderStatus","groupColumns","renderGroupElements","column","_this3","groupNameColumn","group1","group2","group3","group5","group9","group13","innerText","ktToList","groupAgentsColumn","groupAgentsTable","combos","map","_ref","_ref2","_slicedToArray2","pred","obj","renderAgent","agentElement","groupDescriptionElement","_this4","personRow","personTR","sym","deleteFunction","deleteAgent","removeChild","_deleteAgent","_asyncToGenerator2","_regenerator","mark","_callee","comboToRemove","wrap","_callee$","_context","prev","next","find","_ref3","_ref4","comboPred","comboObj","splice","indexOf","save","stop","_x","_x2","_x3","apply","_addNewURI","_callee2","uri","_callee2$","_context2","handleDroppedUri","addNewURI","_x4","_handleDroppedUris","_callee3","_this5","_callee3$","_context3","Promise","all","t0","abrupt","reject","_x5","_x6","_handleDroppedUri","_this6","secondAttempt","_callee4","agent","thing","_this6$_store","_this6$_store$fetcher","message","_callee4$","_context4","findAgent","log","concat","fetcher","load","Error","setACLCombo","subject","_x7","_x8","res","removeAgentFromCombos","k","y","sort","join","list","kb","types","findTypeURIs","ty","startsWith","split","endsWith","slice","vcard","sameTerm","foaf","rdf","owl","pref","any","solid"],"sources":["../../src/acl/access-groups.ts"],"sourcesContent":["/**\n * Contains the [[AccessGroups]]\n * and [[AccessGroupsOptions]] classes\n * @packageDocumentation\n */\n\nimport { NamedNode, sym, Store } from 'rdflib'\nimport { ACLbyCombination, readACL } from './acl'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { AccessController } from './access-controller'\nimport { AgentMapMap, ComboList, PartialAgentTriple } from './types'\nimport { AddAgentButtons } from './add-agent-buttons'\nimport * as debug from '../debug'\nimport * as style from '../style'\n\nconst ACL = ns.acl\n\nconst COLLOQUIAL = {\n 13: 'Owners',\n 9: 'Owners (write locked)',\n 5: 'Editors',\n 3: 'Posters',\n 2: 'Submitters',\n 1: 'Viewers'\n}\n\nconst RECOMMENDED = {\n 13: true,\n 5: true,\n 3: true,\n 2: true,\n 1: true\n}\n\nconst EXPLANATION = {\n 13: 'can read, write, and control sharing.',\n 9: 'can read and control sharing, currently write-locked.',\n 5: 'can read and change information',\n 3: 'can add new information, and read but not change existing information',\n 2: 'can add new information but not read any',\n 1: 'can read but not change information'\n}\n\n/**\n * Type for the options parameter of [[AccessGroups]]\n */\nexport interface AccessGroupsOptions {\n defaults?: boolean\n}\n\n/**\n * Renders the table of Owners, Editors, Posters, Submitters, Viewers\n * for https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md\n */\nexport class AccessGroups {\n private readonly defaults: boolean\n public byCombo: ComboList\n public aclMap: AgentMapMap\n private readonly addAgentButton: AddAgentButtons\n private readonly rootElement: HTMLElement\n private _store: Store // @@ was LiveStore but does not need to be connected to web\n\n constructor (\n private doc: NamedNode,\n private aclDoc: NamedNode,\n public controller: AccessController,\n store: Store, // @@ was LiveStore\n private options: AccessGroupsOptions = {}\n ) {\n this.defaults = options.defaults || false\n this._store = store\n this.aclMap = readACL(doc, aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n this.addAgentButton = new AddAgentButtons(this)\n this.rootElement = this.controller.dom.createElement('div')\n this.rootElement.setAttribute('style', style.accessGroupList)\n }\n\n public get store () {\n return this._store\n }\n\n public set store (store) {\n this._store = store\n this.aclMap = readACL(this.doc, this.aclDoc, store, this.defaults)\n this.byCombo = ACLbyCombination(this.aclMap)\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.renderGroups().forEach(group => this.rootElement.appendChild(group))\n if (this.controller.isEditable) {\n this.rootElement.appendChild(this.addAgentButton.render())\n }\n return this.rootElement\n }\n\n private renderGroups (): HTMLElement[] {\n const groupElements: HTMLElement[] = []\n for (let comboIndex = 15; comboIndex > 0; comboIndex--) {\n const combo = kToCombo(comboIndex)\n if ((this.controller.isEditable && RECOMMENDED[comboIndex]) || this.byCombo[combo]) {\n groupElements.push(this.renderGroup(comboIndex, combo))\n }\n }\n return groupElements\n }\n\n private renderGroup (comboIndex: number, combo: string): HTMLElement {\n const groupRow = this.controller.dom.createElement('div')\n groupRow.setAttribute('style', style.accessGroupListItem)\n widgets.makeDropTarget(groupRow, (uris) => this.handleDroppedUris(uris, combo)\n .then(() => this.controller.render())\n .catch(error => this.controller.renderStatus(error)))\n const groupColumns = this.renderGroupElements(comboIndex, combo)\n groupColumns.forEach(column => groupRow.appendChild(column))\n return groupRow\n }\n\n private renderGroupElements (comboIndex, combo): HTMLElement[] {\n const groupNameColumn = this.controller.dom.createElement('div')\n groupNameColumn.setAttribute('style', style.group)\n if (this.controller.isEditable) {\n switch (comboIndex) {\n case 1:\n groupNameColumn.setAttribute('style', style.group1)\n break\n case 2:\n groupNameColumn.setAttribute('style', style.group2)\n break\n case 3:\n groupNameColumn.setAttribute('style', style.group3)\n break\n case 5:\n groupNameColumn.setAttribute('style', style.group5)\n break\n case 9:\n groupNameColumn.setAttribute('style', style.group9)\n break\n case 13:\n groupNameColumn.setAttribute('style', style.group13)\n break\n default:\n groupNameColumn.setAttribute('style', style.group)\n }\n }\n groupNameColumn.innerText = COLLOQUIAL[comboIndex] || ktToList(comboIndex)\n\n const groupAgentsColumn = this.controller.dom.createElement('div')\n groupAgentsColumn.setAttribute('style', style.group)\n if (this.controller.isEditable) {\n switch (comboIndex) {\n case 1:\n groupAgentsColumn.setAttribute('style', style.group1)\n break\n case 2:\n groupAgentsColumn.setAttribute('style', style.group2)\n break\n case 3:\n groupAgentsColumn.setAttribute('style', style.group3)\n break\n case 5:\n groupAgentsColumn.setAttribute('style', style.group5)\n break\n case 9:\n groupAgentsColumn.setAttribute('style', style.group9)\n break\n case 13:\n groupAgentsColumn.setAttribute('style', style.group13)\n break\n default:\n groupAgentsColumn.setAttribute('style', style.group)\n }\n }\n const groupAgentsTable = groupAgentsColumn.appendChild(this.controller.dom.createElement('table'))\n const combos = this.byCombo[combo] || []\n combos\n .map(([pred, obj]) => this.renderAgent(groupAgentsTable, combo, pred, obj))\n .forEach(agentElement => groupAgentsTable.appendChild(agentElement))\n\n const groupDescriptionElement = this.controller.dom.createElement('div')\n groupDescriptionElement.setAttribute('style', style.group)\n if (this.controller.isEditable) {\n switch (comboIndex) {\n case 1:\n groupDescriptionElement.setAttribute('style', style.group1)\n break\n case 2:\n groupDescriptionElement.setAttribute('style', style.group2)\n break\n case 3:\n groupDescriptionElement.setAttribute('style', style.group3)\n break\n case 5:\n groupDescriptionElement.setAttribute('style', style.group5)\n break\n case 9:\n groupDescriptionElement.setAttribute('style', style.group9)\n break\n case 13:\n groupDescriptionElement.setAttribute('style', style.group13)\n break\n default:\n groupDescriptionElement.setAttribute('style', style.group)\n }\n }\n groupDescriptionElement.innerText = EXPLANATION[comboIndex] || 'Unusual combination'\n\n return [groupNameColumn, groupAgentsColumn, groupDescriptionElement]\n }\n\n private renderAgent (groupAgentsTable, combo, pred, obj): HTMLElement {\n const personRow = widgets.personTR(this.controller.dom, ACL(pred), sym(obj), this.controller.isEditable\n ? {\n deleteFunction: () => this.deleteAgent(combo, pred, obj)\n .then(() => groupAgentsTable.removeChild(personRow))\n .catch(error => this.controller.renderStatus(error))\n }\n : {})\n return personRow\n }\n\n private async deleteAgent (combo, pred, obj): Promise<void> {\n const combos = this.byCombo[combo] || []\n const comboToRemove = combos.find(([comboPred, comboObj]) => comboPred === pred && comboObj === obj)\n if (comboToRemove) {\n combos.splice(combos.indexOf(comboToRemove), 1)\n }\n await this.controller.save()\n }\n\n public async addNewURI (uri: string): Promise<void> {\n await this.handleDroppedUri(uri, kToCombo(1))\n await this.controller.save()\n }\n\n private async handleDroppedUris (uris: string[], combo: string): Promise<void> {\n try {\n await Promise.all(uris.map(uri => this.handleDroppedUri(uri, combo)))\n await this.controller.save()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n private async handleDroppedUri (uri: string, combo: string, secondAttempt: boolean = false): Promise<void> {\n const agent = findAgent(uri, this.store) // eg 'agent', 'origin', agentClass'\n const thing = sym(uri)\n if (!agent && !secondAttempt) {\n debug.log(` Not obvious: looking up dropped thing ${thing}`)\n try {\n await this._store?.fetcher?.load(thing.doc())\n } catch (error) {\n const message = `Ignore error looking up dropped thing: ${error}`\n debug.error(message)\n return Promise.reject(new Error(message))\n }\n return this.handleDroppedUri(uri, combo, true)\n } else if (!agent) {\n const error = ` Error: Drop fails to drop appropriate thing! ${uri}`\n debug.error(error)\n return Promise.reject(new Error(error))\n }\n this.setACLCombo(combo, uri, agent, this.controller.subject)\n }\n\n private setACLCombo (combo: string, uri: string, res: PartialAgentTriple, subject: NamedNode): void {\n if (!(combo in this.byCombo)) {\n this.byCombo[combo] = []\n }\n this.removeAgentFromCombos(uri) // Combos are mutually distinct\n this.byCombo[combo].push([res.pred, res.obj.uri])\n debug.log(`ACL: setting access to ${subject} by ${res.pred}: ${res.obj}`)\n }\n\n private removeAgentFromCombos (uri: string): void {\n for (let k = 0; k < 16; k++) {\n const combos = this.byCombo[kToCombo(k)]\n if (combos) {\n for (let i = 0; i < combos.length; i++) {\n while (i < combos.length && combos[i][1] === uri) {\n combos.splice(i, 1)\n }\n }\n }\n }\n }\n}\n\nfunction kToCombo (k: number): string {\n const y = ['Read', 'Append', 'Write', 'Control']\n const combo: string[] = []\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n combo.push('http://www.w3.org/ns/auth/acl#' + y[i])\n }\n }\n combo.sort()\n return combo.join('\\n')\n}\n\nfunction ktToList (k: number): string {\n let list = ''\n const y = ['Read', 'Append', 'Write', 'Control']\n for (let i = 0; i < 4; i++) {\n if (k & (1 << i)) {\n list += y[i]\n }\n }\n return list\n}\n\nfunction findAgent (uri, kb): PartialAgentTriple | null {\n const obj = sym(uri)\n const types = kb.findTypeURIs(obj)\n for (const ty in types) {\n debug.log(' drop object type includes: ' + ty)\n }\n // An Origin URI is one like https://fred.github.io eith no trailing slash\n if (uri.startsWith('http') && uri.split('/').length === 3) {\n // there is no third slash\n return { pred: 'origin', obj } // The only way to know an origin alas\n }\n // @@ This is an almighty kludge needed because drag and drop adds extra slashes to origins\n if (\n uri.startsWith('http') &&\n uri.split('/').length === 4 &&\n uri.endsWith('/')\n ) {\n // there IS third slash\n debug.log('Assuming final slash on dragged origin URI was unintended!')\n return { pred: 'origin', obj: sym(uri.slice(0, -1)) } // Fix a URI where the drag and drop system has added a spurious slash\n }\n\n if (ns.vcard('WebID').uri in types) return { pred: 'agent', obj }\n\n if (ns.vcard('Group').uri in types) {\n return { pred: 'agentGroup', obj } // @@ note vcard membership not RDFs\n }\n if (\n obj.sameTerm(ns.foaf('Agent')) ||\n obj.sameTerm(ns.acl('AuthenticatedAgent')) || // AuthenticatedAgent\n obj.sameTerm(ns.rdf('Resource')) ||\n obj.sameTerm(ns.owl('Thing'))\n ) {\n return { pred: 'agentClass', obj }\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 const pref = kb.any(obj, ns.foaf('preferredURI'))\n if (pref) return { pred: 'agent', obj: sym(pref) }\n return { pred: 'agent', obj }\n }\n if (ns.solid('AppProvider').uri in types) {\n return { pred: 'origin', obj }\n }\n if (ns.solid('AppProviderClass').uri in types) {\n return { pred: 'originClass', obj }\n }\n debug.log(' Triage fails for ' + uri)\n return null\n}\n"],"mappings":";;;;;;;;;;;;;;AAMA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,EAAA,GAAAD,uBAAA,CAAAH,OAAA;AAGA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAH,uBAAA,CAAAH,OAAA;AACA,IAAAO,KAAA,GAAAJ,uBAAA,CAAAH,OAAA;AAAiC,SAAAQ,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,sBAAAA,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,cAAAR,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAdjC;AACA;AACA;AACA;AACA;;AAYA,IAAMW,GAAG,GAAGxB,EAAE,CAACyB,GAAG;AAElB,IAAMC,UAAU,GAAG;EACjB,EAAE,EAAE,QAAQ;EACZ,CAAC,EAAE,uBAAuB;EAC1B,CAAC,EAAE,SAAS;EACZ,CAAC,EAAE,SAAS;EACZ,CAAC,EAAE,YAAY;EACf,CAAC,EAAE;AACL,CAAC;AAED,IAAMC,WAAW,GAAG;EAClB,EAAE,EAAE,IAAI;EACR,CAAC,EAAE,IAAI;EACP,CAAC,EAAE,IAAI;EACP,CAAC,EAAE,IAAI;EACP,CAAC,EAAE;AACL,CAAC;AAED,IAAMC,WAAW,GAAG;EAClB,EAAE,EAAE,uCAAuC;EAC3C,CAAC,EAAE,uDAAuD;EAC1D,CAAC,EAAE,iCAAiC;EACpC,CAAC,EAAE,uEAAuE;EAC1E,CAAC,EAAE,0CAA0C;EAC7C,CAAC,EAAE;AACL,CAAC;;AAED;AACA;AACA;AAKA;AACA;AACA;AACA;AAHA,IAIaC,YAAY,GAAAC,OAAA,CAAAD,YAAA;EAMD;;EAEtB,SAAAA,aACUE,GAAc,EACdC,MAAiB,EAClBC,UAA4B,EACnCC,KAAY,EAEZ;IAAA,IADQC,OAA4B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAAG,gBAAA,mBAAAV,YAAA;IAAA,KAJjCE,GAAc,GAAdA,GAAc;IAAA,KACdC,MAAiB,GAAjBA,MAAiB;IAAA,KAClBC,UAA4B,GAA5BA,UAA4B;IAAA,KAE3BE,OAA4B,GAA5BA,OAA4B;IAAA,IAAAK,gBAAA;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA;IAEpC,IAAI,CAACC,QAAQ,GAAGN,OAAO,CAACM,QAAQ,IAAI,KAAK;IACzC,IAAI,CAACC,MAAM,GAAGR,KAAK;IACnB,IAAI,CAACS,MAAM,GAAG,IAAAC,YAAO,EAACb,GAAG,EAAEC,MAAM,EAAEE,KAAK,EAAE,IAAI,CAACO,QAAQ,CAAC;IACxD,IAAI,CAACI,OAAO,GAAG,IAAAC,qBAAgB,EAAC,IAAI,CAACH,MAAM,CAAC;IAC5C,IAAI,CAACI,cAAc,GAAG,IAAIC,gCAAe,CAAC,IAAI,CAAC;IAC/C,IAAI,CAACC,WAAW,GAAG,IAAI,CAAChB,UAAU,CAACiB,GAAG,CAACC,aAAa,CAAC,KAAK,CAAC;IAC3D,IAAI,CAACF,WAAW,CAACG,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACkD,eAAe,CAAC;EAC/D;EAAC,WAAAC,aAAA,aAAAzB,YAAA;IAAA0B,GAAA;IAAA3C,GAAA,EAED,SAAAA,IAAA,EAAoB;MAClB,OAAO,IAAI,CAAC8B,MAAM;IACpB,CAAC;IAAAnB,GAAA,EAED,SAAAA,IAAkBW,KAAK,EAAE;MACvB,IAAI,CAACQ,MAAM,GAAGR,KAAK;MACnB,IAAI,CAACS,MAAM,GAAG,IAAAC,YAAO,EAAC,IAAI,CAACb,GAAG,EAAE,IAAI,CAACC,MAAM,EAAEE,KAAK,EAAE,IAAI,CAACO,QAAQ,CAAC;MAClE,IAAI,CAACI,OAAO,GAAG,IAAAC,qBAAgB,EAAC,IAAI,CAACH,MAAM,CAAC;IAC9C;EAAC;IAAAY,GAAA;IAAAC,KAAA,EAED,SAAOC,MAAMA,CAAA,EAAiB;MAAA,IAAAC,KAAA;MAC5B,IAAI,CAACT,WAAW,CAACU,SAAS,GAAG,EAAE;MAC/B,IAAI,CAACC,YAAY,CAAC,CAAC,CAACC,OAAO,CAAC,UAAAC,KAAK;QAAA,OAAIJ,KAAI,CAACT,WAAW,CAACc,WAAW,CAACD,KAAK,CAAC;MAAA,EAAC;MACzE,IAAI,IAAI,CAAC7B,UAAU,CAAC+B,UAAU,EAAE;QAC9B,IAAI,CAACf,WAAW,CAACc,WAAW,CAAC,IAAI,CAAChB,cAAc,CAACU,MAAM,CAAC,CAAC,CAAC;MAC5D;MACA,OAAO,IAAI,CAACR,WAAW;IACzB;EAAC;IAAAM,GAAA;IAAAC,KAAA,EAED,SAAQI,YAAYA,CAAA,EAAmB;MACrC,IAAMK,aAA4B,GAAG,EAAE;MACvC,KAAK,IAAIC,UAAU,GAAG,EAAE,EAAEA,UAAU,GAAG,CAAC,EAAEA,UAAU,EAAE,EAAE;QACtD,IAAMC,KAAK,GAAGC,QAAQ,CAACF,UAAU,CAAC;QAClC,IAAK,IAAI,CAACjC,UAAU,CAAC+B,UAAU,IAAIrC,WAAW,CAACuC,UAAU,CAAC,IAAK,IAAI,CAACrB,OAAO,CAACsB,KAAK,CAAC,EAAE;UAClFF,aAAa,CAACI,IAAI,CAAC,IAAI,CAACC,WAAW,CAACJ,UAAU,EAAEC,KAAK,CAAC,CAAC;QACzD;MACF;MACA,OAAOF,aAAa;IACtB;EAAC;IAAAV,GAAA;IAAAC,KAAA,EAED,SAAQc,WAAWA,CAAEJ,UAAkB,EAAEC,KAAa,EAAe;MAAA,IAAAI,MAAA;MACnE,IAAMC,QAAQ,GAAG,IAAI,CAACvC,UAAU,CAACiB,GAAG,CAACC,aAAa,CAAC,KAAK,CAAC;MACzDqB,QAAQ,CAACpB,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACsE,mBAAmB,CAAC;MACzD3E,OAAO,CAAC4E,cAAc,CAACF,QAAQ,EAAE,UAACG,IAAI;QAAA,OAAKJ,MAAI,CAACK,iBAAiB,CAACD,IAAI,EAAER,KAAK,CAAC,CAC3EU,IAAI,CAAC;UAAA,OAAMN,MAAI,CAACtC,UAAU,CAACwB,MAAM,CAAC,CAAC;QAAA,EAAC,SAC/B,CAAC,UAAAqB,KAAK;UAAA,OAAIP,MAAI,CAACtC,UAAU,CAAC8C,YAAY,CAACD,KAAK,CAAC;QAAA,EAAC;MAAA,EAAC;MACvD,IAAME,YAAY,GAAG,IAAI,CAACC,mBAAmB,CAACf,UAAU,EAAEC,KAAK,CAAC;MAChEa,YAAY,CAACnB,OAAO,CAAC,UAAAqB,MAAM;QAAA,OAAIV,QAAQ,CAACT,WAAW,CAACmB,MAAM,CAAC;MAAA,EAAC;MAC5D,OAAOV,QAAQ;IACjB;EAAC;IAAAjB,GAAA;IAAAC,KAAA,EAED,SAAQyB,mBAAmBA,CAAEf,UAAU,EAAEC,KAAK,EAAiB;MAAA,IAAAgB,MAAA;MAC7D,IAAMC,eAAe,GAAG,IAAI,CAACnD,UAAU,CAACiB,GAAG,CAACC,aAAa,CAAC,KAAK,CAAC;MAChEiC,eAAe,CAAChC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAAC2D,KAAK,CAAC;MAClD,IAAI,IAAI,CAAC7B,UAAU,CAAC+B,UAAU,EAAE;QAC9B,QAAQE,UAAU;UAChB,KAAK,CAAC;YACJkB,eAAe,CAAChC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACkF,MAAM,CAAC;YACnD;UACF,KAAK,CAAC;YACJD,eAAe,CAAChC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACmF,MAAM,CAAC;YACnD;UACF,KAAK,CAAC;YACJF,eAAe,CAAChC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACoF,MAAM,CAAC;YACnD;UACF,KAAK,CAAC;YACJH,eAAe,CAAChC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACqF,MAAM,CAAC;YACnD;UACF,KAAK,CAAC;YACJJ,eAAe,CAAChC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACsF,MAAM,CAAC;YACnD;UACF,KAAK,EAAE;YACLL,eAAe,CAAChC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACuF,OAAO,CAAC;YACpD;UACF;YACEN,eAAe,CAAChC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAAC2D,KAAK,CAAC;QACtD;MACF;MACAsB,eAAe,CAACO,SAAS,GAAGjE,UAAU,CAACwC,UAAU,CAAC,IAAI0B,QAAQ,CAAC1B,UAAU,CAAC;MAE1E,IAAM2B,iBAAiB,GAAG,IAAI,CAAC5D,UAAU,CAACiB,GAAG,CAACC,aAAa,CAAC,KAAK,CAAC;MAClE0C,iBAAiB,CAACzC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAAC2D,KAAK,CAAC;MACpD,IAAI,IAAI,CAAC7B,UAAU,CAAC+B,UAAU,EAAE;QAC9B,QAAQE,UAAU;UAChB,KAAK,CAAC;YACJ2B,iBAAiB,CAACzC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACkF,MAAM,CAAC;YACrD;UACF,KAAK,CAAC;YACJQ,iBAAiB,CAACzC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACmF,MAAM,CAAC;YACrD;UACF,KAAK,CAAC;YACJO,iBAAiB,CAACzC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACoF,MAAM,CAAC;YACrD;UACF,KAAK,CAAC;YACJM,iBAAiB,CAACzC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACqF,MAAM,CAAC;YACrD;UACF,KAAK,CAAC;YACJK,iBAAiB,CAACzC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACsF,MAAM,CAAC;YACrD;UACF,KAAK,EAAE;YACLI,iBAAiB,CAACzC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACuF,OAAO,CAAC;YACtD;UACF;YACEG,iBAAiB,CAACzC,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAAC2D,KAAK,CAAC;QACxD;MACF;MACA,IAAMgC,gBAAgB,GAAGD,iBAAiB,CAAC9B,WAAW,CAAC,IAAI,CAAC9B,UAAU,CAACiB,GAAG,CAACC,aAAa,CAAC,OAAO,CAAC,CAAC;MAClG,IAAM4C,MAAM,GAAG,IAAI,CAAClD,OAAO,CAACsB,KAAK,CAAC,IAAI,EAAE;MACxC4B,MAAM,CACHC,GAAG,CAAC,UAAAC,IAAA;QAAA,IAAAC,KAAA,OAAAC,eAAA,aAAAF,IAAA;UAAEG,IAAI,GAAAF,KAAA;UAAEG,GAAG,GAAAH,KAAA;QAAA,OAAMf,MAAI,CAACmB,WAAW,CAACR,gBAAgB,EAAE3B,KAAK,EAAEiC,IAAI,EAAEC,GAAG,CAAC;MAAA,EAAC,CAC1ExC,OAAO,CAAC,UAAA0C,YAAY;QAAA,OAAIT,gBAAgB,CAAC/B,WAAW,CAACwC,YAAY,CAAC;MAAA,EAAC;MAEtE,IAAMC,uBAAuB,GAAG,IAAI,CAACvE,UAAU,CAACiB,GAAG,CAACC,aAAa,CAAC,KAAK,CAAC;MACxEqD,uBAAuB,CAACpD,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAAC2D,KAAK,CAAC;MAC1D,IAAI,IAAI,CAAC7B,UAAU,CAAC+B,UAAU,EAAE;QAC9B,QAAQE,UAAU;UAChB,KAAK,CAAC;YACJsC,uBAAuB,CAACpD,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACkF,MAAM,CAAC;YAC3D;UACF,KAAK,CAAC;YACJmB,uBAAuB,CAACpD,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACmF,MAAM,CAAC;YAC3D;UACF,KAAK,CAAC;YACJkB,uBAAuB,CAACpD,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACoF,MAAM,CAAC;YAC3D;UACF,KAAK,CAAC;YACJiB,uBAAuB,CAACpD,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACqF,MAAM,CAAC;YAC3D;UACF,KAAK,CAAC;YACJgB,uBAAuB,CAACpD,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACsF,MAAM,CAAC;YAC3D;UACF,KAAK,EAAE;YACLe,uBAAuB,CAACpD,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAACuF,OAAO,CAAC;YAC5D;UACF;YACEc,uBAAuB,CAACpD,YAAY,CAAC,OAAO,EAAEjD,KAAK,CAAC2D,KAAK,CAAC;QAC9D;MACF;MACA0C,uBAAuB,CAACb,SAAS,GAAG/D,WAAW,CAACsC,UAAU,CAAC,IAAI,qBAAqB;MAEpF,OAAO,CAACkB,eAAe,EAAES,iBAAiB,EAAEW,uBAAuB,CAAC;IACtE;EAAC;IAAAjD,GAAA;IAAAC,KAAA,EAED,SAAQ8C,WAAWA,CAAER,gBAAgB,EAAE3B,KAAK,EAAEiC,IAAI,EAAEC,GAAG,EAAe;MAAA,IAAAI,MAAA;MACpE,IAAMC,SAAS,GAAG5G,OAAO,CAAC6G,QAAQ,CAAC,IAAI,CAAC1E,UAAU,CAACiB,GAAG,EAAE1B,GAAG,CAAC4E,IAAI,CAAC,EAAE,IAAAQ,WAAG,EAACP,GAAG,CAAC,EAAE,IAAI,CAACpE,UAAU,CAAC+B,UAAU,GACnG;QACE6C,cAAc,EAAE,SAAhBA,cAAcA,CAAA;UAAA,OAAQJ,MAAI,CAACK,WAAW,CAAC3C,KAAK,EAAEiC,IAAI,EAAEC,GAAG,CAAC,CACrDxB,IAAI,CAAC;YAAA,OAAMiB,gBAAgB,CAACiB,WAAW,CAACL,SAAS,CAAC;UAAA,EAAC,SAC9C,CAAC,UAAA5B,KAAK;YAAA,OAAI2B,MAAI,CAACxE,UAAU,CAAC8C,YAAY,CAACD,KAAK,CAAC;UAAA,EAAC;QAAA;MACxD,CAAC,GACD,CAAC,CAAC,CAAC;MACP,OAAO4B,SAAS;IAClB;EAAC;IAAAnD,GAAA;IAAAC,KAAA;MAAA,IAAAwD,YAAA,OAAAC,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAED,SAAAC,QAA2BjD,KAAK,EAAEiC,IAAI,EAAEC,GAAG;QAAA,IAAAN,MAAA,EAAAsB,aAAA;QAAA,OAAAH,YAAA,YAAAI,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cACnC3B,MAAM,GAAG,IAAI,CAAClD,OAAO,CAACsB,KAAK,CAAC,IAAI,EAAE;cAClCkD,aAAa,GAAGtB,MAAM,CAAC4B,IAAI,CAAC,UAAAC,KAAA;gBAAA,IAAAC,KAAA,OAAA1B,eAAA,aAAAyB,KAAA;kBAAEE,SAAS,GAAAD,KAAA;kBAAEE,QAAQ,GAAAF,KAAA;gBAAA,OAAMC,SAAS,KAAK1B,IAAI,IAAI2B,QAAQ,KAAK1B,GAAG;cAAA,EAAC;cACpG,IAAIgB,aAAa,EAAE;gBACjBtB,MAAM,CAACiC,MAAM,CAACjC,MAAM,CAACkC,OAAO,CAACZ,aAAa,CAAC,EAAE,CAAC,CAAC;cACjD;cAACG,QAAA,CAAAE,IAAA;cAAA,OACK,IAAI,CAACzF,UAAU,CAACiG,IAAI,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAV,QAAA,CAAAW,IAAA;UAAA;QAAA,GAAAf,OAAA;MAAA,CAC7B;MAAA,SAPaN,WAAWA,CAAAsB,EAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAtB,YAAA,CAAAuB,KAAA,OAAAnG,SAAA;MAAA;MAAA,OAAX0E,WAAW;IAAA;EAAA;IAAAvD,GAAA;IAAAC,KAAA;MAAA,IAAAgF,UAAA,OAAAvB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CASzB,SAAAsB,SAAwBC,GAAW;QAAA,OAAAxB,YAAA,YAAAI,IAAA,UAAAqB,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAnB,IAAA,GAAAmB,SAAA,CAAAlB,IAAA;YAAA;cAAAkB,SAAA,CAAAlB,IAAA;cAAA,OAC3B,IAAI,CAACmB,gBAAgB,CAACH,GAAG,EAAEtE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAA;cAAAwE,SAAA,CAAAlB,IAAA;cAAA,OACvC,IAAI,CAACzF,UAAU,CAACiG,IAAI,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAU,SAAA,CAAAT,IAAA;UAAA;QAAA,GAAAM,QAAA;MAAA,CAC7B;MAAA,SAHYK,SAASA,CAAAC,GAAA;QAAA,OAAAP,UAAA,CAAAD,KAAA,OAAAnG,SAAA;MAAA;MAAA,OAAT0G,SAAS;IAAA;EAAA;IAAAvF,GAAA;IAAAC,KAAA;MAAA,IAAAwF,kBAAA,OAAA/B,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAKtB,SAAA8B,SAAiCtE,IAAc,EAAER,KAAa;QAAA,IAAA+E,MAAA;QAAA,OAAAhC,YAAA,YAAAI,IAAA,UAAA6B,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA3B,IAAA,GAAA2B,SAAA,CAAA1B,IAAA;YAAA;cAAA0B,SAAA,CAAA3B,IAAA;cAAA2B,SAAA,CAAA1B,IAAA;cAAA,OAEpD2B,OAAO,CAACC,GAAG,CAAC3E,IAAI,CAACqB,GAAG,CAAC,UAAA0C,GAAG;gBAAA,OAAIQ,MAAI,CAACL,gBAAgB,CAACH,GAAG,EAAEvE,KAAK,CAAC;cAAA,EAAC,CAAC;YAAA;cAAAiF,SAAA,CAAA1B,IAAA;cAAA,OAC/D,IAAI,CAACzF,UAAU,CAACiG,IAAI,CAAC,CAAC;YAAA;cAAAkB,SAAA,CAAA1B,IAAA;cAAA;YAAA;cAAA0B,SAAA,CAAA3B,IAAA;cAAA2B,SAAA,CAAAG,EAAA,GAAAH,SAAA;cAAA,OAAAA,SAAA,CAAAI,MAAA,WAErBH,OAAO,CAACI,MAAM,CAAAL,SAAA,CAAAG,EAAM,CAAC;YAAA;YAAA;cAAA,OAAAH,SAAA,CAAAjB,IAAA;UAAA;QAAA,GAAAc,QAAA;MAAA,CAE/B;MAAA,SAParE,iBAAiBA,CAAA8E,GAAA,EAAAC,GAAA;QAAA,OAAAX,kBAAA,CAAAT,KAAA,OAAAnG,SAAA;MAAA;MAAA,OAAjBwC,iBAAiB;IAAA;EAAA;IAAArB,GAAA;IAAAC,KAAA;MAAA,IAAAoG,iBAAA,OAAA3C,kBAAA,aAS/B,UAAgCyB,GAAW,EAAEvE,KAAa;QAAA,IAAA0F,MAAA;QAAA,IAAEC,aAAsB,GAAA1H,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;QAAA,oBAAA8E,YAAA,YAAAC,IAAA,UAAA4C,SAAA;UAAA,IAAAC,KAAA,EAAAC,KAAA,EAAAC,aAAA,EAAAC,qBAAA,EAAAC,OAAA,EAAAtF,KAAA;UAAA,OAAAoC,YAAA,YAAAI,IAAA,UAAA+C,UAAAC,SAAA;YAAA,kBAAAA,SAAA,CAAA7C,IAAA,GAAA6C,SAAA,CAAA5C,IAAA;cAAA;gBAClFsC,KAAK,GAAGO,SAAS,CAAC7B,GAAG,EAAEmB,MAAI,CAAC3H,KAAK,CAAC,EAAC;gBACnC+H,KAAK,GAAG,IAAArD,WAAG,EAAC8B,GAAG,CAAC;gBAAA,MAClB,CAACsB,KAAK,IAAI,CAACF,aAAa;kBAAAQ,SAAA,CAAA5C,IAAA;kBAAA;gBAAA;gBAC1BxH,KAAK,CAACsK,GAAG,6CAAAC,MAAA,CAA6CR,KAAK,CAAE,CAAC;gBAAAK,SAAA,CAAA7C,IAAA;gBAAA6C,SAAA,CAAA5C,IAAA;gBAAA,QAAAwC,aAAA,GAEtDL,MAAI,CAACnH,MAAM,cAAAwH,aAAA,wBAAAC,qBAAA,GAAXD,aAAA,CAAaQ,OAAO,cAAAP,qBAAA,uBAApBA,qBAAA,CAAsBQ,IAAI,CAACV,KAAK,CAAClI,GAAG,CAAC,CAAC,CAAC;cAAA;gBAAAuI,SAAA,CAAA5C,IAAA;gBAAA;cAAA;gBAAA4C,SAAA,CAAA7C,IAAA;gBAAA6C,SAAA,CAAAf,EAAA,GAAAe,SAAA;gBAEvCF,OAAO,6CAAAK,MAAA,CAAAH,SAAA,CAAAf,EAAA;gBACbrJ,KAAK,CAAC4E,KAAK,CAACsF,OAAO,CAAC;gBAAA,OAAAE,SAAA,CAAAd,MAAA,WACbH,OAAO,CAACI,MAAM,CAAC,IAAImB,KAAK,CAACR,OAAO,CAAC,CAAC;cAAA;gBAAA,OAAAE,SAAA,CAAAd,MAAA,WAEpCK,MAAI,CAAChB,gBAAgB,CAACH,GAAG,EAAEvE,KAAK,EAAE,IAAI,CAAC;cAAA;gBAAA,IACpC6F,KAAK;kBAAAM,SAAA,CAAA5C,IAAA;kBAAA;gBAAA;gBACT5C,KAAK,sDAAA2F,MAAA,CAAsD/B,GAAG;gBACpExI,KAAK,CAAC4E,KAAK,CAACA,KAAK,CAAC;gBAAA,OAAAwF,SAAA,CAAAd,MAAA,WACXH,OAAO,CAACI,MAAM,CAAC,IAAImB,KAAK,CAAC9F,KAAK,CAAC,CAAC;cAAA;gBAEzC+E,MAAI,CAACgB,WAAW,CAAC1G,KAAK,EAAEuE,GAAG,EAAEsB,KAAK,EAAEH,MAAI,CAAC5H,UAAU,CAAC6I,OAAO,CAAC;cAAA;cAAA;gBAAA,OAAAR,SAAA,CAAAnC,IAAA;YAAA;UAAA,GAAA4B,QAAA;QAAA;MAAA,CAC7D;MAAA,SAnBalB,gBAAgBA,CAAAkC,GAAA,EAAAC,GAAA;QAAA,OAAApB,iBAAA,CAAArB,KAAA,OAAAnG,SAAA;MAAA;MAAA,OAAhByG,gBAAgB;IAAA;EAAA;IAAAtF,GAAA;IAAAC,KAAA,EAqB9B,SAAQqH,WAAWA,CAAE1G,KAAa,EAAEuE,GAAW,EAAEuC,GAAuB,EAAEH,OAAkB,EAAQ;MAClG,IAAI,EAAE3G,KAAK,IAAI,IAAI,CAACtB,OAAO,CAAC,EAAE;QAC5B,IAAI,CAACA,OAAO,CAACsB,KAAK,CAAC,GAAG,EAAE;MAC1B;MACA,IAAI,CAAC+G,qBAAqB,CAACxC,GAAG,CAAC,EAAC;MAChC,IAAI,CAAC7F,OAAO,CAACsB,KAAK,CAAC,CAACE,IAAI,CAAC,CAAC4G,GAAG,CAAC7E,IAAI,EAAE6E,GAAG,CAAC5E,GAAG,CAACqC,GAAG,CAAC,CAAC;MACjDxI,KAAK,CAACsK,GAAG,2BAAAC,MAAA,CAA2BK,OAAO,UAAAL,MAAA,CAAOQ,GAAG,CAAC7E,IAAI,QAAAqE,MAAA,CAAKQ,GAAG,CAAC5E,GAAG,CAAE,CAAC;IAC3E;EAAC;IAAA9C,GAAA;IAAAC,KAAA,EAED,SAAQ0H,qBAAqBA,CAAExC,GAAW,EAAQ;MAChD,KAAK,IAAIyC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;QAC3B,IAAMpF,MAAM,GAAG,IAAI,CAAClD,OAAO,CAACuB,QAAQ,CAAC+G,CAAC,CAAC,CAAC;QACxC,IAAIpF,MAAM,EAAE;UACV,KAAK,IAAIzE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyE,MAAM,CAAC1D,MAAM,EAAEf,CAAC,EAAE,EAAE;YACtC,OAAOA,CAAC,GAAGyE,MAAM,CAAC1D,MAAM,IAAI0D,MAAM,CAACzE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAKoH,GAAG,EAAE;cAChD3C,MAAM,CAACiC,MAAM,CAAC1G,CAAC,EAAE,CAAC,CAAC;YACrB;UACF;QACF;MACF;IACF;EAAC;AAAA;AAGH,SAAS8C,QAAQA,CAAE+G,CAAS,EAAU;EACpC,IAAMC,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;EAChD,IAAMjH,KAAe,GAAG,EAAE;EAC1B,KAAK,IAAI7C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC1B,IAAI6J,CAAC,GAAI,CAAC,IAAI7J,CAAE,EAAE;MAChB6C,KAAK,CAACE,IAAI,CAAC,gCAAgC,GAAG+G,CAAC,CAAC9J,CAAC,CAAC,CAAC;IACrD;EACF;EACA6C,KAAK,CAACkH,IAAI,CAAC,CAAC;EACZ,OAAOlH,KAAK,CAACmH,IAAI,CAAC,IAAI,CAAC;AACzB;AAEA,SAAS1F,QAAQA,CAAEuF,CAAS,EAAU;EACpC,IAAII,IAAI,GAAG,EAAE;EACb,IAAMH,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;EAChD,KAAK,IAAI9J,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC1B,IAAI6J,CAAC,GAAI,CAAC,IAAI7J,CAAE,EAAE;MAChBiK,IAAI,IAAIH,CAAC,CAAC9J,CAAC,CAAC;IACd;EACF;EACA,OAAOiK,IAAI;AACb;AAEA,SAAShB,SAASA,CAAE7B,GAAG,EAAE8C,EAAE,EAA6B;EACtD,IAAMnF,GAAG,GAAG,IAAAO,WAAG,EAAC8B,GAAG,CAAC;EACpB,IAAM+C,KAAK,GAAGD,EAAE,CAACE,YAAY,CAACrF,GAAG,CAAC;EAClC,KAAK,IAAMsF,EAAE,IAAIF,KAAK,EAAE;IACtBvL,KAAK,CAACsK,GAAG,CAAC,iCAAiC,GAAGmB,EAAE,CAAC;EACnD;EACA;EACA,IAAIjD,GAAG,CAACkD,UAAU,CAAC,MAAM,CAAC,IAAIlD,GAAG,CAACmD,KAAK,CAAC,GAAG,CAAC,CAACxJ,MAAM,KAAK,CAAC,EAAE;IACzD;IACA,OAAO;MAAE+D,IAAI,EAAE,QAAQ;MAAEC,GAAG,EAAHA;IAAI,CAAC,EAAC;EACjC;EACA;EACA,IACEqC,GAAG,CAACkD,UAAU,CAAC,MAAM,CAAC,IACtBlD,GAAG,CAACmD,KAAK,CAAC,GAAG,CAAC,CAACxJ,MAAM,KAAK,CAAC,IAC3BqG,GAAG,CAACoD,QAAQ,CAAC,GAAG,CAAC,EACjB;IACA;IACA5L,KAAK,CAACsK,GAAG,CAAC,4DAA4D,CAAC;IACvE,OAAO;MAAEpE,IAAI,EAAE,QAAQ;MAAEC,GAAG,EAAE,IAAAO,WAAG,EAAC8B,GAAG,CAACqD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAAE,CAAC,EAAC;EACxD;EAEA,IAAI/L,EAAE,CAACgM,KAAK,CAAC,OAAO,CAAC,CAACtD,GAAG,IAAI+C,KAAK,EAAE,OAAO;IAAErF,IAAI,EAAE,OAAO;IAAEC,GAAG,EAAHA;EAAI,CAAC;EAEjE,IAAIrG,EAAE,CAACgM,KAAK,CAAC,OAAO,CAAC,CAACtD,GAAG,IAAI+C,KAAK,EAAE;IAClC,OAAO;MAAErF,IAAI,EAAE,YAAY;MAAEC,GAAG,EAAHA;IAAI,CAAC,EAAC;EACrC;EACA,IACEA,GAAG,CAAC4F,QAAQ,CAACjM,EAAE,CAACkM,IAAI,CAAC,OAAO,CAAC,CAAC,IAC9B7F,GAAG,CAAC4F,QAAQ,CAACjM,EAAE,CAACyB,GAAG,CAAC,oBAAoB,CAAC,CAAC;EAAI;EAC9C4E,GAAG,CAAC4F,QAAQ,CAACjM,EAAE,CAACmM,GAAG,CAAC,UAAU,CAAC,CAAC,IAChC9F,GAAG,CAAC4F,QAAQ,CAACjM,EAAE,CAACoM,GAAG,CAAC,OAAO,CAAC,CAAC,EAC7B;IACA,OAAO;MAAEhG,IAAI,EAAE,YAAY;MAAEC,GAAG,EAAHA;IAAI,CAAC;EACpC;EACA,IACErG,EAAE,CAACgM,KAAK,CAAC,YAAY,CAAC,CAACtD,GAAG,IAAI+C,KAAK,IACnCzL,EAAE,CAACkM,IAAI,CAAC,QAAQ,CAAC,CAACxD,GAAG,IAAI+C,KAAK,IAC9BzL,EAAE,CAACkM,IAAI,CAAC,OAAO,CAAC,CAACxD,GAAG,IAAI+C,KAAK,EAC7B;IACA,IAAMY,IAAI,GAAGb,EAAE,CAACc,GAAG,CAACjG,GAAG,EAAErG,EAAE,CAACkM,IAAI,CAAC,cAAc,CAAC,CAAC;IACjD,IAAIG,IAAI,EAAE,OAAO;MAAEjG,IAAI,EAAE,OAAO;MAAEC,GAAG,EAAE,IAAAO,WAAG,EAACyF,IAAI;IAAE,CAAC;IAClD,OAAO;MAAEjG,IAAI,EAAE,OAAO;MAAEC,GAAG,EAAHA;IAAI,CAAC;EAC/B;EACA,IAAIrG,EAAE,CAACuM,KAAK,CAAC,aAAa,CAAC,CAAC7D,GAAG,IAAI+C,KAAK,EAAE;IACxC,OAAO;MAAErF,IAAI,EAAE,QAAQ;MAAEC,GAAG,EAAHA;IAAI,CAAC;EAChC;EACA,IAAIrG,EAAE,CAACuM,KAAK,CAAC,kBAAkB,CAAC,CAAC7D,GAAG,IAAI+C,KAAK,EAAE;IAC7C,OAAO;MAAErF,IAAI,EAAE,aAAa;MAAEC,GAAG,EAAHA;IAAI,CAAC;EACrC;EACAnG,KAAK,CAACsK,GAAG,CAAC,uBAAuB,GAAG9B,GAAG,CAAC;EACxC,OAAO,IAAI;AACb","ignoreList":[]}
@@ -155,13 +155,13 @@ function loadController(_x, _x2, _x3, _x4, _x5, _x6, _x7) {
155
155
  return _loadController.apply(this, arguments);
156
156
  }
157
157
  function _loadController() {
158
- _loadController = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(doc, kb, subject, noun, context, dom, status) {
158
+ _loadController = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(doc, kb, subject, noun, context, dom, status) {
159
159
  return _regenerator["default"].wrap(function _callee2$(_context2) {
160
160
  while (1) switch (_context2.prev = _context2.next) {
161
161
  case 0:
162
162
  return _context2.abrupt("return", new Promise(function (resolve, reject) {
163
163
  return (0, _acl.getACLorDefault)(doc, /*#__PURE__*/function () {
164
- var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(ok, isDirectACL, targetDoc, targetACLDoc, defaultHolder, defaultACLDoc) {
164
+ var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(ok, isDirectACL, targetDoc, targetACLDoc, defaultHolder, defaultACLDoc) {
165
165
  var targetDirectory, targetIsProtected, prospectiveDefaultHolder, getController;
166
166
  return _regenerator["default"].wrap(function _callee$(_context) {
167
167
  while (1) switch (_context.prev = _context.next) {
@@ -1 +1 @@
1
- {"version":3,"file":"acl-control.js","names":["ns","_interopRequireWildcard","require","utils","_acl","_accessController","style","_debug","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","global","window","preventBrowserDropEventsDone","Symbol","preventBrowserDropEvents","document","log","addEventListener","handleDrop","preventDrag","stopPropagation","preventDefault","dataTransfer","files","length","confirm","dropEffect","shortNameForFolder","x","str","uri","slice","slash","lastIndexOf","ACLControlBox5","subject","context","noun","kb","dom","doc","container","createElement","setAttribute","aclControlBoxContainer","header","appendChild","textContent","concat","label","aclControlBoxHeader","status","aclControlBoxStatus","loadController","then","controller","render","error","innerText","_x","_x2","_x3","_x4","_x5","_x6","_x7","_loadController","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","wrap","_callee2$","_context2","prev","next","abrupt","Promise","resolve","reject","getACLorDefault","_ref","_callee","ok","isDirectACL","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","targetDirectory","targetIsProtected","prospectiveDefaultHolder","getController","_callee$","_context","_getController","AccessController","Error","getDirectory","isStorage","hasProtectedAcl","getProspectiveHolder","sent","t0","warn","stop","_x8","_x9","_x10","_x11","_x12","_x13","split","p","q","indexOf","aclDoc","store","holds","rdf","space","site","setGlobalWindow"],"sources":["../../src/acl/acl-control.ts"],"sourcesContent":["/**\n * Functions for rendering the ACL User Interface.\n * See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view\n * for a screenshot.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport { getACLorDefault, getProspectiveHolder } from './acl'\nimport { Store, NamedNode } from 'rdflib'\nimport { DataBrowserContext } from 'pane-registry'\nimport { AccessController } from './access-controller'\nimport * as style from '../style'\nimport { log, warn } from '../debug'\n\nlet global: Window = window\nconst preventBrowserDropEventsDone = Symbol('prevent double triggering of drop event')\n\n/**\n * See https://coshx.com/preventing-drag-and-drop-disasters-with-a-chrome-userscript\n * Without this dropping anything onto a browser page will cause chrome etc to jump to diff page\n * throwing away all the user's work.\n *\n * In apps which may use drag and drop, this utility takes care of the fact\n * by default in a browser, an uncaught user drop into a browser window\n * causes the browser to lose all its work in that window and navigate to another page\n *\n * @param document The DOM\n * @returns void\n */\nexport function preventBrowserDropEvents (document: HTMLDocument): void {\n log('preventBrowserDropEvents called.')\n if (typeof global !== 'undefined') {\n if (global[preventBrowserDropEventsDone]) return\n global[preventBrowserDropEventsDone] = true\n }\n\n document.addEventListener('drop', handleDrop, false)\n document.addEventListener('dragenter', preventDrag, false)\n document.addEventListener('dragover', preventDrag, false)\n}\n\n/** @internal */\nexport function preventDrag (e) {\n e.stopPropagation()\n e.preventDefault()\n}\n\n/** @internal */\nexport function handleDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n if (\n !global.confirm('Are you sure you want to drop this file here? (Cancel opens it in a new tab)')\n ) {\n e.stopPropagation()\n e.preventDefault()\n log('@@@@ document-level DROP suppressed: ' + e.dataTransfer.dropEffect\n )\n }\n }\n}\n\n/**\n * Get a folder's own filename in the directory tree. Also works for\n * domain names; the URL protocol ('https://') acts as the tree root\n * with short name '/' (see also test/unit/acl/acl-control.test.ts).\n *\n * ```typescript\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder/'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://'))\n * // '/'\n * ```\n *\n * It also works with relative URLs:\n * ```typescript\n * shortNameForFolder($rdf.namedNode('../folder/'))\n * // 'folder'\n * ```\n *\n * @param x RDF Node for the folder URL\n * @returns Short name for the folder\n */\nexport function shortNameForFolder (x: NamedNode): string {\n let str = x.uri\n\n // Strip the trailing slash\n if (str.slice(-1) === '/') {\n str = str.slice(0, -1)\n }\n\n // Remove the path if present, keeping only the part\n // after the last slash.\n const slash = str.lastIndexOf('/')\n if (slash >= 0) {\n str = str.slice(slash + 1)\n }\n // Return the folder's filename, or '/' if nothing found\n // (but see https://github.com/solidos/solid-ui/issues/196\n // regarding whether this happens at the domain root or\n // not)\n return str || '/'\n}\n\n/**\n * A wrapper that retrieves ACL data and uses it\n * to render an [[AccessController]] component.\n * Presumably the '5' is a version number of some sort,\n * but all we know is it was already called ACLControlBox5\n * when it was introduced into solid-ui in\n * https://github.com/solidos/solid-ui/commit/948b874bd93e7bf5160e6e224821b888f07d15f3#diff-4192a29f38a0ababd563b36b47eba5bbR54\n */\nexport function ACLControlBox5 (\n subject: NamedNode,\n context: DataBrowserContext,\n noun: string,\n kb: Store\n): HTMLElement {\n const dom = context.dom\n const doc = subject.doc() // The ACL is actually to the doc describing the thing\n\n const container = dom.createElement('div')\n container.setAttribute('style', style.aclControlBoxContainer)\n\n const header = container.appendChild(dom.createElement('h1'))\n header.textContent = `Sharing for ${noun} ${utils.label(subject)}`\n header.setAttribute('style', style.aclControlBoxHeader)\n\n const status = container.appendChild(dom.createElement('div'))\n status.setAttribute('style', style.aclControlBoxStatus)\n\n try {\n loadController(doc, kb, subject, noun, context, dom, status)\n .then(controller => container.appendChild(controller.render()))\n } catch (error) {\n status.innerText = error\n }\n\n return container\n}\n\nasync function loadController (\n doc: NamedNode,\n kb: Store,\n subject: NamedNode,\n noun: string,\n context: DataBrowserContext,\n dom: HTMLDocument,\n status: HTMLElement\n): Promise<AccessController> {\n return new Promise((resolve, reject) => getACLorDefault(doc, async (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) => {\n if (!ok) {\n return reject(new Error(`Error reading ${isDirectACL ? '' : ' default '}ACL. status ${targetDoc}: ${targetACLDoc}`))\n }\n const targetDirectory = getDirectory(targetDoc as NamedNode)\n const targetIsProtected = isStorage(targetDoc as NamedNode, targetACLDoc as NamedNode, kb) || hasProtectedAcl(targetDoc as NamedNode)\n if (!targetIsProtected && targetDirectory) {\n try {\n const prospectiveDefaultHolder = await getProspectiveHolder(targetDirectory)\n return resolve(getController(prospectiveDefaultHolder))\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n warn(error)\n }\n }\n return resolve(getController())\n\n function getController (prospectiveDefaultHolder?: NamedNode) {\n return new AccessController(subject, noun, context, status, targetIsProtected, targetDoc as NamedNode, targetACLDoc as NamedNode, defaultHolder as NamedNode,\n defaultACLDoc as NamedNode, prospectiveDefaultHolder, kb, dom as HTMLDocument)\n }\n }))\n}\n\nfunction getDirectory (doc: NamedNode): string | null {\n const str = doc.uri.split('#')[0]\n const p = str.slice(0, -1).lastIndexOf('/')\n const q = str.indexOf('//')\n return (q >= 0 && p < q + 2) || p < 0 ? null : str.slice(0, p + 1)\n}\n\nfunction isStorage (doc: NamedNode, aclDoc: NamedNode, store: Store): boolean {\n // @@ TODO: The methods used for targetIsStorage are HACKs - it should not be relied upon, and work is\n // @@ underway to standardize a behavior that does not rely upon this hack\n // @@ hopefully fixed as part of https://github.com/solidos/data-interoperability-panel/issues/10\n return store.holds(doc, ns.rdf('type'), ns.space('Storage'), aclDoc)\n}\n\nfunction hasProtectedAcl (targetDoc: NamedNode): boolean {\n // @@ TODO: This is hacky way of knowing whether or not a certain ACL file can be removed\n // Hopefully we'll find a better, standardized solution to this - https://github.com/solidos/specification/issues/37\n return targetDoc.uri === targetDoc.site().uri\n}\n\n/** @internal */\nexport function setGlobalWindow (window: Window) {\n global = window\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"acl-control.js","names":["ns","_interopRequireWildcard","require","utils","_acl","_accessController","style","_debug","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","global","window","preventBrowserDropEventsDone","Symbol","preventBrowserDropEvents","document","log","addEventListener","handleDrop","preventDrag","stopPropagation","preventDefault","dataTransfer","files","length","confirm","dropEffect","shortNameForFolder","x","str","uri","slice","slash","lastIndexOf","ACLControlBox5","subject","context","noun","kb","dom","doc","container","createElement","setAttribute","aclControlBoxContainer","header","appendChild","textContent","concat","label","aclControlBoxHeader","status","aclControlBoxStatus","loadController","then","controller","render","error","innerText","_x","_x2","_x3","_x4","_x5","_x6","_x7","_loadController","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","wrap","_callee2$","_context2","prev","next","abrupt","Promise","resolve","reject","getACLorDefault","_ref","_callee","ok","isDirectACL","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","targetDirectory","targetIsProtected","prospectiveDefaultHolder","getController","_callee$","_context","_getController","AccessController","Error","getDirectory","isStorage","hasProtectedAcl","getProspectiveHolder","sent","t0","warn","stop","_x8","_x9","_x10","_x11","_x12","_x13","split","p","q","indexOf","aclDoc","store","holds","rdf","space","site","setGlobalWindow"],"sources":["../../src/acl/acl-control.ts"],"sourcesContent":["/**\n * Functions for rendering the ACL User Interface.\n * See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view\n * for a screenshot.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport { getACLorDefault, getProspectiveHolder } from './acl'\nimport { Store, NamedNode } from 'rdflib'\nimport { DataBrowserContext } from 'pane-registry'\nimport { AccessController } from './access-controller'\nimport * as style from '../style'\nimport { log, warn } from '../debug'\n\nlet global: Window = window\nconst preventBrowserDropEventsDone = Symbol('prevent double triggering of drop event')\n\n/**\n * See https://coshx.com/preventing-drag-and-drop-disasters-with-a-chrome-userscript\n * Without this dropping anything onto a browser page will cause chrome etc to jump to diff page\n * throwing away all the user's work.\n *\n * In apps which may use drag and drop, this utility takes care of the fact\n * by default in a browser, an uncaught user drop into a browser window\n * causes the browser to lose all its work in that window and navigate to another page\n *\n * @param document The DOM\n * @returns void\n */\nexport function preventBrowserDropEvents (document: HTMLDocument): void {\n log('preventBrowserDropEvents called.')\n if (typeof global !== 'undefined') {\n if (global[preventBrowserDropEventsDone]) return\n global[preventBrowserDropEventsDone] = true\n }\n\n document.addEventListener('drop', handleDrop, false)\n document.addEventListener('dragenter', preventDrag, false)\n document.addEventListener('dragover', preventDrag, false)\n}\n\n/** @internal */\nexport function preventDrag (e) {\n e.stopPropagation()\n e.preventDefault()\n}\n\n/** @internal */\nexport function handleDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n if (\n !global.confirm('Are you sure you want to drop this file here? (Cancel opens it in a new tab)')\n ) {\n e.stopPropagation()\n e.preventDefault()\n log('@@@@ document-level DROP suppressed: ' + e.dataTransfer.dropEffect\n )\n }\n }\n}\n\n/**\n * Get a folder's own filename in the directory tree. Also works for\n * domain names; the URL protocol ('https://') acts as the tree root\n * with short name '/' (see also test/unit/acl/acl-control.test.ts).\n *\n * ```typescript\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder/'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://'))\n * // '/'\n * ```\n *\n * It also works with relative URLs:\n * ```typescript\n * shortNameForFolder($rdf.namedNode('../folder/'))\n * // 'folder'\n * ```\n *\n * @param x RDF Node for the folder URL\n * @returns Short name for the folder\n */\nexport function shortNameForFolder (x: NamedNode): string {\n let str = x.uri\n\n // Strip the trailing slash\n if (str.slice(-1) === '/') {\n str = str.slice(0, -1)\n }\n\n // Remove the path if present, keeping only the part\n // after the last slash.\n const slash = str.lastIndexOf('/')\n if (slash >= 0) {\n str = str.slice(slash + 1)\n }\n // Return the folder's filename, or '/' if nothing found\n // (but see https://github.com/solidos/solid-ui/issues/196\n // regarding whether this happens at the domain root or\n // not)\n return str || '/'\n}\n\n/**\n * A wrapper that retrieves ACL data and uses it\n * to render an [[AccessController]] component.\n * Presumably the '5' is a version number of some sort,\n * but all we know is it was already called ACLControlBox5\n * when it was introduced into solid-ui in\n * https://github.com/solidos/solid-ui/commit/948b874bd93e7bf5160e6e224821b888f07d15f3#diff-4192a29f38a0ababd563b36b47eba5bbR54\n */\nexport function ACLControlBox5 (\n subject: NamedNode,\n context: DataBrowserContext,\n noun: string,\n kb: Store\n): HTMLElement {\n const dom = context.dom\n const doc = subject.doc() // The ACL is actually to the doc describing the thing\n\n const container = dom.createElement('div')\n container.setAttribute('style', style.aclControlBoxContainer)\n\n const header = container.appendChild(dom.createElement('h1'))\n header.textContent = `Sharing for ${noun} ${utils.label(subject)}`\n header.setAttribute('style', style.aclControlBoxHeader)\n\n const status = container.appendChild(dom.createElement('div'))\n status.setAttribute('style', style.aclControlBoxStatus)\n\n try {\n loadController(doc, kb, subject, noun, context, dom, status)\n .then(controller => container.appendChild(controller.render()))\n } catch (error) {\n status.innerText = error\n }\n\n return container\n}\n\nasync function loadController (\n doc: NamedNode,\n kb: Store,\n subject: NamedNode,\n noun: string,\n context: DataBrowserContext,\n dom: HTMLDocument,\n status: HTMLElement\n): Promise<AccessController> {\n return new Promise((resolve, reject) => getACLorDefault(doc, async (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) => {\n if (!ok) {\n return reject(new Error(`Error reading ${isDirectACL ? '' : ' default '}ACL. status ${targetDoc}: ${targetACLDoc}`))\n }\n const targetDirectory = getDirectory(targetDoc as NamedNode)\n const targetIsProtected = isStorage(targetDoc as NamedNode, targetACLDoc as NamedNode, kb) || hasProtectedAcl(targetDoc as NamedNode)\n if (!targetIsProtected && targetDirectory) {\n try {\n const prospectiveDefaultHolder = await getProspectiveHolder(targetDirectory)\n return resolve(getController(prospectiveDefaultHolder))\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n warn(error)\n }\n }\n return resolve(getController())\n\n function getController (prospectiveDefaultHolder?: NamedNode) {\n return new AccessController(subject, noun, context, status, targetIsProtected, targetDoc as NamedNode, targetACLDoc as NamedNode, defaultHolder as NamedNode,\n defaultACLDoc as NamedNode, prospectiveDefaultHolder, kb, dom as HTMLDocument)\n }\n }))\n}\n\nfunction getDirectory (doc: NamedNode): string | null {\n const str = doc.uri.split('#')[0]\n const p = str.slice(0, -1).lastIndexOf('/')\n const q = str.indexOf('//')\n return (q >= 0 && p < q + 2) || p < 0 ? null : str.slice(0, p + 1)\n}\n\nfunction isStorage (doc: NamedNode, aclDoc: NamedNode, store: Store): boolean {\n // @@ TODO: The methods used for targetIsStorage are HACKs - it should not be relied upon, and work is\n // @@ underway to standardize a behavior that does not rely upon this hack\n // @@ hopefully fixed as part of https://github.com/solidos/data-interoperability-panel/issues/10\n return store.holds(doc, ns.rdf('type'), ns.space('Storage'), aclDoc)\n}\n\nfunction hasProtectedAcl (targetDoc: NamedNode): boolean {\n // @@ TODO: This is hacky way of knowing whether or not a certain ACL file can be removed\n // Hopefully we'll find a better, standardized solution to this - https://github.com/solidos/specification/issues/37\n return targetDoc.uri === targetDoc.site().uri\n}\n\n/** @internal */\nexport function setGlobalWindow (window: Window) {\n global = window\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/acl/acl.js CHANGED
@@ -157,7 +157,7 @@ function ACLunion(list) {
157
157
  */
158
158
  function loadUnionACL(subjectList, callbackFunction) {
159
159
  var aclList = [];
160
- var doList = function doList(list) {
160
+ var _doList = function doList(list) {
161
161
  if (list.length) {
162
162
  var doc = list.shift().doc();
163
163
  getACLorDefault(doc, function (ok, p2, targetDoc, targetACLDoc, defaultHolder, defaultACLDoc) {
@@ -165,14 +165,14 @@ function loadUnionACL(subjectList, callbackFunction) {
165
165
  if (!ok || !defaultHolder || !defaultACLDoc) return callbackFunction(ok, targetACLDoc);
166
166
  var acl = defa ? readACL(defaultHolder, defaultACLDoc) : readACL(targetDoc, targetACLDoc);
167
167
  aclList.push(acl);
168
- doList(list.slice(1));
168
+ _doList(list.slice(1));
169
169
  });
170
170
  } else {
171
171
  // all gone
172
172
  callbackFunction(true, ACLunion(aclList));
173
173
  }
174
174
  };
175
- doList(subjectList);
175
+ _doList(subjectList);
176
176
  }
177
177
 
178
178
  /**
@@ -219,21 +219,21 @@ function makeACLGraphbyCombo(kb, x, byCombo, aclDoc, main, defa) {
219
219
  return u.split('#')[1];
220
220
  }).join('');
221
221
  if (defa && !main) _short += 'Default'; // don't muddle authorizations
222
- var _a = kb.sym(aclDoc.uri + '#' + _short);
223
- kb.add(_a, ns.rdf('type'), ACL('Authorization'), aclDoc);
222
+ var a = kb.sym(aclDoc.uri + '#' + _short);
223
+ kb.add(a, ns.rdf('type'), ACL('Authorization'), aclDoc);
224
224
  if (main) {
225
- kb.add(_a, ACL('accessTo'), x, aclDoc);
225
+ kb.add(a, ACL('accessTo'), x, aclDoc);
226
226
  }
227
227
  if (defa) {
228
- kb.add(_a, ACL('default'), x, aclDoc);
228
+ kb.add(a, ACL('default'), x, aclDoc);
229
229
  }
230
230
  for (var i = 0; i < modeURIs.length; i++) {
231
- kb.add(_a, ACL('mode'), kb.sym(modeURIs[i]), aclDoc);
231
+ kb.add(a, ACL('mode'), kb.sym(modeURIs[i]), aclDoc);
232
232
  }
233
233
  for (var _i = 0; _i < pairs.length; _i++) {
234
234
  var pred = pairs[_i][0];
235
235
  var ag = pairs[_i][1];
236
- kb.add(_a, ACL(pred), kb.sym(ag), aclDoc);
236
+ kb.add(a, ACL(pred), kb.sym(ag), aclDoc);
237
237
  }
238
238
  }
239
239
  }
@@ -404,7 +404,7 @@ function getACLorDefault(doc, callbackFunction) {
404
404
  if (!ok) return callbackFunction(false, false, status, message);
405
405
 
406
406
  // Recursively search for the ACL file which gives default access
407
- var tryParent = function tryParent(uri) {
407
+ var _tryParent = function tryParent(uri) {
408
408
  if (uri.slice(-1) === '/') {
409
409
  uri = uri.slice(0, -1);
410
410
  }
@@ -421,7 +421,7 @@ function getACLorDefault(doc, callbackFunction) {
421
421
  } else if (status === 403) {
422
422
  return callbackFunction(false, true, status, "( default ACL file FORBIDDEN. Stop.".concat(uri, ")"));
423
423
  } else if (status === 404) {
424
- return tryParent(uri);
424
+ return _tryParent(uri);
425
425
  } else if (status !== 200) {
426
426
  return callbackFunction(false, true, status, "Error status '".concat(status, "' searching for default for ").concat(doc2));
427
427
  }
@@ -429,7 +429,7 @@ function getACLorDefault(doc, callbackFunction) {
429
429
  // statusBlock.textContent += (" ACCESS set at " + uri + ". End search.")
430
430
  var defaults = kb.each(undefined, ACL('default'), kb.sym(uri), defaultACLDoc).concat(kb.each(undefined, ACL('defaultForNew'), kb.sym(uri), defaultACLDoc));
431
431
  if (!defaults.length) {
432
- return tryParent(uri); // Keep searching
432
+ return _tryParent(uri); // Keep searching
433
433
  }
434
434
  var defaultHolder = kb.sym(uri);
435
435
  return callbackFunction(true, false, doc, aclDoc, defaultHolder, defaultACLDoc);
@@ -439,7 +439,7 @@ function getACLorDefault(doc, callbackFunction) {
439
439
  if (!ok) {
440
440
  return callbackFunction(false, false, status, "Error accessing Access Control information for ".concat(doc, ") ").concat(message));
441
441
  } else if (status === 404) {
442
- tryParent(doc.uri); // @@ construct default one - the server should do that
442
+ _tryParent(doc.uri); // @@ construct default one - the server should do that
443
443
  } else if (status === 403) {
444
444
  return callbackFunction(false, false, status, "(Sharing not available to you)".concat(message));
445
445
  } else if (status !== 200) {
@@ -495,7 +495,7 @@ function getProspectiveHolder(_x) {
495
495
  return _getProspectiveHolder.apply(this, arguments);
496
496
  }
497
497
  function _getProspectiveHolder() {
498
- _getProspectiveHolder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(targetDirectory) {
498
+ _getProspectiveHolder = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(targetDirectory) {
499
499
  return _regenerator["default"].wrap(function _callee$(_context) {
500
500
  while (1) switch (_context.prev = _context.next) {
501
501
  case 0: