solid-ui 2.4.16-9d8eda18 → 2.4.16-9e276990

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 (126) hide show
  1. package/README.md +2 -2
  2. package/lib/acl/access-controller.d.ts.map +1 -1
  3. package/lib/acl/access-controller.js +5 -1
  4. package/lib/acl/access-controller.js.map +1 -1
  5. package/lib/acl/access-groups.d.ts +2 -2
  6. package/lib/acl/access-groups.d.ts.map +1 -1
  7. package/lib/acl/access-groups.js +1 -5
  8. package/lib/acl/access-groups.js.map +1 -1
  9. package/lib/acl/acl.d.ts.map +1 -1
  10. package/lib/acl/acl.js +4 -2
  11. package/lib/acl/acl.js.map +1 -1
  12. package/lib/acl/add-agent-buttons.d.ts.map +1 -1
  13. package/lib/acl/add-agent-buttons.js +5 -5
  14. package/lib/acl/add-agent-buttons.js.map +1 -1
  15. package/lib/authn/authSession.d.ts +4 -0
  16. package/lib/authn/authSession.d.ts.map +1 -0
  17. package/lib/authn/authSession.js +25 -0
  18. package/lib/authn/authSession.js.map +1 -0
  19. package/lib/authn/authn.d.ts +193 -0
  20. package/lib/authn/authn.d.ts.map +1 -0
  21. package/lib/authn/authn.js +2238 -0
  22. package/lib/authn/authn.js.map +1 -0
  23. package/lib/{signup → authn}/config-default.js +0 -0
  24. package/lib/authn/config-default.js.map +1 -0
  25. package/lib/authn/index.d.ts +35 -0
  26. package/lib/authn/index.d.ts.map +1 -0
  27. package/lib/authn/index.js +44 -0
  28. package/lib/authn/index.js.map +1 -0
  29. package/lib/{signup → authn}/signup.js +0 -0
  30. package/lib/authn/signup.js.map +1 -0
  31. package/lib/authn/types.d.ts +25 -0
  32. package/lib/authn/types.d.ts.map +1 -0
  33. package/lib/authn/types.js +6 -0
  34. package/lib/authn/types.js.map +1 -0
  35. package/lib/chat/bookmarks.js +22 -20
  36. package/lib/chat/bookmarks.js.map +1 -1
  37. package/lib/chat/chatLogic.js +15 -13
  38. package/lib/chat/chatLogic.js.map +1 -1
  39. package/lib/chat/dateFolder.js +10 -10
  40. package/lib/chat/dateFolder.js.map +1 -1
  41. package/lib/chat/infinite.js +16 -14
  42. package/lib/chat/infinite.js.map +1 -1
  43. package/lib/chat/message.js +21 -17
  44. package/lib/chat/message.js.map +1 -1
  45. package/lib/chat/messageTools.js +21 -16
  46. package/lib/chat/messageTools.js.map +1 -1
  47. package/lib/chat/thread.js +24 -24
  48. package/lib/chat/thread.js.map +1 -1
  49. package/lib/create/create.d.ts.map +1 -1
  50. package/lib/create/create.js +9 -9
  51. package/lib/create/create.js.map +1 -1
  52. package/lib/folders.js +6 -2
  53. package/lib/folders.js.map +1 -1
  54. package/lib/footer/index.js +4 -4
  55. package/lib/footer/index.js.map +1 -1
  56. package/lib/header/index.d.ts.map +1 -1
  57. package/lib/header/index.js +8 -11
  58. package/lib/header/index.js.map +1 -1
  59. package/lib/index.d.ts +4 -4
  60. package/lib/index.d.ts.map +1 -1
  61. package/lib/index.js +34 -27
  62. package/lib/index.js.map +1 -1
  63. package/lib/logic.d.ts +8 -0
  64. package/lib/logic.d.ts.map +1 -0
  65. package/lib/logic.js +79 -0
  66. package/lib/logic.js.map +1 -0
  67. package/lib/matrix/matrix.js +2 -2
  68. package/lib/matrix/matrix.js.map +1 -1
  69. package/lib/messageArea.js +10 -9
  70. package/lib/messageArea.js.map +1 -1
  71. package/lib/pad.js +2 -2
  72. package/lib/pad.js.map +1 -1
  73. package/lib/participation.d.ts.map +1 -1
  74. package/lib/participation.js +63 -33
  75. package/lib/participation.js.map +1 -1
  76. package/lib/preferences.js +8 -8
  77. package/lib/preferences.js.map +1 -1
  78. package/lib/table.js +3 -2
  79. package/lib/table.js.map +1 -1
  80. package/lib/tabs.js +3 -3
  81. package/lib/tabs.js.map +1 -1
  82. package/lib/utils/index.js +6 -6
  83. package/lib/utils/index.js.map +1 -1
  84. package/lib/utils/label.js +4 -4
  85. package/lib/utils/label.js.map +1 -1
  86. package/lib/versionInfo.js +9 -9
  87. package/lib/versionInfo.js.map +1 -1
  88. package/lib/webpack-bundle.js +84796 -68391
  89. package/lib/webpack-bundle.js.map +1 -1
  90. package/lib/widgets/buttons.js +16 -16
  91. package/lib/widgets/buttons.js.map +1 -1
  92. package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
  93. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  94. package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
  95. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  96. package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
  97. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  98. package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
  99. package/lib/widgets/forms/autocomplete/language.js +11 -6
  100. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  101. package/lib/widgets/forms/autocomplete/publicData.d.ts +1 -1
  102. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
  103. package/lib/widgets/forms/autocomplete/publicData.js +22 -14
  104. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  105. package/lib/widgets/forms/basic.d.ts +1 -1
  106. package/lib/widgets/forms/basic.d.ts.map +1 -1
  107. package/lib/widgets/forms/basic.js +2 -2
  108. package/lib/widgets/forms/basic.js.map +1 -1
  109. package/lib/widgets/forms/comment.d.ts +1 -1
  110. package/lib/widgets/forms/comment.js +3 -3
  111. package/lib/widgets/forms/comment.js.map +1 -1
  112. package/lib/widgets/forms/fieldFunction.js +2 -2
  113. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  114. package/lib/widgets/forms/formStyle.js +3 -3
  115. package/lib/widgets/forms/formStyle.js.map +1 -1
  116. package/lib/widgets/forms.js +10 -10
  117. package/lib/widgets/forms.js.map +1 -1
  118. package/lib/widgets/peoplePicker.js +2 -2
  119. package/lib/widgets/peoplePicker.js.map +1 -1
  120. package/package.json +2 -2
  121. package/lib/login/login.d.ts +0 -130
  122. package/lib/login/login.d.ts.map +0 -1
  123. package/lib/login/login.js +0 -1412
  124. package/lib/login/login.js.map +0 -1
  125. package/lib/signup/config-default.js.map +0 -1
  126. package/lib/signup/signup.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/widgets/peoplePicker.js"],"names":["kb","solidLogicSingleton","store","PeoplePicker","element","typeIndex","groupPickedCb","options","selectedgroup","onSelectGroup","bind","container","document","createElement","style","maxWidth","minHeight","outline","display","flexDirection","selectedGroup","Group","render","changeGroupButton","textContent","addEventListener","_event","appendChild","findAddressBook","then","book","chooseExistingGroupButton","margin","GroupPicker","createNewGroupButton","createNewGroup","defaultNewGroupName","group","GroupBuilder","errorBody","innerHTML","err","Promise","resolve","reject","fetcher","nowOrWhenFetched","ok","bookRegistration","any","ns","solid","vcard","Error","load","_xhr","indexes","groupIndex","groupContainer","rdf","sym","uri","uuid","v4","slice","name","patchPromises","doc","map","typeStatement","st","nameStatement","includesGroupStatement","toIns","equals","patch","forEach","add","all","debug","log","xhr","responseURL","loadGroups","groups","groupButton","handleClickGroup","each","getWithDefault","value","doneBuildingCb","groupChangedCb","onGroupChanged","changeType","agent","dropContainer","uris","groupNameInput","type","event","setGroupName","target","groupNameLabel","match","statement","webIdNode","object","personDiv","Person","handleRemove","copy","escape","doneBuildingButton","webId","namedNode","rdfClass","foaf","holdsStatement","why","toDel","remove","errorMessage","updatePromises","namedGraph","oldNameStatements","newNameStatement","literal","_solidResponse","removeStatements","imgSrc","iconBase","profileImg","src","width","height","nameSpan","flexGrow","removeButton","subject","predicate","defaultValue","url","updater","update","success","dir"],"mappings":"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","sourcesContent":["/**\n *\n * People Picker Pane\n *\n * This pane offers a mechanism for selecting a set of individuals, groups, or\n * organizations to take some action on.\n *\n * Assumptions\n * - Assumes that the user has a type index entry for vcard:AddressBook. @@ bad assuption\n *\n */\nimport escape from 'escape-html'\nimport uuid from 'uuid'\nimport * as rdf from 'rdflib'\nimport * as debug from '../debug'\n\nimport { makeDropTarget } from './dragAndDrop'\nimport { errorMessageBlock } from './error'\nimport { iconBase } from '../iconBase'\nimport * as ns from '../ns'\nimport { solidLogicSingleton } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\nexport class PeoplePicker {\n constructor (element, typeIndex, groupPickedCb, options) { // @@ can't expect typeindex to be passed\n this.options = options || {}\n this.element = element\n this.typeIndex = typeIndex\n this.groupPickedCb = groupPickedCb\n this.selectedgroup = this.options.selectedgroup // current selected group if any\n this.onSelectGroup = this.onSelectGroup.bind(this)\n }\n\n render () {\n const container = document.createElement('div')\n container.style.maxWidth = '350px'\n container.style.minHeight = '200px'\n container.style.outline = '1px solid black'\n container.style.display = 'flex'\n\n if (this.selectedgroup) {\n container.style.flexDirection = 'column'\n const selectedGroup = document.createElement('div')\n new Group(selectedGroup, this.selectedgroup).render()\n const changeGroupButton = document.createElement('button')\n changeGroupButton.textContent = escape('Change group')\n changeGroupButton.addEventListener('click', _event => {\n this.selectedgroup = null\n this.render()\n })\n container.appendChild(selectedGroup)\n container.appendChild(changeGroupButton)\n } else {\n this.findAddressBook(this.typeIndex)\n .then(({ book }) => {\n const chooseExistingGroupButton = document.createElement('button')\n chooseExistingGroupButton.textContent = escape(\n 'Pick an existing group'\n )\n chooseExistingGroupButton.style.margin = 'auto'\n chooseExistingGroupButton.addEventListener('click', _event => {\n new GroupPicker(container, book, this.onSelectGroup).render()\n })\n\n const createNewGroupButton = document.createElement('button')\n createNewGroupButton.textContent = escape('Create a new group')\n createNewGroupButton.style.margin = 'auto'\n createNewGroupButton.addEventListener('click', _event => {\n this.createNewGroup(book, this.options.defaultNewGroupName)\n .then(({ group }) => {\n new GroupBuilder(\n this.element,\n book,\n group,\n this.onSelectGroup\n ).render()\n })\n .catch(errorBody => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Error creating a new group. (${errorBody})`)\n )\n )\n })\n })\n\n container.appendChild(chooseExistingGroupButton)\n container.appendChild(createNewGroupButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could find your groups. (${err})`)\n )\n )\n })\n }\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n\n findAddressBook (typeIndex) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(typeIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const bookRegistration = kb.any(\n null,\n ns.solid('forClass'),\n ns.vcard('AddressBook')\n )\n if (!bookRegistration) {\n return reject(\n new Error(\n 'no address book registered in the solid type index ' + typeIndex\n )\n )\n }\n const book = kb.any(bookRegistration, ns.solid('instance'))\n if (!book) {\n return reject(new Error('incomplete address book registration'))\n }\n kb.fetcher\n .load(book)\n .then(function (_xhr) {\n return resolve({ book })\n })\n .catch(function (err) {\n return reject(new Error('Could not load address book ' + err))\n })\n })\n })\n }\n\n createNewGroup (book, defaultNewGroupName) {\n const { groupIndex, groupContainer } = indexes(book)\n const group = rdf.sym(\n `${groupContainer.uri}${uuid.v4().slice(0, 8)}.ttl#this`\n )\n const name = defaultNewGroupName || 'Untitled Group'\n\n // NOTE that order matters here. Unfortunately this type of update is\n // non-atomic in that solid requires us to send two PATCHes, either of which\n // might fail.\n const patchPromises = [group.doc(), groupIndex].map(doc => {\n const typeStatement = rdf.st(group, ns.rdf('type'), ns.vcard('Group'), doc)\n const nameStatement = rdf.st(group, ns.vcard('fn'), name, group.doc(), doc)\n const includesGroupStatement = rdf.st(\n book,\n ns.vcard('includesGroup'),\n group,\n doc\n )\n const toIns = doc.equals(groupIndex)\n ? [typeStatement, nameStatement, includesGroupStatement]\n : [typeStatement, nameStatement]\n return patch(doc.uri, { toIns }).then(() => {\n toIns.forEach(st => {\n kb.add(st)\n })\n })\n })\n return Promise.all(patchPromises)\n .then(() => ({ group }))\n .catch(err => {\n debug.log('Could not create new group. PATCH failed ' + err)\n throw new Error(\n `Couldn't create new group. PATCH failed for (${\n err.xhr ? err.xhr.responseURL : ''\n } )`\n )\n })\n }\n\n onSelectGroup (group) {\n this.selectedgroup = group\n this.groupPickedCb(group)\n this.render()\n }\n}\n\nexport class GroupPicker {\n constructor (element, book, onSelectGroup) {\n this.element = element\n this.book = book\n this.onSelectGroup = onSelectGroup\n }\n\n render () {\n this.loadGroups()\n .then(groups => {\n // render the groups\n const container = document.createElement('div')\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n groups.forEach(group => {\n const groupButton = document.createElement('button')\n groupButton.addEventListener('click', this.handleClickGroup(group))\n new Group(groupButton, group).render()\n container.appendChild(groupButton)\n })\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`There was an error loading your groups. (${err})`)\n )\n )\n })\n return this\n }\n\n loadGroups () {\n return new Promise((resolve, reject) => {\n const { groupIndex } = indexes(this.book)\n kb.fetcher.nowOrWhenFetched(groupIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const groups = kb.each(this.book, ns.vcard('includesGroup'))\n return resolve(groups)\n })\n })\n }\n\n handleClickGroup (group) {\n return _event => {\n this.onSelectGroup(group)\n }\n }\n}\n\nexport class Group {\n constructor (element, group) {\n this.element = element\n this.group = group\n }\n\n render () {\n const container = document.createElement('div')\n container.textContent = escape(\n // @@@@@ need to escape??\n getWithDefault(this.group, ns.vcard('fn'), `[${this.group.value}]`)\n )\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nexport class GroupBuilder {\n constructor (element, book, group, doneBuildingCb, groupChangedCb) {\n this.element = element\n this.book = book\n this.group = group\n this.onGroupChanged = (err, changeType, agent) => {\n if (groupChangedCb) {\n groupChangedCb(err, changeType, agent)\n }\n }\n this.groupChangedCb = groupChangedCb\n this.doneBuildingCb = doneBuildingCb\n }\n\n refresh () {\n // TODO: implement\n }\n\n render () {\n const dropContainer = document.createElement('div')\n dropContainer.style.maxWidth = '350px'\n dropContainer.style.minHeight = '200px'\n dropContainer.style.outline = '1px solid black'\n dropContainer.style.display = 'flex'\n dropContainer.style.flexDirection = 'column'\n\n makeDropTarget(dropContainer, uris => {\n uris.forEach(uri => {\n this.add(uri).catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could not add the given WebId. (${err})`)\n )\n )\n })\n })\n })\n\n const groupNameInput = document.createElement('input')\n groupNameInput.type = 'text'\n groupNameInput.value = getWithDefault(\n this.group,\n ns.vcard('fn'),\n 'Untitled Group'\n )\n groupNameInput.addEventListener('change', event => {\n this.setGroupName(event.target.value).catch(err => {\n this.element.appendChild(\n errorMessageBlock(document, `Error changing group name. (${err})`)\n )\n })\n })\n const groupNameLabel = document.createElement('label')\n groupNameLabel.textContent = escape('Group Name:')\n groupNameLabel.appendChild(groupNameInput)\n dropContainer.appendChild(groupNameLabel)\n\n if (kb.any(this.group, ns.vcard('hasMember'))) {\n kb.match(this.group, ns.vcard('hasMember')).forEach(statement => {\n const webIdNode = statement.object\n const personDiv = document.createElement('div')\n new Person(personDiv, webIdNode, this.handleRemove(webIdNode)).render()\n dropContainer.appendChild(personDiv)\n })\n } else {\n const copy = document.createElement('p')\n copy.textContent = escape`\n To add someone to this group, drag and drop their WebID URL onto the box.\n `\n dropContainer.appendChild(copy)\n }\n\n const doneBuildingButton = document.createElement('button')\n doneBuildingButton.textContent = escape('Done')\n doneBuildingButton.addEventListener('click', _event => {\n this.doneBuildingCb(this.group)\n })\n dropContainer.appendChild(doneBuildingButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(dropContainer)\n return this\n }\n\n add (webId) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(webId, (ok, err) => {\n if (!ok) {\n this.onGroupChanged(err)\n return reject(err)\n }\n // make sure it's a valid person, group, or entity (for now just handle\n // webId)\n const webIdNode = rdf.namedNode(webId)\n const rdfClass = kb.any(webIdNode, ns.rdf('type'))\n if (!rdfClass || !rdfClass.equals(ns.foaf('Person'))) {\n return reject(\n new Error(\n `Only people supported right now. (tried to add something of type ${rdfClass.value})`\n )\n )\n }\n return resolve(webIdNode)\n })\n }).then(webIdNode => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n if (kb.holdsStatement(statement)) {\n return webIdNode\n }\n return patch(this.group.doc().uri, { toIns: [statement] }).then(() => {\n statement.why = this.group.doc()\n kb.add(statement)\n this.onGroupChanged(null, 'added', webIdNode)\n this.render()\n })\n })\n }\n\n handleRemove (webIdNode) {\n return _event => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n return patch(this.group.doc().uri, { toDel: [statement] })\n .then(() => {\n kb.remove(statement)\n this.onGroupChanged(null, 'removed', webIdNode)\n this.render()\n return true\n })\n .catch(err => {\n const name = kb.any(webIdNode, ns.foaf('name'))\n const errorMessage =\n name && name.value\n ? `Could not remove ${name.value}. (${err})`\n : `Could not remove ${webIdNode.value}. (${err})`\n throw new Error(errorMessage)\n })\n }\n }\n\n setGroupName (name) {\n const { groupIndex } = indexes(this.book)\n const updatePromises = [this.group.doc(), groupIndex].map(namedGraph => {\n const oldNameStatements = kb.match(\n this.group,\n ns.vcard('fn'),\n null,\n namedGraph\n )\n const newNameStatement = rdf.st(\n this.group,\n ns.vcard('fn'),\n rdf.literal(name)\n )\n return patch(namedGraph.value, {\n toDel: oldNameStatements,\n toIns: [newNameStatement]\n }).then(_solidResponse => {\n kb.removeStatements(oldNameStatements)\n newNameStatement.why = namedGraph\n kb.add(newNameStatement)\n })\n })\n return Promise.all(updatePromises)\n }\n}\n// @ignore exporting this only for the unit test\n// @@ TODO maybe I should move this down at end, but for\n// now I will leave it where it was\nexport class Person {\n constructor (element, webIdNode, handleRemove) {\n this.webIdNode = webIdNode\n this.element = element\n this.handleRemove = handleRemove\n }\n\n render () {\n const container = document.createElement('div')\n container.style.display = 'flex'\n\n // TODO: take a look at UI.widgets.setName\n const imgSrc = getWithDefault(\n this.webIdNode,\n ns.foaf('img'),\n iconBase + 'noun_15059.svg'\n )\n const profileImg = document.createElement('img')\n profileImg.src = escape(imgSrc)\n profileImg.width = '50'\n profileImg.height = '50'\n profileImg.style.margin = '5px'\n\n // TODO: take a look at UI.widgets.setImage\n const name = getWithDefault(\n this.webIdNode,\n ns.foaf('name'),\n `[${this.webIdNode}]`\n )\n const nameSpan = document.createElement('span')\n nameSpan.innerHTML = escape(name)\n nameSpan.style.flexGrow = '1'\n nameSpan.style.margin = 'auto 0'\n\n const removeButton = document.createElement('button')\n removeButton.textContent = 'Remove'\n removeButton.addEventListener('click', _event =>\n this.handleRemove().catch(err => {\n this.element.appendChild(errorMessageBlock(document, escape(`${err}`)))\n })\n )\n removeButton.style.margin = '5px'\n\n container.appendChild(profileImg)\n container.appendChild(nameSpan)\n container.appendChild(removeButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nfunction getWithDefault (subject, predicate, defaultValue) {\n const object = kb.any(subject, predicate)\n return object ? object.value : defaultValue\n}\n\nfunction patch (url, { toDel, toIns }) {\n return new Promise((resolve, reject) => {\n kb.updater.update(toDel, toIns, (uri, success, errorMessage) => {\n if (!success) {\n return reject(\n new Error(`PATCH failed for resource <${uri}>: ${errorMessage}`)\n )\n }\n resolve()\n })\n })\n // return webClient.patch(url, toDel, toIns)\n // .then(solidResponse => {\n // const status = solidResponse.xhr.status\n // if (status < 200 || status >= 400) {\n // const err = new Error(`PATCH failed for resource <${solidResponse.url}>`)\n // err.solidResponse = solidResponse\n // throw err\n // }\n // })\n}\n\nfunction indexes (book) {\n return {\n // bookIndex: book,\n groupIndex: kb.any(book, ns.vcard('groupIndex')),\n groupContainer: kb.sym(book.dir().uri + 'Group/')\n }\n}\n"],"file":"peoplePicker.js"}
1
+ {"version":3,"sources":["../../src/widgets/peoplePicker.js"],"names":["kb","solidLogicSingleton","store","PeoplePicker","element","typeIndex","groupPickedCb","options","selectedgroup","onSelectGroup","bind","container","document","createElement","style","maxWidth","minHeight","outline","display","flexDirection","selectedGroup","Group","render","changeGroupButton","textContent","addEventListener","_event","appendChild","findAddressBook","then","book","chooseExistingGroupButton","margin","GroupPicker","createNewGroupButton","createNewGroup","defaultNewGroupName","group","GroupBuilder","errorBody","innerHTML","err","Promise","resolve","reject","fetcher","nowOrWhenFetched","ok","bookRegistration","any","ns","solid","vcard","Error","load","_xhr","indexes","groupIndex","groupContainer","rdf","sym","uri","uuid","v4","slice","name","patchPromises","doc","map","typeStatement","st","nameStatement","includesGroupStatement","toIns","equals","patch","forEach","add","all","debug","log","xhr","responseURL","loadGroups","groups","groupButton","handleClickGroup","each","getWithDefault","value","doneBuildingCb","groupChangedCb","onGroupChanged","changeType","agent","dropContainer","uris","groupNameInput","type","event","setGroupName","target","groupNameLabel","match","statement","webIdNode","object","personDiv","Person","handleRemove","copy","escape","doneBuildingButton","webId","namedNode","rdfClass","foaf","holdsStatement","why","toDel","remove","errorMessage","updatePromises","namedGraph","oldNameStatements","newNameStatement","literal","_solidResponse","removeStatements","imgSrc","iconBase","profileImg","src","width","height","nameSpan","flexGrow","removeButton","subject","predicate","defaultValue","url","updater","update","success","dir"],"mappings":"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","sourcesContent":["/**\n *\n * People Picker Pane\n *\n * This pane offers a mechanism for selecting a set of individuals, groups, or\n * organizations to take some action on.\n *\n * Assumptions\n * - Assumes that the user has a type index entry for vcard:AddressBook. @@ bad assuption\n *\n */\nimport escape from 'escape-html'\nimport uuid from 'uuid'\nimport * as rdf from 'rdflib'\nimport * as debug from '../debug'\n\nimport { makeDropTarget } from './dragAndDrop'\nimport { errorMessageBlock } from './error'\nimport { iconBase } from '../iconBase'\nimport * as ns from '../ns'\nimport { solidLogicSingleton } from '../logic'\n\nconst kb = solidLogicSingleton.store\n\nexport class PeoplePicker {\n constructor (element, typeIndex, groupPickedCb, options) { // @@ can't expect typeindex to be passed\n this.options = options || {}\n this.element = element\n this.typeIndex = typeIndex\n this.groupPickedCb = groupPickedCb\n this.selectedgroup = this.options.selectedgroup // current selected group if any\n this.onSelectGroup = this.onSelectGroup.bind(this)\n }\n\n render () {\n const container = document.createElement('div')\n container.style.maxWidth = '350px'\n container.style.minHeight = '200px'\n container.style.outline = '1px solid black'\n container.style.display = 'flex'\n\n if (this.selectedgroup) {\n container.style.flexDirection = 'column'\n const selectedGroup = document.createElement('div')\n new Group(selectedGroup, this.selectedgroup).render()\n const changeGroupButton = document.createElement('button')\n changeGroupButton.textContent = escape('Change group')\n changeGroupButton.addEventListener('click', _event => {\n this.selectedgroup = null\n this.render()\n })\n container.appendChild(selectedGroup)\n container.appendChild(changeGroupButton)\n } else {\n this.findAddressBook(this.typeIndex)\n .then(({ book }) => {\n const chooseExistingGroupButton = document.createElement('button')\n chooseExistingGroupButton.textContent = escape(\n 'Pick an existing group'\n )\n chooseExistingGroupButton.style.margin = 'auto'\n chooseExistingGroupButton.addEventListener('click', _event => {\n new GroupPicker(container, book, this.onSelectGroup).render()\n })\n\n const createNewGroupButton = document.createElement('button')\n createNewGroupButton.textContent = escape('Create a new group')\n createNewGroupButton.style.margin = 'auto'\n createNewGroupButton.addEventListener('click', _event => {\n this.createNewGroup(book, this.options.defaultNewGroupName)\n .then(({ group }) => {\n new GroupBuilder(\n this.element,\n book,\n group,\n this.onSelectGroup\n ).render()\n })\n .catch(errorBody => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Error creating a new group. (${errorBody})`)\n )\n )\n })\n })\n\n container.appendChild(chooseExistingGroupButton)\n container.appendChild(createNewGroupButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could find your groups. (${err})`)\n )\n )\n })\n }\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n\n findAddressBook (typeIndex) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(typeIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const bookRegistration = kb.any(\n null,\n ns.solid('forClass'),\n ns.vcard('AddressBook')\n )\n if (!bookRegistration) {\n return reject(\n new Error(\n 'no address book registered in the solid type index ' + typeIndex\n )\n )\n }\n const book = kb.any(bookRegistration, ns.solid('instance'))\n if (!book) {\n return reject(new Error('incomplete address book registration'))\n }\n kb.fetcher\n .load(book)\n .then(function (_xhr) {\n return resolve({ book })\n })\n .catch(function (err) {\n return reject(new Error('Could not load address book ' + err))\n })\n })\n })\n }\n\n createNewGroup (book, defaultNewGroupName) {\n const { groupIndex, groupContainer } = indexes(book)\n const group = rdf.sym(\n `${groupContainer.uri}${uuid.v4().slice(0, 8)}.ttl#this`\n )\n const name = defaultNewGroupName || 'Untitled Group'\n\n // NOTE that order matters here. Unfortunately this type of update is\n // non-atomic in that solid requires us to send two PATCHes, either of which\n // might fail.\n const patchPromises = [group.doc(), groupIndex].map(doc => {\n const typeStatement = rdf.st(group, ns.rdf('type'), ns.vcard('Group'), doc)\n const nameStatement = rdf.st(group, ns.vcard('fn'), name, group.doc(), doc)\n const includesGroupStatement = rdf.st(\n book,\n ns.vcard('includesGroup'),\n group,\n doc\n )\n const toIns = doc.equals(groupIndex)\n ? [typeStatement, nameStatement, includesGroupStatement]\n : [typeStatement, nameStatement]\n return patch(doc.uri, { toIns }).then(() => {\n toIns.forEach(st => {\n kb.add(st)\n })\n })\n })\n return Promise.all(patchPromises)\n .then(() => ({ group }))\n .catch(err => {\n debug.log('Could not create new group. PATCH failed ' + err)\n throw new Error(\n `Couldn't create new group. PATCH failed for (${\n err.xhr ? err.xhr.responseURL : ''\n } )`\n )\n })\n }\n\n onSelectGroup (group) {\n this.selectedgroup = group\n this.groupPickedCb(group)\n this.render()\n }\n}\n\nexport class GroupPicker {\n constructor (element, book, onSelectGroup) {\n this.element = element\n this.book = book\n this.onSelectGroup = onSelectGroup\n }\n\n render () {\n this.loadGroups()\n .then(groups => {\n // render the groups\n const container = document.createElement('div')\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n groups.forEach(group => {\n const groupButton = document.createElement('button')\n groupButton.addEventListener('click', this.handleClickGroup(group))\n new Group(groupButton, group).render()\n container.appendChild(groupButton)\n })\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`There was an error loading your groups. (${err})`)\n )\n )\n })\n return this\n }\n\n loadGroups () {\n return new Promise((resolve, reject) => {\n const { groupIndex } = indexes(this.book)\n kb.fetcher.nowOrWhenFetched(groupIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const groups = kb.each(this.book, ns.vcard('includesGroup'))\n return resolve(groups)\n })\n })\n }\n\n handleClickGroup (group) {\n return _event => {\n this.onSelectGroup(group)\n }\n }\n}\n\nexport class Group {\n constructor (element, group) {\n this.element = element\n this.group = group\n }\n\n render () {\n const container = document.createElement('div')\n container.textContent = escape(\n // @@@@@ need to escape??\n getWithDefault(this.group, ns.vcard('fn'), `[${this.group.value}]`)\n )\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nexport class GroupBuilder {\n constructor (element, book, group, doneBuildingCb, groupChangedCb) {\n this.element = element\n this.book = book\n this.group = group\n this.onGroupChanged = (err, changeType, agent) => {\n if (groupChangedCb) {\n groupChangedCb(err, changeType, agent)\n }\n }\n this.groupChangedCb = groupChangedCb\n this.doneBuildingCb = doneBuildingCb\n }\n\n refresh () {\n // TODO: implement\n }\n\n render () {\n const dropContainer = document.createElement('div')\n dropContainer.style.maxWidth = '350px'\n dropContainer.style.minHeight = '200px'\n dropContainer.style.outline = '1px solid black'\n dropContainer.style.display = 'flex'\n dropContainer.style.flexDirection = 'column'\n\n makeDropTarget(dropContainer, uris => {\n uris.forEach(uri => {\n this.add(uri).catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could not add the given WebId. (${err})`)\n )\n )\n })\n })\n })\n\n const groupNameInput = document.createElement('input')\n groupNameInput.type = 'text'\n groupNameInput.value = getWithDefault(\n this.group,\n ns.vcard('fn'),\n 'Untitled Group'\n )\n groupNameInput.addEventListener('change', event => {\n this.setGroupName(event.target.value).catch(err => {\n this.element.appendChild(\n errorMessageBlock(document, `Error changing group name. (${err})`)\n )\n })\n })\n const groupNameLabel = document.createElement('label')\n groupNameLabel.textContent = escape('Group Name:')\n groupNameLabel.appendChild(groupNameInput)\n dropContainer.appendChild(groupNameLabel)\n\n if (kb.any(this.group, ns.vcard('hasMember'))) {\n kb.match(this.group, ns.vcard('hasMember')).forEach(statement => {\n const webIdNode = statement.object\n const personDiv = document.createElement('div')\n new Person(personDiv, webIdNode, this.handleRemove(webIdNode)).render()\n dropContainer.appendChild(personDiv)\n })\n } else {\n const copy = document.createElement('p')\n copy.textContent = escape`\n To add someone to this group, drag and drop their WebID URL onto the box.\n `\n dropContainer.appendChild(copy)\n }\n\n const doneBuildingButton = document.createElement('button')\n doneBuildingButton.textContent = escape('Done')\n doneBuildingButton.addEventListener('click', _event => {\n this.doneBuildingCb(this.group)\n })\n dropContainer.appendChild(doneBuildingButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(dropContainer)\n return this\n }\n\n add (webId) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(webId, (ok, err) => {\n if (!ok) {\n this.onGroupChanged(err)\n return reject(err)\n }\n // make sure it's a valid person, group, or entity (for now just handle\n // webId)\n const webIdNode = rdf.namedNode(webId)\n const rdfClass = kb.any(webIdNode, ns.rdf('type'))\n if (!rdfClass || !rdfClass.equals(ns.foaf('Person'))) {\n return reject(\n new Error(\n `Only people supported right now. (tried to add something of type ${rdfClass.value})`\n )\n )\n }\n return resolve(webIdNode)\n })\n }).then(webIdNode => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n if (kb.holdsStatement(statement)) {\n return webIdNode\n }\n return patch(this.group.doc().uri, { toIns: [statement] }).then(() => {\n statement.why = this.group.doc()\n kb.add(statement)\n this.onGroupChanged(null, 'added', webIdNode)\n this.render()\n })\n })\n }\n\n handleRemove (webIdNode) {\n return _event => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n return patch(this.group.doc().uri, { toDel: [statement] })\n .then(() => {\n kb.remove(statement)\n this.onGroupChanged(null, 'removed', webIdNode)\n this.render()\n return true\n })\n .catch(err => {\n const name = kb.any(webIdNode, ns.foaf('name'))\n const errorMessage =\n name && name.value\n ? `Could not remove ${name.value}. (${err})`\n : `Could not remove ${webIdNode.value}. (${err})`\n throw new Error(errorMessage)\n })\n }\n }\n\n setGroupName (name) {\n const { groupIndex } = indexes(this.book)\n const updatePromises = [this.group.doc(), groupIndex].map(namedGraph => {\n const oldNameStatements = kb.match(\n this.group,\n ns.vcard('fn'),\n null,\n namedGraph\n )\n const newNameStatement = rdf.st(\n this.group,\n ns.vcard('fn'),\n rdf.literal(name)\n )\n return patch(namedGraph.value, {\n toDel: oldNameStatements,\n toIns: [newNameStatement]\n }).then(_solidResponse => {\n kb.removeStatements(oldNameStatements)\n newNameStatement.why = namedGraph\n kb.add(newNameStatement)\n })\n })\n return Promise.all(updatePromises)\n }\n}\n// @ignore exporting this only for the unit test\n// @@ TODO maybe I should move this down at end, but for\n// now I will leave it where it was\nexport class Person {\n constructor (element, webIdNode, handleRemove) {\n this.webIdNode = webIdNode\n this.element = element\n this.handleRemove = handleRemove\n }\n\n render () {\n const container = document.createElement('div')\n container.style.display = 'flex'\n\n // TODO: take a look at UI.widgets.setName\n const imgSrc = getWithDefault(\n this.webIdNode,\n ns.foaf('img'),\n iconBase + 'noun_15059.svg'\n )\n const profileImg = document.createElement('img')\n profileImg.src = escape(imgSrc)\n profileImg.width = '50'\n profileImg.height = '50'\n profileImg.style.margin = '5px'\n\n // TODO: take a look at UI.widgets.setImage\n const name = getWithDefault(\n this.webIdNode,\n ns.foaf('name'),\n `[${this.webIdNode}]`\n )\n const nameSpan = document.createElement('span')\n nameSpan.innerHTML = escape(name)\n nameSpan.style.flexGrow = '1'\n nameSpan.style.margin = 'auto 0'\n\n const removeButton = document.createElement('button')\n removeButton.textContent = 'Remove'\n removeButton.addEventListener('click', _event =>\n this.handleRemove().catch(err => {\n this.element.appendChild(errorMessageBlock(document, escape(`${err}`)))\n })\n )\n removeButton.style.margin = '5px'\n\n container.appendChild(profileImg)\n container.appendChild(nameSpan)\n container.appendChild(removeButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nfunction getWithDefault (subject, predicate, defaultValue) {\n const object = kb.any(subject, predicate)\n return object ? object.value : defaultValue\n}\n\nfunction patch (url, { toDel, toIns }) {\n return new Promise((resolve, reject) => {\n kb.updater.update(toDel, toIns, (uri, success, errorMessage) => {\n if (!success) {\n return reject(\n new Error(`PATCH failed for resource <${uri}>: ${errorMessage}`)\n )\n }\n resolve()\n })\n })\n // return webClient.patch(url, toDel, toIns)\n // .then(solidResponse => {\n // const status = solidResponse.xhr.status\n // if (status < 200 || status >= 400) {\n // const err = new Error(`PATCH failed for resource <${solidResponse.url}>`)\n // err.solidResponse = solidResponse\n // throw err\n // }\n // })\n}\n\nfunction indexes (book) {\n return {\n // bookIndex: book,\n groupIndex: kb.any(book, ns.vcard('groupIndex')),\n groupContainer: kb.sym(book.dir().uri + 'Group/')\n }\n}\n"],"file":"peoplePicker.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-ui",
3
- "version": "2.4.16-9d8eda18",
3
+ "version": "2.4.16-9e276990",
4
4
  "description": "UI library for writing Solid read-write-web applications",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -64,7 +64,7 @@
64
64
  "path-browserify": "^1.0.1",
65
65
  "postcss-flexbugs-fixes": "^5.0.2",
66
66
  "rdflib": "^2.2.17",
67
- "solid-logic": "^1.3.13-2e3e7417",
67
+ "solid-logic": "^1.3.13",
68
68
  "solid-namespace": "^0.5.2",
69
69
  "stream-browserify": "^3.0.0",
70
70
  "uuid": "^8.3.2"
@@ -1,130 +0,0 @@
1
- /**
2
- * Signing in, signing up, profile and preferences reloading
3
- * Type index management
4
- *
5
- * Many functions in this module take a context object which
6
- * holds various RDF symbols, add to it, and return a promise of it.
7
- *
8
- * * `me` RDF symbol for the user's WebID
9
- * * `publicProfile` The user's public profile, iff loaded
10
- * * `preferencesFile` The user's personal preference file, iff loaded
11
- * * `index.public` The user's public type index file
12
- * * `index.private` The user's private type index file
13
- *
14
- * Not RDF symbols:
15
- * * `noun` A string in english for the type of thing -- like "address book"
16
- * * `instance` An array of nodes which are existing instances
17
- * * `containers` An array of nodes of containers of instances
18
- * * `div` A DOM element where UI can be displayed
19
- * * `statusArea` A DOM element (opt) progress stuff can be displayed, or error messages
20
- * @packageDocumentation
21
- */
22
- import { PaneDefinition } from 'pane-registry';
23
- import { NamedNode } from 'rdflib';
24
- import { AppDetails, AuthenticationContext } from 'solid-logic';
25
- /**
26
- * Resolves with the logged in user's WebID
27
- *
28
- * @param context
29
- */
30
- export declare function loggedInContext(context: AuthenticationContext): Promise<AuthenticationContext>;
31
- /**
32
- * Loads preference file
33
- * Do this after having done log in and load profile
34
- *
35
- * @private
36
- *
37
- * @param context
38
- */
39
- export declare function logInLoadPreferences(context: AuthenticationContext): Promise<AuthenticationContext>;
40
- /**
41
- * Logs the user in and loads their WebID profile document into the store
42
- *
43
- * @param context
44
- *
45
- * @returns Resolves with the context after login / fetch
46
- */
47
- export declare function logInLoadProfile(context: AuthenticationContext): Promise<AuthenticationContext>;
48
- /**
49
- * Returns promise of context with arrays of symbols
50
- *
51
- * 2016-12-11 change to include forClass arc a la
52
- * https://github.com/solid/solid/blob/main/proposals/data-discovery.md
53
- */
54
- export declare function findAppInstances(context: AuthenticationContext, theClass: NamedNode, isPublic?: boolean): Promise<AuthenticationContext>;
55
- /**
56
- * UI to control registration of instance
57
- */
58
- export declare function registrationControl(context: AuthenticationContext, instance: any, theClass: any): Promise<AuthenticationContext | void>;
59
- /**
60
- * UI to List at all registered things
61
- */
62
- export declare function registrationList(context: AuthenticationContext, options: {
63
- private?: boolean;
64
- public?: boolean;
65
- type?: NamedNode;
66
- }): Promise<AuthenticationContext>;
67
- export declare function renderSignInPopup(dom: HTMLDocument): void;
68
- /**
69
- * Login status box
70
- *
71
- * A big sign-up/sign in box or a logout box depending on the state
72
- *
73
- * @param dom
74
- * @param listener
75
- *
76
- * @returns
77
- */
78
- export declare function loginStatusBox(dom: HTMLDocument, listener?: ((uri: string | null) => void) | null, options?: {
79
- buttonStyle?: string;
80
- }): HTMLElement;
81
- /**
82
- * Workspace selection etc
83
- * See https://github.com/solid/userguide/issues/16
84
- */
85
- /**
86
- * Returns a UI object which, if it selects a workspace,
87
- * will callback(workspace, newBase).
88
- * See https://github.com/solid/userguide/issues/16 for more info on workspaces.
89
- *
90
- * If necessary, will get an account, preference file, etc. In sequence:
91
- *
92
- * - If not logged in, log in.
93
- * - Load preference file
94
- * - Prompt user for workspaces
95
- * - Allows the user to just type in a URI by hand
96
- *
97
- * Calls back with the workspace and the base URI
98
- *
99
- * @param dom
100
- * @param appDetails
101
- * @param callbackWS
102
- */
103
- export declare function selectWorkspace(dom: HTMLDocument, appDetails: AppDetails, callbackWS: (workspace: string | null, newBase: string) => void): HTMLElement;
104
- /**
105
- * Creates a new instance of an app.
106
- *
107
- * An instance of an app could be e.g. an issue tracker for a given project,
108
- * or a chess game, or calendar, or a health/fitness record for a person.
109
- *
110
- * Note that this use of the term 'app' refers more to entries in the user's
111
- * type index than to actual software applications that use the personal data
112
- * to which these entries point.
113
- *
114
- * @param dom
115
- * @param appDetails
116
- * @param callback
117
- *
118
- * @returns A div with a button in it for making a new app instance
119
- */
120
- export declare function newAppInstance(dom: HTMLDocument, appDetails: AppDetails, callback: (workspace: string | null, newBase: string) => void): HTMLElement;
121
- /**
122
- * Retrieves whether the currently logged in user is a power user
123
- * and/or a developer
124
- */
125
- export declare function getUserRoles(): Promise<Array<NamedNode>>;
126
- /**
127
- * Filters which panes should be available, based on the result of [[getUserRoles]]
128
- */
129
- export declare function filterAvailablePanes(panes: Array<PaneDefinition>): Promise<Array<PaneDefinition>>;
130
- //# sourceMappingURL=login.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/login/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAA6B,SAAS,EAAiB,MAAM,QAAQ,CAAA;AAG5E,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAgN,MAAM,aAAa,CAAA;AAS7Q;;;;IAII;AACJ,wBAAgB,eAAe,CAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwB/F;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA4D1G;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoBtG;AAED;;;;;IAKI;AACJ,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,SAAS,EACnB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAqEhC;AAED;;IAEI;AACJ,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,KAAA,EACR,QAAQ,KAAA,GACP,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAgFvC;AAED;;IAEI;AACJ,wBAAgB,gBAAgB,CAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoElC;AA8FD,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,YAAY,QAoHnD;AAED;;;;;;;;;IASI;AACJ,wBAAgB,cAAc,CAC5B,GAAG,EAAE,YAAY,EACjB,QAAQ,GAAE,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,IAAW,EACtD,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAA;CACf,GACN,WAAW,CAmFb;AAsBD;;;IAGI;AAEJ;;;;;;;;;;;;;;;;;IAiBI;AACJ,wBAAgB,eAAe,CAC7B,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAC9D,WAAW,CAqNb;AAED;;;;;;;;;;;;;;;IAeI;AACJ,wBAAgB,cAAc,CAC5B,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAC5D,WAAW,CAeb;AACD;;;GAGG;AACH,wBAAsB,YAAY,IAAK,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAe/D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAE,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAGxG"}