solid-ui 2.4.23 → 2.4.24-0c90afe2

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 (248) hide show
  1. package/LICENSE.md +0 -0
  2. package/README.md +0 -0
  3. package/dist/index.html +0 -0
  4. package/dist/main.js +2221 -5081
  5. package/dist/main.js.map +1 -1
  6. package/lib/acl/access-controller.d.ts +0 -0
  7. package/lib/acl/access-controller.d.ts.map +0 -0
  8. package/lib/acl/access-controller.js +4 -67
  9. package/lib/acl/access-controller.js.map +1 -1
  10. package/lib/acl/access-groups.d.ts +0 -0
  11. package/lib/acl/access-groups.d.ts.map +0 -0
  12. package/lib/acl/access-groups.js +59 -137
  13. package/lib/acl/access-groups.js.map +1 -1
  14. package/lib/acl/acl-control.d.ts +0 -0
  15. package/lib/acl/acl-control.d.ts.map +0 -0
  16. package/lib/acl/acl-control.js +14 -54
  17. package/lib/acl/acl-control.js.map +1 -1
  18. package/lib/acl/acl.d.ts +0 -0
  19. package/lib/acl/acl.d.ts.map +0 -0
  20. package/lib/acl/acl.js +32 -107
  21. package/lib/acl/acl.js.map +1 -1
  22. package/lib/acl/add-agent-buttons.d.ts +0 -0
  23. package/lib/acl/add-agent-buttons.d.ts.map +0 -0
  24. package/lib/acl/add-agent-buttons.js +0 -92
  25. package/lib/acl/add-agent-buttons.js.map +1 -1
  26. package/lib/acl/index.d.ts +0 -0
  27. package/lib/acl/index.d.ts.map +0 -0
  28. package/lib/acl/index.js +1 -3
  29. package/lib/acl/index.js.map +1 -1
  30. package/lib/acl/styles.d.ts +0 -0
  31. package/lib/acl/styles.d.ts.map +0 -0
  32. package/lib/acl/styles.js +1 -2
  33. package/lib/acl/styles.js.map +1 -1
  34. package/lib/acl/types.d.ts +0 -0
  35. package/lib/acl/types.d.ts.map +0 -0
  36. package/lib/acl/types.js +0 -0
  37. package/lib/acl/types.js.map +0 -0
  38. package/lib/chat/bookmarks.js +8 -80
  39. package/lib/chat/bookmarks.js.map +1 -1
  40. package/lib/chat/chatLogic.js +109 -180
  41. package/lib/chat/chatLogic.js.map +1 -1
  42. package/lib/chat/dateFolder.js +51 -117
  43. package/lib/chat/dateFolder.js.map +1 -1
  44. package/lib/chat/infinite.js +40 -191
  45. package/lib/chat/infinite.js.map +1 -1
  46. package/lib/chat/message.js +37 -150
  47. package/lib/chat/message.js.map +1 -1
  48. package/lib/chat/messageTools.js +23 -96
  49. package/lib/chat/messageTools.js.map +1 -1
  50. package/lib/chat/thread.js +33 -91
  51. package/lib/chat/thread.js.map +1 -1
  52. package/lib/create/create.d.ts +0 -0
  53. package/lib/create/create.d.ts.map +0 -0
  54. package/lib/create/create.js +19 -51
  55. package/lib/create/create.js.map +1 -1
  56. package/lib/create/index.d.ts +0 -0
  57. package/lib/create/index.d.ts.map +0 -0
  58. package/lib/create/index.js +0 -2
  59. package/lib/create/index.js.map +1 -1
  60. package/lib/create/types.d.ts +0 -0
  61. package/lib/create/types.d.ts.map +0 -0
  62. package/lib/create/types.js +0 -0
  63. package/lib/create/types.js.map +0 -0
  64. package/lib/debug.d.ts +0 -0
  65. package/lib/debug.d.ts.map +0 -0
  66. package/lib/debug.js +0 -8
  67. package/lib/debug.js.map +1 -1
  68. package/lib/folders.js +4 -27
  69. package/lib/folders.js.map +1 -1
  70. package/lib/footer/index.d.ts +0 -0
  71. package/lib/footer/index.d.ts.map +0 -0
  72. package/lib/footer/index.js +2 -24
  73. package/lib/footer/index.js.map +1 -1
  74. package/lib/footer/styleMap.d.ts +0 -0
  75. package/lib/footer/styleMap.d.ts.map +0 -0
  76. package/lib/footer/styleMap.js +0 -0
  77. package/lib/footer/styleMap.js.map +1 -1
  78. package/lib/header/empty-profile.d.ts +0 -0
  79. package/lib/header/empty-profile.d.ts.map +0 -0
  80. package/lib/header/empty-profile.js +0 -0
  81. package/lib/header/empty-profile.js.map +1 -1
  82. package/lib/header/index.d.ts +0 -0
  83. package/lib/header/index.d.ts.map +0 -0
  84. package/lib/header/index.js +3 -72
  85. package/lib/header/index.js.map +1 -1
  86. package/lib/header/styleMap.d.ts +0 -0
  87. package/lib/header/styleMap.d.ts.map +0 -0
  88. package/lib/header/styleMap.js +4 -3
  89. package/lib/header/styleMap.js.map +1 -1
  90. package/lib/iconBase.d.ts +0 -0
  91. package/lib/iconBase.d.ts.map +0 -0
  92. package/lib/iconBase.js +3 -4
  93. package/lib/iconBase.js.map +1 -1
  94. package/lib/icons/solid_logo.d.ts +0 -0
  95. package/lib/icons/solid_logo.d.ts.map +0 -0
  96. package/lib/icons/solid_logo.js +0 -0
  97. package/lib/icons/solid_logo.js.map +0 -0
  98. package/lib/index.d.ts +0 -0
  99. package/lib/index.d.ts.map +0 -0
  100. package/lib/index.js +5 -46
  101. package/lib/index.js.map +1 -1
  102. package/lib/jss/index.d.ts +0 -0
  103. package/lib/jss/index.d.ts.map +0 -0
  104. package/lib/jss/index.js +3 -9
  105. package/lib/jss/index.js.map +1 -1
  106. package/lib/log.d.ts +0 -0
  107. package/lib/log.d.ts.map +0 -0
  108. package/lib/log.js +15 -51
  109. package/lib/log.js.map +1 -1
  110. package/lib/login/login.d.ts +0 -0
  111. package/lib/login/login.d.ts.map +0 -0
  112. package/lib/login/login.js +74 -303
  113. package/lib/login/login.js.map +1 -1
  114. package/lib/matrix/index.d.ts +0 -0
  115. package/lib/matrix/index.d.ts.map +0 -0
  116. package/lib/matrix/index.js +0 -2
  117. package/lib/matrix/index.js.map +1 -1
  118. package/lib/matrix/matrix.d.ts +0 -0
  119. package/lib/matrix/matrix.d.ts.map +0 -0
  120. package/lib/matrix/matrix.js +7 -55
  121. package/lib/matrix/matrix.js.map +1 -1
  122. package/lib/matrix/types.d.ts +0 -0
  123. package/lib/matrix/types.d.ts.map +0 -0
  124. package/lib/matrix/types.js +0 -0
  125. package/lib/matrix/types.js.map +0 -0
  126. package/lib/media/index.d.ts +0 -0
  127. package/lib/media/index.d.ts.map +0 -0
  128. package/lib/media/index.js +0 -2
  129. package/lib/media/index.js.map +1 -1
  130. package/lib/media/media-capture.d.ts +0 -0
  131. package/lib/media/media-capture.d.ts.map +0 -0
  132. package/lib/media/media-capture.js +13 -33
  133. package/lib/media/media-capture.js.map +1 -1
  134. package/lib/messageArea.js +23 -64
  135. package/lib/messageArea.js.map +1 -1
  136. package/lib/noun_Camera_1618446_000000.js +0 -0
  137. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  138. package/lib/ns.js +5 -7
  139. package/lib/ns.js.map +1 -1
  140. package/lib/pad.d.ts +0 -0
  141. package/lib/pad.d.ts.map +0 -0
  142. package/lib/pad.js +48 -234
  143. package/lib/pad.js.map +1 -1
  144. package/lib/participation.d.ts +0 -0
  145. package/lib/participation.d.ts.map +0 -0
  146. package/lib/participation.js +10 -65
  147. package/lib/participation.js.map +1 -1
  148. package/lib/preferences.js +21 -42
  149. package/lib/preferences.js.map +1 -1
  150. package/lib/signup/config-default.js +1 -8
  151. package/lib/signup/config-default.js.map +1 -1
  152. package/lib/signup/signup.js +6 -13
  153. package/lib/signup/signup.js.map +1 -1
  154. package/lib/stories/decorators.js +0 -2
  155. package/lib/stories/decorators.js.map +1 -1
  156. package/lib/style.js +8 -5
  157. package/lib/style.js.map +1 -1
  158. package/lib/style_multiSelect.js +1 -5
  159. package/lib/style_multiSelect.js.map +1 -1
  160. package/lib/table.js +309 -322
  161. package/lib/table.js.map +1 -1
  162. package/lib/tabs.d.ts +0 -0
  163. package/lib/tabs.d.ts.map +0 -0
  164. package/lib/tabs.js +20 -100
  165. package/lib/tabs.js.map +1 -1
  166. package/lib/typings.d.js +0 -0
  167. package/lib/typings.d.js.map +0 -0
  168. package/lib/utils/headerFooterHelpers.d.ts +0 -0
  169. package/lib/utils/headerFooterHelpers.d.ts.map +0 -0
  170. package/lib/utils/headerFooterHelpers.js +4 -52
  171. package/lib/utils/headerFooterHelpers.js.map +1 -1
  172. package/lib/utils/index.js +41 -135
  173. package/lib/utils/index.js.map +1 -1
  174. package/lib/utils/label.d.ts +0 -0
  175. package/lib/utils/label.d.ts.map +0 -0
  176. package/lib/utils/label.js +13 -34
  177. package/lib/utils/label.js.map +1 -1
  178. package/lib/versionInfo.d.ts +0 -0
  179. package/lib/versionInfo.d.ts.map +0 -0
  180. package/lib/versionInfo.js +14 -14
  181. package/lib/versionInfo.js.map +1 -1
  182. package/lib/widgets/buttons/iconLinks.d.ts +0 -0
  183. package/lib/widgets/buttons/iconLinks.d.ts.map +0 -0
  184. package/lib/widgets/buttons/iconLinks.js +0 -8
  185. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  186. package/lib/widgets/buttons.d.ts +0 -0
  187. package/lib/widgets/buttons.d.ts.map +0 -0
  188. package/lib/widgets/buttons.js +115 -291
  189. package/lib/widgets/buttons.js.map +1 -1
  190. package/lib/widgets/dragAndDrop.js +12 -41
  191. package/lib/widgets/dragAndDrop.js.map +1 -1
  192. package/lib/widgets/error.d.ts +0 -0
  193. package/lib/widgets/error.d.ts.map +0 -0
  194. package/lib/widgets/error.js +3 -9
  195. package/lib/widgets/error.js.map +1 -1
  196. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
  197. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
  198. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
  199. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  200. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
  201. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
  202. package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
  203. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  204. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
  205. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
  206. package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
  207. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  208. package/lib/widgets/forms/autocomplete/language.d.ts +0 -0
  209. package/lib/widgets/forms/autocomplete/language.d.ts.map +0 -0
  210. package/lib/widgets/forms/autocomplete/language.js +6 -55
  211. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  212. package/lib/widgets/forms/autocomplete/publicData.d.ts +0 -0
  213. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
  214. package/lib/widgets/forms/autocomplete/publicData.js +12 -131
  215. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  216. package/lib/widgets/forms/basic.d.ts +0 -0
  217. package/lib/widgets/forms/basic.d.ts.map +0 -0
  218. package/lib/widgets/forms/basic.js +12 -55
  219. package/lib/widgets/forms/basic.js.map +1 -1
  220. package/lib/widgets/forms/comment.d.ts +0 -0
  221. package/lib/widgets/forms/comment.d.ts.map +0 -0
  222. package/lib/widgets/forms/comment.js +1 -15
  223. package/lib/widgets/forms/comment.js.map +1 -1
  224. package/lib/widgets/forms/fieldFunction.d.ts +0 -0
  225. package/lib/widgets/forms/fieldFunction.d.ts.map +0 -0
  226. package/lib/widgets/forms/fieldFunction.js +3 -16
  227. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  228. package/lib/widgets/forms/fieldParams.d.ts +0 -0
  229. package/lib/widgets/forms/fieldParams.d.ts.map +0 -0
  230. package/lib/widgets/forms/fieldParams.js +0 -12
  231. package/lib/widgets/forms/fieldParams.js.map +1 -1
  232. package/lib/widgets/forms/formStyle.d.ts +0 -0
  233. package/lib/widgets/forms/formStyle.d.ts.map +0 -0
  234. package/lib/widgets/forms/formStyle.js +1 -14
  235. package/lib/widgets/forms/formStyle.js.map +1 -1
  236. package/lib/widgets/forms.js +70 -474
  237. package/lib/widgets/forms.js.map +1 -1
  238. package/lib/widgets/index.js +0 -21
  239. package/lib/widgets/index.js.map +1 -1
  240. package/lib/widgets/multiSelect.js +48 -171
  241. package/lib/widgets/multiSelect.js.map +1 -1
  242. package/lib/widgets/peoplePicker.js +20 -90
  243. package/lib/widgets/peoplePicker.js.map +1 -1
  244. package/lib/widgets/widgetHelpers.d.ts +0 -0
  245. package/lib/widgets/widgetHelpers.d.ts.map +0 -0
  246. package/lib/widgets/widgetHelpers.js +2 -9
  247. package/lib/widgets/widgetHelpers.js.map +1 -1
  248. package/package.json +30 -30
@@ -1 +1 @@
1
- {"version":3,"file":"participation.js","names":["ParticipationTableElement","HTMLTableElement","store","solidLogicSingleton","renderPartipants","dom","table","unused1","subject","unused2","options","setAttribute","newRowForParticpation","parp","person","any","ns","wf","tr","createElement","textContent","bg","anyValue","ui","block","personTR","appendChild","td","insertBefore","firstChild","syncTable","parps","each","map","log","cal","sort","participations","p","syncTableToArray","refresh","participationObject","padDoc","me","Promise","resolve","reject","Error","filter","pn","holds","length","candidates","participation","date","push","debug","warn","newThing","ins","st","Date","lightColorHash","updater","update","uri","ok","errorMessage","recordParticipation","refreshable","authn","currentUser","editable","manageParticipation","container","_participation","e","errorMessageBlock"],"sources":["../src/participation.ts"],"sourcesContent":["/* Manage a UI for the particpation of a person in any thing\n*/\n\n// import { currentUser } from './authn/authn'\nimport * as debug from './debug'\nimport { LiveStore, NamedNode, st, UpdateManager } from 'rdflib'\nimport * as ns from './ns'\nimport { personTR, newThing, errorMessageBlock } from './widgets'\nimport { syncTableToArray } from './utils'\nimport { lightColorHash } from './pad'\nimport { log } from './debug'\nimport { solidLogicSingleton, authn } from 'solid-logic'\n\ntype ParticipationOptions = {\n deleteFunction?: () => {}\n link?: string\n draggable?: boolean\n}\n\nclass ParticipationTableElement extends HTMLTableElement {\n refresh?: () => void\n}\nconst store = solidLogicSingleton.store as LiveStore\n\n/** Manage participation in this session\n*\n* @param {Document} dom - the web page loaded into the browser\n* @param {HTMLTableElement} table - the table element\n* @param {NamedNode} unused1/document - the document to render (this argument is no longer used, but left in for backwards compatibility)\n* @param {NamedNode} subject - the thing in which the participation is happening\n* @param {NamedNode} unused2/me - user that is logged into the pod (this argument is no longer used, but left in for backwards compatibility)\n* @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable these are used by the personTR button\n*/\nexport function renderPartipants (dom: HTMLDocument, table: ParticipationTableElement, unused1: NamedNode, subject: NamedNode, unused2: NamedNode, options: ParticipationOptions) {\n table.setAttribute('style', 'margin: 0.8em;')\n\n const newRowForParticpation = function (parp) {\n const person = store.any(parp, ns.wf('participant'))\n\n let tr\n if (!person) {\n tr = dom.createElement('tr')\n tr.textContent = '???' // Don't crash - invalid part'n entry\n return tr\n }\n const bg = store.anyValue(parp, ns.ui('backgroundColor')) || 'white'\n\n const block = dom.createElement('div')\n block.setAttribute(\n 'style',\n 'height: 1.5em; width: 1.5em; margin: 0.3em; border 0.01em solid #888; background-color: ' +\n bg\n )\n tr = personTR(dom, null, person, options)\n table.appendChild(tr)\n const td = dom.createElement('td')\n td.setAttribute('style', 'vertical-align: middle;')\n td.appendChild(block)\n tr.insertBefore(td, tr.firstChild)\n return tr\n }\n\n const syncTable = function () {\n const parps = store.each(subject, ns.wf('participation')).map(function (parp) {\n log('in participants')\n return [store.anyValue(parp as any, ns.cal('dtstart')) || '9999-12-31', parp]\n })\n parps.sort() // List in order of joining\n const participations = parps.map(function (p) {\n return p[1]\n })\n syncTableToArray(table, participations, newRowForParticpation)\n }\n table.refresh = syncTable\n syncTable()\n return table\n}\n\n/** Record, or find old, Particpation object\n *\n * A particpaption object is a place to record things specifically about\n * subject and the user, such as preferences, start of membership, etc\n * @param {NamedNode} subject - the thing in which the participation is happening\n * @param {NamedNode} document - where to record the data\n * @param {NamedNode} me - the logged in user\n *\n */\nexport function participationObject (subject: NamedNode, padDoc: NamedNode, me: NamedNode) {\n return new Promise(function (resolve, reject) {\n if (!me) {\n throw new Error('No user id')\n }\n\n const parps = store.each(subject, ns.wf('participation')).filter(function (pn) {\n return store.holds(pn, ns.wf('participant'), me)\n })\n if (parps.length > 1) { // This can happen. https://github.com/solidos/chat-pane/issues/71\n const candidates: (string | NamedNode) [][] = []\n for (const participation of parps) {\n const date = store.anyValue(participation as NamedNode, ns.cal('dtstart'))\n if (date) {\n candidates.push([date, participation as NamedNode])\n }\n }\n candidates.sort() // Pick the earliest\n // @@ Possibly, for extra credit, delete the others, if we have write access\n debug.warn('Multiple particpation objects, picking earliest, in ' + padDoc)\n resolve(candidates[0][1])\n // throw new Error('Multiple records of your participation')\n }\n if (parps.length) {\n // If I am not already recorded\n resolve(parps[0]) // returns the particpation object\n } else {\n const participation = newThing(padDoc)\n const ins = [\n st(subject, ns.wf('participation'), participation, padDoc),\n\n st(participation, ns.wf('participant'), me, padDoc),\n st(participation, ns.cal('dtstart'), new Date() as any, padDoc),\n st(\n participation,\n ns.ui('backgroundColor'),\n lightColorHash(me) as any,\n padDoc\n )\n ];\n (store.updater as UpdateManager).update([], ins, function (uri: string | null | undefined, ok: boolean, errorMessage?: string) {\n if (!ok) {\n reject(new Error('Error recording your partipation: ' + errorMessage))\n } else {\n resolve(participation)\n }\n })\n resolve(participation)\n }\n })\n}\n\n/** Record my participation and display participants\n *\n * @param {NamedNode} subject - the thing in which participation is happening\n * @param {NamedNode} padDoc - the document into which the particpation should be recorded\n * @param {DOMNode} refreshable - a DOM element whose refresh() is to be called if the change works\n *\n */\nexport function recordParticipation (subject: NamedNode, padDoc: NamedNode, refreshable: any) {\n const me = authn.currentUser()\n if (!me) return // Not logged in\n\n const parps = store.each(subject, ns.wf('participation')).filter(function (pn) {\n return store.holds(pn, ns.wf('participant'), me)\n })\n if (parps.length > 1) {\n throw new Error('Multiple records of your participation')\n }\n if (parps.length) {\n // If I am not already recorded\n return parps[0] // returns the particpation object\n } else {\n if (!(store.updater as UpdateManager).editable(padDoc)) {\n debug.log('Not recording participation, as no write acesss as ' + me + ' to ' + padDoc)\n return null\n }\n const participation = newThing(padDoc)\n const ins = [\n st(subject, ns.wf('participation'), participation, padDoc),\n\n st(participation, ns.wf('participant'), me, padDoc),\n st(participation, ns.cal('dtstart'), new Date() as any, padDoc),\n st(\n participation,\n ns.ui('backgroundColor'),\n lightColorHash(me) as any,\n padDoc\n )\n ];\n (store.updater as UpdateManager).update([], ins, function (uri: string | null | undefined, ok: boolean, errorMessage?: string) {\n if (!ok) {\n throw new Error('Error recording your partipation: ' + errorMessage)\n }\n if (refreshable && refreshable.refresh) {\n refreshable.refresh()\n }\n // UI.pad.renderPartipants(dom, table, padDoc, subject, me, options)\n })\n return participation\n }\n}\n\n/** Record my participation and display participants\n*\n* @param {Document} dom - the web page loaded into the browser\n* @param {HTMLDivElement} container - the container element where the participants should be displayed\n* @param {NamedNode} document - the document into which the particpation should be shown\n* @param {NamedNode} subject - the thing in which participation is happening\n* @param {NamedNode} me - the logged in user\n* @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable these are used by the personTR button\n*\n*/\nexport function manageParticipation (\n dom: Document,\n container: HTMLDivElement,\n padDoc: NamedNode,\n subject: NamedNode,\n me: NamedNode,\n options: ParticipationOptions\n) {\n const table = dom.createElement('table')\n container.appendChild(table)\n renderPartipants(dom, table, padDoc, subject, me, options)\n let _participation\n try {\n _participation = recordParticipation(subject, padDoc, table)\n } catch (e) {\n container.appendChild(\n errorMessageBlock(\n dom,\n 'Error recording your partipation: ' + e\n )\n ) // Clean up?\n }\n return table\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"participation.js","names":["ParticipationTableElement","HTMLTableElement","store","solidLogicSingleton","renderPartipants","dom","table","unused1","subject","unused2","options","setAttribute","newRowForParticpation","parp","person","any","ns","wf","tr","createElement","textContent","bg","anyValue","ui","block","personTR","appendChild","td","insertBefore","firstChild","syncTable","parps","each","map","log","cal","sort","participations","p","syncTableToArray","refresh","participationObject","padDoc","me","Promise","resolve","reject","Error","filter","pn","holds","length","candidates","participation","date","push","debug","warn","newThing","ins","st","Date","lightColorHash","updater","update","uri","ok","errorMessage","recordParticipation","refreshable","authn","currentUser","editable","manageParticipation","container","_participation","e","errorMessageBlock"],"sources":["../src/participation.ts"],"sourcesContent":["/* Manage a UI for the particpation of a person in any thing\n*/\n\n// import { currentUser } from './authn/authn'\nimport * as debug from './debug'\nimport { LiveStore, NamedNode, st, UpdateManager } from 'rdflib'\nimport * as ns from './ns'\nimport { personTR, newThing, errorMessageBlock } from './widgets'\nimport { syncTableToArray } from './utils'\nimport { lightColorHash } from './pad'\nimport { log } from './debug'\nimport { solidLogicSingleton, authn } from 'solid-logic'\n\ntype ParticipationOptions = {\n deleteFunction?: () => {}\n link?: string\n draggable?: boolean\n}\n\nclass ParticipationTableElement extends HTMLTableElement {\n refresh?: () => void\n}\nconst store = solidLogicSingleton.store as LiveStore\n\n/** Manage participation in this session\n*\n* @param {Document} dom - the web page loaded into the browser\n* @param {HTMLTableElement} table - the table element\n* @param {NamedNode} unused1/document - the document to render (this argument is no longer used, but left in for backwards compatibility)\n* @param {NamedNode} subject - the thing in which the participation is happening\n* @param {NamedNode} unused2/me - user that is logged into the pod (this argument is no longer used, but left in for backwards compatibility)\n* @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable these are used by the personTR button\n*/\nexport function renderPartipants (dom: HTMLDocument, table: ParticipationTableElement, unused1: NamedNode, subject: NamedNode, unused2: NamedNode, options: ParticipationOptions) {\n table.setAttribute('style', 'margin: 0.8em;')\n\n const newRowForParticpation = function (parp) {\n const person = store.any(parp, ns.wf('participant'))\n\n let tr\n if (!person) {\n tr = dom.createElement('tr')\n tr.textContent = '???' // Don't crash - invalid part'n entry\n return tr\n }\n const bg = store.anyValue(parp, ns.ui('backgroundColor')) || 'white'\n\n const block = dom.createElement('div')\n block.setAttribute(\n 'style',\n 'height: 1.5em; width: 1.5em; margin: 0.3em; border 0.01em solid #888; background-color: ' +\n bg\n )\n tr = personTR(dom, null, person, options)\n table.appendChild(tr)\n const td = dom.createElement('td')\n td.setAttribute('style', 'vertical-align: middle;')\n td.appendChild(block)\n tr.insertBefore(td, tr.firstChild)\n return tr\n }\n\n const syncTable = function () {\n const parps = store.each(subject, ns.wf('participation')).map(function (parp) {\n log('in participants')\n return [store.anyValue(parp as any, ns.cal('dtstart')) || '9999-12-31', parp]\n })\n parps.sort() // List in order of joining\n const participations = parps.map(function (p) {\n return p[1]\n })\n syncTableToArray(table, participations, newRowForParticpation)\n }\n table.refresh = syncTable\n syncTable()\n return table\n}\n\n/** Record, or find old, Particpation object\n *\n * A particpaption object is a place to record things specifically about\n * subject and the user, such as preferences, start of membership, etc\n * @param {NamedNode} subject - the thing in which the participation is happening\n * @param {NamedNode} document - where to record the data\n * @param {NamedNode} me - the logged in user\n *\n */\nexport function participationObject (subject: NamedNode, padDoc: NamedNode, me: NamedNode) {\n return new Promise(function (resolve, reject) {\n if (!me) {\n throw new Error('No user id')\n }\n\n const parps = store.each(subject, ns.wf('participation')).filter(function (pn) {\n return store.holds(pn, ns.wf('participant'), me)\n })\n if (parps.length > 1) { // This can happen. https://github.com/solidos/chat-pane/issues/71\n const candidates: (string | NamedNode) [][] = []\n for (const participation of parps) {\n const date = store.anyValue(participation as NamedNode, ns.cal('dtstart'))\n if (date) {\n candidates.push([date, participation as NamedNode])\n }\n }\n candidates.sort() // Pick the earliest\n // @@ Possibly, for extra credit, delete the others, if we have write access\n debug.warn('Multiple particpation objects, picking earliest, in ' + padDoc)\n resolve(candidates[0][1])\n // throw new Error('Multiple records of your participation')\n }\n if (parps.length) {\n // If I am not already recorded\n resolve(parps[0]) // returns the particpation object\n } else {\n const participation = newThing(padDoc)\n const ins = [\n st(subject, ns.wf('participation'), participation, padDoc),\n\n st(participation, ns.wf('participant'), me, padDoc),\n st(participation, ns.cal('dtstart'), new Date() as any, padDoc),\n st(\n participation,\n ns.ui('backgroundColor'),\n lightColorHash(me) as any,\n padDoc\n )\n ];\n (store.updater as UpdateManager).update([], ins, function (uri: string | null | undefined, ok: boolean, errorMessage?: string) {\n if (!ok) {\n reject(new Error('Error recording your partipation: ' + errorMessage))\n } else {\n resolve(participation)\n }\n })\n resolve(participation)\n }\n })\n}\n\n/** Record my participation and display participants\n *\n * @param {NamedNode} subject - the thing in which participation is happening\n * @param {NamedNode} padDoc - the document into which the particpation should be recorded\n * @param {DOMNode} refreshable - a DOM element whose refresh() is to be called if the change works\n *\n */\nexport function recordParticipation (subject: NamedNode, padDoc: NamedNode, refreshable: any) {\n const me = authn.currentUser()\n if (!me) return // Not logged in\n\n const parps = store.each(subject, ns.wf('participation')).filter(function (pn) {\n return store.holds(pn, ns.wf('participant'), me)\n })\n if (parps.length > 1) {\n throw new Error('Multiple records of your participation')\n }\n if (parps.length) {\n // If I am not already recorded\n return parps[0] // returns the particpation object\n } else {\n if (!(store.updater as UpdateManager).editable(padDoc)) {\n debug.log('Not recording participation, as no write acesss as ' + me + ' to ' + padDoc)\n return null\n }\n const participation = newThing(padDoc)\n const ins = [\n st(subject, ns.wf('participation'), participation, padDoc),\n\n st(participation, ns.wf('participant'), me, padDoc),\n st(participation, ns.cal('dtstart'), new Date() as any, padDoc),\n st(\n participation,\n ns.ui('backgroundColor'),\n lightColorHash(me) as any,\n padDoc\n )\n ];\n (store.updater as UpdateManager).update([], ins, function (uri: string | null | undefined, ok: boolean, errorMessage?: string) {\n if (!ok) {\n throw new Error('Error recording your partipation: ' + errorMessage)\n }\n if (refreshable && refreshable.refresh) {\n refreshable.refresh()\n }\n // UI.pad.renderPartipants(dom, table, padDoc, subject, me, options)\n })\n return participation\n }\n}\n\n/** Record my participation and display participants\n*\n* @param {Document} dom - the web page loaded into the browser\n* @param {HTMLDivElement} container - the container element where the participants should be displayed\n* @param {NamedNode} document - the document into which the particpation should be shown\n* @param {NamedNode} subject - the thing in which participation is happening\n* @param {NamedNode} me - the logged in user\n* @param {ParticipationOptions} options - the options that can be passed in are deleteFunction, link, and draggable these are used by the personTR button\n*\n*/\nexport function manageParticipation (\n dom: Document,\n container: HTMLDivElement,\n padDoc: NamedNode,\n subject: NamedNode,\n me: NamedNode,\n options: ParticipationOptions\n) {\n const table = dom.createElement('table')\n container.appendChild(table)\n renderPartipants(dom, table, padDoc, subject, me, options)\n let _participation\n try {\n _participation = recordParticipation(subject, padDoc, table)\n } catch (e) {\n container.appendChild(\n errorMessageBlock(\n dom,\n 'Error recording your partipation: ' + e\n )\n ) // Clean up?\n }\n return table\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _typeof = require("@babel/runtime/helpers/typeof");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -12,61 +11,53 @@ exports.recordSharedPreferences = recordSharedPreferences;
12
11
  exports.renderPreferencesForm = renderPreferencesForm;
13
12
  exports.set = set;
14
13
  exports.value = void 0;
15
-
16
14
  var $rdf = _interopRequireWildcard(require("rdflib"));
17
-
18
15
  var _solidLogic = require("solid-logic");
19
-
20
16
  var debug = _interopRequireWildcard(require("./debug"));
21
-
22
17
  var _login = require("./login/login");
23
-
24
18
  var ns = _interopRequireWildcard(require("./ns"));
25
-
26
19
  var participation = _interopRequireWildcard(require("./participation"));
27
-
28
20
  var widgets = _interopRequireWildcard(require("./widgets"));
29
-
30
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
34
23
  // Solid-UI preferences
35
24
  // =====================
36
25
  //
26
+
37
27
  // pull in first avoid cross-refs
28
+
38
29
  // @ts-ignore
39
- var kb = _solidLogic.store; // This was tabulator . preferences in the tabulator
30
+
31
+ var kb = _solidLogic.store;
32
+
33
+ // This was tabulator . preferences in the tabulator
40
34
  // Is this functionality used anywhere?
41
35
  //
36
+
42
37
  // used for storing user name
43
38
  // @@ Deprocate these functions. They were used for
44
39
  // communication around the tabulator functionality about the user session
45
40
 
46
41
  var value = [];
47
42
  exports.value = value;
48
-
49
43
  function get(k) {
50
44
  return value[k];
51
45
  }
52
-
53
46
  function set(k, v) {
54
47
  if (typeof v !== 'string') {
55
48
  debug.log('Non-string value of preference ' + k + ': ' + v);
56
49
  throw new Error('Non-string value of preference ' + k + ': ' + v);
57
50
  }
58
-
59
51
  this.value[k] = v;
60
- } // In a solid world, Preferences are stored in the web
52
+ }
53
+
54
+ // In a solid world, Preferences are stored in the web
61
55
  //
62
56
  // Make an RDF node for recording the common view preferences for any object
63
57
  // (maybe make it in a separate file?)
64
-
65
-
66
58
  function recordSharedPreferences(subject, context) {
67
59
  return new Promise(function (resolve, reject) {
68
60
  var sharedPreferences = kb.any(subject, ns.ui('sharedPreferences'));
69
-
70
61
  if (!sharedPreferences) {
71
62
  var sp = $rdf.sym(subject.doc().uri + '#SharedPreferences');
72
63
  var ins = [$rdf.st(subject, ns.ui('sharedPreferences'), sp, subject.doc())];
@@ -84,10 +75,10 @@ function recordSharedPreferences(subject, context) {
84
75
  resolve(context);
85
76
  }
86
77
  });
87
- } // Construct a personal defaults node in the preferences file for a given class of object
88
- //
89
-
78
+ }
90
79
 
80
+ // Construct a personal defaults node in the preferences file for a given class of object
81
+ //
91
82
  function recordPersonalDefaults(theClass, context) {
92
83
  return new Promise(function (resolve, reject) {
93
84
  (0, _login.ensureLoadedPreferences)(context).then(function (context) {
@@ -95,21 +86,17 @@ function recordPersonalDefaults(theClass, context) {
95
86
  debug.log('Not doing private class preferences as no access to preferences file. ' + context.preferencesFileError);
96
87
  return;
97
88
  }
98
-
99
89
  var regs = kb.each(null, ns.solid('forClass'), theClass, context.preferencesFile);
100
90
  var ins = [];
101
91
  var prefs;
102
92
  var reg;
103
-
104
93
  if (regs.length) {
105
94
  // Use existing node if we can
106
95
  regs.forEach(function (r) {
107
96
  prefs = prefs || kb.any(r, ns.solid('personalDefaults'));
108
97
  });
109
-
110
98
  if (prefs) {
111
99
  context.personalDefaults = prefs; // Found one
112
-
113
100
  resolve(context);
114
101
  return;
115
102
  } else {
@@ -121,7 +108,6 @@ function recordPersonalDefaults(theClass, context) {
121
108
  reg = widgets.newThing(context.preferencesFile);
122
109
  ins = [$rdf.st(reg, ns.rdf('type'), ns.solid('TypeRegistration'), context.preferencesFile), $rdf.st(reg, ns.solid('forClass'), theClass, context.preferencesFile)];
123
110
  }
124
-
125
111
  prefs = widgets.newThing(context.preferencesFile);
126
112
  ins.push($rdf.st(reg, ns.solid('personalDefaults'), prefs, context.preferencesFile));
127
113
  kb.updater.update([], ins, function (uri, ok, errm) {
@@ -137,16 +123,13 @@ function recordPersonalDefaults(theClass, context) {
137
123
  });
138
124
  });
139
125
  }
140
-
141
126
  function renderPreferencesForm(subject, theClass, preferencesForm, context) {
142
127
  var prefContainer = context.dom.createElement('div');
143
128
  participation.participationObject(subject, subject.doc(), context.me).then(function (participation) {
144
129
  var dom = context.dom;
145
-
146
130
  function heading(text) {
147
131
  prefContainer.appendChild(dom.createElement('h5')).textContent = text;
148
132
  }
149
-
150
133
  heading('My view of this ' + context.noun);
151
134
  widgets.appendForm(dom, prefContainer, {}, participation, preferencesForm, subject.doc(), function (ok, mes) {
152
135
  if (!ok) widgets.complain(context, mes);
@@ -171,35 +154,31 @@ function renderPreferencesForm(subject, theClass, preferencesForm, context) {
171
154
  prefContainer.appendChild(widgets.errorMessageBlock(context.dom, err));
172
155
  });
173
156
  return prefContainer;
174
- } // This should be part of rdflib.js ad part of the RDFJS Standard!!
157
+ }
175
158
 
159
+ // This should be part of rdflib.js ad part of the RDFJS Standard!!
176
160
 
177
161
  function toJS(term) {
178
162
  if (!term.datatype) return term; // Objects remain objects
179
-
180
163
  if (term.datatype.equals(ns.xsd('boolean'))) {
181
164
  return term.value === '1';
182
165
  }
183
-
184
166
  if (term.datatype.equals(ns.xsd('dateTime')) || term.datatype.equals(ns.xsd('date'))) {
185
167
  return new Date(term.value);
186
168
  }
187
-
188
169
  if (term.datatype.equals(ns.xsd('integer')) || term.datatype.equals(ns.xsd('float')) || term.datatype.equals(ns.xsd('decimal'))) {
189
170
  return Number(term.value);
190
171
  }
191
-
192
172
  return term.value;
193
- } // This is the function which acuakly reads and combines the preferences
173
+ }
174
+
175
+ // This is the function which acuakly reads and combines the preferences
194
176
  //
195
177
  // @@ make it much more tolerant of missing buts of prefernces
196
-
197
-
198
178
  function getPreferencesForClass(subject, theClass, predicates, context) {
199
179
  return new Promise(function (resolve, reject) {
200
180
  recordSharedPreferences(subject, context).then(function (context) {
201
181
  var sharedPreferences = context.sharedPreferences;
202
-
203
182
  if (context.me) {
204
183
  participation.participationObject(subject, subject.doc(), context.me).then(function (participation) {
205
184
  recordPersonalDefaults(theClass, context).then(function (context) {
@@ -208,7 +187,6 @@ function getPreferencesForClass(subject, theClass, predicates, context) {
208
187
  predicates.forEach(function (pred) {
209
188
  // Order of preference: My settings on object, Global settings on object, my settings on class
210
189
  var v1 = kb.any(participation, pred) || kb.any(sharedPreferences, pred) || kb.any(personalDefaults, pred);
211
-
212
190
  if (v1) {
213
191
  results[pred.uri] = toJS(v1);
214
192
  }
@@ -221,7 +199,6 @@ function getPreferencesForClass(subject, theClass, predicates, context) {
221
199
  var results = [];
222
200
  predicates.forEach(function (pred) {
223
201
  var v1 = kb.any(sharedPreferences, pred);
224
-
225
202
  if (v1) {
226
203
  results[pred.uri] = toJS(v1);
227
204
  }
@@ -230,5 +207,7 @@ function getPreferencesForClass(subject, theClass, predicates, context) {
230
207
  }
231
208
  });
232
209
  });
233
- } // ends
210
+ }
211
+
212
+ // ends
234
213
  //# sourceMappingURL=preferences.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preferences.js","names":["kb","store","value","get","k","set","v","debug","log","Error","recordSharedPreferences","subject","context","Promise","resolve","reject","sharedPreferences","any","ns","ui","sp","$rdf","sym","doc","uri","ins","st","updater","update","ok","errorMessage","recordPersonalDefaults","theClass","ensureLoadedPreferences","then","preferencesFile","preferencesFileError","regs","each","solid","prefs","reg","length","forEach","r","personalDefaults","widgets","newThing","rdf","push","errm","err","renderPreferencesForm","preferencesForm","prefContainer","dom","createElement","participation","participationObject","me","heading","text","appendChild","textContent","noun","appendForm","mes","complain","errorMessageBlock","toJS","term","datatype","equals","xsd","Date","Number","getPreferencesForClass","predicates","results","pred","v1"],"sources":["../src/preferences.js"],"sourcesContent":["// Solid-UI preferences\n// =====================\n//\n\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { store } from 'solid-logic'\nimport * as debug from './debug'\nimport { ensureLoadedPreferences } from './login/login'\nimport * as ns from './ns'\nimport * as participation from './participation' // @ts-ignore\nimport * as widgets from './widgets'\n\nconst kb = store\n\n// This was tabulator . preferences in the tabulator\n// Is this functionality used anywhere?\n//\n\n// used for storing user name\n// @@ Deprocate these functions. They were used for\n// communication around the tabulator functionality about the user session\n\nexport const value = []\nexport function get (k) {\n return value[k]\n}\n\nexport function set (k, v) {\n if (typeof v !== 'string') {\n debug.log('Non-string value of preference ' + k + ': ' + v)\n throw new Error('Non-string value of preference ' + k + ': ' + v)\n }\n this.value[k] = v\n}\n\n// In a solid world, Preferences are stored in the web\n//\n// Make an RDF node for recording the common view preferences for any object\n// (maybe make it in a separate file?)\nexport function recordSharedPreferences (subject, context) {\n return new Promise(function (resolve, reject) {\n const sharedPreferences = kb.any(subject, ns.ui('sharedPreferences'))\n if (!sharedPreferences) {\n const sp = $rdf.sym(subject.doc().uri + '#SharedPreferences')\n const ins = [\n $rdf.st(subject, ns.ui('sharedPreferences'), sp, subject.doc())\n ]\n debug.log('Creating shared preferences ' + sp)\n kb.updater.update([], ins, function (uri, ok, errorMessage) {\n if (!ok) {\n reject(new Error('Error creating shared prefs: ' + errorMessage))\n } else {\n context.sharedPreferences = sp\n resolve(context)\n }\n })\n } else {\n context.sharedPreferences = sharedPreferences\n resolve(context)\n }\n })\n}\n\n// Construct a personal defaults node in the preferences file for a given class of object\n//\nexport function recordPersonalDefaults (theClass, context) {\n return new Promise(function (resolve, reject) {\n ensureLoadedPreferences(context).then(\n context => {\n if (!context.preferencesFile) {\n debug.log(\n 'Not doing private class preferences as no access to preferences file. ' +\n context.preferencesFileError\n )\n return\n }\n const regs = kb.each(\n null,\n ns.solid('forClass'),\n theClass,\n context.preferencesFile\n )\n let ins = []\n let prefs\n let reg\n if (regs.length) {\n // Use existing node if we can\n regs.forEach(r => {\n prefs = prefs || kb.any(r, ns.solid('personalDefaults'))\n })\n if (prefs) {\n context.personalDefaults = prefs // Found one\n resolve(context)\n return\n } else {\n prefs = widgets.newThing(context.preferencesFile)\n reg = regs[0]\n }\n } else {\n // no regs fo class\n reg = widgets.newThing(context.preferencesFile)\n ins = [\n $rdf.st(\n reg,\n ns.rdf('type'),\n ns.solid('TypeRegistration'),\n context.preferencesFile\n ),\n $rdf.st(reg, ns.solid('forClass'), theClass, context.preferencesFile)\n ]\n }\n prefs = widgets.newThing(context.preferencesFile)\n ins.push(\n $rdf.st(\n reg,\n ns.solid('personalDefaults'),\n prefs,\n context.preferencesFile\n )\n )\n kb.updater.update([], ins, function (uri, ok, errm) {\n if (!ok) {\n reject(new Error('Setting preferences for ' + theClass + ': ' + errm))\n } else {\n context.personalDefaults = prefs\n resolve(context)\n }\n })\n },\n err => {\n reject(err)\n }\n )\n })\n}\n\nexport function renderPreferencesForm (subject, theClass, preferencesForm, context) {\n const prefContainer = context.dom.createElement('div')\n participation.participationObject(subject, subject.doc(), context.me).then(\n participation => {\n const dom = context.dom\n function heading (text) {\n prefContainer.appendChild(dom.createElement('h5')).textContent = text\n }\n heading('My view of this ' + context.noun)\n widgets.appendForm(\n dom,\n prefContainer,\n {},\n participation,\n preferencesForm,\n subject.doc(),\n (ok, mes) => {\n if (!ok) widgets.complain(context, mes)\n }\n )\n\n heading(\"Everyone's view of this \" + context.noun)\n recordSharedPreferences(subject, context).then(context => {\n const sharedPreferences = context.sharedPreferences\n widgets.appendForm(\n dom,\n prefContainer,\n {},\n sharedPreferences,\n preferencesForm,\n subject.doc(),\n (ok, mes) => {\n if (!ok) widgets.complain(context, mes)\n }\n )\n\n heading('My default view of any ' + context.noun)\n recordPersonalDefaults(theClass, context).then(\n context => {\n widgets.appendForm(\n dom,\n prefContainer,\n {},\n context.personalDefaults,\n preferencesForm,\n context.preferencesFile,\n (ok, mes) => {\n if (!ok) widgets.complain(context, mes)\n }\n )\n },\n err => {\n widgets.complain(context, err)\n }\n )\n })\n },\n err => {\n // parp object fails\n prefContainer.appendChild(widgets.errorMessageBlock(context.dom, err))\n }\n )\n return prefContainer\n}\n\n// This should be part of rdflib.js ad part of the RDFJS Standard!!\n\nfunction toJS (term) {\n if (!term.datatype) return term // Objects remain objects\n if (term.datatype.equals(ns.xsd('boolean'))) {\n return term.value === '1'\n }\n if (\n term.datatype.equals(ns.xsd('dateTime')) ||\n term.datatype.equals(ns.xsd('date'))\n ) {\n return new Date(term.value)\n }\n if (\n term.datatype.equals(ns.xsd('integer')) ||\n term.datatype.equals(ns.xsd('float')) ||\n term.datatype.equals(ns.xsd('decimal'))\n ) {\n return Number(term.value)\n }\n return term.value\n}\n\n// This is the function which acuakly reads and combines the preferences\n//\n// @@ make it much more tolerant of missing buts of prefernces\nexport function getPreferencesForClass (subject, theClass, predicates, context) {\n return new Promise(function (resolve, reject) {\n recordSharedPreferences(subject, context).then(context => {\n const sharedPreferences = context.sharedPreferences\n if (context.me) {\n participation\n .participationObject(subject, subject.doc(), context.me)\n .then(participation => {\n recordPersonalDefaults(theClass, context).then(context => {\n const results = []\n const personalDefaults = context.personalDefaults\n predicates.forEach(pred => {\n // Order of preference: My settings on object, Global settings on object, my settings on class\n const v1 =\n kb.any(participation, pred) ||\n kb.any(sharedPreferences, pred) ||\n kb.any(personalDefaults, pred)\n if (v1) {\n results[pred.uri] = toJS(v1)\n }\n })\n resolve(results)\n }, reject)\n }, reject)\n } else {\n // no user defined, just use common prefs\n const results = []\n predicates.forEach(pred => {\n const v1 = kb.any(sharedPreferences, pred)\n if (v1) {\n results[pred.uri] = toJS(v1)\n }\n })\n resolve(results)\n }\n })\n })\n}\n\n// ends\n"],"mappings":"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"}
1
+ {"version":3,"file":"preferences.js","names":["kb","store","value","get","k","set","v","debug","log","Error","recordSharedPreferences","subject","context","Promise","resolve","reject","sharedPreferences","any","ns","ui","sp","$rdf","sym","doc","uri","ins","st","updater","update","ok","errorMessage","recordPersonalDefaults","theClass","ensureLoadedPreferences","then","preferencesFile","preferencesFileError","regs","each","solid","prefs","reg","length","forEach","r","personalDefaults","widgets","newThing","rdf","push","errm","err","renderPreferencesForm","preferencesForm","prefContainer","dom","createElement","participation","participationObject","me","heading","text","appendChild","textContent","noun","appendForm","mes","complain","errorMessageBlock","toJS","term","datatype","equals","xsd","Date","Number","getPreferencesForClass","predicates","results","pred","v1"],"sources":["../src/preferences.js"],"sourcesContent":["// Solid-UI preferences\n// =====================\n//\n\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { store } from 'solid-logic'\nimport * as debug from './debug'\nimport { ensureLoadedPreferences } from './login/login'\nimport * as ns from './ns'\nimport * as participation from './participation' // @ts-ignore\nimport * as widgets from './widgets'\n\nconst kb = store\n\n// This was tabulator . preferences in the tabulator\n// Is this functionality used anywhere?\n//\n\n// used for storing user name\n// @@ Deprocate these functions. They were used for\n// communication around the tabulator functionality about the user session\n\nexport const value = []\nexport function get (k) {\n return value[k]\n}\n\nexport function set (k, v) {\n if (typeof v !== 'string') {\n debug.log('Non-string value of preference ' + k + ': ' + v)\n throw new Error('Non-string value of preference ' + k + ': ' + v)\n }\n this.value[k] = v\n}\n\n// In a solid world, Preferences are stored in the web\n//\n// Make an RDF node for recording the common view preferences for any object\n// (maybe make it in a separate file?)\nexport function recordSharedPreferences (subject, context) {\n return new Promise(function (resolve, reject) {\n const sharedPreferences = kb.any(subject, ns.ui('sharedPreferences'))\n if (!sharedPreferences) {\n const sp = $rdf.sym(subject.doc().uri + '#SharedPreferences')\n const ins = [\n $rdf.st(subject, ns.ui('sharedPreferences'), sp, subject.doc())\n ]\n debug.log('Creating shared preferences ' + sp)\n kb.updater.update([], ins, function (uri, ok, errorMessage) {\n if (!ok) {\n reject(new Error('Error creating shared prefs: ' + errorMessage))\n } else {\n context.sharedPreferences = sp\n resolve(context)\n }\n })\n } else {\n context.sharedPreferences = sharedPreferences\n resolve(context)\n }\n })\n}\n\n// Construct a personal defaults node in the preferences file for a given class of object\n//\nexport function recordPersonalDefaults (theClass, context) {\n return new Promise(function (resolve, reject) {\n ensureLoadedPreferences(context).then(\n context => {\n if (!context.preferencesFile) {\n debug.log(\n 'Not doing private class preferences as no access to preferences file. ' +\n context.preferencesFileError\n )\n return\n }\n const regs = kb.each(\n null,\n ns.solid('forClass'),\n theClass,\n context.preferencesFile\n )\n let ins = []\n let prefs\n let reg\n if (regs.length) {\n // Use existing node if we can\n regs.forEach(r => {\n prefs = prefs || kb.any(r, ns.solid('personalDefaults'))\n })\n if (prefs) {\n context.personalDefaults = prefs // Found one\n resolve(context)\n return\n } else {\n prefs = widgets.newThing(context.preferencesFile)\n reg = regs[0]\n }\n } else {\n // no regs fo class\n reg = widgets.newThing(context.preferencesFile)\n ins = [\n $rdf.st(\n reg,\n ns.rdf('type'),\n ns.solid('TypeRegistration'),\n context.preferencesFile\n ),\n $rdf.st(reg, ns.solid('forClass'), theClass, context.preferencesFile)\n ]\n }\n prefs = widgets.newThing(context.preferencesFile)\n ins.push(\n $rdf.st(\n reg,\n ns.solid('personalDefaults'),\n prefs,\n context.preferencesFile\n )\n )\n kb.updater.update([], ins, function (uri, ok, errm) {\n if (!ok) {\n reject(new Error('Setting preferences for ' + theClass + ': ' + errm))\n } else {\n context.personalDefaults = prefs\n resolve(context)\n }\n })\n },\n err => {\n reject(err)\n }\n )\n })\n}\n\nexport function renderPreferencesForm (subject, theClass, preferencesForm, context) {\n const prefContainer = context.dom.createElement('div')\n participation.participationObject(subject, subject.doc(), context.me).then(\n participation => {\n const dom = context.dom\n function heading (text) {\n prefContainer.appendChild(dom.createElement('h5')).textContent = text\n }\n heading('My view of this ' + context.noun)\n widgets.appendForm(\n dom,\n prefContainer,\n {},\n participation,\n preferencesForm,\n subject.doc(),\n (ok, mes) => {\n if (!ok) widgets.complain(context, mes)\n }\n )\n\n heading(\"Everyone's view of this \" + context.noun)\n recordSharedPreferences(subject, context).then(context => {\n const sharedPreferences = context.sharedPreferences\n widgets.appendForm(\n dom,\n prefContainer,\n {},\n sharedPreferences,\n preferencesForm,\n subject.doc(),\n (ok, mes) => {\n if (!ok) widgets.complain(context, mes)\n }\n )\n\n heading('My default view of any ' + context.noun)\n recordPersonalDefaults(theClass, context).then(\n context => {\n widgets.appendForm(\n dom,\n prefContainer,\n {},\n context.personalDefaults,\n preferencesForm,\n context.preferencesFile,\n (ok, mes) => {\n if (!ok) widgets.complain(context, mes)\n }\n )\n },\n err => {\n widgets.complain(context, err)\n }\n )\n })\n },\n err => {\n // parp object fails\n prefContainer.appendChild(widgets.errorMessageBlock(context.dom, err))\n }\n )\n return prefContainer\n}\n\n// This should be part of rdflib.js ad part of the RDFJS Standard!!\n\nfunction toJS (term) {\n if (!term.datatype) return term // Objects remain objects\n if (term.datatype.equals(ns.xsd('boolean'))) {\n return term.value === '1'\n }\n if (\n term.datatype.equals(ns.xsd('dateTime')) ||\n term.datatype.equals(ns.xsd('date'))\n ) {\n return new Date(term.value)\n }\n if (\n term.datatype.equals(ns.xsd('integer')) ||\n term.datatype.equals(ns.xsd('float')) ||\n term.datatype.equals(ns.xsd('decimal'))\n ) {\n return Number(term.value)\n }\n return term.value\n}\n\n// This is the function which acuakly reads and combines the preferences\n//\n// @@ make it much more tolerant of missing buts of prefernces\nexport function getPreferencesForClass (subject, theClass, predicates, context) {\n return new Promise(function (resolve, reject) {\n recordSharedPreferences(subject, context).then(context => {\n const sharedPreferences = context.sharedPreferences\n if (context.me) {\n participation\n .participationObject(subject, subject.doc(), context.me)\n .then(participation => {\n recordPersonalDefaults(theClass, context).then(context => {\n const results = []\n const personalDefaults = context.personalDefaults\n predicates.forEach(pred => {\n // Order of preference: My settings on object, Global settings on object, my settings on class\n const v1 =\n kb.any(participation, pred) ||\n kb.any(sharedPreferences, pred) ||\n kb.any(personalDefaults, pred)\n if (v1) {\n results[pred.uri] = toJS(v1)\n }\n })\n resolve(results)\n }, reject)\n }, reject)\n } else {\n // no user defined, just use common prefs\n const results = []\n predicates.forEach(pred => {\n const v1 = kb.any(sharedPreferences, pred)\n if (v1) {\n results[pred.uri] = toJS(v1)\n }\n })\n resolve(results)\n }\n })\n })\n}\n\n// ends\n"],"mappings":"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"}
@@ -1,47 +1,40 @@
1
1
  'use strict';
2
+
2
3
  /**
3
4
  * Provides a simple configuration object for Solid web client and other
4
5
  * modules.
5
6
  * @module config-default
6
7
  */
7
-
8
8
  Object.defineProperty(exports, "__esModule", {
9
9
  value: true
10
10
  });
11
11
  exports["default"] = void 0;
12
12
  var _default = {
13
13
  // @@ should not use export default
14
-
15
14
  /**
16
15
  * Primary authentication endpoint
17
16
  */
18
17
  authEndpoint: '',
19
-
20
18
  /**
21
19
  * Fallback authentication endpoint
22
20
  */
23
21
  fallbackAuthEndpoint: 'https://databox.me/',
24
-
25
22
  /**
26
23
  * Default signup endpoints (list of identity providers)
27
24
  */
28
25
  signupEndpoint: 'https://solidproject.org/use-solid/',
29
-
30
26
  /**
31
27
  * Default height of the Signup popup window, in pixels
32
28
  */
33
29
  signupWindowHeight: 600,
34
-
35
30
  /**
36
31
  * Default width of the Signup popup window, in pixels
37
32
  */
38
33
  signupWindowWidth: 1024,
39
-
40
34
  /**
41
35
  * Path to the client private key (only needed when running within node)
42
36
  */
43
37
  key: '',
44
-
45
38
  /**
46
39
  * Path to the client certificate (only needed when running within node)
47
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config-default.js","names":["authEndpoint","fallbackAuthEndpoint","signupEndpoint","signupWindowHeight","signupWindowWidth","key","cert"],"sources":["../../src/signup/config-default.js"],"sourcesContent":["'use strict'\n/**\n * Provides a simple configuration object for Solid web client and other\n * modules.\n * @module config-default\n */\nexport default { // @@ should not use export default\n /**\n * Primary authentication endpoint\n */\n authEndpoint: '',\n\n /**\n * Fallback authentication endpoint\n */\n fallbackAuthEndpoint: 'https://databox.me/',\n\n /**\n * Default signup endpoints (list of identity providers)\n */\n signupEndpoint: 'https://solidproject.org/use-solid/',\n\n /**\n * Default height of the Signup popup window, in pixels\n */\n signupWindowHeight: 600,\n\n /**\n * Default width of the Signup popup window, in pixels\n */\n signupWindowWidth: 1024,\n\n /**\n * Path to the client private key (only needed when running within node)\n */\n key: '',\n\n /**\n * Path to the client certificate (only needed when running within node)\n */\n cert: ''\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;eACe;EAAE;;EACf;AACF;AACA;EACEA,YAAY,EAAE,EAJD;;EAMb;AACF;AACA;EACEC,oBAAoB,EAAE,qBATT;;EAWb;AACF;AACA;EACEC,cAAc,EAAE,qCAdH;;EAgBb;AACF;AACA;EACEC,kBAAkB,EAAE,GAnBP;;EAqBb;AACF;AACA;EACEC,iBAAiB,EAAE,IAxBN;;EA0Bb;AACF;AACA;EACEC,GAAG,EAAE,EA7BQ;;EA+Bb;AACF;AACA;EACEC,IAAI,EAAE;AAlCO,C"}
1
+ {"version":3,"file":"config-default.js","names":["authEndpoint","fallbackAuthEndpoint","signupEndpoint","signupWindowHeight","signupWindowWidth","key","cert"],"sources":["../../src/signup/config-default.js"],"sourcesContent":["'use strict'\n/**\n * Provides a simple configuration object for Solid web client and other\n * modules.\n * @module config-default\n */\nexport default { // @@ should not use export default\n /**\n * Primary authentication endpoint\n */\n authEndpoint: '',\n\n /**\n * Fallback authentication endpoint\n */\n fallbackAuthEndpoint: 'https://databox.me/',\n\n /**\n * Default signup endpoints (list of identity providers)\n */\n signupEndpoint: 'https://solidproject.org/use-solid/',\n\n /**\n * Default height of the Signup popup window, in pixels\n */\n signupWindowHeight: 600,\n\n /**\n * Default width of the Signup popup window, in pixels\n */\n signupWindowWidth: 1024,\n\n /**\n * Path to the client private key (only needed when running within node)\n */\n key: '',\n\n /**\n * Path to the client certificate (only needed when running within node)\n */\n cert: ''\n}\n"],"mappings":"AAAA,YAAY;;AACZ;AACA;AACA;AACA;AACA;AAJA;EAAA;AAAA;AAAA;AAAA,eAKe;EAAE;EACf;AACF;AACA;EACEA,YAAY,EAAE,EAAE;EAEhB;AACF;AACA;EACEC,oBAAoB,EAAE,qBAAqB;EAE3C;AACF;AACA;EACEC,cAAc,EAAE,qCAAqC;EAErD;AACF;AACA;EACEC,kBAAkB,EAAE,GAAG;EAEvB;AACF;AACA;EACEC,iBAAiB,EAAE,IAAI;EAEvB;AACF;AACA;EACEC,GAAG,EAAE,EAAE;EAEP;AACF;AACA;EACEC,IAAI,EAAE;AACR,CAAC;AAAA"}
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.Signup = Signup;
9
-
10
8
  var _configDefault = _interopRequireDefault(require("./config-default"));
11
-
12
9
  /**
13
10
  * Provides functionality for signing up with a Solid provider
14
11
  * @module signup
@@ -21,13 +18,12 @@ var _configDefault = _interopRequireDefault(require("./config-default"));
21
18
  function Signup(config) {
22
19
  this.config = config || _configDefault["default"];
23
20
  }
21
+
24
22
  /**
25
23
  * Sets up an event listener to monitor login messages from child window/iframe
26
24
  * @method listen
27
25
  * @return {Promise<String>} Event listener promise, resolves to user's WebID
28
26
  */
29
-
30
-
31
27
  Signup.prototype.listen = function listen() {
32
28
  var promise = new Promise(function (resolve, reject) {
33
29
  var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';
@@ -35,10 +31,8 @@ Signup.prototype.listen = function listen() {
35
31
  var messageEvent = eventMethod === 'attachEvent' ? 'onmessage' : 'message';
36
32
  eventListener(messageEvent, function (e) {
37
33
  var u = e.data;
38
-
39
34
  if (u.slice(0, 5) === 'User:') {
40
35
  var user = u.slice(5, u.length);
41
-
42
36
  if (user && user.length > 0 && user.slice(0, 4) === 'http') {
43
37
  return resolve(user);
44
38
  } else {
@@ -49,6 +43,7 @@ Signup.prototype.listen = function listen() {
49
43
  });
50
44
  return promise;
51
45
  };
46
+
52
47
  /**
53
48
  * Opens a signup popup window, sets up `listen()`.
54
49
  * @method signup
@@ -57,15 +52,13 @@ Signup.prototype.listen = function listen() {
57
52
  * @return {Promise<String>} Returns a listener promise, resolves with signed
58
53
  * up user's WebID.
59
54
  */
60
-
61
-
62
55
  Signup.prototype.signup = function signup(signupUrl) {
63
56
  signupUrl = signupUrl || this.config.signupEndpoint;
64
57
  var width = this.config.signupWindowWidth;
65
- var height = this.config.signupWindowHeight; // set borders
66
-
67
- var leftPosition = window.screen.width / 2 - (width / 2 + 10); // set title and status bars
68
-
58
+ var height = this.config.signupWindowHeight;
59
+ // set borders
60
+ var leftPosition = window.screen.width / 2 - (width / 2 + 10);
61
+ // set title and status bars
69
62
  var topPosition = window.screen.height / 2 - (height / 2 + 50);
70
63
  var windowTitle = 'Solid signup';
71
64
  var windowUrl = signupUrl + '?origin=' + encodeURIComponent(window.location.origin);
@@ -1 +1 @@
1
- {"version":3,"file":"signup.js","names":["Signup","config","defaultConfig","prototype","listen","promise","Promise","resolve","reject","eventMethod","window","addEventListener","eventListener","messageEvent","e","u","data","slice","user","length","signup","signupUrl","signupEndpoint","width","signupWindowWidth","height","signupWindowHeight","leftPosition","screen","topPosition","windowTitle","windowUrl","encodeURIComponent","location","origin","windowSpecs","open","self","then","webid"],"sources":["../../src/signup/signup.js"],"sourcesContent":["import defaultConfig from './config-default'\n\n/**\n * Provides functionality for signing up with a Solid provider\n * @module signup\n */\n\n/**\n * Creates a Signup UI manager\n * @class\n */\nexport function Signup (config) {\n this.config = config || defaultConfig\n}\n\n/**\n * Sets up an event listener to monitor login messages from child window/iframe\n * @method listen\n * @return {Promise<String>} Event listener promise, resolves to user's WebID\n */\nSignup.prototype.listen = function listen () {\n const promise = new Promise(function (resolve, reject) {\n const eventMethod = window.addEventListener\n ? 'addEventListener'\n : 'attachEvent'\n const eventListener = window[eventMethod]\n const messageEvent = eventMethod === 'attachEvent'\n ? 'onmessage'\n : 'message'\n eventListener(messageEvent, function (e) {\n const u = e.data\n if (u.slice(0, 5) === 'User:') {\n const user = u.slice(5, u.length)\n if (user && user.length > 0 && user.slice(0, 4) === 'http') {\n return resolve(user)\n } else {\n return reject(user)\n }\n }\n }, true)\n })\n return promise\n}\n\n/**\n * Opens a signup popup window, sets up `listen()`.\n * @method signup\n * @static\n * @param signupUrl {String} Location of a Solid server for user signup.\n * @return {Promise<String>} Returns a listener promise, resolves with signed\n * up user's WebID.\n */\nSignup.prototype.signup = function signup (signupUrl) {\n signupUrl = signupUrl || this.config.signupEndpoint\n const width = this.config.signupWindowWidth\n const height = this.config.signupWindowHeight\n // set borders\n const leftPosition = (window.screen.width / 2) - ((width / 2) + 10)\n // set title and status bars\n const topPosition = (window.screen.height / 2) - ((height / 2) + 50)\n const windowTitle = 'Solid signup'\n const windowUrl = signupUrl + '?origin=' +\n encodeURIComponent(window.location.origin)\n const windowSpecs = 'resizable,scrollbars,status,width=' + width + ',height=' +\n height + ',left=' + leftPosition + ',top=' + topPosition\n window.open(windowUrl, windowTitle, windowSpecs)\n const self = this\n return new Promise(function (resolve) {\n self.listen()\n .then(function (webid) {\n return resolve(webid)\n })\n })\n}\n"],"mappings":";;;;;;;;;AAAA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,SAASA,MAAT,CAAiBC,MAAjB,EAAyB;EAC9B,KAAKA,MAAL,GAAcA,MAAM,IAAIC,yBAAxB;AACD;AAED;AACA;AACA;AACA;AACA;;;AACAF,MAAM,CAACG,SAAP,CAAiBC,MAAjB,GAA0B,SAASA,MAAT,GAAmB;EAC3C,IAAMC,OAAO,GAAG,IAAIC,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;IACrD,IAAMC,WAAW,GAAGC,MAAM,CAACC,gBAAP,GAChB,kBADgB,GAEhB,aAFJ;IAGA,IAAMC,aAAa,GAAGF,MAAM,CAACD,WAAD,CAA5B;IACA,IAAMI,YAAY,GAAGJ,WAAW,KAAK,aAAhB,GACjB,WADiB,GAEjB,SAFJ;IAGAG,aAAa,CAACC,YAAD,EAAe,UAAUC,CAAV,EAAa;MACvC,IAAMC,CAAC,GAAGD,CAAC,CAACE,IAAZ;;MACA,IAAID,CAAC,CAACE,KAAF,CAAQ,CAAR,EAAW,CAAX,MAAkB,OAAtB,EAA+B;QAC7B,IAAMC,IAAI,GAAGH,CAAC,CAACE,KAAF,CAAQ,CAAR,EAAWF,CAAC,CAACI,MAAb,CAAb;;QACA,IAAID,IAAI,IAAIA,IAAI,CAACC,MAAL,GAAc,CAAtB,IAA2BD,IAAI,CAACD,KAAL,CAAW,CAAX,EAAc,CAAd,MAAqB,MAApD,EAA4D;UAC1D,OAAOV,OAAO,CAACW,IAAD,CAAd;QACD,CAFD,MAEO;UACL,OAAOV,MAAM,CAACU,IAAD,CAAb;QACD;MACF;IACF,CAVY,EAUV,IAVU,CAAb;EAWD,CAnBe,CAAhB;EAoBA,OAAOb,OAAP;AACD,CAtBD;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAL,MAAM,CAACG,SAAP,CAAiBiB,MAAjB,GAA0B,SAASA,MAAT,CAAiBC,SAAjB,EAA4B;EACpDA,SAAS,GAAGA,SAAS,IAAI,KAAKpB,MAAL,CAAYqB,cAArC;EACA,IAAMC,KAAK,GAAG,KAAKtB,MAAL,CAAYuB,iBAA1B;EACA,IAAMC,MAAM,GAAG,KAAKxB,MAAL,CAAYyB,kBAA3B,CAHoD,CAIpD;;EACA,IAAMC,YAAY,GAAIjB,MAAM,CAACkB,MAAP,CAAcL,KAAd,GAAsB,CAAvB,IAA8BA,KAAK,GAAG,CAAT,GAAc,EAA3C,CAArB,CALoD,CAMpD;;EACA,IAAMM,WAAW,GAAInB,MAAM,CAACkB,MAAP,CAAcH,MAAd,GAAuB,CAAxB,IAA+BA,MAAM,GAAG,CAAV,GAAe,EAA7C,CAApB;EACA,IAAMK,WAAW,GAAG,cAApB;EACA,IAAMC,SAAS,GAAGV,SAAS,GAAG,UAAZ,GAChBW,kBAAkB,CAACtB,MAAM,CAACuB,QAAP,CAAgBC,MAAjB,CADpB;EAEA,IAAMC,WAAW,GAAG,uCAAuCZ,KAAvC,GAA+C,UAA/C,GAClBE,MADkB,GACT,QADS,GACEE,YADF,GACiB,OADjB,GAC2BE,WAD/C;EAEAnB,MAAM,CAAC0B,IAAP,CAAYL,SAAZ,EAAuBD,WAAvB,EAAoCK,WAApC;EACA,IAAME,IAAI,GAAG,IAAb;EACA,OAAO,IAAI/B,OAAJ,CAAY,UAAUC,OAAV,EAAmB;IACpC8B,IAAI,CAACjC,MAAL,GACGkC,IADH,CACQ,UAAUC,KAAV,EAAiB;MACrB,OAAOhC,OAAO,CAACgC,KAAD,CAAd;IACD,CAHH;EAID,CALM,CAAP;AAMD,CArBD"}
1
+ {"version":3,"file":"signup.js","names":["Signup","config","defaultConfig","prototype","listen","promise","Promise","resolve","reject","eventMethod","window","addEventListener","eventListener","messageEvent","e","u","data","slice","user","length","signup","signupUrl","signupEndpoint","width","signupWindowWidth","height","signupWindowHeight","leftPosition","screen","topPosition","windowTitle","windowUrl","encodeURIComponent","location","origin","windowSpecs","open","self","then","webid"],"sources":["../../src/signup/signup.js"],"sourcesContent":["import defaultConfig from './config-default'\n\n/**\n * Provides functionality for signing up with a Solid provider\n * @module signup\n */\n\n/**\n * Creates a Signup UI manager\n * @class\n */\nexport function Signup (config) {\n this.config = config || defaultConfig\n}\n\n/**\n * Sets up an event listener to monitor login messages from child window/iframe\n * @method listen\n * @return {Promise<String>} Event listener promise, resolves to user's WebID\n */\nSignup.prototype.listen = function listen () {\n const promise = new Promise(function (resolve, reject) {\n const eventMethod = window.addEventListener\n ? 'addEventListener'\n : 'attachEvent'\n const eventListener = window[eventMethod]\n const messageEvent = eventMethod === 'attachEvent'\n ? 'onmessage'\n : 'message'\n eventListener(messageEvent, function (e) {\n const u = e.data\n if (u.slice(0, 5) === 'User:') {\n const user = u.slice(5, u.length)\n if (user && user.length > 0 && user.slice(0, 4) === 'http') {\n return resolve(user)\n } else {\n return reject(user)\n }\n }\n }, true)\n })\n return promise\n}\n\n/**\n * Opens a signup popup window, sets up `listen()`.\n * @method signup\n * @static\n * @param signupUrl {String} Location of a Solid server for user signup.\n * @return {Promise<String>} Returns a listener promise, resolves with signed\n * up user's WebID.\n */\nSignup.prototype.signup = function signup (signupUrl) {\n signupUrl = signupUrl || this.config.signupEndpoint\n const width = this.config.signupWindowWidth\n const height = this.config.signupWindowHeight\n // set borders\n const leftPosition = (window.screen.width / 2) - ((width / 2) + 10)\n // set title and status bars\n const topPosition = (window.screen.height / 2) - ((height / 2) + 50)\n const windowTitle = 'Solid signup'\n const windowUrl = signupUrl + '?origin=' +\n encodeURIComponent(window.location.origin)\n const windowSpecs = 'resizable,scrollbars,status,width=' + width + ',height=' +\n height + ',left=' + leftPosition + ',top=' + topPosition\n window.open(windowUrl, windowTitle, windowSpecs)\n const self = this\n return new Promise(function (resolve) {\n self.listen()\n .then(function (webid) {\n return resolve(webid)\n })\n })\n}\n"],"mappings":";;;;;;;AAAA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,SAASA,MAAM,CAAEC,MAAM,EAAE;EAC9B,IAAI,CAACA,MAAM,GAAGA,MAAM,IAAIC,yBAAa;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACAF,MAAM,CAACG,SAAS,CAACC,MAAM,GAAG,SAASA,MAAM,GAAI;EAC3C,IAAMC,OAAO,GAAG,IAAIC,OAAO,CAAC,UAAUC,OAAO,EAAEC,MAAM,EAAE;IACrD,IAAMC,WAAW,GAAGC,MAAM,CAACC,gBAAgB,GACvC,kBAAkB,GAClB,aAAa;IACjB,IAAMC,aAAa,GAAGF,MAAM,CAACD,WAAW,CAAC;IACzC,IAAMI,YAAY,GAAGJ,WAAW,KAAK,aAAa,GAC9C,WAAW,GACX,SAAS;IACbG,aAAa,CAACC,YAAY,EAAE,UAAUC,CAAC,EAAE;MACvC,IAAMC,CAAC,GAAGD,CAAC,CAACE,IAAI;MAChB,IAAID,CAAC,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,EAAE;QAC7B,IAAMC,IAAI,GAAGH,CAAC,CAACE,KAAK,CAAC,CAAC,EAAEF,CAAC,CAACI,MAAM,CAAC;QACjC,IAAID,IAAI,IAAIA,IAAI,CAACC,MAAM,GAAG,CAAC,IAAID,IAAI,CAACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;UAC1D,OAAOV,OAAO,CAACW,IAAI,CAAC;QACtB,CAAC,MAAM;UACL,OAAOV,MAAM,CAACU,IAAI,CAAC;QACrB;MACF;IACF,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,CAAC;EACF,OAAOb,OAAO;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAL,MAAM,CAACG,SAAS,CAACiB,MAAM,GAAG,SAASA,MAAM,CAAEC,SAAS,EAAE;EACpDA,SAAS,GAAGA,SAAS,IAAI,IAAI,CAACpB,MAAM,CAACqB,cAAc;EACnD,IAAMC,KAAK,GAAG,IAAI,CAACtB,MAAM,CAACuB,iBAAiB;EAC3C,IAAMC,MAAM,GAAG,IAAI,CAACxB,MAAM,CAACyB,kBAAkB;EAC7C;EACA,IAAMC,YAAY,GAAIjB,MAAM,CAACkB,MAAM,CAACL,KAAK,GAAG,CAAC,IAAMA,KAAK,GAAG,CAAC,GAAI,EAAE,CAAC;EACnE;EACA,IAAMM,WAAW,GAAInB,MAAM,CAACkB,MAAM,CAACH,MAAM,GAAG,CAAC,IAAMA,MAAM,GAAG,CAAC,GAAI,EAAE,CAAC;EACpE,IAAMK,WAAW,GAAG,cAAc;EAClC,IAAMC,SAAS,GAAGV,SAAS,GAAG,UAAU,GACtCW,kBAAkB,CAACtB,MAAM,CAACuB,QAAQ,CAACC,MAAM,CAAC;EAC5C,IAAMC,WAAW,GAAG,oCAAoC,GAAGZ,KAAK,GAAG,UAAU,GAC3EE,MAAM,GAAG,QAAQ,GAAGE,YAAY,GAAG,OAAO,GAAGE,WAAW;EAC1DnB,MAAM,CAAC0B,IAAI,CAACL,SAAS,EAAED,WAAW,EAAEK,WAAW,CAAC;EAChD,IAAME,IAAI,GAAG,IAAI;EACjB,OAAO,IAAI/B,OAAO,CAAC,UAAUC,OAAO,EAAE;IACpC8B,IAAI,CAACjC,MAAM,EAAE,CACVkC,IAAI,CAAC,UAAUC,KAAK,EAAE;MACrB,OAAOhC,OAAO,CAACgC,KAAK,CAAC;IACvB,CAAC,CAAC;EACN,CAAC,CAAC;AACJ,CAAC"}
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.rawJsonDecorator = void 0;
7
-
8
7
  var rawJsonDecorator = function rawJsonDecorator(Story) {
9
8
  return "<pre>".concat(JSON.stringify(Story(), null, 2), "</pre>");
10
9
  };
11
-
12
10
  exports.rawJsonDecorator = rawJsonDecorator;
13
11
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","names":["rawJsonDecorator","Story","JSON","stringify"],"sources":["../../src/stories/decorators.js"],"sourcesContent":["export const rawJsonDecorator = (Story) => {\n return `<pre>${JSON.stringify(Story(), null, 2)}</pre>`\n}\n"],"mappings":";;;;;;;AAAO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAW;EACzC,sBAAeC,IAAI,CAACC,SAAL,CAAeF,KAAK,EAApB,EAAwB,IAAxB,EAA8B,CAA9B,CAAf;AACD,CAFM"}
1
+ {"version":3,"file":"decorators.js","names":["rawJsonDecorator","Story","JSON","stringify"],"sources":["../../src/stories/decorators.js"],"sourcesContent":["export const rawJsonDecorator = (Story) => {\n return `<pre>${JSON.stringify(Story(), null, 2)}</pre>`\n}\n"],"mappings":";;;;;;AAAO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAIC,KAAK,EAAK;EACzC,sBAAeC,IAAI,CAACC,SAAS,CAACF,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAAA"}
package/lib/style.js CHANGED
@@ -7,23 +7,25 @@ exports.style = void 0;
7
7
  // Common readable consistent stylesheet
8
8
  // to avoid using style sheets which are document-global
9
9
  // and make programmable style toggling with selection, drag over, etc easier
10
+
10
11
  // These must all end with semicolon so they can be appended to.
11
- var formBorderColor = '#888888'; // Mid-grey
12
12
 
13
+ var formBorderColor = '#888888'; // Mid-grey
13
14
  var lowProfileLinkColor = '#3B5998'; // Grey-blue, e.g., for field labels linking to ontology
14
-
15
15
  var formFieldNameBoxWidth = '8em'; // The fixed amount to get form fields to line up
16
16
  // The latter we put in when switching awy from using tables. Getting allignment between
17
17
  // fields in different groups though is hard problem.
18
18
 
19
19
  var style = {
20
20
  // styleModule
21
+
21
22
  checkboxStyle: 'colour: black; font-size: 100%; padding-left: 0.5 em; padding-right: 0.5 em;',
22
23
  checkboxInputStyle: 'font-size: 150%; height: 1.2em; width: 1.2em; background-color: #eef; border-radius:0.2em; margin: 0.1em',
23
24
  fieldLabelStyle: 'color: #3B5998; text-decoration: none;',
24
25
  formSelectSTyle: 'background-color: #eef; padding: 0.5em; border: .05em solid #88c; border-radius:0.2em; font-size: 100%; margin:0.4em;',
25
26
  textInputStyle: 'background-color: #eef; padding: 0.5em; border: .05em solid #88c; border-radius:0.2em; font-size: 100%; margin:0.4em;',
26
- textInputStyleUneditable: // Color difference only
27
+ textInputStyleUneditable:
28
+ // Color difference only
27
29
  'background-color: white; padding: 0.5em; border: .05em solid white; border-radius:0.2em; font-size: 100%; margin:0.4em;',
28
30
  textInputSize: 20,
29
31
  // Default text input size in characters roughly
@@ -40,6 +42,7 @@ var style = {
40
42
  pendingeditModifier: 'color: #bbb;',
41
43
  highlightColor: '#7C4DFF',
42
44
  // Solid lavendar https://design.inrupt.com/atomic-core/?cat=Core
45
+
43
46
  // Contacts
44
47
  personaBarStyle: 'width: 100%; height: 4em; background-color: #eee; vertical-align: middle;',
45
48
  searchInputStyle: 'border: 0.1em solid #444; border-radius: 0.2em; width: 100%; font-size: 100%; padding: 0.1em 0.6em; margin 0.2em;',
@@ -47,6 +50,7 @@ var style = {
47
50
  // Login buttons
48
51
  signInButtonStyle: 'padding: 1em; border-radius:0.2em; font-size: 100%;',
49
52
  // was 0.5em radius
53
+
50
54
  // Forms
51
55
  heading1Style: 'font-size: 180%; font-weight: bold; color: #888888; padding: 0.5em; margin: 0.7em 0.0m;',
52
56
  // originally was brown; now grey
@@ -56,6 +60,7 @@ var style = {
56
60
  // For example, in large forms or before a small form
57
61
  heading4Style: 'font-size: 110%; font-weight: bold; color: #888888; padding: 0.2em; margin: 0.7em 0.0em;',
58
62
  // Lowest level used by default in small things
63
+
59
64
  formBorderColor: formBorderColor,
60
65
  // originally was brown; now grey
61
66
  formHeadingColor: '#888888',
@@ -81,10 +86,8 @@ var style = {
81
86
  linkDivStyle: 'width:2em; padding:0.5em; height: 4em;'
82
87
  };
83
88
  exports.style = style;
84
-
85
89
  style.setStyle = function setStyle(ele, styleName) {
86
90
  ele.style = style[styleName];
87
91
  };
88
-
89
92
  module.exports = style; // @@ No way to do this in ESM
90
93
  //# sourceMappingURL=style.js.map