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
@@ -0,0 +1,249 @@
1
+ /* create.js UI to craete new objects in the solid-app-set world
2
+ **
3
+ */
4
+ import { solidLogicSingleton } from 'solid-logic';
5
+ import * as debug from '../debug';
6
+ import { icons } from '../iconBase';
7
+ import { ensureLoadedProfile, selectWorkspace } from '../login/login';
8
+ import ns from '../ns';
9
+ import * as utils from '../utils';
10
+ import * as widgets from '../widgets';
11
+ const kb = solidLogicSingleton.store;
12
+ /* newThingUI -- return UI for user to select a new object, folder, etc
13
+ **
14
+ ** context must include: dom, div,
15
+ ** optional: folder: NamedNode -- the folder where the thing is bring put
16
+ ** (suppresses asking for a full URI or workspace)
17
+ **
18
+ */
19
+ export function newThingUI(createContext, dataBrowserContext, thePanes) {
20
+ const dom = createContext.dom;
21
+ const div = createContext.div;
22
+ if (createContext.me && !createContext.me.uri) {
23
+ throw new Error('newThingUI: Invalid userid: ' + createContext.me);
24
+ }
25
+ const iconStyle = 'padding: 0.7em; width: 2em; height: 2em;'; // was: 'padding: 1em; width: 3em; height: 3em;'
26
+ const star = div.appendChild(dom.createElement('img'));
27
+ let visible = false; // the inividual tools tools
28
+ // noun_272948.svg = black star
29
+ // noun_34653_green.svg = green plus
30
+ star.setAttribute('src', icons.iconBase + 'noun_34653_green.svg');
31
+ star.setAttribute('style', iconStyle);
32
+ star.setAttribute('title', 'Add another tool');
33
+ const complain = function complain(message) {
34
+ const pre = div.appendChild(dom.createElement('pre'));
35
+ pre.setAttribute('style', 'background-color: pink');
36
+ pre.appendChild(dom.createTextNode(message));
37
+ };
38
+ function styleTheIcons(style) {
39
+ for (let i = 0; i < iconArray.length; i++) {
40
+ let st = iconStyle + style;
41
+ if (iconArray[i].disabled) {
42
+ // @@ unused
43
+ st += 'opacity: 0.3;';
44
+ }
45
+ iconArray[i].setAttribute('style', st); // eg 'background-color: #ccc;'
46
+ }
47
+ }
48
+ function selectTool(icon) {
49
+ styleTheIcons('display: none;'); // 'background-color: #ccc;'
50
+ icon.setAttribute('style', iconStyle + 'background-color: yellow;');
51
+ }
52
+ function selectNewTool(_event) {
53
+ visible = !visible;
54
+ star.setAttribute('style', iconStyle + (visible ? 'background-color: yellow;' : ''));
55
+ styleTheIcons(visible ? '' : 'display: none;');
56
+ }
57
+ star.addEventListener('click', selectNewTool);
58
+ function makeNewAppInstance(options) {
59
+ return new Promise(function (resolve, reject) {
60
+ let selectUI; // , selectUIParent
61
+ function callbackWS(ws, newBase) {
62
+ ensureLoadedProfile(createContext).then(_context => {
63
+ const newPaneOptions = Object.assign({
64
+ newBase,
65
+ folder: options.folder || undefined,
66
+ workspace: ws
67
+ }, options);
68
+ for (const opt in options) {
69
+ // get div, dom, me, folder, pane, refreshTable
70
+ newPaneOptions[opt] = options[opt];
71
+ }
72
+ debug.log(`newThingUI: Minting new ${newPaneOptions.pane.name} at ${newPaneOptions.newBase}`);
73
+ options.pane
74
+ .mintNew(dataBrowserContext, newPaneOptions)
75
+ .then(function (newPaneOptions) {
76
+ if (!newPaneOptions || !newPaneOptions.newInstance) {
77
+ throw new Error('Cannot mint new - missing newInstance');
78
+ }
79
+ if (newPaneOptions.folder) {
80
+ const tail = newPaneOptions.newInstance.uri.slice(newPaneOptions.folder.uri.length);
81
+ const isPackage = tail.includes('/');
82
+ debug.log(' new thing is packge? ' + isPackage);
83
+ if (isPackage) {
84
+ kb.add(newPaneOptions.folder, ns.ldp('contains'), kb.sym(newPaneOptions.newBase), newPaneOptions.folder.doc());
85
+ }
86
+ else {
87
+ // single file
88
+ kb.add(newPaneOptions.folder, ns.ldp('contains'), newPaneOptions.newInstance, newPaneOptions.folder.doc()); // Ping the patch system?
89
+ }
90
+ // @ts-ignore @@ TODO check whether refresh can exist here. Either fix type or remove unreachable code
91
+ if (newPaneOptions.refreshTarget && newPaneOptions.refreshTarget.refresh) {
92
+ // @@ TODO Remove the need to cast as any
93
+ ;
94
+ newPaneOptions.refreshTarget.refresh(); // Refresh the containing display
95
+ }
96
+ // selectUI.parentNode.removeChild(selectUI) It removes itself
97
+ }
98
+ else {
99
+ const p = options.div.appendChild(dom.createElement('p'));
100
+ p.setAttribute('style', 'font-size: 120%;');
101
+ // Make link to new thing
102
+ p.innerHTML =
103
+ 'Your <a target=\'_blank\' href=\'' +
104
+ newPaneOptions.newInstance.uri +
105
+ '\'><b>new ' +
106
+ options.noun +
107
+ '</b></a> is ready to be set up. ' +
108
+ '<br/><br/><a target=\'_blank\' href=\'' +
109
+ newPaneOptions.newInstance.uri +
110
+ '\'>Go to your new ' +
111
+ options.noun +
112
+ '.</a>';
113
+ // selectUI.parentNode.removeChild(selectUI) // Clean up
114
+ // selectUIParent.removeChild(selectUI) // Clean up
115
+ }
116
+ selectNewTool(); // toggle star to plain and menu vanish again
117
+ })
118
+ .catch(function (err) {
119
+ complain(err);
120
+ reject(err);
121
+ });
122
+ }, err => {
123
+ // login fails
124
+ complain('Error logging on: ' + err);
125
+ });
126
+ } // callbackWS
127
+ const pa = options.pane;
128
+ // options.appPathSegment = pa.name // was 'edu.mit.solid.pane.'
129
+ options.noun = pa.mintClass ? utils.label(pa.mintClass) : pa.name;
130
+ options.appPathSegment = options.noun.slice(0, 1).toUpperCase() + options.noun.slice(1);
131
+ if (!options.folder) {
132
+ // No folder given? Ask user for full URI
133
+ selectUI = selectWorkspace(dom, {
134
+ noun: options.noun,
135
+ appPathSegment: options.appPathSegment
136
+ }, callbackWS);
137
+ options.div.appendChild(selectUI);
138
+ // selectUIParent = options.div
139
+ }
140
+ else {
141
+ const gotName = function (name) {
142
+ if (!name) {
143
+ // selectUIParent.removeChild(selectUI) itremves itself if cancelled
144
+ selectNewTool(); // toggle star to plain and menu vanish again
145
+ }
146
+ else {
147
+ let uri = options.folder.uri;
148
+ if (!uri.endsWith('/')) {
149
+ uri = uri + '/';
150
+ }
151
+ uri = uri + encodeURIComponent(name) + '/';
152
+ callbackWS(null, uri);
153
+ }
154
+ };
155
+ widgets
156
+ .askName(dom, kb, options.div, ns.foaf('name'), null, options.noun)
157
+ .then(gotName);
158
+ // selectUI = getNameForm(dom, kb, options.noun, gotName)
159
+ // options.div.appendChild(selectUI)
160
+ // selectUIParent = options.div
161
+ }
162
+ });
163
+ } // makeNewAppInstance
164
+ const iconArray = [];
165
+ const mintingPanes = Object.values(thePanes).filter(pane => pane.mintNew);
166
+ const mintingClassMap = mintingPanes.reduce((classMap, pane) => {
167
+ if (pane.mintClass) {
168
+ classMap[pane.mintClass.uri] = (classMap[pane.mintClass.uri] || 0) + 1;
169
+ }
170
+ return classMap;
171
+ }, {});
172
+ mintingPanes.forEach(pane => {
173
+ // @@ TODO Remove the need to cast to any
174
+ const icon = createContext.div.appendChild(dom.createElement('img'));
175
+ icon.setAttribute('src', pane.icon);
176
+ const noun = pane.mintClass
177
+ ? mintingClassMap[pane.mintClass.uri] > 1
178
+ ? `${utils.label(pane.mintClass)} (using ${pane.name} pane)`
179
+ : utils.label(pane.mintClass)
180
+ : pane.name + ' @@';
181
+ icon.setAttribute('title', 'Make new ' + noun);
182
+ icon.setAttribute('style', iconStyle + 'display: none;');
183
+ iconArray.push(icon);
184
+ if (!icon.disabled) {
185
+ icon.addEventListener('click', function (e) {
186
+ selectTool(icon);
187
+ makeNewAppInstance({
188
+ event: e,
189
+ folder: createContext.folder || null,
190
+ iconEle: icon,
191
+ pane,
192
+ noun,
193
+ noIndexHTML: true, // do NOT @@ for now write a HTML file
194
+ div: createContext.div,
195
+ me: createContext.me,
196
+ dom: createContext.dom,
197
+ refreshTarget: createContext.refreshTarget
198
+ });
199
+ });
200
+ }
201
+ });
202
+ }
203
+ // Form to get the name of a new thing before we create it
204
+ //
205
+ // Used in contacts for new groups, individuals.
206
+ //
207
+ /*
208
+ function getNameForm (dom, kb, classLabel, gotNameCallback) {
209
+ const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error
210
+ form.innerHTML = '<p>Name of new ' + classLabel + ':</p>'
211
+ const namefield = dom.createElement('input')
212
+ namefield.setAttribute('type', 'text')
213
+ namefield.setAttribute('size', '30')
214
+ namefield.setAttribute('style', style.textInputStyle)
215
+ namefield.setAttribute('maxLength', '2048') // No arbitrary limits
216
+ namefield.select() // focus next user input
217
+
218
+ const gotName = function () {
219
+ namefield.setAttribute('class', 'pendingedit')
220
+ namefield.disabled = true
221
+ continueButton.disabled = true
222
+ cancel.disabled = true
223
+ gotNameCallback(true, namefield.value)
224
+ }
225
+
226
+ namefield.addEventListener('keyup', function (e) {
227
+ if (e.keyCode === 13) {
228
+ gotName()
229
+ }
230
+ }, false)
231
+ form.appendChild(namefield)
232
+
233
+ form.appendChild(dom.createElement('br'))
234
+
235
+ const cancel = form.appendChild(widgets.cancelButton(dom))
236
+ cancel.addEventListener('click', function (e) {
237
+ form.parentNode.removeChild(form)
238
+ gotNameCallback(false)
239
+ }, false)
240
+
241
+ const continueButton = form.appendChild(widgets.continueButton(dom))
242
+ continueButton.addEventListener('click', function (e) {
243
+ gotName()
244
+ }, false)
245
+
246
+ return form
247
+ }
248
+ */
249
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/create/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { newThingUI } from './create';
2
+ export const create = {
3
+ newThingUI
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACX,MAAM,UAAU,CAAA;AAEjB,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,UAAU;CACX,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/create/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,GAAG,CAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAElC;AAED,wBAAgB,IAAI,CAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAEnC;AAED,wBAAgB,KAAK,CAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAEpC;AAED,wBAAgB,KAAK,CAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAEpC"}
package/dist/debug.js ADDED
@@ -0,0 +1,13 @@
1
+ export function log(...args) {
2
+ console.log(...args);
3
+ }
4
+ export function warn(...args) {
5
+ console.warn(...args);
6
+ }
7
+ export function error(...args) {
8
+ console.error(...args);
9
+ }
10
+ export function trace(...args) {
11
+ console.trace(...args);
12
+ }
13
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,CAAE,GAAG,IAAW;IACjC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,IAAI,CAAE,GAAG,IAAW;IAClC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,KAAK,CAAE,GAAG,IAAW;IACnC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,KAAK,CAAE,GAAG,IAAW;IACnC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;AACxB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { authn, authSession } from 'solid-logic';
2
+ import { style } from '../style';
3
+ import { getName, getPod, getPodOwner } from '../utils/headerFooterHelpers';
4
+ const DEFAULT_SOLID_PROJECT_URL = 'https://solidproject.org';
5
+ const DEFAULT_SOLID_PROJECT_NAME = 'solidproject.org';
6
+ /**
7
+ * Initialize footer component, the footer object returned depends on whether the user is authenticated.
8
+ * @param store the data store
9
+ * @returns the footer
10
+ */
11
+ export async function initFooter(store, options) {
12
+ const footer = document.getElementById('PageFooter');
13
+ if (!footer) {
14
+ return;
15
+ }
16
+ const pod = getPod();
17
+ const podOwner = await getPodOwner(pod, store);
18
+ rebuildFooter(footer, store, pod, podOwner, options)();
19
+ authSession.events.on('login', rebuildFooter(footer, store, pod, podOwner, options));
20
+ authSession.events.on('logout', rebuildFooter(footer, store, pod, podOwner, options));
21
+ }
22
+ /**
23
+ * @ignore exporting this only for the unit test
24
+ */
25
+ export function rebuildFooter(footer, store, pod, podOwner, options) {
26
+ return async () => {
27
+ const user = authn.currentUser();
28
+ footer.innerHTML = '';
29
+ footer.appendChild(await createControllerInfoBlock(store, user, pod, podOwner, options));
30
+ };
31
+ }
32
+ /**
33
+ * @ignore exporting this only for the unit test
34
+ */
35
+ export function createControllerInfoBlock(store, user, pod, podOwner, options) {
36
+ const profileLinkContainer = document.createElement('div');
37
+ if (!pod || !podOwner || (user && user.equals(podOwner))) {
38
+ return profileLinkContainer;
39
+ }
40
+ profileLinkContainer.setAttribute('style', style.footer);
41
+ const podLinkPre = document.createElement('span');
42
+ podLinkPre.innerText = 'You\'re visiting ';
43
+ const podLink = document.createElement('a');
44
+ podLink.href = pod.uri;
45
+ podLink.innerText = 'the Pod';
46
+ const profileLinkPre = document.createElement('span');
47
+ profileLinkPre.innerText = ' controlled by ';
48
+ const profileLink = document.createElement('a');
49
+ profileLink.href = podOwner.uri;
50
+ profileLink.innerText = getName(store, podOwner);
51
+ const solidProjectLinkPre = document.createElement('span');
52
+ solidProjectLinkPre.innerText = '. For more info, check out ';
53
+ const solidProjectLink = document.createElement('a');
54
+ solidProjectLink.href = options && options.solidProjectUrl ? options.solidProjectUrl : DEFAULT_SOLID_PROJECT_URL;
55
+ solidProjectLink.innerText = options && options.solidProjectName ? options.solidProjectName : DEFAULT_SOLID_PROJECT_NAME;
56
+ const solidProjectLinkPost = document.createElement('span');
57
+ solidProjectLinkPost.innerText = '.';
58
+ profileLinkContainer.appendChild(podLinkPre);
59
+ profileLinkContainer.appendChild(podLink);
60
+ profileLinkContainer.appendChild(profileLinkPre);
61
+ profileLinkContainer.appendChild(profileLink);
62
+ profileLinkContainer.appendChild(solidProjectLinkPre);
63
+ profileLinkContainer.appendChild(solidProjectLink);
64
+ profileLinkContainer.appendChild(solidProjectLinkPost);
65
+ return profileLinkContainer;
66
+ }
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/footer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export const emptyProfile = `
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" fill="none">
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M13 25C19.6274 25 25 19.6274 25 13C25 6.37258 19.6274 1 13 1C6.37258 1 1 6.37258 1 13C1 19.6274 6.37258 25 13 25Z" fill="#D8D8D8" stroke="#8B8B8B"/>
4
+ <mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="26" height="26">
5
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M13 25C19.6274 25 25 19.6274 25 13C25 6.37258 19.6274 1 13 1C6.37258 1 1 6.37258 1 13C1 19.6274 6.37258 25 13 25Z" fill="white" stroke="white"/>
6
+ </mask>
7
+ <g mask="url(#mask0)">
8
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M17.0468 10.4586C17.0468 14.4979 15.4281 16.9214 12.9999 16.9214C10.5718 16.9214 8.95298 14.4979 8.95298 10.4586C8.95298 6.41931 12.9999 6.41931 12.9999 6.41931C12.9999 6.41931 17.0468 6.41931 17.0468 10.4586ZM4.09668 23.3842C6.52483 17.7293 12.9999 17.7293 12.9999 17.7293C12.9999 17.7293 19.475 17.7293 21.9031 23.3842C21.9031 23.3842 17.8481 25 12.9999 25C8.15169 25 4.09668 23.3842 4.09668 23.3842Z" fill="#8B8B8B"/>
9
+ </g>
10
+ </svg>`;
11
+ //# sourceMappingURL=empty-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-profile.js","sourceRoot":"","sources":["../../src/header/empty-profile.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;OASrB,CAAA"}
@@ -0,0 +1,260 @@
1
+ import { icons } from '../index';
2
+ import { authn, authSession } from 'solid-logic';
3
+ import { loginStatusBox } from '../login/login';
4
+ // import { loginStatusBox, authSession, currentUser } from '../authn/authn'
5
+ import * as widgets from '../widgets';
6
+ import { style } from '../style';
7
+ import { emptyProfile } from './empty-profile';
8
+ import { getPod, throttle } from '../utils/headerFooterHelpers';
9
+ /**
10
+ * menu icons
11
+ */
12
+ const DEFAULT_HELP_MENU_ICON = icons.iconBase + 'noun_help.svg';
13
+ const DEFAUL_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg';
14
+ /**
15
+ * Initialize header component, the header object returned depends on whether the user is authenticated.
16
+ * @param store the data store
17
+ * @param userMenuList a list of menu items when the user is logged in
18
+ * @param options allow the header to be customized with a personalized logo, help icon and a help menu list of links or buttons.
19
+ * @returns a header for an authenticated user with menu items given or a login screen
20
+ */
21
+ export async function initHeader(store, userMenuList, options) {
22
+ const header = document.getElementById('PageHeader');
23
+ if (!header) {
24
+ return;
25
+ }
26
+ const pod = getPod();
27
+ rebuildHeader(header, store, pod, userMenuList, options)();
28
+ authSession.events.on('logout', rebuildHeader(header, store, pod, userMenuList, options));
29
+ authSession.events.on('login', rebuildHeader(header, store, pod, userMenuList, options));
30
+ }
31
+ /**
32
+ * @ignore exporting this only for the unit test
33
+ */
34
+ export function rebuildHeader(header, store, pod, userMenuList, options) {
35
+ return async () => {
36
+ const user = authn.currentUser();
37
+ header.innerHTML = '';
38
+ header.appendChild(await createBanner(store, pod, user, userMenuList, options));
39
+ };
40
+ }
41
+ /**
42
+ * @ignore exporting this only for the unit test
43
+ */
44
+ export async function createBanner(store, pod, user, userMenuList, options) {
45
+ const podLink = document.createElement('a');
46
+ podLink.href = pod.uri;
47
+ podLink.setAttribute('style', style.headerBannerLink);
48
+ const image = document.createElement('img');
49
+ if (options) {
50
+ image.src = options.logo ? options.logo : DEFAUL_SOLID_ICON_URL;
51
+ }
52
+ image.setAttribute('style', style.headerBannerIcon);
53
+ podLink.appendChild(image);
54
+ const userMenu = user
55
+ ? await createUserMenu(store, user, userMenuList)
56
+ : createLoginSignUpButtons();
57
+ const banner = document.createElement('div');
58
+ banner.setAttribute('style', style.headerBanner);
59
+ banner.appendChild(podLink);
60
+ const leftSideOfHeader = document.createElement('div');
61
+ leftSideOfHeader.setAttribute('style', style.headerBannerRightMenu);
62
+ leftSideOfHeader.appendChild(userMenu);
63
+ if (options && options.helpMenuList) {
64
+ const helpMenu = createHelpMenu(options, options.helpMenuList);
65
+ leftSideOfHeader.appendChild(helpMenu);
66
+ }
67
+ banner.appendChild(leftSideOfHeader);
68
+ return banner;
69
+ }
70
+ /**
71
+ * @ignore exporting this only for the unit test
72
+ */
73
+ export function createHelpMenu(options, helpMenuItems) {
74
+ if (!helpMenuItems)
75
+ return;
76
+ const helpMenuList = document.createElement('ul');
77
+ helpMenuList.setAttribute('style', style.headerUserMenuList);
78
+ helpMenuItems.forEach(function (menuItem) {
79
+ const menuItemType = menuItem.url ? 'url' : 'onclick';
80
+ if (menuItemType === 'url') {
81
+ helpMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, menuItem.url, menuItem.target)));
82
+ }
83
+ else {
84
+ helpMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, menuItem.onclick)));
85
+ }
86
+ });
87
+ const helpMenu = document.createElement('nav');
88
+ helpMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed);
89
+ helpMenu.setAttribute('aria-hidden', 'true');
90
+ helpMenu.setAttribute('id', 'helperNav');
91
+ helpMenu.appendChild(helpMenuList);
92
+ const helpMenuContainer = document.createElement('div');
93
+ helpMenuContainer.setAttribute('style', style.headerBannerUserMenu);
94
+ helpMenuContainer.appendChild(helpMenu);
95
+ const helpMenuTrigger = document.createElement('button');
96
+ helpMenuTrigger.setAttribute('style', style.headerUserMenuTrigger);
97
+ helpMenuTrigger.type = 'button';
98
+ const helpMenuIcon = document.createElement('img');
99
+ helpMenuIcon.src = (options && options.helpIcon) ? options.helpIcon : icons.iconBase + DEFAULT_HELP_MENU_ICON;
100
+ helpMenuIcon.setAttribute('style', style.headerUserMenuTriggerImg);
101
+ helpMenuContainer.appendChild(helpMenuTrigger);
102
+ helpMenuTrigger.appendChild(helpMenuIcon);
103
+ const throttledMenuToggle = throttle((event) => toggleMenu(event, helpMenuTrigger, helpMenu), 50);
104
+ helpMenuTrigger.addEventListener('click', throttledMenuToggle);
105
+ let timer = setTimeout(() => null, 0);
106
+ helpMenuContainer.addEventListener('mouseover', event => {
107
+ clearTimeout(timer);
108
+ throttledMenuToggle(event);
109
+ const nav = document.getElementById('helperNav');
110
+ nav === null || nav === void 0 ? void 0 : nav.setAttribute('style', style.headerUserMenuNavigationMenu);
111
+ });
112
+ helpMenuContainer.addEventListener('mouseout', event => {
113
+ timer = setTimeout(() => throttledMenuToggle(event), 200);
114
+ const nav = document.getElementById('helperNav');
115
+ nav === null || nav === void 0 ? void 0 : nav.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed);
116
+ });
117
+ return helpMenuContainer;
118
+ }
119
+ /**
120
+ * @ignore exporting this only for the unit test
121
+ */
122
+ export function createLoginSignUpButtons() {
123
+ const profileLoginButtonPre = document.createElement('div');
124
+ profileLoginButtonPre.setAttribute('style', style.headerBannerLogin);
125
+ profileLoginButtonPre.appendChild(loginStatusBox(document, null, {}));
126
+ return profileLoginButtonPre;
127
+ }
128
+ /**
129
+ * @ignore exporting this only for the unit test
130
+ */
131
+ export function createUserMenuButton(label, onClick) {
132
+ const button = document.createElement('button');
133
+ button.setAttribute('style', style.headerUserMenuButton);
134
+ button.onmouseover = function () {
135
+ button.setAttribute('style', style.headerUserMenuButtonHover);
136
+ };
137
+ button.onmouseout = function () {
138
+ button.setAttribute('style', style.headerUserMenuButton);
139
+ };
140
+ button.addEventListener('click', onClick);
141
+ button.innerText = label;
142
+ return button;
143
+ }
144
+ /**
145
+ * @ignore exporting this only for the unit test
146
+ */
147
+ export function createUserMenuLink(label, href, target) {
148
+ const link = document.createElement('a');
149
+ link.setAttribute('style', style.headerUserMenuLink);
150
+ link.onmouseover = function () {
151
+ link.setAttribute('style', style.headerUserMenuLinkHover);
152
+ };
153
+ link.onmouseout = function () {
154
+ link.setAttribute('style', style.headerUserMenuLink);
155
+ };
156
+ link.href = href;
157
+ link.innerText = label;
158
+ if (target)
159
+ link.target = target;
160
+ return link;
161
+ }
162
+ /**
163
+ * @ignore exporting this only for the unit test
164
+ */
165
+ export async function createUserMenu(store, user, userMenuList) {
166
+ const fetcher = store.fetcher;
167
+ if (fetcher) {
168
+ // Making sure that Profile is loaded before building menu
169
+ await fetcher.load(user);
170
+ }
171
+ const loggedInMenuList = document.createElement('ul');
172
+ loggedInMenuList.setAttribute('style', style.headerUserMenuList);
173
+ if (userMenuList) {
174
+ userMenuList.forEach(function (menuItem) {
175
+ const menuItemType = menuItem.url ? 'url' : 'onclick';
176
+ if (menuItemType === 'url') {
177
+ loggedInMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, menuItem.url, menuItem.target)));
178
+ }
179
+ else {
180
+ loggedInMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, menuItem.onclick)));
181
+ }
182
+ });
183
+ }
184
+ const loggedInMenu = document.createElement('nav');
185
+ loggedInMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed);
186
+ loggedInMenu.setAttribute('aria-hidden', 'true');
187
+ loggedInMenu.setAttribute('id', 'loggedInNav');
188
+ loggedInMenu.appendChild(loggedInMenuList);
189
+ const loggedInMenuTrigger = document.createElement('button');
190
+ loggedInMenuTrigger.setAttribute('style', style.headerUserMenuTrigger);
191
+ loggedInMenuTrigger.type = 'button';
192
+ const profileImg = getProfileImg(store, user);
193
+ if (typeof profileImg === 'string') {
194
+ loggedInMenuTrigger.innerHTML = profileImg;
195
+ }
196
+ else {
197
+ loggedInMenuTrigger.appendChild(profileImg);
198
+ }
199
+ const loggedInMenuContainer = document.createElement('div');
200
+ loggedInMenuContainer.setAttribute('style', style.headerBannerUserMenuNotDisplayed);
201
+ loggedInMenuContainer.appendChild(loggedInMenuTrigger);
202
+ loggedInMenuContainer.appendChild(loggedInMenu);
203
+ const throttledMenuToggle = throttle((event) => toggleMenu(event, loggedInMenuTrigger, loggedInMenu), 50);
204
+ loggedInMenuTrigger.addEventListener('click', throttledMenuToggle);
205
+ let timer = setTimeout(() => null, 0);
206
+ loggedInMenuContainer.addEventListener('mouseover', event => {
207
+ clearTimeout(timer);
208
+ throttledMenuToggle(event);
209
+ const nav = document.getElementById('loggedInNav');
210
+ nav === null || nav === void 0 ? void 0 : nav.setAttribute('style', style.headerUserMenuNavigationMenu);
211
+ });
212
+ loggedInMenuContainer.addEventListener('mouseout', event => {
213
+ timer = setTimeout(() => throttledMenuToggle(event), 200);
214
+ const nav = document.getElementById('loggedInNav');
215
+ nav === null || nav === void 0 ? void 0 : nav.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed);
216
+ });
217
+ return loggedInMenuContainer;
218
+ }
219
+ /**
220
+ * @ignore exporting this only for the unit test
221
+ */
222
+ export function createUserMenuItem(child) {
223
+ const menuProfileItem = document.createElement('li');
224
+ menuProfileItem.setAttribute('style', style.headerUserMenuListItem);
225
+ menuProfileItem.appendChild(child);
226
+ return menuProfileItem;
227
+ }
228
+ /**
229
+ * @ignore exporting this only for the unit test
230
+ */
231
+ export function getProfileImg(store, user) {
232
+ let profileUrl = null;
233
+ try {
234
+ profileUrl = widgets.findImage(user);
235
+ if (!profileUrl) {
236
+ return emptyProfile;
237
+ }
238
+ }
239
+ catch {
240
+ return emptyProfile;
241
+ }
242
+ const profileImage = document.createElement('div');
243
+ profileImage.setAttribute('style', style.headerUserMenuPhoto);
244
+ profileImage.style.backgroundImage = `url(${profileUrl})`;
245
+ return profileImage;
246
+ }
247
+ /**
248
+ * @internal
249
+ */
250
+ function toggleMenu(event, trigger, menu) {
251
+ const isExpanded = trigger.getAttribute('aria-expanded') === 'true';
252
+ const expand = event.type === 'mouseover';
253
+ const close = event.type === 'mouseout';
254
+ if ((isExpanded && expand) || (!isExpanded && close)) {
255
+ return;
256
+ }
257
+ trigger.setAttribute('aria-expanded', (!isExpanded).toString());
258
+ menu.setAttribute('aria-hidden', isExpanded.toString());
259
+ }
260
+ //# sourceMappingURL=index.js.map