solid-ui 2.6.1 → 3.0.0-63a1640

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 (369) hide show
  1. package/LICENSE.md +3 -1
  2. package/README.md +236 -30
  3. package/dist/acl/access-controller.js +238 -0
  4. package/dist/acl/access-controller.js.map +1 -0
  5. package/{lib → dist}/acl/access-groups.d.ts +2 -2
  6. package/{lib → dist}/acl/access-groups.d.ts.map +1 -1
  7. package/dist/acl/access-groups.js +323 -0
  8. package/dist/acl/access-groups.js.map +1 -0
  9. package/dist/acl/acl-control.js +173 -0
  10. package/dist/acl/acl-control.js.map +1 -0
  11. package/dist/acl/acl.js +495 -0
  12. package/dist/acl/acl.js.map +1 -0
  13. package/dist/acl/add-agent-buttons.js +217 -0
  14. package/dist/acl/add-agent-buttons.js.map +1 -0
  15. package/dist/acl/index.js +32 -0
  16. package/dist/acl/index.js.map +1 -0
  17. package/dist/acl/types.js +6 -0
  18. package/dist/acl/types.js.map +1 -0
  19. package/dist/chat/keys.js +106 -0
  20. package/dist/chat/keys.js.map +1 -0
  21. package/dist/chat/signature.js +63 -0
  22. package/dist/chat/signature.js.map +1 -0
  23. package/dist/create/create.js +249 -0
  24. package/dist/create/create.js.map +1 -0
  25. package/dist/create/index.js +5 -0
  26. package/dist/create/index.js.map +1 -0
  27. package/dist/create/types.js +2 -0
  28. package/dist/create/types.js.map +1 -0
  29. package/dist/debug.d.ts.map +1 -0
  30. package/dist/debug.js +13 -0
  31. package/dist/debug.js.map +1 -0
  32. package/dist/footer/index.js +67 -0
  33. package/dist/footer/index.js.map +1 -0
  34. package/dist/header/empty-profile.js +11 -0
  35. package/dist/header/empty-profile.js.map +1 -0
  36. package/dist/header/index.js +260 -0
  37. package/dist/header/index.js.map +1 -0
  38. package/dist/iconBase.js +37 -0
  39. package/dist/iconBase.js.map +1 -0
  40. package/dist/icons/solid_logo.js.map +1 -0
  41. package/{lib → dist}/index.d.ts +7 -9
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +102 -0
  44. package/dist/index.js.map +1 -0
  45. package/{lib → dist}/log.d.ts.map +1 -1
  46. package/dist/log.js +182 -0
  47. package/dist/log.js.map +1 -0
  48. package/dist/login/login.js +858 -0
  49. package/dist/login/login.js.map +1 -0
  50. package/dist/matrix/index.js +5 -0
  51. package/dist/matrix/index.js.map +1 -0
  52. package/dist/matrix/matrix.js +217 -0
  53. package/dist/matrix/matrix.js.map +1 -0
  54. package/dist/matrix/types.js +2 -0
  55. package/dist/matrix/types.js.map +1 -0
  56. package/dist/media/index.js +6 -0
  57. package/dist/media/index.js.map +1 -0
  58. package/dist/media/media-capture.js +161 -0
  59. package/dist/media/media-capture.js.map +1 -0
  60. package/dist/pad.js +775 -0
  61. package/dist/pad.js.map +1 -0
  62. package/{lib → dist}/participation.d.ts.map +1 -1
  63. package/dist/participation.js +184 -0
  64. package/dist/participation.js.map +1 -0
  65. package/dist/solid-ui.esm.js +25531 -0
  66. package/dist/solid-ui.esm.js.map +1 -0
  67. package/dist/solid-ui.esm.min.js +43 -0
  68. package/dist/solid-ui.esm.min.js.map +1 -0
  69. package/dist/solid-ui.js +23479 -68931
  70. package/dist/solid-ui.js.map +1 -1
  71. package/dist/solid-ui.min.js +40 -2
  72. package/dist/solid-ui.min.js.map +1 -1
  73. package/dist/tabs.js +388 -0
  74. package/dist/tabs.js.map +1 -0
  75. package/{lib → dist}/utils/headerFooterHelpers.d.ts.map +1 -1
  76. package/dist/utils/headerFooterHelpers.js +114 -0
  77. package/dist/utils/headerFooterHelpers.js.map +1 -0
  78. package/dist/utils/keyHelpers/accessData.js +64 -0
  79. package/dist/utils/keyHelpers/accessData.js.map +1 -0
  80. package/dist/utils/keyHelpers/acl.js +74 -0
  81. package/dist/utils/keyHelpers/acl.js.map +1 -0
  82. package/dist/utils/keyHelpers/otherHelpers.js +13 -0
  83. package/dist/utils/keyHelpers/otherHelpers.js.map +1 -0
  84. package/dist/utils/label.js +111 -0
  85. package/dist/utils/label.js.map +1 -0
  86. package/dist/versionInfo.js +30 -0
  87. package/dist/versionInfo.js.map +1 -0
  88. package/dist/widgets/buttons/iconLinks.js +44 -0
  89. package/dist/widgets/buttons/iconLinks.js.map +1 -0
  90. package/dist/widgets/buttons.js +1280 -0
  91. package/dist/widgets/buttons.js.map +1 -0
  92. package/dist/widgets/error.d.ts +14 -0
  93. package/dist/widgets/error.d.ts.map +1 -0
  94. package/dist/widgets/error.js +35 -0
  95. package/dist/widgets/error.js.map +1 -0
  96. package/dist/widgets/forms/autocomplete/autocompleteBar.js +123 -0
  97. package/dist/widgets/forms/autocomplete/autocompleteBar.js.map +1 -0
  98. package/dist/widgets/forms/autocomplete/autocompleteField.js +199 -0
  99. package/dist/widgets/forms/autocomplete/autocompleteField.js.map +1 -0
  100. package/dist/widgets/forms/autocomplete/autocompletePicker.js +256 -0
  101. package/dist/widgets/forms/autocomplete/autocompletePicker.js.map +1 -0
  102. package/dist/widgets/forms/autocomplete/language.js +104 -0
  103. package/dist/widgets/forms/autocomplete/language.js.map +1 -0
  104. package/dist/widgets/forms/autocomplete/publicData.js +460 -0
  105. package/dist/widgets/forms/autocomplete/publicData.js.map +1 -0
  106. package/dist/widgets/forms/basic.js +241 -0
  107. package/dist/widgets/forms/basic.js.map +1 -0
  108. package/dist/widgets/forms/comment.js +46 -0
  109. package/dist/widgets/forms/comment.js.map +1 -0
  110. package/dist/widgets/forms/fieldFunction.js +44 -0
  111. package/dist/widgets/forms/fieldFunction.js.map +1 -0
  112. package/dist/widgets/forms/fieldParams.js +89 -0
  113. package/dist/widgets/forms/fieldParams.js.map +1 -0
  114. package/{lib → dist}/widgets/forms/formStyle.d.ts.map +1 -1
  115. package/dist/widgets/forms/formStyle.js +36 -0
  116. package/dist/widgets/forms/formStyle.js.map +1 -0
  117. package/{lib → dist}/widgets/widgetHelpers.d.ts.map +1 -1
  118. package/{lib → dist}/widgets/widgetHelpers.js +14 -25
  119. package/dist/widgets/widgetHelpers.js.map +1 -0
  120. package/package.json +48 -52
  121. package/dist/789.solid-ui.min.js +0 -1
  122. package/dist/841.solid-ui.min.js +0 -3
  123. package/dist/841.solid-ui.min.js.LICENSE.txt +0 -58
  124. package/dist/841.solid-ui.min.js.map +0 -1
  125. package/dist/_2b19.solid-ui.js +0 -14
  126. package/dist/_2b19.solid-ui.js.map +0 -1
  127. package/dist/index.html +0 -1
  128. package/dist/solid-ui.min.js.LICENSE.txt +0 -57
  129. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +0 -12247
  130. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +0 -1
  131. package/lib/acl/access-controller.js +0 -391
  132. package/lib/acl/access-controller.js.map +0 -1
  133. package/lib/acl/access-groups.js +0 -507
  134. package/lib/acl/access-groups.js.map +0 -1
  135. package/lib/acl/acl-control.js +0 -237
  136. package/lib/acl/acl-control.js.map +0 -1
  137. package/lib/acl/acl.js +0 -517
  138. package/lib/acl/acl.js.map +0 -1
  139. package/lib/acl/add-agent-buttons.js +0 -434
  140. package/lib/acl/add-agent-buttons.js.map +0 -1
  141. package/lib/acl/index.js +0 -39
  142. package/lib/acl/index.js.map +0 -1
  143. package/lib/acl/types.js +0 -6
  144. package/lib/acl/types.js.map +0 -1
  145. package/lib/chat/bookmarks.js +0 -303
  146. package/lib/chat/bookmarks.js.map +0 -1
  147. package/lib/chat/chatLogic.js +0 -420
  148. package/lib/chat/chatLogic.js.map +0 -1
  149. package/lib/chat/dateFolder.js +0 -328
  150. package/lib/chat/dateFolder.js.map +0 -1
  151. package/lib/chat/infinite.js +0 -994
  152. package/lib/chat/infinite.js.map +0 -1
  153. package/lib/chat/keys.js +0 -232
  154. package/lib/chat/keys.js.map +0 -1
  155. package/lib/chat/message.js +0 -715
  156. package/lib/chat/message.js.map +0 -1
  157. package/lib/chat/messageTools.js +0 -538
  158. package/lib/chat/messageTools.js.map +0 -1
  159. package/lib/chat/signature.js +0 -109
  160. package/lib/chat/signature.js.map +0 -1
  161. package/lib/chat/thread.js +0 -535
  162. package/lib/chat/thread.js.map +0 -1
  163. package/lib/create/create.js +0 -242
  164. package/lib/create/create.js.map +0 -1
  165. package/lib/create/index.js +0 -11
  166. package/lib/create/index.js.map +0 -1
  167. package/lib/create/types.js +0 -6
  168. package/lib/create/types.js.map +0 -1
  169. package/lib/debug.d.ts.map +0 -1
  170. package/lib/debug.js +0 -30
  171. package/lib/debug.js.map +0 -1
  172. package/lib/folders.js +0 -132
  173. package/lib/folders.js.map +0 -1
  174. package/lib/footer/index.js +0 -123
  175. package/lib/footer/index.js.map +0 -1
  176. package/lib/header/empty-profile.js +0 -8
  177. package/lib/header/empty-profile.js.map +0 -1
  178. package/lib/header/index.js +0 -375
  179. package/lib/header/index.js.map +0 -1
  180. package/lib/iconBase.js +0 -44
  181. package/lib/iconBase.js.map +0 -1
  182. package/lib/icons/solid_logo.js.map +0 -1
  183. package/lib/index.d.ts.map +0 -1
  184. package/lib/index.js +0 -223
  185. package/lib/index.js.map +0 -1
  186. package/lib/log.js +0 -213
  187. package/lib/log.js.map +0 -1
  188. package/lib/login/login.js +0 -1241
  189. package/lib/login/login.js.map +0 -1
  190. package/lib/matrix/index.js +0 -11
  191. package/lib/matrix/index.js.map +0 -1
  192. package/lib/matrix/matrix.js +0 -216
  193. package/lib/matrix/matrix.js.map +0 -1
  194. package/lib/matrix/types.js +0 -6
  195. package/lib/matrix/types.js.map +0 -1
  196. package/lib/media/index.js +0 -12
  197. package/lib/media/index.js.map +0 -1
  198. package/lib/media/media-capture.js +0 -194
  199. package/lib/media/media-capture.js.map +0 -1
  200. package/lib/messageArea.js +0 -319
  201. package/lib/messageArea.js.map +0 -1
  202. package/lib/noun_Camera_1618446_000000.js +0 -8
  203. package/lib/noun_Camera_1618446_000000.js.map +0 -1
  204. package/lib/ns.js +0 -17
  205. package/lib/ns.js.map +0 -1
  206. package/lib/pad.js +0 -805
  207. package/lib/pad.js.map +0 -1
  208. package/lib/participation.js +0 -219
  209. package/lib/participation.js.map +0 -1
  210. package/lib/preferences.js +0 -215
  211. package/lib/preferences.js.map +0 -1
  212. package/lib/signup/config-default.js +0 -43
  213. package/lib/signup/config-default.js.map +0 -1
  214. package/lib/signup/signup.js +0 -74
  215. package/lib/signup/signup.js.map +0 -1
  216. package/lib/stories/decorators.js +0 -10
  217. package/lib/stories/decorators.js.map +0 -1
  218. package/lib/style.js +0 -158
  219. package/lib/style.js.map +0 -1
  220. package/lib/styleConstants.js +0 -35
  221. package/lib/styleConstants.js.map +0 -1
  222. package/lib/style_multiSelect.js +0 -62
  223. package/lib/style_multiSelect.js.map +0 -1
  224. package/lib/table.js +0 -1573
  225. package/lib/table.js.map +0 -1
  226. package/lib/tabs.js +0 -448
  227. package/lib/tabs.js.map +0 -1
  228. package/lib/typings.d.js +0 -2
  229. package/lib/typings.d.js.map +0 -1
  230. package/lib/utils/headerFooterHelpers.js +0 -165
  231. package/lib/utils/headerFooterHelpers.js.map +0 -1
  232. package/lib/utils/index.js +0 -527
  233. package/lib/utils/index.js.map +0 -1
  234. package/lib/utils/keyHelpers/accessData.js +0 -131
  235. package/lib/utils/keyHelpers/accessData.js.map +0 -1
  236. package/lib/utils/keyHelpers/acl.js +0 -90
  237. package/lib/utils/keyHelpers/acl.js.map +0 -1
  238. package/lib/utils/keyHelpers/otherHelpers.js +0 -21
  239. package/lib/utils/keyHelpers/otherHelpers.js.map +0 -1
  240. package/lib/utils/label.js +0 -103
  241. package/lib/utils/label.js.map +0 -1
  242. package/lib/versionInfo.d.ts +0 -32
  243. package/lib/versionInfo.d.ts.map +0 -1
  244. package/lib/versionInfo.js +0 -37
  245. package/lib/versionInfo.js.map +0 -1
  246. package/lib/widgets/buttons/iconLinks.js +0 -53
  247. package/lib/widgets/buttons/iconLinks.js.map +0 -1
  248. package/lib/widgets/buttons.js +0 -1306
  249. package/lib/widgets/buttons.js.map +0 -1
  250. package/lib/widgets/dragAndDrop.js +0 -194
  251. package/lib/widgets/dragAndDrop.js.map +0 -1
  252. package/lib/widgets/error.d.ts +0 -2
  253. package/lib/widgets/error.d.ts.map +0 -1
  254. package/lib/widgets/error.js +0 -46
  255. package/lib/widgets/error.js.map +0 -1
  256. package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -271
  257. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -1
  258. package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -258
  259. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -1
  260. package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -436
  261. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -1
  262. package/lib/widgets/forms/autocomplete/language.js +0 -189
  263. package/lib/widgets/forms/autocomplete/language.js.map +0 -1
  264. package/lib/widgets/forms/autocomplete/publicData.js +0 -636
  265. package/lib/widgets/forms/autocomplete/publicData.js.map +0 -1
  266. package/lib/widgets/forms/basic.js +0 -254
  267. package/lib/widgets/forms/basic.js.map +0 -1
  268. package/lib/widgets/forms/comment.js +0 -54
  269. package/lib/widgets/forms/comment.js.map +0 -1
  270. package/lib/widgets/forms/fieldFunction.js +0 -52
  271. package/lib/widgets/forms/fieldFunction.js.map +0 -1
  272. package/lib/widgets/forms/fieldParams.js +0 -77
  273. package/lib/widgets/forms/fieldParams.js.map +0 -1
  274. package/lib/widgets/forms/formStyle.js +0 -44
  275. package/lib/widgets/forms/formStyle.js.map +0 -1
  276. package/lib/widgets/forms.js +0 -2045
  277. package/lib/widgets/forms.js.map +0 -1
  278. package/lib/widgets/index.js +0 -110
  279. package/lib/widgets/index.js.map +0 -1
  280. package/lib/widgets/multiSelect.js +0 -658
  281. package/lib/widgets/multiSelect.js.map +0 -1
  282. package/lib/widgets/peoplePicker.js +0 -467
  283. package/lib/widgets/peoplePicker.js.map +0 -1
  284. package/lib/widgets/widgetHelpers.js.map +0 -1
  285. /package/{lib → dist}/acl/access-controller.d.ts +0 -0
  286. /package/{lib → dist}/acl/access-controller.d.ts.map +0 -0
  287. /package/{lib → dist}/acl/acl-control.d.ts +0 -0
  288. /package/{lib → dist}/acl/acl-control.d.ts.map +0 -0
  289. /package/{lib → dist}/acl/acl.d.ts +0 -0
  290. /package/{lib → dist}/acl/acl.d.ts.map +0 -0
  291. /package/{lib → dist}/acl/add-agent-buttons.d.ts +0 -0
  292. /package/{lib → dist}/acl/add-agent-buttons.d.ts.map +0 -0
  293. /package/{lib → dist}/acl/index.d.ts +0 -0
  294. /package/{lib → dist}/acl/index.d.ts.map +0 -0
  295. /package/{lib → dist}/acl/types.d.ts +0 -0
  296. /package/{lib → dist}/acl/types.d.ts.map +0 -0
  297. /package/{lib → dist}/chat/keys.d.ts +0 -0
  298. /package/{lib → dist}/chat/keys.d.ts.map +0 -0
  299. /package/{lib → dist}/chat/signature.d.ts +0 -0
  300. /package/{lib → dist}/chat/signature.d.ts.map +0 -0
  301. /package/{lib → dist}/create/create.d.ts +0 -0
  302. /package/{lib → dist}/create/create.d.ts.map +0 -0
  303. /package/{lib → dist}/create/index.d.ts +0 -0
  304. /package/{lib → dist}/create/index.d.ts.map +0 -0
  305. /package/{lib → dist}/create/types.d.ts +0 -0
  306. /package/{lib → dist}/create/types.d.ts.map +0 -0
  307. /package/{lib → dist}/debug.d.ts +0 -0
  308. /package/{lib → dist}/footer/index.d.ts +0 -0
  309. /package/{lib → dist}/footer/index.d.ts.map +0 -0
  310. /package/{lib → dist}/header/empty-profile.d.ts +0 -0
  311. /package/{lib → dist}/header/empty-profile.d.ts.map +0 -0
  312. /package/{lib → dist}/header/index.d.ts +0 -0
  313. /package/{lib → dist}/header/index.d.ts.map +0 -0
  314. /package/{lib → dist}/iconBase.d.ts +0 -0
  315. /package/{lib → dist}/iconBase.d.ts.map +0 -0
  316. /package/{lib → dist}/icons/solid_logo.d.ts +0 -0
  317. /package/{lib → dist}/icons/solid_logo.d.ts.map +0 -0
  318. /package/{lib → dist}/icons/solid_logo.js +0 -0
  319. /package/{lib → dist}/log.d.ts +0 -0
  320. /package/{lib → dist}/login/login.d.ts +0 -0
  321. /package/{lib → dist}/login/login.d.ts.map +0 -0
  322. /package/{lib → dist}/matrix/index.d.ts +0 -0
  323. /package/{lib → dist}/matrix/index.d.ts.map +0 -0
  324. /package/{lib → dist}/matrix/matrix.d.ts +0 -0
  325. /package/{lib → dist}/matrix/matrix.d.ts.map +0 -0
  326. /package/{lib → dist}/matrix/types.d.ts +0 -0
  327. /package/{lib → dist}/matrix/types.d.ts.map +0 -0
  328. /package/{lib → dist}/media/index.d.ts +0 -0
  329. /package/{lib → dist}/media/index.d.ts.map +0 -0
  330. /package/{lib → dist}/media/media-capture.d.ts +0 -0
  331. /package/{lib → dist}/media/media-capture.d.ts.map +0 -0
  332. /package/{lib → dist}/pad.d.ts +0 -0
  333. /package/{lib → dist}/pad.d.ts.map +0 -0
  334. /package/{lib → dist}/participation.d.ts +0 -0
  335. /package/{lib → dist}/tabs.d.ts +0 -0
  336. /package/{lib → dist}/tabs.d.ts.map +0 -0
  337. /package/{lib → dist}/utils/headerFooterHelpers.d.ts +0 -0
  338. /package/{lib → dist}/utils/keyHelpers/accessData.d.ts +0 -0
  339. /package/{lib → dist}/utils/keyHelpers/accessData.d.ts.map +0 -0
  340. /package/{lib → dist}/utils/keyHelpers/acl.d.ts +0 -0
  341. /package/{lib → dist}/utils/keyHelpers/acl.d.ts.map +0 -0
  342. /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts +0 -0
  343. /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts.map +0 -0
  344. /package/{lib → dist}/utils/label.d.ts +0 -0
  345. /package/{lib → dist}/utils/label.d.ts.map +0 -0
  346. /package/{lib → dist}/widgets/buttons/iconLinks.d.ts +0 -0
  347. /package/{lib → dist}/widgets/buttons/iconLinks.d.ts.map +0 -0
  348. /package/{lib → dist}/widgets/buttons.d.ts +0 -0
  349. /package/{lib → dist}/widgets/buttons.d.ts.map +0 -0
  350. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
  351. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
  352. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
  353. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
  354. /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
  355. /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
  356. /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts +0 -0
  357. /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts.map +0 -0
  358. /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts +0 -0
  359. /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
  360. /package/{lib → dist}/widgets/forms/basic.d.ts +0 -0
  361. /package/{lib → dist}/widgets/forms/basic.d.ts.map +0 -0
  362. /package/{lib → dist}/widgets/forms/comment.d.ts +0 -0
  363. /package/{lib → dist}/widgets/forms/comment.d.ts.map +0 -0
  364. /package/{lib → dist}/widgets/forms/fieldFunction.d.ts +0 -0
  365. /package/{lib → dist}/widgets/forms/fieldFunction.d.ts.map +0 -0
  366. /package/{lib → dist}/widgets/forms/fieldParams.d.ts +0 -0
  367. /package/{lib → dist}/widgets/forms/fieldParams.d.ts.map +0 -0
  368. /package/{lib → dist}/widgets/forms/formStyle.d.ts +0 -0
  369. /package/{lib → dist}/widgets/widgetHelpers.d.ts +0 -0
@@ -1,1241 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.ensureLoadedPreferences = ensureLoadedPreferences;
9
- exports.ensureLoadedProfile = ensureLoadedProfile;
10
- exports.ensureLoggedIn = ensureLoggedIn;
11
- exports.filterAvailablePanes = filterAvailablePanes;
12
- exports.findAppInstances = findAppInstances;
13
- exports.getUserRoles = getUserRoles;
14
- exports.loginStatusBox = loginStatusBox;
15
- exports.newAppInstance = newAppInstance;
16
- exports.registrationControl = registrationControl;
17
- exports.registrationList = registrationList;
18
- exports.renderScopeHeadingRow = renderScopeHeadingRow;
19
- exports.renderSignInPopup = renderSignInPopup;
20
- exports.scopeLabel = scopeLabel;
21
- exports.selectWorkspace = selectWorkspace;
22
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
23
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
24
- var _rdflib = require("rdflib");
25
- var _solidLogic = require("solid-logic");
26
- var debug = _interopRequireWildcard(require("../debug"));
27
- var style = _interopRequireWildcard(require("../style"));
28
- var _log = require("../log");
29
- var ns = _interopRequireWildcard(require("../ns.js"));
30
- var _signup = require("../signup/signup.js");
31
- var utils = _interopRequireWildcard(require("../utils"));
32
- var widgets = _interopRequireWildcard(require("../widgets"));
33
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t1 in e) "default" !== _t1 && {}.hasOwnProperty.call(e, _t1) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t1)) && (i.get || i.set) ? o(f, _t1, i) : f[_t1] = e[_t1]); return f; })(e, t); }
34
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
35
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
36
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /* eslint-disable camelcase */ /**
37
- * Signing in, signing up, profile and preferences reloading
38
- * Type index management
39
- *
40
- * Many functions in this module take a context object which
41
- * holds various RDF symbols, add to it, and return a promise of it.
42
- *
43
- * * `me` RDF symbol for the user's WebID
44
- * * `publicProfile` The user's public profile, iff loaded
45
- * * `preferencesFile` The user's personal preference file, iff loaded
46
- * * `index.public` The user's public type index file
47
- * * `index.private` The user's private type index file
48
- *
49
- * Not RDF symbols:
50
- * * `noun` A string in english for the type of thing -- like "address book"
51
- * * `instance` An array of nodes which are existing instances
52
- * * `containers` An array of nodes of containers of instances
53
- * * `div` A DOM element where UI can be displayed
54
- * * `statusArea` A DOM element (opt) progress stuff can be displayed, or error messages
55
- * *
56
- * * Vocabulary: "load" loads a file if it exists;
57
- * * 'Ensure" CREATES the file if it does not exist (if it can) and then loads it.
58
- * @packageDocumentation
59
- */
60
- var store = _solidLogic.solidLogicSingleton.store;
61
- var _solidLogicSingleton$ = _solidLogic.solidLogicSingleton.profile,
62
- loadPreferences = _solidLogicSingleton$.loadPreferences,
63
- loadProfile = _solidLogicSingleton$.loadProfile;
64
- var _solidLogicSingleton$2 = _solidLogic.solidLogicSingleton.typeIndex,
65
- getScopedAppInstances = _solidLogicSingleton$2.getScopedAppInstances,
66
- getRegistrations = _solidLogicSingleton$2.getRegistrations,
67
- loadAllTypeIndexes = _solidLogicSingleton$2.loadAllTypeIndexes,
68
- getScopedAppsFromIndex = _solidLogicSingleton$2.getScopedAppsFromIndex,
69
- deleteTypeIndexRegistration = _solidLogicSingleton$2.deleteTypeIndexRegistration;
70
-
71
- /**
72
- * Resolves with the logged in user's WebID
73
- *
74
- * @param context
75
- */
76
- // used to be logIn
77
- function ensureLoggedIn(context) {
78
- var me = _solidLogic.authn.currentUser();
79
- if (me) {
80
- _solidLogic.authn.saveUser(me, context);
81
- return Promise.resolve(context);
82
- }
83
- return new Promise(function (resolve) {
84
- _solidLogic.authn.checkUser().then(function (webId) {
85
- // Already logged in?
86
- if (webId) {
87
- debug.log("logIn: Already logged in as ".concat(webId));
88
- return resolve(context);
89
- }
90
- if (!context.div || !context.dom) {
91
- return resolve(context);
92
- }
93
- var box = loginStatusBox(context.dom, function (webIdUri) {
94
- _solidLogic.authn.saveUser(webIdUri, context);
95
- resolve(context); // always pass growing context
96
- });
97
- context.div.appendChild(box);
98
- });
99
- });
100
- }
101
-
102
- /**
103
- * Loads preference file
104
- * Do this after having done log in and load profile
105
- *
106
- * @private
107
- *
108
- * @param context
109
- */
110
- // used to be logInLoadPreferences
111
- function ensureLoadedPreferences(_x) {
112
- return _ensureLoadedPreferences.apply(this, arguments);
113
- }
114
- /**
115
- * Logs the user in and loads their WebID profile document into the store
116
- *
117
- * @param context
118
- *
119
- * @returns Resolves with the context after login / fetch
120
- */
121
- // used to be logInLoadProfile
122
- function _ensureLoadedPreferences() {
123
- _ensureLoadedPreferences = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(context) {
124
- var progressDisplay, preferencesFile, m2, _t4;
125
- return _regenerator["default"].wrap(function (_context4) {
126
- while (1) switch (_context4.prev = _context4.next) {
127
- case 0:
128
- if (!context.preferencesFile) {
129
- _context4.next = 1;
130
- break;
131
- }
132
- return _context4.abrupt("return", Promise.resolve(context));
133
- case 1:
134
- _context4.prev = 1;
135
- _context4.next = 2;
136
- return ensureLoadedProfile(context);
137
- case 2:
138
- context = _context4.sent;
139
- _context4.next = 3;
140
- return loadPreferences(context.me);
141
- case 3:
142
- preferencesFile = _context4.sent;
143
- if (progressDisplay) {
144
- progressDisplay.parentNode.removeChild(progressDisplay);
145
- }
146
- context.preferencesFile = preferencesFile;
147
- _context4.next = 11;
148
- break;
149
- case 4:
150
- _context4.prev = 4;
151
- _t4 = _context4["catch"](1);
152
- if (!(_t4 instanceof _solidLogic.UnauthorizedError)) {
153
- _context4.next = 5;
154
- break;
155
- }
156
- m2 = 'Oops — you are not authenticated (properly logged in), so SolidOS cannot read your preferences file. Try logging out and then logging back in.';
157
- (0, _log.alert)(m2);
158
- _context4.next = 11;
159
- break;
160
- case 5:
161
- if (!(_t4 instanceof _solidLogic.CrossOriginForbiddenError)) {
162
- _context4.next = 6;
163
- break;
164
- }
165
- m2 = "Unauthorized: Assuming preference file blocked for origin ".concat(window.location.origin);
166
- context.preferencesFileError = m2;
167
- return _context4.abrupt("return", context);
168
- case 6:
169
- if (!(_t4 instanceof _solidLogic.SameOriginForbiddenError)) {
170
- _context4.next = 7;
171
- break;
172
- }
173
- m2 = 'You are not authorized to read your preference file. This may be because you are using an untrusted web app.';
174
- debug.warn(m2);
175
- return _context4.abrupt("return", context);
176
- case 7:
177
- if (!(_t4 instanceof _solidLogic.NotEditableError)) {
178
- _context4.next = 8;
179
- break;
180
- }
181
- m2 = 'You are not authorized to edit your preference file. This may be because you are using an untrusted web app.';
182
- debug.warn(m2);
183
- return _context4.abrupt("return", context);
184
- case 8:
185
- if (!(_t4 instanceof _solidLogic.WebOperationError)) {
186
- _context4.next = 9;
187
- break;
188
- }
189
- m2 = 'You are not authorized to edit your preference file. This may be because you are using an untrusted web app.';
190
- debug.warn(m2);
191
- _context4.next = 11;
192
- break;
193
- case 9:
194
- if (!(_t4 instanceof _solidLogic.FetchError)) {
195
- _context4.next = 10;
196
- break;
197
- }
198
- m2 = "Strange: Error ".concat(_t4.status, " trying to read your preference file.").concat(_t4.message);
199
- (0, _log.alert)(m2);
200
- _context4.next = 11;
201
- break;
202
- case 10:
203
- throw new Error("(via loadPrefs) ".concat(_t4));
204
- case 11:
205
- return _context4.abrupt("return", context);
206
- case 12:
207
- case "end":
208
- return _context4.stop();
209
- }
210
- }, _callee4, null, [[1, 4]]);
211
- }));
212
- return _ensureLoadedPreferences.apply(this, arguments);
213
- }
214
- function ensureLoadedProfile(_x2) {
215
- return _ensureLoadedProfile.apply(this, arguments);
216
- }
217
- /**
218
- * Returns promise of context with arrays of symbols
219
- *
220
- * leaving the `isPublic` param undefined will bring in community index things, too
221
- */
222
- function _ensureLoadedProfile() {
223
- _ensureLoadedProfile = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5(context) {
224
- var logInContext, _t5;
225
- return _regenerator["default"].wrap(function (_context5) {
226
- while (1) switch (_context5.prev = _context5.next) {
227
- case 0:
228
- if (!context.publicProfile) {
229
- _context5.next = 1;
230
- break;
231
- }
232
- return _context5.abrupt("return", context);
233
- case 1:
234
- _context5.prev = 1;
235
- _context5.next = 2;
236
- return ensureLoggedIn(context);
237
- case 2:
238
- logInContext = _context5.sent;
239
- if (logInContext.me) {
240
- _context5.next = 3;
241
- break;
242
- }
243
- throw new Error('Could not log in');
244
- case 3:
245
- _context5.next = 4;
246
- return loadProfile(logInContext.me);
247
- case 4:
248
- context.publicProfile = _context5.sent;
249
- _context5.next = 6;
250
- break;
251
- case 5:
252
- _context5.prev = 5;
253
- _t5 = _context5["catch"](1);
254
- if (context.div && context.dom) {
255
- context.div.appendChild(widgets.errorMessageBlock(context.dom, _t5.message));
256
- }
257
- throw new Error("Can't log in: ".concat(_t5));
258
- case 6:
259
- return _context5.abrupt("return", context);
260
- case 7:
261
- case "end":
262
- return _context5.stop();
263
- }
264
- }, _callee5, null, [[1, 5]]);
265
- }));
266
- return _ensureLoadedProfile.apply(this, arguments);
267
- }
268
- function findAppInstances(_x3, _x4, _x5) {
269
- return _findAppInstances.apply(this, arguments);
270
- }
271
- function _findAppInstances() {
272
- _findAppInstances = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6(context, theClass, isPublic) {
273
- var items, _t6;
274
- return _regenerator["default"].wrap(function (_context6) {
275
- while (1) switch (_context6.prev = _context6.next) {
276
- case 0:
277
- if (!context.me) {
278
- _context6.next = 2;
279
- break;
280
- }
281
- _context6.next = 1;
282
- return getScopedAppInstances(theClass, context.me);
283
- case 1:
284
- _t6 = _context6.sent;
285
- _context6.next = 3;
286
- break;
287
- case 2:
288
- _t6 = [];
289
- case 3:
290
- items = _t6;
291
- if (isPublic === true) {
292
- // old API - not recommended!
293
- items = items.filter(function (item) {
294
- return item.scope.label === 'public';
295
- });
296
- } else if (isPublic === false) {
297
- items = items.filter(function (item) {
298
- return item.scope.label === 'private';
299
- });
300
- }
301
- context.instances = items.map(function (item) {
302
- return item.instance;
303
- });
304
- return _context6.abrupt("return", context);
305
- case 4:
306
- case "end":
307
- return _context6.stop();
308
- }
309
- }, _callee6);
310
- }));
311
- return _findAppInstances.apply(this, arguments);
312
- }
313
- function scopeLabel(context, scope) {
314
- var mine = context.me && context.me.sameTerm(scope.agent);
315
- var name = mine ? '' : utils.label(scope.agent) + ' ';
316
- return "".concat(name).concat(scope.label);
317
- }
318
- /**
319
- * UI to control registration of instance
320
- */
321
- function registrationControl(_x6, _x7, _x8) {
322
- return _registrationControl.apply(this, arguments);
323
- }
324
- function _registrationControl() {
325
- _registrationControl = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7(context, instance, theClass) {
326
- var registrationStatements, renderScopeCheckbox, dom, box, me, scopes, msg, tbody, form, _iterator, _step, scope, row, _t7;
327
- return _regenerator["default"].wrap(function (_context7) {
328
- while (1) switch (_context7.prev = _context7.next) {
329
- case 0:
330
- renderScopeCheckbox = function _renderScopeCheckbox(scope) {
331
- var statements = registrationStatements(scope.index);
332
- var name = scopeLabel(context, scope);
333
- var label = "".concat(name, " link to this ").concat(context.noun);
334
- return widgets.buildCheckboxForm(context.dom, _solidLogic.solidLogicSingleton.store, label, null, statements, form, scope.index);
335
- };
336
- registrationStatements = function _registrationStatemen(index) {
337
- var registrations = getRegistrations(instance, theClass);
338
- var reg = registrations.length ? registrations[0] : widgets.newThing(index);
339
- return [(0, _rdflib.st)(reg, ns.solid('instance'), instance, index), (0, _rdflib.st)(reg, ns.solid('forClass'), theClass, index)];
340
- };
341
- /// / body of registrationControl
342
- dom = context.dom;
343
- if (!(!dom || !context.div)) {
344
- _context7.next = 1;
345
- break;
346
- }
347
- throw new Error('registrationControl: need dom and div');
348
- case 1:
349
- box = dom.createElement('div');
350
- context.div.appendChild(box);
351
- context.me = _solidLogic.authn.currentUser(); // @@
352
- me = context.me;
353
- if (me) {
354
- _context7.next = 2;
355
- break;
356
- }
357
- box.innerHTML = '<p style="margin:2em;">(Log in to save a link to this)</p>';
358
- return _context7.abrupt("return", context);
359
- case 2:
360
- _context7.prev = 2;
361
- _context7.next = 3;
362
- return loadAllTypeIndexes(me);
363
- case 3:
364
- scopes = _context7.sent;
365
- _context7.next = 5;
366
- break;
367
- case 4:
368
- _context7.prev = 4;
369
- _t7 = _context7["catch"](2);
370
- if (context.div && context.preferencesFileError) {
371
- msg = '(Lists of stuff not available)';
372
- context.div.appendChild(dom.createElement('p')).textContent = msg;
373
- } else if (context.div) {
374
- msg = "registrationControl: Type indexes not available: ".concat(_t7);
375
- context.div.appendChild(widgets.errorMessageBlock(context.dom, _t7));
376
- }
377
- debug.log(msg);
378
- return _context7.abrupt("return", context);
379
- case 5:
380
- box.innerHTML = '<table><tbody></tbody></table>'; // tbody will be inserted anyway
381
- box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid gray 0.05em;');
382
- tbody = box.children[0].children[0];
383
- form = new _rdflib.BlankNode(); // @@ say for now
384
- _iterator = _createForOfIteratorHelper(scopes);
385
- try {
386
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
387
- scope = _step.value;
388
- row = tbody.appendChild(dom.createElement('tr'));
389
- row.appendChild(renderScopeCheckbox(scope)); // @@ index
390
- }
391
- } catch (err) {
392
- _iterator.e(err);
393
- } finally {
394
- _iterator.f();
395
- }
396
- return _context7.abrupt("return", context);
397
- case 6:
398
- case "end":
399
- return _context7.stop();
400
- }
401
- }, _callee7, null, [[2, 4]]);
402
- }));
403
- return _registrationControl.apply(this, arguments);
404
- }
405
- function renderScopeHeadingRow(context, store, scope) {
406
- var backgroundColor = {
407
- "private": '#fee',
408
- "public": '#efe'
409
- };
410
- var dom = context.dom;
411
- var name = scopeLabel(context, scope);
412
- var row = dom.createElement('tr');
413
- var cell = row.appendChild(dom.createElement('td'));
414
- cell.setAttribute('colspan', '3');
415
- cell.style.backgoundColor = backgroundColor[scope.label] || 'white';
416
- var header = cell.appendChild(dom.createElement('h3'));
417
- header.textContent = name + ' links';
418
- header.style.textAlign = 'left';
419
- return row;
420
- }
421
- /**
422
- * UI to List at all registered things
423
- */
424
- function registrationList(_x9, _x0) {
425
- return _registrationList.apply(this, arguments);
426
- } // registrationList
427
- /**
428
- * Bootstrapping identity
429
- * (Called by `loginStatusBox()`)
430
- *
431
- * @param dom
432
- * @param setUserCallback
433
- *
434
- * @returns
435
- */
436
- function _registrationList() {
437
- _registrationList = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee9(context, options) {
438
- var dom, div, box, scopes, table, tbody, _iterator2, _step2, scope, headingRow, items, _iterator3, _step3, _loop, _t8, _t9;
439
- return _regenerator["default"].wrap(function (_context0) {
440
- while (1) switch (_context0.prev = _context0.next) {
441
- case 0:
442
- dom = context.dom;
443
- div = context.div;
444
- box = dom.createElement('div');
445
- div.appendChild(box);
446
- context.me = _solidLogic.authn.currentUser(); // @@
447
- if (context.me) {
448
- _context0.next = 1;
449
- break;
450
- }
451
- box.innerHTML = '<p style="margin:2em;">(Log in list your stuff)</p>';
452
- return _context0.abrupt("return", context);
453
- case 1:
454
- _context0.next = 2;
455
- return loadAllTypeIndexes(context.me);
456
- case 2:
457
- scopes = _context0.sent;
458
- // includes community indexes
459
-
460
- // console.log('@@ registrationList ', scopes)
461
- box.innerHTML = '<table><tbody></tbody></table>'; // tbody will be inserted anyway
462
- box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid #eee 0.5em;');
463
- table = box.firstChild;
464
- tbody = table.firstChild;
465
- _iterator2 = _createForOfIteratorHelper(scopes);
466
- _context0.prev = 3;
467
- _iterator2.s();
468
- case 4:
469
- if ((_step2 = _iterator2.n()).done) {
470
- _context0.next = 13;
471
- break;
472
- }
473
- scope = _step2.value;
474
- // need some predicate for listing/adding agents
475
- headingRow = renderScopeHeadingRow(context, store, scope);
476
- tbody.appendChild(headingRow);
477
- _context0.next = 5;
478
- return getScopedAppsFromIndex(scope, options.type || null);
479
- case 5:
480
- items = _context0.sent;
481
- // any class
482
- if (items.length === 0) headingRow.style.display = 'none';
483
- // console.log(`registrationList: @@ instance items for class ${options.type || 'undefined' }:`, items)
484
- _iterator3 = _createForOfIteratorHelper(items);
485
- _context0.prev = 6;
486
- _loop = /*#__PURE__*/_regenerator["default"].mark(function _loop() {
487
- var item, row;
488
- return _regenerator["default"].wrap(function (_context9) {
489
- while (1) switch (_context9.prev = _context9.next) {
490
- case 0:
491
- item = _step3.value;
492
- row = widgets.personTR(dom, ns.solid('instance'), item.instance, {
493
- deleteFunction: function () {
494
- var _deleteFunction = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee8() {
495
- return _regenerator["default"].wrap(function (_context8) {
496
- while (1) switch (_context8.prev = _context8.next) {
497
- case 0:
498
- _context8.next = 1;
499
- return deleteTypeIndexRegistration(item);
500
- case 1:
501
- tbody.removeChild(row);
502
- case 2:
503
- case "end":
504
- return _context8.stop();
505
- }
506
- }, _callee8);
507
- }));
508
- function deleteFunction() {
509
- return _deleteFunction.apply(this, arguments);
510
- }
511
- return deleteFunction;
512
- }()
513
- });
514
- row.children[0].style.paddingLeft = '3em';
515
- tbody.appendChild(row);
516
- case 1:
517
- case "end":
518
- return _context9.stop();
519
- }
520
- }, _loop);
521
- });
522
- _iterator3.s();
523
- case 7:
524
- if ((_step3 = _iterator3.n()).done) {
525
- _context0.next = 9;
526
- break;
527
- }
528
- return _context0.delegateYield(_loop(), "t0", 8);
529
- case 8:
530
- _context0.next = 7;
531
- break;
532
- case 9:
533
- _context0.next = 11;
534
- break;
535
- case 10:
536
- _context0.prev = 10;
537
- _t8 = _context0["catch"](6);
538
- _iterator3.e(_t8);
539
- case 11:
540
- _context0.prev = 11;
541
- _iterator3.f();
542
- return _context0.finish(11);
543
- case 12:
544
- _context0.next = 4;
545
- break;
546
- case 13:
547
- _context0.next = 15;
548
- break;
549
- case 14:
550
- _context0.prev = 14;
551
- _t9 = _context0["catch"](3);
552
- _iterator2.e(_t9);
553
- case 15:
554
- _context0.prev = 15;
555
- _iterator2.f();
556
- return _context0.finish(15);
557
- case 16:
558
- return _context0.abrupt("return", context);
559
- case 17:
560
- case "end":
561
- return _context0.stop();
562
- }
563
- }, _callee9, null, [[3, 14, 15, 16], [6, 10, 11, 12]]);
564
- }));
565
- return _registrationList.apply(this, arguments);
566
- }
567
- function signInOrSignUpBox(dom, setUserCallback) {
568
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
569
- options = options || {};
570
- var signInButtonStyle = options.buttonStyle || style.signInAndUpButtonStyle;
571
- var box = dom.createElement('div');
572
- var magicClassName = 'SolidSignInOrSignUpBox';
573
- debug.log('widgets.signInOrSignUpBox');
574
- box.setUserCallback = setUserCallback;
575
- box.setAttribute('class', magicClassName);
576
- box.setAttribute('style', 'display:flex;');
577
-
578
- // Sign in button with PopUP
579
- var signInPopUpButton = dom.createElement('input'); // multi
580
- box.appendChild(signInPopUpButton);
581
- signInPopUpButton.setAttribute('type', 'button');
582
- signInPopUpButton.setAttribute('value', 'Log in');
583
- signInPopUpButton.setAttribute('style', "".concat(signInButtonStyle).concat(style.headerBannerLoginInput) + style.signUpBackground);
584
- _solidLogic.authSession.events.on('login', function () {
585
- var me = _solidLogic.authn.currentUser();
586
- // const sessionInfo = authSession.info
587
- // if (sessionInfo && sessionInfo.isLoggedIn) {
588
- if (me) {
589
- // const webIdURI = sessionInfo.webId
590
- var webIdURI = me.uri;
591
- // setUserCallback(webIdURI)
592
- var divs = dom.getElementsByClassName(magicClassName);
593
- debug.log("Logged in, ".concat(divs.length, " panels to be serviced"));
594
- // At the same time, satisfy all the other login boxes
595
- for (var i = 0; i < divs.length; i++) {
596
- var div = divs[i];
597
- // @@ TODO Remove the need to manipulate HTML elements
598
- if (div.setUserCallback) {
599
- try {
600
- div.setUserCallback(webIdURI);
601
- var parent = div.parentNode;
602
- if (parent) {
603
- parent.removeChild(div);
604
- }
605
- } catch (e) {
606
- debug.log("## Error satisfying login box: ".concat(e));
607
- div.appendChild(widgets.errorMessageBlock(dom, e));
608
- }
609
- }
610
- }
611
- }
612
- });
613
- signInPopUpButton.addEventListener('click', function () {
614
- var offline = (0, _solidLogic.offlineTestID)();
615
- if (offline) return setUserCallback(offline.uri);
616
- renderSignInPopup(dom);
617
- }, false);
618
-
619
- // Sign up button
620
- var signupButton = dom.createElement('input');
621
- box.appendChild(signupButton);
622
- signupButton.setAttribute('type', 'button');
623
- signupButton.setAttribute('value', 'Sign Up for Solid');
624
- signupButton.setAttribute('style', "".concat(signInButtonStyle).concat(style.headerBannerLoginInput) + style.signInBackground);
625
- signupButton.addEventListener('click', function (_event) {
626
- var signupMgr = new _signup.Signup();
627
- signupMgr.signup().then(function (uri) {
628
- debug.log('signInOrSignUpBox signed up ' + uri);
629
- setUserCallback(uri);
630
- });
631
- }, false);
632
- return box;
633
- }
634
- function renderSignInPopup(dom) {
635
- /**
636
- * Issuer Menu
637
- */
638
- var issuerPopup = dom.createElement('div');
639
- issuerPopup.setAttribute('style', 'position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center;');
640
- dom.body.appendChild(issuerPopup);
641
- var issuerPopupBox = dom.createElement('div');
642
- issuerPopupBox.setAttribute('style', "\n background-color: white;\n box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -moz-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -o-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n min-width: 400px;\n padding: 10px;\n z-index : 10;\n ");
643
- issuerPopup.appendChild(issuerPopupBox);
644
- var issuerPopupBoxTopMenu = dom.createElement('div');
645
- issuerPopupBoxTopMenu.setAttribute('style', "\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n ");
646
- issuerPopupBox.appendChild(issuerPopupBoxTopMenu);
647
- var issuerPopupBoxLabel = dom.createElement('label');
648
- issuerPopupBoxLabel.setAttribute('style', 'margin-right: 5px; font-weight: 800');
649
- issuerPopupBoxLabel.innerText = 'Select an identity provider';
650
- var issuerPopupBoxCloseButton = dom.createElement('button');
651
- issuerPopupBoxCloseButton.innerHTML = '<img src="https://solidos.github.io/solid-ui/src/icons/noun_1180156.svg" style="width: 2em; height: 2em;" title="Cancel">';
652
- issuerPopupBoxCloseButton.setAttribute('style', 'background-color: transparent; border: none;');
653
- issuerPopupBoxCloseButton.addEventListener('click', function () {
654
- issuerPopup.remove();
655
- });
656
- issuerPopupBoxTopMenu.appendChild(issuerPopupBoxLabel);
657
- issuerPopupBoxTopMenu.appendChild(issuerPopupBoxCloseButton);
658
- var loginToIssuer = /*#__PURE__*/function () {
659
- var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(issuerUri) {
660
- var preLoginRedirectHash, locationUrl, _t;
661
- return _regenerator["default"].wrap(function (_context) {
662
- while (1) switch (_context.prev = _context.next) {
663
- case 0:
664
- _context.prev = 0;
665
- // clear authorization metadata from store
666
- _solidLogic.solidLogicSingleton.store.updater.flagAuthorizationMetadata();
667
- // Save hash
668
- preLoginRedirectHash = new URL(window.location.href).hash;
669
- if (preLoginRedirectHash) {
670
- window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash);
671
- }
672
- window.localStorage.setItem('loginIssuer', issuerUri);
673
- // Login
674
- locationUrl = new URL(window.location.href);
675
- locationUrl.hash = ''; // remove hash part
676
- _context.next = 1;
677
- return _solidLogic.authSession.login({
678
- redirectUrl: locationUrl.href,
679
- oidcIssuer: issuerUri
680
- });
681
- case 1:
682
- _context.next = 3;
683
- break;
684
- case 2:
685
- _context.prev = 2;
686
- _t = _context["catch"](0);
687
- (0, _log.alert)(_t.message);
688
- case 3:
689
- case "end":
690
- return _context.stop();
691
- }
692
- }, _callee, null, [[0, 2]]);
693
- }));
694
- return function loginToIssuer(_x1) {
695
- return _ref.apply(this, arguments);
696
- };
697
- }();
698
-
699
- /**
700
- * Text-based idp selection
701
- */
702
- var issuerTextContainer = dom.createElement('div');
703
- issuerTextContainer.setAttribute('style', "\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n ");
704
- var issuerTextInputContainer = dom.createElement('div');
705
- issuerTextInputContainer.setAttribute('style', "\n display: flex;\n flex-direction: row;\n ");
706
- var issuerTextLabel = dom.createElement('label');
707
- issuerTextLabel.innerText = 'Enter the URL of your identity provider:';
708
- issuerTextLabel.setAttribute('style', 'color: #888');
709
- var issuerTextInput = dom.createElement('input');
710
- issuerTextInput.setAttribute('type', 'text');
711
- issuerTextInput.setAttribute('style', 'margin-left: 0 !important; flex: 1; margin-right: 5px !important');
712
- issuerTextInput.setAttribute('placeholder', 'https://example.com');
713
- issuerTextInput.value = localStorage.getItem('loginIssuer') || '';
714
- var issuerTextGoButton = dom.createElement('button');
715
- issuerTextGoButton.innerText = 'Go';
716
- issuerTextGoButton.setAttribute('style', 'margin-top: 12px; margin-bottom: 12px;');
717
- issuerTextGoButton.addEventListener('click', function () {
718
- loginToIssuer(issuerTextInput.value);
719
- });
720
- issuerTextContainer.appendChild(issuerTextLabel);
721
- issuerTextInputContainer.appendChild(issuerTextInput);
722
- issuerTextInputContainer.appendChild(issuerTextGoButton);
723
- issuerTextContainer.appendChild(issuerTextInputContainer);
724
- issuerPopupBox.appendChild(issuerTextContainer);
725
-
726
- /**
727
- * Button-based idp selection
728
- */
729
- var issuerButtonContainer = dom.createElement('div');
730
- issuerButtonContainer.setAttribute('style', "\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n ");
731
- var issuerBottonLabel = dom.createElement('label');
732
- issuerBottonLabel.innerText = 'Or pick an identity provider from the list below:';
733
- issuerBottonLabel.setAttribute('style', 'color: #888');
734
- issuerButtonContainer.appendChild(issuerBottonLabel);
735
- (0, _solidLogic.getSuggestedIssuers)().forEach(function (issuerInfo) {
736
- var issuerButton = dom.createElement('button');
737
- issuerButton.innerText = issuerInfo.name;
738
- issuerButton.setAttribute('style', 'height: 38px; margin-top: 10px');
739
- issuerButton.addEventListener('click', function () {
740
- loginToIssuer(issuerInfo.uri);
741
- });
742
- issuerButtonContainer.appendChild(issuerButton);
743
- });
744
- issuerPopupBox.appendChild(issuerButtonContainer);
745
- }
746
-
747
- /**
748
- * Login status box
749
- *
750
- * A big sign-up/sign in box or a logout box depending on the state
751
- *
752
- * @param dom
753
- * @param listener
754
- *
755
- * @returns
756
- */
757
- function loginStatusBox(dom) {
758
- var listener = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
759
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
760
- // 20190630
761
- var me = (0, _solidLogic.offlineTestID)();
762
- // @@ TODO Remove the need to cast HTML element to any
763
- var box = dom.createElement('div');
764
- function setIt(newidURI) {
765
- if (!newidURI) {
766
- return;
767
- }
768
-
769
- // const uri = newidURI.uri || newidURI
770
- // me = sym(uri)
771
- me = _solidLogic.authn.saveUser(newidURI);
772
- box.refresh();
773
- if (listener) listener(me.uri);
774
- }
775
- function logoutButtonHandler(_event) {
776
- var oldMe = me;
777
- _solidLogic.authSession.logout().then(function () {
778
- var message = "Your WebID was ".concat(oldMe, ". It has been forgotten.");
779
- me = null;
780
- try {
781
- (0, _log.alert)(message);
782
- } catch (e) {
783
- window.alert(message);
784
- }
785
- box.refresh();
786
- if (listener) listener(null);
787
- }, function (err) {
788
- (0, _log.alert)('Fail to log out:' + err);
789
- });
790
- }
791
- function logoutButton(me, options) {
792
- var signInButtonStyle = options.buttonStyle || style.signInAndUpButtonStyle;
793
- var logoutLabel = 'WebID logout';
794
- if (me) {
795
- var nick = _solidLogic.solidLogicSingleton.store.any(me, ns.foaf('nick')) || _solidLogic.solidLogicSingleton.store.any(me, ns.foaf('name'));
796
- if (nick) {
797
- logoutLabel = 'Logout ' + nick.value;
798
- }
799
- }
800
- var signOutButton = dom.createElement('input');
801
- // signOutButton.className = 'WebIDCancelButton'
802
- signOutButton.setAttribute('type', 'button');
803
- signOutButton.setAttribute('value', logoutLabel);
804
- signOutButton.setAttribute('style', "".concat(signInButtonStyle));
805
- signOutButton.addEventListener('click', logoutButtonHandler, false);
806
- return signOutButton;
807
- }
808
- box.refresh = function () {
809
- var sessionInfo = _solidLogic.authSession.info;
810
- if (sessionInfo && sessionInfo.webId && sessionInfo.isLoggedIn) {
811
- me = _solidLogic.solidLogicSingleton.store.sym(sessionInfo.webId);
812
- } else {
813
- me = null;
814
- }
815
- if (me && box.me !== me.uri || !me && box.me) {
816
- widgets.clearElement(box);
817
- if (me) {
818
- box.appendChild(logoutButton(me, options));
819
- } else {
820
- box.appendChild(signInOrSignUpBox(dom, setIt, options));
821
- }
822
- }
823
- box.me = me ? me.uri : null;
824
- };
825
- box.refresh();
826
- function trackSession() {
827
- me = _solidLogic.authn.currentUser();
828
- box.refresh();
829
- }
830
- trackSession();
831
- _solidLogic.authSession.events.on('login', trackSession);
832
- _solidLogic.authSession.events.on('logout', trackSession);
833
- box.me = '99999'; // Force refresh
834
- box.refresh();
835
- return box;
836
- }
837
- _solidLogic.authSession.events.on('logout', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
838
- var issuer, wellKnownUri, wellKnownResult, openidConfiguration, _t2;
839
- return _regenerator["default"].wrap(function (_context2) {
840
- while (1) switch (_context2.prev = _context2.next) {
841
- case 0:
842
- issuer = window.localStorage.getItem('loginIssuer');
843
- if (!issuer) {
844
- _context2.next = 6;
845
- break;
846
- }
847
- _context2.prev = 1;
848
- // clear authorization metadata from store
849
- _solidLogic.solidLogicSingleton.store.updater.flagAuthorizationMetadata();
850
- wellKnownUri = new URL(issuer);
851
- wellKnownUri.pathname = '/.well-known/openid-configuration';
852
- _context2.next = 2;
853
- return fetch(wellKnownUri.toString());
854
- case 2:
855
- wellKnownResult = _context2.sent;
856
- if (!(wellKnownResult.status === 200)) {
857
- _context2.next = 4;
858
- break;
859
- }
860
- _context2.next = 3;
861
- return wellKnownResult.json();
862
- case 3:
863
- openidConfiguration = _context2.sent;
864
- if (!(openidConfiguration && openidConfiguration.end_session_endpoint)) {
865
- _context2.next = 4;
866
- break;
867
- }
868
- _context2.next = 4;
869
- return fetch(openidConfiguration.end_session_endpoint, {
870
- credentials: 'include'
871
- });
872
- case 4:
873
- _context2.next = 6;
874
- break;
875
- case 5:
876
- _context2.prev = 5;
877
- _t2 = _context2["catch"](1);
878
- case 6:
879
- window.location.reload();
880
- case 7:
881
- case "end":
882
- return _context2.stop();
883
- }
884
- }, _callee2, null, [[1, 5]]);
885
- })));
886
-
887
- /**
888
- * Workspace selection etc
889
- * See https://github.com/solidos/userguide/issues/16
890
- */
891
-
892
- /**
893
- * Returns a UI object which, if it selects a workspace,
894
- * will callback(workspace, newBase).
895
- * See https://github.com/solidos/userguide/issues/16 for more info on workspaces.
896
- *
897
- * If necessary, will get an account, preference file, etc. In sequence:
898
- *
899
- * - If not logged in, log in.
900
- * - Load preference file
901
- * - Prompt user for workspaces
902
- * - Allows the user to just type in a URI by hand
903
- *
904
- * Calls back with the workspace and the base URI
905
- *
906
- * @param dom
907
- * @param appDetails
908
- * @param callbackWS
909
- */
910
- function selectWorkspace(dom, appDetails, callbackWS) {
911
- var noun = appDetails.noun;
912
- var appPathSegment = appDetails.appPathSegment;
913
- var me = (0, _solidLogic.offlineTestID)();
914
- var box = dom.createElement('div');
915
- var context = {
916
- me: me,
917
- dom: dom,
918
- div: box
919
- };
920
- function say(s, background) {
921
- box.appendChild(widgets.errorMessageBlock(dom, s, background));
922
- }
923
- function figureOutBase(ws) {
924
- var newBaseNode = _solidLogic.solidLogicSingleton.store.any(ws, ns.space('uriPrefix'));
925
- var newBaseString;
926
- if (!newBaseNode) {
927
- newBaseString = ws.uri.split('#')[0];
928
- } else {
929
- newBaseString = newBaseNode.value;
930
- }
931
- if (newBaseString.slice(-1) !== '/') {
932
- debug.log("".concat(appPathSegment, ": No / at end of uriPrefix ").concat(newBaseString)); // @@ paramater?
933
- newBaseString = "".concat(newBaseString, "/");
934
- }
935
- var now = new Date();
936
- newBaseString += "".concat(appPathSegment, "/id").concat(now.getTime(), "/"); // unique id
937
- return newBaseString;
938
- }
939
- function displayOptions(context) {
940
- // console.log('displayOptions!', context)
941
- function makeNewWorkspace(_x10) {
942
- return _makeNewWorkspace.apply(this, arguments);
943
- } // const status = ''
944
- function _makeNewWorkspace() {
945
- _makeNewWorkspace = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(_event) {
946
- var row, cell, newBase, newWs, newData, _t3;
947
- return _regenerator["default"].wrap(function (_context3) {
948
- while (1) switch (_context3.prev = _context3.next) {
949
- case 0:
950
- row = table.appendChild(dom.createElement('tr'));
951
- cell = row.appendChild(dom.createElement('td'));
952
- cell.setAttribute('colspan', '3');
953
- cell.style.padding = '0.5em';
954
- _t3 = encodeURI;
955
- _context3.next = 1;
956
- return widgets.askName(dom, _solidLogic.solidLogicSingleton.store, cell, ns.solid('URL'), ns.space('Workspace'), 'Workspace');
957
- case 1:
958
- newBase = _t3(_context3.sent);
959
- newWs = widgets.newThing(context.preferencesFile);
960
- newData = [(0, _rdflib.st)(context.me, ns.space('workspace'), newWs, context.preferencesFile), (0, _rdflib.st)(newWs, ns.space('uriPrefix'), newBase, context.preferencesFile)];
961
- if (_solidLogic.solidLogicSingleton.store.updater) {
962
- _context3.next = 2;
963
- break;
964
- }
965
- throw new Error('store has no updater');
966
- case 2:
967
- _context3.next = 3;
968
- return _solidLogic.solidLogicSingleton.store.updater.update([], newData);
969
- case 3:
970
- case "end":
971
- return _context3.stop();
972
- }
973
- }, _callee3);
974
- }));
975
- return _makeNewWorkspace.apply(this, arguments);
976
- }
977
- var id = context.me;
978
- var preferencesFile = context.preferencesFile;
979
- var newBase = null;
980
-
981
- // A workspace specifically defined in the private preference file:
982
- var w = _solidLogic.solidLogicSingleton.store.each(id, ns.space('workspace'), undefined, preferencesFile); // Only trust preference file here
983
-
984
- // A workspace in a storage in the public profile:
985
- var storages = _solidLogic.solidLogicSingleton.store.each(id, ns.space('storage')); // @@ No provenance requirement at the moment
986
- if (w.length === 0 && storages) {
987
- say("You don't seem to have any workspaces. You have ".concat(storages.length, " storage spaces."), 'white');
988
- storages.map(function (s) {
989
- w = w.concat(_solidLogic.solidLogicSingleton.store.each(s, ns.ldp('contains')));
990
- return w;
991
- }).filter(function (file) {
992
- return file.id ? ['public', 'private'].includes(file.id().toLowerCase()) : '';
993
- });
994
- }
995
- if (w.length === 1) {
996
- say("Workspace used: ".concat(w[0].uri), 'white'); // @@ allow user to see URI
997
- newBase = figureOutBase(w[0]);
998
- // callbackWS(w[0], newBase)
999
- // } else if (w.length === 0) {
1000
- }
1001
-
1002
- // Prompt for ws selection or creation
1003
- // say( w.length + " workspaces for " + id + "Choose one.");
1004
- var table = dom.createElement('table');
1005
- table.setAttribute('style', 'border-collapse:separate; border-spacing: 0.5em;');
1006
-
1007
- // const popup = window.open(undefined, '_blank', { height: 300, width:400 }, false)
1008
- box.appendChild(table);
1009
-
1010
- // Add a field for directly adding the URI yourself
1011
-
1012
- // const hr = box.appendChild(dom.createElement('hr')) // @@
1013
- box.appendChild(dom.createElement('hr')); // @@
1014
-
1015
- var p = box.appendChild(dom.createElement('p'));
1016
- p.setAttribute('style', style.commentStyle);
1017
- p.textContent = "Where would you like to store the data for the ".concat(noun, "?\n Give the URL of the folder where you would like the data stored.\n It can be anywhere in solid world - this URI is just an idea.");
1018
- // @@ TODO Remove the need to cast baseField to any
1019
- var baseField = box.appendChild(dom.createElement('input'));
1020
- baseField.setAttribute('type', 'text');
1021
- baseField.setAttribute('style', style.textInputStyle);
1022
- baseField.size = 80; // really a string
1023
- baseField.label = 'base URL';
1024
- baseField.autocomplete = 'on';
1025
- if (newBase) {
1026
- // set to default
1027
- baseField.value = newBase;
1028
- }
1029
- context.baseField = baseField;
1030
- box.appendChild(dom.createElement('br')); // @@
1031
-
1032
- var button = box.appendChild(dom.createElement('button'));
1033
- button.setAttribute('style', style.buttonStyle);
1034
- button.textContent = "Start new ".concat(noun, " at this URI");
1035
- button.addEventListener('click', function (_event) {
1036
- var newBase = baseField.value.replace(' ', '%20'); // do not re-encode in general, as % encodings may exist
1037
- if (newBase.slice(-1) !== '/') {
1038
- newBase += '/';
1039
- }
1040
- callbackWS(null, newBase);
1041
- });
1042
-
1043
- // Now go set up the table of spaces
1044
-
1045
- // const row = 0
1046
- w = w.filter(function (x) {
1047
- return !_solidLogic.solidLogicSingleton.store.holds(x, ns.rdf('type'),
1048
- // Ignore master workspaces
1049
- ns.space('MasterWorkspace'));
1050
- });
1051
- var col1, col2, col3, tr, ws, localStyle, comment;
1052
- var cellStyle = 'height: 3em; margin: 1em; padding: 1em white; border-radius: 0.3em;';
1053
- var deselectedStyle = "".concat(cellStyle, "border: 0px;");
1054
- // const selectedStyle = cellStyle + 'border: 1px solid black;'
1055
- for (var i = 0; i < w.length; i++) {
1056
- ws = w[i];
1057
- tr = dom.createElement('tr');
1058
- if (i === 0) {
1059
- col1 = dom.createElement('td');
1060
- col1.setAttribute('rowspan', "".concat(w.length));
1061
- col1.textContent = 'Choose a workspace for this:';
1062
- col1.setAttribute('style', 'vertical-align:middle;');
1063
- tr.appendChild(col1);
1064
- }
1065
- col2 = dom.createElement('td');
1066
- localStyle = _solidLogic.solidLogicSingleton.store.anyValue(ws, ns.ui('style'));
1067
- if (!localStyle) {
1068
- // Otherwise make up arbitrary colour
1069
- var hash = function hash(x) {
1070
- return x.split('').reduce(function (a, b) {
1071
- a = (a << 5) - a + b.charCodeAt(0);
1072
- return a & a;
1073
- }, 0);
1074
- };
1075
- var bgcolor = "#".concat((hash(ws.uri) & 0xffffff | 0xc0c0c0).toString(16)); // c0c0c0 forces pale
1076
- localStyle = "color: black ; background-color: ".concat(bgcolor, ";");
1077
- }
1078
- col2.setAttribute('style', deselectedStyle + localStyle);
1079
- tr.target = ws.uri;
1080
- var label = _solidLogic.solidLogicSingleton.store.any(ws, ns.rdfs('label'));
1081
- if (!label) {
1082
- label = ws.uri.split('/').slice(-1)[0] || ws.uri.split('/').slice(-2)[0];
1083
- }
1084
- col2.textContent = label || '???';
1085
- tr.appendChild(col2);
1086
- if (i === 0) {
1087
- col3 = dom.createElement('td');
1088
- col3.setAttribute('rowspan', "".concat(w.length, "1"));
1089
- // col3.textContent = '@@@@@ remove';
1090
- col3.setAttribute('style', 'width:50%;');
1091
- tr.appendChild(col3);
1092
- }
1093
- table.appendChild(tr);
1094
- comment = _solidLogic.solidLogicSingleton.store.any(ws, ns.rdfs('comment'));
1095
- comment = comment ? comment.value : 'Use this workspace';
1096
- col2.addEventListener('click', function (_event) {
1097
- col3.textContent = comment ? comment.value : '';
1098
- col3.setAttribute('style', deselectedStyle + localStyle);
1099
- var button = dom.createElement('button');
1100
- button.textContent = 'Continue';
1101
- // button.setAttribute('style', style);
1102
- var newBase = figureOutBase(ws);
1103
- baseField.value = newBase; // show user proposed URI
1104
-
1105
- button.addEventListener('click', function (_event) {
1106
- button.disabled = true;
1107
- callbackWS(ws, newBase);
1108
- button.textContent = '---->';
1109
- }, true); // capture vs bubble
1110
- col3.appendChild(button);
1111
- }, true); // capture vs bubble
1112
- }
1113
-
1114
- // last line with "Make new workspace"
1115
- var trLast = dom.createElement('tr');
1116
- col2 = dom.createElement('td');
1117
- col2.setAttribute('style', cellStyle);
1118
- col2.textContent = '+ Make a new workspace';
1119
- col2.addEventListener('click', makeNewWorkspace);
1120
- trLast.appendChild(col2);
1121
- table.appendChild(trLast);
1122
- } // displayOptions
1123
-
1124
- // console.log('kicking off async operation')
1125
- ensureLoadedPreferences(context) // kick off async operation
1126
- .then(displayOptions)["catch"](function (err) {
1127
- // console.log("err from async op")
1128
- box.appendChild(widgets.errorMessageBlock(context.dom, err));
1129
- });
1130
- return box; // return the box element, while login proceeds
1131
- } // selectWorkspace
1132
-
1133
- /**
1134
- * Creates a new instance of an app.
1135
- *
1136
- * An instance of an app could be e.g. an issue tracker for a given project,
1137
- * or a chess game, or calendar, or a health/fitness record for a person.
1138
- *
1139
- * Note that this use of the term 'app' refers more to entries in the user's
1140
- * type index than to actual software applications that use the personal data
1141
- * to which these entries point.
1142
- *
1143
- * @param dom
1144
- * @param appDetails
1145
- * @param callback
1146
- *
1147
- * @returns A div with a button in it for making a new app instance
1148
- */
1149
- function newAppInstance(dom, appDetails, callback) {
1150
- var gotWS = function gotWS(ws, base) {
1151
- // log.debug("newAppInstance: Selected workspace = " + (ws? ws.uri : 'none'))
1152
- callback(ws, base);
1153
- };
1154
- var div = dom.createElement('div');
1155
- var b = dom.createElement('button');
1156
- b.setAttribute('type', 'button');
1157
- div.appendChild(b);
1158
- b.innerHTML = "Make new ".concat(appDetails.noun);
1159
- b.addEventListener('click', function (_event) {
1160
- div.appendChild(selectWorkspace(dom, appDetails, gotWS));
1161
- }, false);
1162
- div.appendChild(b);
1163
- return div;
1164
- }
1165
- /**
1166
- * Retrieves whether the currently logged in user is a power user
1167
- * and/or a developer
1168
- */
1169
- function getUserRoles() {
1170
- return _getUserRoles.apply(this, arguments);
1171
- }
1172
- /**
1173
- * Filters which panes should be available, based on the result of [[getUserRoles]]
1174
- */
1175
- function _getUserRoles() {
1176
- _getUserRoles = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0() {
1177
- var _yield$ensureLoadedPr, me, preferencesFile, preferencesFileError, _t0;
1178
- return _regenerator["default"].wrap(function (_context1) {
1179
- while (1) switch (_context1.prev = _context1.next) {
1180
- case 0:
1181
- _context1.prev = 0;
1182
- _context1.next = 1;
1183
- return ensureLoadedPreferences({});
1184
- case 1:
1185
- _yield$ensureLoadedPr = _context1.sent;
1186
- me = _yield$ensureLoadedPr.me;
1187
- preferencesFile = _yield$ensureLoadedPr.preferencesFile;
1188
- preferencesFileError = _yield$ensureLoadedPr.preferencesFileError;
1189
- if (!(!preferencesFile || preferencesFileError)) {
1190
- _context1.next = 2;
1191
- break;
1192
- }
1193
- throw new Error(preferencesFileError);
1194
- case 2:
1195
- return _context1.abrupt("return", _solidLogic.solidLogicSingleton.store.each(me, ns.rdf('type'), null, preferencesFile.doc()));
1196
- case 3:
1197
- _context1.prev = 3;
1198
- _t0 = _context1["catch"](0);
1199
- debug.warn('Unable to fetch your preferences - this was the error: ', _t0);
1200
- return _context1.abrupt("return", []);
1201
- case 4:
1202
- case "end":
1203
- return _context1.stop();
1204
- }
1205
- }, _callee0, null, [[0, 3]]);
1206
- }));
1207
- return _getUserRoles.apply(this, arguments);
1208
- }
1209
- function filterAvailablePanes(_x11) {
1210
- return _filterAvailablePanes.apply(this, arguments);
1211
- }
1212
- function _filterAvailablePanes() {
1213
- _filterAvailablePanes = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee1(panes) {
1214
- var userRoles;
1215
- return _regenerator["default"].wrap(function (_context10) {
1216
- while (1) switch (_context10.prev = _context10.next) {
1217
- case 0:
1218
- _context10.next = 1;
1219
- return getUserRoles();
1220
- case 1:
1221
- userRoles = _context10.sent;
1222
- return _context10.abrupt("return", panes.filter(function (pane) {
1223
- return isMatchingAudience(pane, userRoles);
1224
- }));
1225
- case 2:
1226
- case "end":
1227
- return _context10.stop();
1228
- }
1229
- }, _callee1);
1230
- }));
1231
- return _filterAvailablePanes.apply(this, arguments);
1232
- }
1233
- function isMatchingAudience(pane, userRoles) {
1234
- var audience = pane.audience || [];
1235
- return audience.reduce(function (isMatch, audienceRole) {
1236
- return isMatch && !!userRoles.find(function (role) {
1237
- return role.equals(audienceRole);
1238
- });
1239
- }, true);
1240
- }
1241
- //# sourceMappingURL=login.js.map