solid-ui 3.1.3-5 → 3.1.3-7

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 (621) hide show
  1. package/dist/_virtual/~icons/lucide/chevron-down.cjs.js +1 -1
  2. package/dist/_virtual/~icons/lucide/chevron-down.esm.js +1 -0
  3. package/dist/_virtual/~icons/lucide/circle-user.cjs.js +1 -1
  4. package/dist/_virtual/~icons/lucide/circle-user.esm.js +1 -0
  5. package/dist/_virtual/~icons/lucide/log-in.cjs.js +1 -1
  6. package/dist/_virtual/~icons/lucide/log-in.esm.js +1 -0
  7. package/dist/_virtual/~icons/lucide/log-out.cjs.js +1 -1
  8. package/dist/_virtual/~icons/lucide/log-out.esm.js +1 -0
  9. package/dist/_virtual/~icons/lucide/user.cjs.js +1 -1
  10. package/dist/_virtual/~icons/lucide/user.esm.js +1 -0
  11. package/dist/_virtual/~icons/lucide/x.cjs.js +1 -1
  12. package/dist/_virtual/~icons/lucide/x.esm.js +1 -0
  13. package/dist/_virtual/~icons/svg-spinners/180-ring.cjs.js +1 -1
  14. package/dist/_virtual/~icons/svg-spinners/180-ring.esm.js +1 -0
  15. package/dist/acl/access-controller.cjs.js +1 -1
  16. package/dist/acl/access-controller.cjs.js.map +1 -1
  17. package/dist/acl/access-controller.esm.js.map +1 -1
  18. package/dist/acl/access-groups.cjs.js.map +1 -1
  19. package/dist/acl/access-groups.esm.js.map +1 -1
  20. package/dist/acl/acl-control.cjs.js +1 -1
  21. package/dist/acl/acl-control.cjs.js.map +1 -1
  22. package/dist/acl/acl-control.esm.js +1 -1
  23. package/dist/acl/acl-control.esm.js.map +1 -1
  24. package/dist/acl/acl.cjs.js.map +1 -1
  25. package/dist/acl/acl.esm.js.map +1 -1
  26. package/dist/acl/add-agent-buttons.cjs.js.map +1 -1
  27. package/dist/acl/add-agent-buttons.esm.js.map +1 -1
  28. package/dist/chat/bookmarks.cjs.js +1 -1
  29. package/dist/chat/bookmarks.cjs.js.map +1 -1
  30. package/dist/chat/bookmarks.esm.js +1 -1
  31. package/dist/chat/bookmarks.esm.js.map +1 -1
  32. package/dist/chat/chatLogic.cjs.js.map +1 -1
  33. package/dist/chat/chatLogic.esm.js.map +1 -1
  34. package/dist/chat/dateFolder.cjs.js +1 -1
  35. package/dist/chat/dateFolder.cjs.js.map +1 -1
  36. package/dist/chat/dateFolder.esm.js +1 -1
  37. package/dist/chat/dateFolder.esm.js.map +1 -1
  38. package/dist/chat/infinite.cjs.js +1 -1
  39. package/dist/chat/infinite.cjs.js.map +1 -1
  40. package/dist/chat/infinite.esm.js +1 -1
  41. package/dist/chat/infinite.esm.js.map +1 -1
  42. package/dist/chat/keys.cjs.js +1 -1
  43. package/dist/chat/keys.cjs.js.map +1 -1
  44. package/dist/chat/keys.esm.js +1 -1
  45. package/dist/chat/keys.esm.js.map +1 -1
  46. package/dist/chat/message.cjs.js +1 -1
  47. package/dist/chat/message.cjs.js.map +1 -1
  48. package/dist/chat/message.esm.js +24 -24
  49. package/dist/chat/message.esm.js.map +1 -1
  50. package/dist/chat/messageTools.cjs.js.map +1 -1
  51. package/dist/chat/messageTools.esm.js.map +1 -1
  52. package/dist/chat/signature.cjs.js +1 -1
  53. package/dist/chat/signature.cjs.js.map +1 -1
  54. package/dist/chat/signature.esm.js +1 -1
  55. package/dist/chunks/{menu-items-DKKcQrb6.js → DialogProvider-Bt65G0Tk.js} +157 -56
  56. package/dist/chunks/DialogProvider-Bt65G0Tk.js.map +1 -0
  57. package/dist/chunks/{account-B4BktCv0.js → account-BZ2rYQhV.js} +23 -26
  58. package/dist/chunks/account-BZ2rYQhV.js.map +1 -0
  59. package/dist/chunks/{auth-BPQUXz9Q.js → auth-RHyQ2iIl.js} +32 -29
  60. package/dist/chunks/auth-RHyQ2iIl.js.map +1 -0
  61. package/dist/chunks/{avatar-B5DCduCy.js → avatar-Jx8xm2Op.js} +8 -8
  62. package/dist/chunks/avatar-Jx8xm2Op.js.map +1 -0
  63. package/dist/chunks/{button-GHRF3psH.js → button-0s0lZdxm.js} +7 -7
  64. package/dist/chunks/{button-GHRF3psH.js.map → button-0s0lZdxm.js.map} +1 -1
  65. package/dist/chunks/chevron-down-ujxRg3MD.js +10 -0
  66. package/dist/chunks/chevron-down-ujxRg3MD.js.map +1 -0
  67. package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js +1516 -0
  68. package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js.map +1 -0
  69. package/dist/chunks/combobox-Cxi8xUMn.js +473 -0
  70. package/dist/chunks/combobox-Cxi8xUMn.js.map +1 -0
  71. package/dist/chunks/{combobox-option-CW1ZwMC7.js → combobox-option-DiR3VpyT.js} +4 -4
  72. package/dist/chunks/{combobox-option-CW1ZwMC7.js.map → combobox-option-DiR3VpyT.js.map} +1 -1
  73. package/dist/chunks/{components-Dlw2zOvI.js → components-C1LEhsaK.js} +85 -21
  74. package/dist/chunks/components-C1LEhsaK.js.map +1 -0
  75. package/dist/chunks/{create-context-IPEkU7ze.js → context-uE5jJlS0.js} +8 -4
  76. package/dist/chunks/context-uE5jJlS0.js.map +1 -0
  77. package/dist/chunks/{decorators-CJJL4XBH.js → decorators-BiCkPd_3.js} +28 -35
  78. package/dist/chunks/decorators-BiCkPd_3.js.map +1 -0
  79. package/dist/chunks/{dialog-DmDA1aY8.js → dialog-BAzrHJ8w.js} +106 -64
  80. package/dist/chunks/dialog-BAzrHJ8w.js.map +1 -0
  81. package/dist/chunks/{dialog-content-C8VhHg5G.js → dialog-content-fdJrkCyB.js} +3 -3
  82. package/dist/chunks/{dialog-content-C8VhHg5G.js.map → dialog-content-fdJrkCyB.js.map} +1 -1
  83. package/dist/chunks/{dialog-footer-CtHFoTZS.js → dialog-footer-Bs_p2Nn9.js} +3 -3
  84. package/dist/chunks/{dialog-footer-CtHFoTZS.js.map → dialog-footer-Bs_p2Nn9.js.map} +1 -1
  85. package/dist/chunks/{dialog-header-D9jjujFf.js → dialog-header-CWIAAoDo.js} +3 -3
  86. package/dist/chunks/{dialog-header-D9jjujFf.js.map → dialog-header-CWIAAoDo.js.map} +1 -1
  87. package/dist/chunks/{dialogs-root-C4igEIk0.js → dialogs-root-Cv932Aqm.js} +10 -9
  88. package/dist/chunks/dialogs-root-Cv932Aqm.js.map +1 -0
  89. package/dist/chunks/{footer-CS8u8ycB.js → footer-D64T6XLO.js} +8 -8
  90. package/dist/chunks/{footer-CS8u8ycB.js.map → footer-D64T6XLO.js.map} +1 -1
  91. package/dist/chunks/{guard-BIc50Lps.js → guard-CjUBGVDk.js} +5 -5
  92. package/dist/chunks/{guard-BIc50Lps.js.map → guard-CjUBGVDk.js.map} +1 -1
  93. package/dist/chunks/{header-0TLBh_PG.js → header-COBaJDdB.js} +41 -41
  94. package/dist/chunks/{header-0TLBh_PG.js.map → header-COBaJDdB.js.map} +1 -1
  95. package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js → headerFooterHelpers-7O_ln1QD.js} +2 -2
  96. package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js.map → headerFooterHelpers-7O_ln1QD.js.map} +1 -1
  97. package/dist/chunks/{combobox-eju-wypA.js → input-BF224Jid.js} +114 -113
  98. package/dist/chunks/input-BF224Jid.js.map +1 -0
  99. package/dist/chunks/{jsonld-DZG2v1pE.js → jsonld-DRZuoyoU.js} +54 -54
  100. package/dist/chunks/{jsonld-DZG2v1pE.js.map → jsonld-DRZuoyoU.js.map} +1 -1
  101. package/dist/chunks/{lit-CC2G_f_C.js → lit-C4H1jI4q.js} +110 -95
  102. package/dist/chunks/lit-C4H1jI4q.js.map +1 -0
  103. package/dist/chunks/{login-button-BKp1-O2q.js → login-button-DPeMi00d.js} +10 -7
  104. package/dist/chunks/login-button-DPeMi00d.js.map +1 -0
  105. package/dist/chunks/{logout-button-DlU-q-o5.js → logout-button-CbiLE7jO.js} +10 -7
  106. package/dist/chunks/logout-button-CbiLE7jO.js.map +1 -0
  107. package/dist/chunks/menu-DNcuV-1J.js +1741 -0
  108. package/dist/chunks/menu-DNcuV-1J.js.map +1 -0
  109. package/dist/chunks/{menu-item-DoTy3MUu.js → menu-item-Ck0l-uEI.js} +69 -55
  110. package/dist/chunks/menu-item-Ck0l-uEI.js.map +1 -0
  111. package/dist/chunks/{photo-capture-COoxZRW_.js → photo-capture-tiBsdSbA.js} +20 -20
  112. package/dist/chunks/{photo-capture-COoxZRW_.js.map → photo-capture-tiBsdSbA.js.map} +1 -1
  113. package/dist/chunks/{provider-uRz_fGWb.js → provider-C4eSzopG.js} +7 -7
  114. package/dist/chunks/{provider-uRz_fGWb.js.map → provider-C4eSzopG.js.map} +1 -1
  115. package/dist/chunks/select-D8dW53pr.js +292 -0
  116. package/dist/chunks/select-D8dW53pr.js.map +1 -0
  117. package/dist/chunks/select-option-B-6ULCpQ.js +195 -0
  118. package/dist/chunks/select-option-B-6ULCpQ.js.map +1 -0
  119. package/dist/chunks/{signup-button-BC4LmOXx.js → signup-button-BfIxbpwa.js} +10 -7
  120. package/dist/chunks/signup-button-BfIxbpwa.js.map +1 -0
  121. package/dist/chunks/{solid-logic.esm-7q6hmfIF.js → solid-logic.esm-T70qfHAr.js} +2521 -2504
  122. package/dist/chunks/solid-logic.esm-T70qfHAr.js.map +1 -0
  123. package/dist/chunks/{src-f1UXhE9W.js → src-Bx4GAnWq.js} +16 -17
  124. package/dist/chunks/{src-f1UXhE9W.js.map → src-Bx4GAnWq.js.map} +1 -1
  125. package/dist/components/account/Account.cjs.js +9 -11
  126. package/dist/components/account/Account.cjs.js.map +1 -1
  127. package/dist/components/account/Account.d.ts.map +1 -1
  128. package/dist/components/account/Account.esm.js +8 -11
  129. package/dist/components/account/Account.esm.js.map +1 -1
  130. package/dist/components/account/Account.styles.cjs.js +1 -1
  131. package/dist/components/account/Account.styles.cjs.js.map +1 -1
  132. package/dist/components/account/Account.styles.esm.js +1 -1
  133. package/dist/components/account/Account.styles.esm.js.map +1 -1
  134. package/dist/components/account/index.cjs.js +1 -1
  135. package/dist/components/account/index.esm.js +1 -1
  136. package/dist/components/account.js +1 -1
  137. package/dist/components/avatar/Avatar.cjs.js +1 -1
  138. package/dist/components/avatar/Avatar.cjs.js.map +1 -1
  139. package/dist/components/avatar/Avatar.esm.js +1 -1
  140. package/dist/components/avatar/Avatar.styles.cjs.js +1 -1
  141. package/dist/components/avatar/Avatar.styles.cjs.js.map +1 -1
  142. package/dist/components/avatar/Avatar.styles.esm.js +1 -1
  143. package/dist/components/avatar/Avatar.styles.esm.js.map +1 -1
  144. package/dist/components/avatar/index.cjs.js +1 -1
  145. package/dist/components/avatar/index.esm.js +1 -1
  146. package/dist/components/avatar.js +1 -1
  147. package/dist/components/button/Button.cjs.js +1 -1
  148. package/dist/components/button/Button.cjs.js.map +1 -1
  149. package/dist/components/button/Button.esm.js +1 -1
  150. package/dist/components/button/Button.esm.js.map +1 -1
  151. package/dist/components/button/index.cjs.js +1 -1
  152. package/dist/components/button/index.esm.js +3 -3
  153. package/dist/components/button.js +1 -1
  154. package/dist/components/combobox/Combobox.cjs.js +56 -15
  155. package/dist/components/combobox/Combobox.cjs.js.map +1 -1
  156. package/dist/components/combobox/Combobox.d.ts +27 -6
  157. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  158. package/dist/components/combobox/Combobox.esm.js +257 -87
  159. package/dist/components/combobox/Combobox.esm.js.map +1 -1
  160. package/dist/components/combobox/Combobox.styles.cjs.js +1 -1
  161. package/dist/components/combobox/Combobox.styles.cjs.js.map +1 -1
  162. package/dist/components/combobox/Combobox.styles.esm.js +1 -1
  163. package/dist/components/combobox/Combobox.styles.esm.js.map +1 -1
  164. package/dist/components/combobox/index.cjs.js +1 -1
  165. package/dist/components/combobox/index.esm.js +1 -1
  166. package/dist/components/combobox-option/ComboboxOption.cjs.js +1 -1
  167. package/dist/components/combobox-option/ComboboxOption.cjs.js.map +1 -1
  168. package/dist/components/combobox-option/ComboboxOption.esm.js +1 -1
  169. package/dist/components/combobox-option/index.cjs.js +1 -1
  170. package/dist/components/combobox-option/index.esm.js +1 -1
  171. package/dist/components/combobox-option.js +1 -1
  172. package/dist/components/combobox.js +1 -1
  173. package/dist/components/dialog/Dialog.cjs.js +2 -2
  174. package/dist/components/dialog/Dialog.cjs.js.map +1 -1
  175. package/dist/components/dialog/Dialog.d.ts +3 -1
  176. package/dist/components/dialog/Dialog.d.ts.map +1 -1
  177. package/dist/components/dialog/Dialog.esm.js +60 -61
  178. package/dist/components/dialog/Dialog.esm.js.map +1 -1
  179. package/dist/components/dialog/index.cjs.js +1 -1
  180. package/dist/components/dialog/index.esm.js +1 -1
  181. package/dist/components/dialog-content/DialogContent.cjs.js +1 -1
  182. package/dist/components/dialog-content/DialogContent.cjs.js.map +1 -1
  183. package/dist/components/dialog-content/DialogContent.esm.js +1 -1
  184. package/dist/components/dialog-content/DialogContent.esm.js.map +1 -1
  185. package/dist/components/dialog-content/index.cjs.js +1 -1
  186. package/dist/components/dialog-content/index.esm.js +1 -1
  187. package/dist/components/dialog-content.js +1 -1
  188. package/dist/components/dialog-footer/DialogFooter.cjs.js +1 -1
  189. package/dist/components/dialog-footer/DialogFooter.cjs.js.map +1 -1
  190. package/dist/components/dialog-footer/DialogFooter.esm.js +1 -1
  191. package/dist/components/dialog-footer/DialogFooter.esm.js.map +1 -1
  192. package/dist/components/dialog-footer/index.cjs.js +1 -1
  193. package/dist/components/dialog-footer/index.esm.js +1 -1
  194. package/dist/components/dialog-footer.js +1 -1
  195. package/dist/components/dialog-header/DialogHeader.cjs.js +1 -1
  196. package/dist/components/dialog-header/DialogHeader.cjs.js.map +1 -1
  197. package/dist/components/dialog-header/DialogHeader.esm.js +1 -1
  198. package/dist/components/dialog-header/DialogHeader.esm.js.map +1 -1
  199. package/dist/components/dialog-header/index.cjs.js +1 -1
  200. package/dist/components/dialog-header/index.esm.js +1 -1
  201. package/dist/components/dialog-header.js +1 -1
  202. package/dist/components/dialog-provider/DialogProvider.cjs.js +1 -1
  203. package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
  204. package/dist/components/dialog-provider/DialogProvider.esm.js +2 -2
  205. package/dist/components/dialog-provider/DialogProvider.esm.js.map +1 -1
  206. package/dist/components/dialog-provider/index.cjs.js +1 -1
  207. package/dist/components/dialog-provider/index.esm.js +1 -1
  208. package/dist/components/dialog-provider.js +1 -1
  209. package/dist/components/dialog.js +1 -1
  210. package/dist/components/dialogs-root/DialogsRoot.cjs.js +2 -2
  211. package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
  212. package/dist/components/dialogs-root/DialogsRoot.d.ts.map +1 -1
  213. package/dist/components/dialogs-root/DialogsRoot.esm.js +5 -3
  214. package/dist/components/dialogs-root/DialogsRoot.esm.js.map +1 -1
  215. package/dist/components/dialogs-root/index.cjs.js +1 -1
  216. package/dist/components/dialogs-root/index.esm.js +1 -1
  217. package/dist/components/dialogs-root.js +1 -1
  218. package/dist/components/footer.js +1 -1
  219. package/dist/components/guard/Guard.cjs.js +1 -1
  220. package/dist/components/guard/Guard.cjs.js.map +1 -1
  221. package/dist/components/guard/Guard.esm.js +1 -1
  222. package/dist/components/guard/index.cjs.js +1 -1
  223. package/dist/components/guard/index.esm.js +1 -1
  224. package/dist/components/guard.js +1 -1
  225. package/dist/components/header.js +1 -1
  226. package/dist/components/index.cjs.js +1 -1
  227. package/dist/components/index.esm.js +2 -1
  228. package/dist/components/input/Input.cjs.js +17 -0
  229. package/dist/components/input/Input.cjs.js.map +1 -0
  230. package/dist/components/input/Input.d.ts +17 -0
  231. package/dist/components/input/Input.d.ts.map +1 -0
  232. package/dist/{chunks/menu-DCsLCND4.js → components/input/Input.esm.js} +157 -96
  233. package/dist/components/input/Input.esm.js.map +1 -0
  234. package/dist/components/input/Input.stories.d.ts +43 -0
  235. package/dist/components/input/Input.stories.d.ts.map +1 -0
  236. package/dist/components/input/Input.styles.cjs.js +2 -0
  237. package/dist/components/input/Input.styles.cjs.js.map +1 -0
  238. package/dist/components/input/Input.styles.esm.js +7 -0
  239. package/dist/components/input/Input.styles.esm.js.map +1 -0
  240. package/dist/components/input/index.cjs.js +2 -0
  241. package/dist/components/input/index.cjs.js.map +1 -0
  242. package/dist/components/input/index.d.ts +4 -0
  243. package/dist/components/input/index.d.ts.map +1 -0
  244. package/dist/components/input/index.esm.js +7 -0
  245. package/dist/components/input/index.esm.js.map +1 -0
  246. package/dist/components/input.js +2 -0
  247. package/dist/components/login-button/LoginButton.cjs.js +1 -1
  248. package/dist/components/login-button/LoginButton.cjs.js.map +1 -1
  249. package/dist/components/login-button/LoginButton.d.ts +1 -0
  250. package/dist/components/login-button/LoginButton.d.ts.map +1 -1
  251. package/dist/components/login-button/LoginButton.esm.js +5 -2
  252. package/dist/components/login-button/LoginButton.esm.js.map +1 -1
  253. package/dist/components/login-button/index.cjs.js +1 -1
  254. package/dist/components/login-button/index.esm.js +1 -1
  255. package/dist/components/login-button.js +1 -1
  256. package/dist/components/login-modal/LoginModal.cjs.js +1 -1
  257. package/dist/components/login-modal/LoginModal.cjs.js.map +1 -1
  258. package/dist/components/login-modal/LoginModal.esm.js +1 -1
  259. package/dist/components/login-modal/index.cjs.js +1 -1
  260. package/dist/components/login-modal/index.esm.js +1 -1
  261. package/dist/components/login-modal.js +1 -1
  262. package/dist/components/logout-button/LogoutButton.cjs.js +1 -1
  263. package/dist/components/logout-button/LogoutButton.cjs.js.map +1 -1
  264. package/dist/components/logout-button/LogoutButton.d.ts +1 -0
  265. package/dist/components/logout-button/LogoutButton.d.ts.map +1 -1
  266. package/dist/components/logout-button/LogoutButton.esm.js +5 -2
  267. package/dist/components/logout-button/LogoutButton.esm.js.map +1 -1
  268. package/dist/components/logout-button/index.cjs.js +1 -1
  269. package/dist/components/logout-button/index.esm.js +1 -1
  270. package/dist/components/logout-button.js +1 -1
  271. package/dist/components/menu/Menu.cjs.js +13 -8
  272. package/dist/components/menu/Menu.cjs.js.map +1 -1
  273. package/dist/components/menu/Menu.d.ts +13 -8
  274. package/dist/components/menu/Menu.d.ts.map +1 -1
  275. package/dist/components/menu/Menu.esm.js +132 -88
  276. package/dist/components/menu/Menu.esm.js.map +1 -1
  277. package/dist/components/menu/Menu.stories.d.ts.map +1 -1
  278. package/dist/components/menu/Menu.styles.cjs.js +2 -0
  279. package/dist/components/menu/Menu.styles.cjs.js.map +1 -0
  280. package/dist/components/menu/Menu.styles.esm.js +7 -0
  281. package/dist/components/menu/Menu.styles.esm.js.map +1 -0
  282. package/dist/components/menu/index.cjs.js +1 -1
  283. package/dist/components/menu/index.esm.js +1 -1
  284. package/dist/components/menu-item/MenuItem.cjs.js +5 -7
  285. package/dist/components/menu-item/MenuItem.cjs.js.map +1 -1
  286. package/dist/components/menu-item/MenuItem.d.ts +2 -0
  287. package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
  288. package/dist/components/menu-item/MenuItem.esm.js +61 -47
  289. package/dist/components/menu-item/MenuItem.esm.js.map +1 -1
  290. package/dist/components/menu-item/MenuItem.styles.cjs.js +1 -1
  291. package/dist/components/menu-item/MenuItem.styles.cjs.js.map +1 -1
  292. package/dist/components/menu-item/MenuItem.styles.esm.js +1 -1
  293. package/dist/components/menu-item/MenuItem.styles.esm.js.map +1 -1
  294. package/dist/components/menu-item/index.cjs.js +1 -1
  295. package/dist/components/menu-item/index.esm.js +1 -1
  296. package/dist/components/menu-item.js +1 -1
  297. package/dist/components/menu.js +1 -1
  298. package/dist/components/photo-capture.js +1 -1
  299. package/dist/components/provider/Provider.cjs.js +1 -1
  300. package/dist/components/provider/Provider.cjs.js.map +1 -1
  301. package/dist/components/provider/Provider.esm.js +1 -1
  302. package/dist/components/provider/index.cjs.js +1 -1
  303. package/dist/components/provider/index.esm.js +1 -1
  304. package/dist/components/provider.js +1 -1
  305. package/dist/components/select/Select.cjs.js +21 -0
  306. package/dist/components/select/Select.cjs.js.map +1 -0
  307. package/dist/components/select/Select.d.ts +15 -0
  308. package/dist/components/select/Select.d.ts.map +1 -0
  309. package/dist/components/{menu-items/MenuItems.esm.js → select/Select.esm.js} +140 -65
  310. package/dist/components/select/Select.esm.js.map +1 -0
  311. package/dist/components/select/Select.stories.d.ts +27 -0
  312. package/dist/components/select/Select.stories.d.ts.map +1 -0
  313. package/dist/components/select/Select.styles.cjs.js +2 -0
  314. package/dist/components/select/Select.styles.cjs.js.map +1 -0
  315. package/dist/components/select/Select.styles.esm.js +7 -0
  316. package/dist/components/select/Select.styles.esm.js.map +1 -0
  317. package/dist/components/select/index.cjs.js +2 -1
  318. package/dist/components/select/index.cjs.js.map +1 -0
  319. package/dist/components/select/index.d.ts +3 -1
  320. package/dist/components/select/index.d.ts.map +1 -1
  321. package/dist/components/select/index.esm.js +7 -3
  322. package/dist/components/select/index.esm.js.map +1 -0
  323. package/dist/components/select-option/SelectOption.cjs.js +2 -0
  324. package/dist/components/select-option/SelectOption.cjs.js.map +1 -0
  325. package/dist/components/select-option/SelectOption.d.ts +6 -0
  326. package/dist/components/select-option/SelectOption.d.ts.map +1 -0
  327. package/dist/components/select-option/SelectOption.esm.js +194 -0
  328. package/dist/components/select-option/SelectOption.esm.js.map +1 -0
  329. package/dist/components/select-option/index.cjs.js +2 -0
  330. package/dist/components/select-option/index.cjs.js.map +1 -0
  331. package/dist/components/select-option/index.d.ts +4 -0
  332. package/dist/components/select-option/index.d.ts.map +1 -0
  333. package/dist/components/select-option/index.esm.js +7 -0
  334. package/dist/components/select-option/index.esm.js.map +1 -0
  335. package/dist/components/select-option.js +2 -0
  336. package/dist/components/select.js +2 -2
  337. package/dist/components/signup-button/SignupButton.cjs.js +1 -1
  338. package/dist/components/signup-button/SignupButton.cjs.js.map +1 -1
  339. package/dist/components/signup-button/SignupButton.d.ts +1 -0
  340. package/dist/components/signup-button/SignupButton.d.ts.map +1 -1
  341. package/dist/components/signup-button/SignupButton.esm.js +5 -2
  342. package/dist/components/signup-button/SignupButton.esm.js.map +1 -1
  343. package/dist/components/signup-button/index.cjs.js +1 -1
  344. package/dist/components/signup-button/index.esm.js +1 -1
  345. package/dist/components/signup-button.js +1 -1
  346. package/dist/components.js +24 -23
  347. package/dist/create/create.cjs.js.map +1 -1
  348. package/dist/create/create.esm.js.map +1 -1
  349. package/dist/create/index.cjs.js.map +1 -1
  350. package/dist/footer/index.cjs.js +1 -1
  351. package/dist/footer/index.esm.js +1 -1
  352. package/dist/header/index.cjs.js +1 -1
  353. package/dist/header/index.cjs.js.map +1 -1
  354. package/dist/header/index.esm.js +1 -1
  355. package/dist/header/index.esm.js.map +1 -1
  356. package/dist/index.cjs.js +1 -1
  357. package/dist/index.cjs.js.map +1 -1
  358. package/dist/index.d.ts +0 -1
  359. package/dist/index.d.ts.map +1 -1
  360. package/dist/index.esm.js +13 -13
  361. package/dist/index.esm.js.map +1 -1
  362. package/dist/index.js +7 -9
  363. package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
  364. package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
  365. package/dist/lib/auth/context.cjs.js.map +1 -1
  366. package/dist/lib/auth/index.cjs.js +1 -1
  367. package/dist/lib/auth/index.esm.js +5 -4
  368. package/dist/lib/components/ids.cjs.js.map +1 -1
  369. package/dist/lib/components/ids.esm.js.map +1 -1
  370. package/dist/lib/components/index.cjs.js +1 -1
  371. package/dist/lib/components/index.d.ts +1 -0
  372. package/dist/lib/components/index.d.ts.map +1 -1
  373. package/dist/lib/components/index.esm.js +7 -3
  374. package/dist/lib/components/traits/DialogTrait.cjs.js +2 -0
  375. package/dist/lib/components/traits/DialogTrait.cjs.js.map +1 -0
  376. package/dist/lib/components/traits/DialogTrait.d.ts +13 -0
  377. package/dist/lib/components/traits/DialogTrait.d.ts.map +1 -0
  378. package/dist/lib/components/traits/DialogTrait.esm.js +16 -0
  379. package/dist/lib/components/traits/DialogTrait.esm.js.map +1 -0
  380. package/dist/lib/components/traits/InputTrait.cjs.js +2 -0
  381. package/dist/lib/components/traits/InputTrait.cjs.js.map +1 -0
  382. package/dist/lib/components/traits/InputTrait.d.ts +30 -0
  383. package/dist/lib/components/traits/InputTrait.d.ts.map +1 -0
  384. package/dist/lib/components/traits/InputTrait.esm.js +45 -0
  385. package/dist/lib/components/traits/InputTrait.esm.js.map +1 -0
  386. package/dist/lib/components/traits/WebComponentTrait.d.ts +11 -0
  387. package/dist/lib/components/traits/WebComponentTrait.d.ts.map +1 -0
  388. package/dist/lib/components/traits/index.cjs.js +1 -0
  389. package/dist/lib/components/traits/index.d.ts +6 -0
  390. package/dist/lib/components/traits/index.d.ts.map +1 -0
  391. package/dist/lib/components/traits/index.esm.js +3 -0
  392. package/dist/lib/components/web-component/WebComponent.cjs.js +1 -1
  393. package/dist/lib/components/web-component/WebComponent.cjs.js.map +1 -1
  394. package/dist/lib/components/web-component/WebComponent.d.ts +7 -0
  395. package/dist/lib/components/web-component/WebComponent.d.ts.map +1 -1
  396. package/dist/lib/components/web-component/WebComponent.esm.js +17 -6
  397. package/dist/lib/components/web-component/WebComponent.esm.js.map +1 -1
  398. package/dist/lib/components/web-component/WebComponent.styles.cjs.js.map +1 -1
  399. package/dist/lib/components/web-component/WebComponent.styles.esm.js.map +1 -1
  400. package/dist/lib/components/web-component/index.cjs.js +1 -1
  401. package/dist/lib/components/web-component/index.esm.js +2 -1
  402. package/dist/lib/dialogs/Dialog.cjs.js +1 -1
  403. package/dist/lib/dialogs/Dialog.cjs.js.map +1 -1
  404. package/dist/lib/dialogs/Dialog.d.ts +6 -1
  405. package/dist/lib/dialogs/Dialog.d.ts.map +1 -1
  406. package/dist/lib/dialogs/Dialog.esm.js +6 -2
  407. package/dist/lib/dialogs/Dialog.esm.js.map +1 -1
  408. package/dist/lib/dialogs/context.cjs.js +1 -1
  409. package/dist/lib/dialogs/context.cjs.js.map +1 -1
  410. package/dist/lib/dialogs/context.d.ts +3 -0
  411. package/dist/lib/dialogs/context.d.ts.map +1 -1
  412. package/dist/lib/dialogs/context.esm.js +4 -3
  413. package/dist/lib/dialogs/context.esm.js.map +1 -1
  414. package/dist/lib/dialogs/events/close-dialog.cjs.js +1 -1
  415. package/dist/lib/dialogs/events/close-dialog.cjs.js.map +1 -1
  416. package/dist/lib/dialogs/events/close-dialog.d.ts +2 -1
  417. package/dist/lib/dialogs/events/close-dialog.d.ts.map +1 -1
  418. package/dist/lib/dialogs/events/close-dialog.esm.js +3 -2
  419. package/dist/lib/dialogs/events/close-dialog.esm.js.map +1 -1
  420. package/dist/lib/dialogs/helpers.cjs.js +1 -1
  421. package/dist/lib/dialogs/helpers.cjs.js.map +1 -1
  422. package/dist/lib/dialogs/helpers.d.ts +2 -1
  423. package/dist/lib/dialogs/helpers.d.ts.map +1 -1
  424. package/dist/lib/dialogs/helpers.esm.js +3 -3
  425. package/dist/lib/dialogs/helpers.esm.js.map +1 -1
  426. package/dist/lib/dialogs/index.cjs.js +1 -1
  427. package/dist/lib/dialogs/index.esm.js +6 -5
  428. package/dist/lib/log.cjs.js +1 -1
  429. package/dist/lib/log.cjs.js.map +1 -1
  430. package/dist/lib/log.esm.js +1 -1
  431. package/dist/lib/log.esm.js.map +1 -1
  432. package/dist/lib/messageArea.cjs.js.map +1 -1
  433. package/dist/lib/messageArea.esm.js.map +1 -1
  434. package/dist/lib/ns.cjs.js.map +1 -1
  435. package/dist/lib/pad.cjs.js +1 -1
  436. package/dist/lib/pad.cjs.js.map +1 -1
  437. package/dist/lib/pad.esm.js +1 -1
  438. package/dist/lib/pad.esm.js.map +1 -1
  439. package/dist/lib/participation.cjs.js.map +1 -1
  440. package/dist/lib/participation.esm.js.map +1 -1
  441. package/dist/lib/preferences.cjs.js +1 -1
  442. package/dist/lib/preferences.cjs.js.map +1 -1
  443. package/dist/lib/preferences.esm.js +1 -1
  444. package/dist/lib/preferences.esm.js.map +1 -1
  445. package/dist/lib/table.cjs.js.map +1 -1
  446. package/dist/lib/table.esm.js.map +1 -1
  447. package/dist/lib/tabs.cjs.js +1 -1
  448. package/dist/lib/tabs.cjs.js.map +1 -1
  449. package/dist/lib/tabs.esm.js +1 -1
  450. package/dist/lib/tabs.esm.js.map +1 -1
  451. package/dist/loader.js +7 -9
  452. package/dist/login/login.cjs.js +1 -1
  453. package/dist/login/login.cjs.js.map +1 -1
  454. package/dist/login/login.esm.js +1 -1
  455. package/dist/login/login.esm.js.map +1 -1
  456. package/dist/matrix/index.cjs.js.map +1 -1
  457. package/dist/matrix/matrix.cjs.js.map +1 -1
  458. package/dist/matrix/matrix.esm.js.map +1 -1
  459. package/dist/media/media-capture.cjs.js.map +1 -1
  460. package/dist/media/media-capture.esm.js.map +1 -1
  461. package/dist/signup/signup.cjs.js.map +1 -1
  462. package/dist/signup/signup.esm.js.map +1 -1
  463. package/dist/solid-ui.js +1053 -446
  464. package/dist/solid-ui.min.js +1053 -446
  465. package/dist/solid-ui.min.js.map +1 -1
  466. package/dist/theme.css +1 -1
  467. package/dist/utils/headerFooterHelpers.cjs.js.map +1 -1
  468. package/dist/utils/headerFooterHelpers.esm.js.map +1 -1
  469. package/dist/utils/index.cjs.js +2 -2
  470. package/dist/utils/index.cjs.js.map +1 -1
  471. package/dist/utils/index.esm.js +1 -1
  472. package/dist/utils/index.esm.js.map +1 -1
  473. package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
  474. package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
  475. package/dist/utils/keyHelpers/accessData.esm.js +1 -1
  476. package/dist/utils/keyHelpers/accessData.esm.js.map +1 -1
  477. package/dist/utils/keyHelpers/acl.cjs.js.map +1 -1
  478. package/dist/utils/keyHelpers/acl.esm.js.map +1 -1
  479. package/dist/utils/keyHelpers/otherHelpers.cjs.js.map +1 -1
  480. package/dist/utils/keyHelpers/otherHelpers.esm.js.map +1 -1
  481. package/dist/utils/label.cjs.js.map +1 -1
  482. package/dist/utils/label.esm.js.map +1 -1
  483. package/dist/v2/components/auth/loginButton/LoginButton.cjs.js.map +1 -1
  484. package/dist/v2/components/auth/loginButton/LoginButton.esm.js.map +1 -1
  485. package/dist/v2/components/auth/loginButton/downArrow.cjs.js.map +1 -1
  486. package/dist/v2/components/auth/loginButton/index.cjs.js +1 -1
  487. package/dist/v2/components/auth/loginButton/index.esm.js +1 -0
  488. package/dist/v2/components/auth/signupButton/index.cjs.js +1 -1
  489. package/dist/v2/components/auth/signupButton/index.esm.js +1 -0
  490. package/dist/v2/components/layout/footer/index.cjs.js +1 -1
  491. package/dist/v2/components/layout/footer/index.esm.js +1 -0
  492. package/dist/v2/components/layout/header/Header.cjs.js.map +1 -1
  493. package/dist/v2/components/layout/header/Header.esm.js.map +1 -1
  494. package/dist/v2/components/layout/header/index.cjs.js +1 -1
  495. package/dist/v2/components/layout/header/index.esm.js +1 -0
  496. package/dist/v2/components/media/photoCapture/PhotoCapture.cjs.js.map +1 -1
  497. package/dist/v2/components/media/photoCapture/PhotoCapture.esm.js.map +1 -1
  498. package/dist/v2/components/media/photoCapture/index.cjs.js +1 -1
  499. package/dist/v2/components/media/photoCapture/index.esm.js +1 -0
  500. package/dist/widgets/buttons/iconLinks.cjs.js.map +1 -1
  501. package/dist/widgets/buttons/iconLinks.esm.js.map +1 -1
  502. package/dist/widgets/buttons.cjs.js.map +1 -1
  503. package/dist/widgets/buttons.esm.js.map +1 -1
  504. package/dist/widgets/dragAndDrop.cjs.js.map +1 -1
  505. package/dist/widgets/dragAndDrop.esm.js.map +1 -1
  506. package/dist/widgets/error.cjs.js.map +1 -1
  507. package/dist/widgets/error.esm.js.map +1 -1
  508. package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
  509. package/dist/widgets/forms/autocomplete/autocompleteField.esm.js.map +1 -1
  510. package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
  511. package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js.map +1 -1
  512. package/dist/widgets/forms/autocomplete/language.cjs.js +1 -1
  513. package/dist/widgets/forms/autocomplete/language.cjs.js.map +1 -1
  514. package/dist/widgets/forms/autocomplete/language.esm.js +1 -1
  515. package/dist/widgets/forms/autocomplete/language.esm.js.map +1 -1
  516. package/dist/widgets/forms/autocomplete/publicData.cjs.js +1 -1
  517. package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
  518. package/dist/widgets/forms/autocomplete/publicData.esm.js +1 -1
  519. package/dist/widgets/forms/autocomplete/publicData.esm.js.map +1 -1
  520. package/dist/widgets/forms/basic.cjs.js.map +1 -1
  521. package/dist/widgets/forms/basic.esm.js.map +1 -1
  522. package/dist/widgets/forms/fieldFunction.cjs.js.map +1 -1
  523. package/dist/widgets/forms/fieldParams.cjs.js.map +1 -1
  524. package/dist/widgets/forms/fieldParams.esm.js.map +1 -1
  525. package/dist/widgets/forms/formStyle.cjs.js.map +1 -1
  526. package/dist/widgets/forms/formStyle.esm.js.map +1 -1
  527. package/dist/widgets/forms.cjs.js +1 -1
  528. package/dist/widgets/forms.cjs.js.map +1 -1
  529. package/dist/widgets/forms.esm.js +1 -1
  530. package/dist/widgets/forms.esm.js.map +1 -1
  531. package/dist/widgets/index.cjs.js +1 -1
  532. package/dist/widgets/index.esm.js +65 -65
  533. package/dist/widgets/multiSelect.cjs.js.map +1 -1
  534. package/dist/widgets/multiSelect.esm.js.map +1 -1
  535. package/dist/widgets/peoplePicker.cjs.js.map +1 -1
  536. package/dist/widgets/peoplePicker.esm.js.map +1 -1
  537. package/dist/widgets/widgetHelpers.cjs.js.map +1 -1
  538. package/dist/widgets/widgetHelpers.esm.js.map +1 -1
  539. package/package.json +9 -10
  540. package/dist/chunks/DialogProvider-BbWGIFN5.js +0 -211
  541. package/dist/chunks/DialogProvider-BbWGIFN5.js.map +0 -1
  542. package/dist/chunks/account-B4BktCv0.js.map +0 -1
  543. package/dist/chunks/auth-BPQUXz9Q.js.map +0 -1
  544. package/dist/chunks/avatar-B5DCduCy.js.map +0 -1
  545. package/dist/chunks/close-dialog-qpl1X44Q.js +0 -14
  546. package/dist/chunks/close-dialog-qpl1X44Q.js.map +0 -1
  547. package/dist/chunks/combobox-eju-wypA.js.map +0 -1
  548. package/dist/chunks/components-Dlw2zOvI.js.map +0 -1
  549. package/dist/chunks/consume-BefsVEGX.js +0 -49
  550. package/dist/chunks/consume-BefsVEGX.js.map +0 -1
  551. package/dist/chunks/context-ChcZyr30.js +0 -7
  552. package/dist/chunks/context-ChcZyr30.js.map +0 -1
  553. package/dist/chunks/context-ImtIQIYP.js +0 -7
  554. package/dist/chunks/context-ImtIQIYP.js.map +0 -1
  555. package/dist/chunks/create-context-IPEkU7ze.js.map +0 -1
  556. package/dist/chunks/decorators-CJJL4XBH.js.map +0 -1
  557. package/dist/chunks/dialog-DmDA1aY8.js.map +0 -1
  558. package/dist/chunks/dialogs-root-C4igEIk0.js.map +0 -1
  559. package/dist/chunks/lit-CC2G_f_C.js.map +0 -1
  560. package/dist/chunks/login-button-BKp1-O2q.js.map +0 -1
  561. package/dist/chunks/logout-button-DlU-q-o5.js.map +0 -1
  562. package/dist/chunks/menu-DCsLCND4.js.map +0 -1
  563. package/dist/chunks/menu-item-DoTy3MUu.js.map +0 -1
  564. package/dist/chunks/menu-items-DKKcQrb6.js.map +0 -1
  565. package/dist/chunks/provide-CqCWUUfi.js +0 -113
  566. package/dist/chunks/provide-CqCWUUfi.js.map +0 -1
  567. package/dist/chunks/select-bVnWqF4c.js +0 -560
  568. package/dist/chunks/select-bVnWqF4c.js.map +0 -1
  569. package/dist/chunks/signup-button-BC4LmOXx.js.map +0 -1
  570. package/dist/chunks/solid-logic.esm-7q6hmfIF.js.map +0 -1
  571. package/dist/components/menu-items/MenuItems.cjs.js +0 -6
  572. package/dist/components/menu-items/MenuItems.cjs.js.map +0 -1
  573. package/dist/components/menu-items/MenuItems.d.ts +0 -8
  574. package/dist/components/menu-items/MenuItems.d.ts.map +0 -1
  575. package/dist/components/menu-items/MenuItems.esm.js.map +0 -1
  576. package/dist/components/menu-items/MenuItems.styles.cjs.js +0 -2
  577. package/dist/components/menu-items/MenuItems.styles.cjs.js.map +0 -1
  578. package/dist/components/menu-items/MenuItems.styles.esm.js +0 -7
  579. package/dist/components/menu-items/MenuItems.styles.esm.js.map +0 -1
  580. package/dist/components/menu-items/index.cjs.js +0 -2
  581. package/dist/components/menu-items/index.cjs.js.map +0 -1
  582. package/dist/components/menu-items/index.d.ts +0 -4
  583. package/dist/components/menu-items/index.d.ts.map +0 -1
  584. package/dist/components/menu-items/index.esm.js +0 -7
  585. package/dist/components/menu-items/index.esm.js.map +0 -1
  586. package/dist/components/menu-items.js +0 -2
  587. package/dist/lib/menus/context.cjs.js +0 -2
  588. package/dist/lib/menus/context.cjs.js.map +0 -1
  589. package/dist/lib/menus/context.d.ts +0 -7
  590. package/dist/lib/menus/context.d.ts.map +0 -1
  591. package/dist/lib/menus/context.esm.js +0 -7
  592. package/dist/lib/menus/context.esm.js.map +0 -1
  593. package/dist/lib/menus/index.cjs.js +0 -1
  594. package/dist/lib/menus/index.d.ts +0 -2
  595. package/dist/lib/menus/index.d.ts.map +0 -1
  596. package/dist/lib/menus/index.esm.js +0 -1
  597. package/dist/solid-ui.js.map +0 -1
  598. package/dist/v2/components/forms/select/Select.cjs.js +0 -225
  599. package/dist/v2/components/forms/select/Select.cjs.js.map +0 -1
  600. package/dist/v2/components/forms/select/Select.esm.js +0 -394
  601. package/dist/v2/components/forms/select/Select.esm.js.map +0 -1
  602. package/dist/v2/components/forms/select/index.cjs.js +0 -2
  603. package/dist/v2/components/forms/select/index.cjs.js.map +0 -1
  604. package/dist/v2/components/forms/select/index.esm.js +0 -7
  605. package/dist/v2/components/forms/select/index.esm.js.map +0 -1
  606. package/dist/v2/components/forms/shared/downArrow.cjs.js +0 -9
  607. package/dist/v2/components/forms/shared/downArrow.cjs.js.map +0 -1
  608. package/dist/v2/components/forms/shared/downArrow.esm.js +0 -14
  609. package/dist/v2/components/forms/shared/downArrow.esm.js.map +0 -1
  610. package/dist/v2/components/forms/shared/keyboard.cjs.js +0 -2
  611. package/dist/v2/components/forms/shared/keyboard.cjs.js.map +0 -1
  612. package/dist/v2/components/forms/shared/keyboard.esm.js +0 -34
  613. package/dist/v2/components/forms/shared/keyboard.esm.js.map +0 -1
  614. package/dist/v2/components/forms/shared/listboxStyles.cjs.js +0 -95
  615. package/dist/v2/components/forms/shared/listboxStyles.cjs.js.map +0 -1
  616. package/dist/v2/components/forms/shared/listboxStyles.esm.js +0 -100
  617. package/dist/v2/components/forms/shared/listboxStyles.esm.js.map +0 -1
  618. package/dist/v2/components/forms/shared/listboxTemplate.cjs.js +0 -24
  619. package/dist/v2/components/forms/shared/listboxTemplate.cjs.js.map +0 -1
  620. package/dist/v2/components/forms/shared/listboxTemplate.esm.js +0 -37
  621. package/dist/v2/components/forms/shared/listboxTemplate.esm.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./SelectOption.cjs.js");var t=e.default;Object.defineProperty(exports,"SelectOption",{enumerable:!0,get:function(){return e.default}}),exports.default=t;
2
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","names":["SelectOption"],"sources":["../../../src/components/select-option/index.ts"],"sourcesContent":["import SelectOption from './SelectOption'\n\nexport { SelectOption }\nexport default SelectOption\n"],"mappings":"wIAGA,IAAA,EAAeA,EAAAA"}
@@ -0,0 +1,4 @@
1
+ import { default as SelectOption } from './SelectOption';
2
+ export { SelectOption };
3
+ export default SelectOption;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/select-option/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,eAAe,YAAY,CAAA"}
@@ -0,0 +1,7 @@
1
+ import e from "./SelectOption.esm.js";
2
+ //#region src/components/select-option/index.ts
3
+ var t = e;
4
+ //#endregion
5
+ export { e as SelectOption, t as default };
6
+
7
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","names":["SelectOption"],"sources":["../../../src/components/select-option/index.ts"],"sourcesContent":["import SelectOption from './SelectOption'\n\nexport { SelectOption }\nexport default SelectOption\n"],"mappings":";;AAGA,IAAA,IAAeA"}
@@ -0,0 +1,2 @@
1
+ import { n as e, t } from "../chunks/select-option-B-6ULCpQ.js";
2
+ export { e as SelectOption, t as default };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../chunks/select-bVnWqF4c.js";
2
- export { e as Select };
1
+ import { n as e, t } from "../chunks/select-D8dW53pr.js";
2
+ export { e as Select, t as default };
@@ -6,5 +6,5 @@ const e=require("../../lib/auth/context.cjs.js"),t=require("../../lib/components
6
6
  </slot>
7
7
  </solid-ui-button>
8
8
  </slot>
9
- `}onClick(e){e.preventDefault(),this.auth.signup()}},{e:[u,o],c:[S,s]}=_(a,[[l,1,`auth`]],c,0,void 0,n.default),s(),Object.defineProperty(exports,"_SignupButton",{enumerable:!0,get:function(){return S}});
9
+ `}click(){this.auth.signup()}onClick(e){e.preventDefault(),this.click()}},{e:[u,o],c:[S,s]}=_(a,[[l,1,`auth`]],c,0,void 0,n.default),s(),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return S}});
10
10
  //# sourceMappingURL=SignupButton.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignupButton.cjs.js","names":["customElement","WebComponent","consume","html","authContext","DEFAULT_AUTH_CONTEXT","_classDecs","_SignupButton","_A","WeakMap","_ref","_authDecs","context","subscribe","SignupButton","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_auth","_classPrivateFieldGet","auth","v","_classPrivateFieldSet","render","onClick","e","preventDefault","signup","_SignupButton2","c","_initClass","_applyDecs","default"],"sources":["../../../src/components/signup-button/SignupButton.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { consume } from '@lit/context'\nimport { html } from 'lit'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '@/components/button'\n\n@customElement('solid-ui-signup-button')\nexport default class SignupButton extends WebComponent {\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n protected render () {\n return html`\n <slot name=\"trigger\" @click=${this.onClick}>\n <solid-ui-button>\n <slot>\n Sign Up\n </slot>\n </solid-ui-button>\n </slot>\n `\n }\n\n private onClick (e: MouseEvent) {\n e.preventDefault()\n\n this.auth.signup()\n }\n}\n"],"mappings":"gwIAK4BM,EAAA,CAE3BN,EAAAA,cAAc,wBAAwB,CAAC,EAAA,IAAAO,EAAAC,EAAA,IAAAC,QAAAC,GAAAC,GAAAA,EAAAA,EAAAA,SAE7B,CAAEC,QAASR,EAAAA,YAAaS,UAAW,EAAK,CAAC,EAAC,QAoBpDgB,EAAAf,cArByCb,EAAAA,OAAa,CAAAc,YAAA,GAAAC,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAAC,EAAA,KAAAT,GAAAU,EAAA,IAAA,EAAAC,EAAA,KAEhBd,EAAAA,oBAAoB,EAAA,CAAA,CAAA,IAAAK,IAAA,CAAA,OAAAU,EAAAZ,EAAA,IAAA,CAAA,CAAA,IAAxCa,KAAIC,EAAA,CAAAC,EAAAf,EAAA,KAAAc,CAAA,CAAA,CAEXE,QAAU,CAClB,MAAOrB,GAAAA,IAAI;oCACqB,KAAKsB,QAAO;;;;;;;KAQ9C,CAEQA,QAASC,EAAe,CAC9BA,EAAEC,eAAe,EAEjB,KAAKN,KAAKO,OAAO,CACnB,CACF,EAAC,CAAAF,EAAA,CAAAP,EAAAD,GAAAY,EAAA,CAAAvB,EAAAwB,IAAAC,EAAAH,EAAA,CAAA,CAAAlB,EAAA,EAAA,MAAA,CAAA,EAAAL,EAAA,EAAA,IAAA,GArByCL,EAAAA,OAAY,EAAA8B,EAAA"}
1
+ {"version":3,"file":"SignupButton.cjs.js","names":["customElement","WebComponent","consume","html","authContext","DEFAULT_AUTH_CONTEXT","_classDecs","_SignupButton","_A","WeakMap","_ref","_authDecs","context","subscribe","SignupButton","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_auth","_classPrivateFieldGet","auth","v","_classPrivateFieldSet","render","onClick","click","signup","e","preventDefault","_SignupButton2","c","_initClass","_applyDecs","default"],"sources":["../../../src/components/signup-button/SignupButton.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { consume } from '@lit/context'\nimport { html } from 'lit'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '@/components/button'\n\n@customElement('solid-ui-signup-button')\nexport default class SignupButton extends WebComponent {\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n protected render () {\n return html`\n <slot name=\"trigger\" @click=${this.onClick}>\n <solid-ui-button>\n <slot>\n Sign Up\n </slot>\n </solid-ui-button>\n </slot>\n `\n }\n\n click () {\n this.auth.signup()\n }\n\n private onClick (e: MouseEvent) {\n e.preventDefault()\n\n this.click()\n }\n}\n"],"mappings":"gwIAK4BM,EAAA,CAE3BN,EAAAA,cAAc,wBAAwB,CAAC,EAAA,IAAAO,EAAAC,EAAA,IAAAC,QAAAC,GAAAC,GAAAA,EAAAA,EAAAA,QAAAA,CAE7B,CAAEC,QAASR,EAAAA,YAAaS,UAAW,EAAK,CAAC,EAAC,QAwBpDiB,EAAAhB,cAzByCb,EAAAA,OAAa,CAAAc,YAAA,GAAAC,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAAC,EAAA,KAAAT,GAAAU,EAAA,IAAA,EAAAC,EAAA,KAEhBd,EAAAA,oBAAoB,EAAA,CAAA,CAAA,IAAAK,IAAA,CAAA,OAAAU,EAAAZ,EAAA,IAAA,CAAA,CAAA,IAAxCa,KAAIC,EAAA,CAAAC,EAAAf,EAAA,KAAAc,CAAA,CAAA,CAEXE,QAAU,CAClB,MAAOrB,GAAAA,IAAI;oCACqB,KAAKsB,QAAO;;;;;;;KAQ9C,CAEAC,OAAS,CACP,KAAKL,KAAKM,OAAO,CACnB,CAEQF,QAASG,EAAe,CAC9BA,EAAEC,eAAe,EAEjB,KAAKH,MAAM,CACb,CACF,EAAC,CAAAE,EAAA,CAAAT,EAAAD,GAAAa,EAAA,CAAAxB,EAAAyB,IAAAC,EAAAH,EAAA,CAAA,CAAAnB,EAAA,EAAA,MAAA,CAAA,EAAAL,EAAA,EAAA,IAAA,GAzByCL,EAAAA,OAAY,EAAA+B,EAAA"}
@@ -2,6 +2,7 @@ import { WebComponent } from '../../lib/components';
2
2
  export default class SignupButton extends WebComponent {
3
3
  private accessor auth;
4
4
  protected render(): import('lit-html').TemplateResult<1>;
5
+ click(): void;
5
6
  private onClick;
6
7
  }
7
8
  //# sourceMappingURL=SignupButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignupButton.d.ts","sourceRoot":"","sources":["../../../src/components/signup-button/SignupButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAK9D,OAAO,qBAAqB,CAAA;AAG5B,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IAEpD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IAEzD,SAAS,CAAC,MAAM;IAYhB,OAAO,CAAC,OAAO;CAKhB"}
1
+ {"version":3,"file":"SignupButton.d.ts","sourceRoot":"","sources":["../../../src/components/signup-button/SignupButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAK9D,OAAO,qBAAqB,CAAA;AAG5B,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IAEpD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IAEzD,SAAS,CAAC,MAAM;IAYhB,KAAK;IAIL,OAAO,CAAC,OAAO;CAKhB"}
@@ -194,8 +194,11 @@ f = (u = i({
194
194
  </slot>
195
195
  `;
196
196
  }
197
+ click() {
198
+ this.auth.signup();
199
+ }
197
200
  onClick(e) {
198
- e.preventDefault(), this.auth.signup();
201
+ e.preventDefault(), this.click();
199
202
  }
200
203
  }, {e: [d, s], c: [C, c]} = v(o, [[
201
204
  u,
@@ -203,6 +206,6 @@ f = (u = i({
203
206
  "auth"
204
207
  ]], l, 0, void 0, r), c();
205
208
  //#endregion
206
- export { C as _SignupButton };
209
+ export { C as default };
207
210
 
208
211
  //# sourceMappingURL=SignupButton.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignupButton.esm.js","names":["customElement","WebComponent","consume","html","authContext","DEFAULT_AUTH_CONTEXT","_classDecs","_SignupButton","_A","WeakMap","_ref","_authDecs","context","subscribe","SignupButton","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_auth","_classPrivateFieldGet","auth","v","_classPrivateFieldSet","render","onClick","e","preventDefault","signup","_SignupButton2","c","_initClass","_applyDecs","default"],"sources":["../../../src/components/signup-button/SignupButton.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { consume } from '@lit/context'\nimport { html } from 'lit'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '@/components/button'\n\n@customElement('solid-ui-signup-button')\nexport default class SignupButton extends WebComponent {\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n protected render () {\n return html`\n <slot name=\"trigger\" @click=${this.onClick}>\n <solid-ui-button>\n <slot>\n Sign Up\n </slot>\n </solid-ui-button>\n </slot>\n `\n }\n\n private onClick (e: MouseEvent) {\n e.preventDefault()\n\n this.auth.signup()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAK4BM,IAAA,CAE3BN,EAAc,wBAAwB,CAAC;AAAA,IAAAO,GAAAC,kBAAA,IAAAC,QAAA;AAAAC,KAAAC,IAErCT,EAAQ;CAAEU,SAASR;CAAaS,WAAW;AAAK,CAAC,GAAC,SAoBpDgB,IAAAf,cArByCb,EAAa;CAAAc,YAAA,GAAAC,GAAA;EAAAC,AAAA,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAT,IAAAU,EAAA,IAAA,GAAAC,EAAA,MAEhBd,CAAoB,EAAA;CAAA;CAAA,KAAAK,KAAA;EAAA,OAAAU,EAAAZ,GAAA,IAAA;CAAA;CAAA,IAAxCa,KAAIC,GAAA;EAAAC,EAAAf,GAAA,MAAAc,CAAA;CAAA;CAEXE,SAAU;EAClB,OAAOrB,CAAI;oCACqB,KAAKsB,QAAO;;;;;;;;CAQ9C;CAEQA,QAASC,GAAe;EAG9B,AAFAA,EAAEC,eAAe,GAEjB,KAAKN,KAAKO,OAAO;CACnB;AACF,GAAC,CAAAF,GAAA,CAAAP,GAAAD,IAAAY,GAAA,CAAAvB,GAAAwB,MAAAC,EAAAH,GAAA,CAAA;CAAAlB;CAAA;CAAA;AAAA,CAAA,GAAAL,GAAA,GAAA,KAAA,GArByCL,CAAY,GAAA8B,EAAA"}
1
+ {"version":3,"file":"SignupButton.esm.js","names":["customElement","WebComponent","consume","html","authContext","DEFAULT_AUTH_CONTEXT","_classDecs","_SignupButton","_A","WeakMap","_ref","_authDecs","context","subscribe","SignupButton","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_auth","_classPrivateFieldGet","auth","v","_classPrivateFieldSet","render","onClick","click","signup","e","preventDefault","_SignupButton2","c","_initClass","_applyDecs","default"],"sources":["../../../src/components/signup-button/SignupButton.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { consume } from '@lit/context'\nimport { html } from 'lit'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '@/components/button'\n\n@customElement('solid-ui-signup-button')\nexport default class SignupButton extends WebComponent {\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n protected render () {\n return html`\n <slot name=\"trigger\" @click=${this.onClick}>\n <solid-ui-button>\n <slot>\n Sign Up\n </slot>\n </solid-ui-button>\n </slot>\n `\n }\n\n click () {\n this.auth.signup()\n }\n\n private onClick (e: MouseEvent) {\n e.preventDefault()\n\n this.click()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAK4BM,IAAA,CAE3BN,EAAc,wBAAwB,CAAC;AAAA,IAAAO,GAAAC,kBAAA,IAAAC,QAAA;AAAAC,KAAAC,IAErCT,EAAQ;CAAEU,SAASR;CAAaS,WAAW;AAAK,CAAC,GAAC,SAwBpDiB,IAAAhB,cAzByCb,EAAa;CAAAc,YAAA,GAAAC,GAAA;EAAAC,AAAA,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAT,IAAAU,EAAA,IAAA,GAAAC,EAAA,MAEhBd,CAAoB,EAAA;CAAA;CAAA,KAAAK,KAAA;EAAA,OAAAU,EAAAZ,GAAA,IAAA;CAAA;CAAA,IAAxCa,KAAIC,GAAA;EAAAC,EAAAf,GAAA,MAAAc,CAAA;CAAA;CAEXE,SAAU;EAClB,OAAOrB,CAAI;oCACqB,KAAKsB,QAAO;;;;;;;;CAQ9C;CAEAC,QAAS;EACP,KAAKL,KAAKM,OAAO;CACnB;CAEQF,QAASG,GAAe;EAG9B,AAFAA,EAAEC,eAAe,GAEjB,KAAKH,MAAM;CACb;AACF,GAAC,CAAAE,GAAA,CAAAT,GAAAD,IAAAa,GAAA,CAAAxB,GAAAyB,MAAAC,EAAAH,GAAA,CAAA;CAAAnB;CAAA;CAAA;AAAA,CAAA,GAAAL,GAAA,GAAA,KAAA,GAzByCL,CAAY,GAAA+B,EAAA"}
@@ -1,2 +1,2 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./SignupButton.cjs.js");var t=e._SignupButton;Object.defineProperty(exports,"SignupButton",{enumerable:!0,get:function(){return e._SignupButton}}),exports.default=t;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./SignupButton.cjs.js");var t=e.default;Object.defineProperty(exports,"SignupButton",{enumerable:!0,get:function(){return e.default}}),exports.default=t;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { _SignupButton as e } from "./SignupButton.esm.js";
1
+ import e from "./SignupButton.esm.js";
2
2
  //#region src/components/signup-button/index.ts
3
3
  var t = e;
4
4
  //#endregion
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../chunks/signup-button-BC4LmOXx.js";
1
+ import { n as e, t } from "../chunks/signup-button-BfIxbpwa.js";
2
2
  export { e as SignupButton, t as default };
@@ -1,24 +1,25 @@
1
- import "./chunks/auth-BPQUXz9Q.js";
2
- import "./chunks/combobox-eju-wypA.js";
3
- import "./chunks/dialog-DmDA1aY8.js";
4
- import "./chunks/dialog-header-D9jjujFf.js";
5
- import "./chunks/button-GHRF3psH.js";
6
- import "./chunks/dialog-content-C8VhHg5G.js";
7
- import "./chunks/dialog-footer-CtHFoTZS.js";
8
- import "./chunks/combobox-option-CW1ZwMC7.js";
9
- import "./chunks/avatar-B5DCduCy.js";
10
- import "./chunks/login-button-BKp1-O2q.js";
11
- import "./chunks/logout-button-DlU-q-o5.js";
12
- import "./chunks/menu-item-DoTy3MUu.js";
13
- import "./chunks/menu-items-DKKcQrb6.js";
14
- import "./chunks/menu-DCsLCND4.js";
15
- import "./chunks/signup-button-BC4LmOXx.js";
16
- import "./chunks/account-B4BktCv0.js";
1
+ import "./chunks/auth-RHyQ2iIl.js";
2
+ import "./chunks/dialog-BAzrHJ8w.js";
3
+ import "./chunks/dialog-header-CWIAAoDo.js";
4
+ import "./chunks/button-0s0lZdxm.js";
5
+ import "./chunks/dialog-content-fdJrkCyB.js";
6
+ import "./chunks/dialog-footer-Bs_p2Nn9.js";
7
+ import "./chunks/combobox-Cxi8xUMn.js";
8
+ import "./chunks/combobox-option-DiR3VpyT.js";
9
+ import "./chunks/avatar-Jx8xm2Op.js";
10
+ import "./chunks/login-button-DPeMi00d.js";
11
+ import "./chunks/logout-button-CbiLE7jO.js";
12
+ import "./chunks/menu-item-Ck0l-uEI.js";
13
+ import "./chunks/menu-DNcuV-1J.js";
14
+ import "./chunks/signup-button-BfIxbpwa.js";
15
+ import "./chunks/account-BZ2rYQhV.js";
17
16
  import "./components/dialog-provider.js";
18
- import "./chunks/dialogs-root-C4igEIk0.js";
19
- import "./chunks/footer-CS8u8ycB.js";
20
- import "./chunks/guard-BIc50Lps.js";
21
- import "./chunks/header-0TLBh_PG.js";
22
- import "./chunks/provider-uRz_fGWb.js";
23
- import "./chunks/photo-capture-COoxZRW_.js";
24
- import "./chunks/select-bVnWqF4c.js";
17
+ import "./chunks/dialogs-root-Cv932Aqm.js";
18
+ import "./chunks/footer-D64T6XLO.js";
19
+ import "./chunks/guard-CjUBGVDk.js";
20
+ import "./chunks/header-COBaJDdB.js";
21
+ import "./chunks/provider-C4eSzopG.js";
22
+ import "./chunks/input-BF224Jid.js";
23
+ import "./chunks/photo-capture-tiBsdSbA.js";
24
+ import "./chunks/select-D8dW53pr.js";
25
+ import "./chunks/select-option-B-6ULCpQ.js";
@@ -1 +1 @@
1
- {"version":3,"file":"create.cjs.js","names":[],"sources":["../../src/create/create.ts"],"sourcesContent":["/* create.js UI to craete new objects in the solid-app-set world\n **\n */\n\nimport { DataBrowserContext, NewPaneOptions, PaneDefinition } from 'pane-registry'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { ensureLoadedProfile, selectWorkspace } from '../login/login'\nimport ns from '../lib/ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { CreateContext, NewAppInstanceOptions } from './types'\n\nconst kb = solidLogicSingleton.store\n\n/* newThingUI -- return UI for user to select a new object, folder, etc\n **\n ** context must include: dom, div,\n ** optional: folder: NamedNode -- the folder where the thing is bring put\n ** (suppresses asking for a full URI or workspace)\n **\n */\nexport function newThingUI (\n createContext: CreateContext,\n dataBrowserContext: DataBrowserContext,\n thePanes: Array<PaneDefinition>\n): void {\n const dom = createContext.dom\n const div = createContext.div\n if (createContext.me && !createContext.me.uri) {\n throw new Error('newThingUI: Invalid userid: ' + createContext.me)\n }\n\n const iconStyle = 'padding: 0.7em; width: 2em; height: 2em;' // was: 'padding: 1em; width: 3em; height: 3em;'\n const star = div.appendChild(dom.createElement('img'))\n let visible = false // the inividual tools tools\n // noun_272948.svg = black star\n // noun_34653_green.svg = green plus\n star.setAttribute('src', icons.iconBase + 'noun_34653_green.svg')\n star.setAttribute('style', iconStyle)\n star.setAttribute('title', 'Add another tool')\n\n const complain = function complain (message) {\n const pre = div.appendChild(dom.createElement('pre'))\n pre.setAttribute('style', 'background-color: pink')\n pre.appendChild(dom.createTextNode(message))\n }\n\n function styleTheIcons (style) {\n for (let i = 0; i < iconArray.length; i++) {\n let st = iconStyle + style\n if (iconArray[i].disabled) {\n // @@ unused\n st += 'opacity: 0.3;'\n }\n iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;'\n }\n }\n\n function selectTool (icon) {\n styleTheIcons('display: none;') // 'background-color: #ccc;'\n icon.setAttribute('style', iconStyle + 'background-color: yellow;')\n }\n\n function selectNewTool (_event?) {\n visible = !visible\n star.setAttribute(\n 'style',\n iconStyle + (visible ? 'background-color: yellow;' : '')\n )\n styleTheIcons(visible ? '' : 'display: none;')\n }\n\n star.addEventListener('click', selectNewTool)\n\n function makeNewAppInstance (options: NewAppInstanceOptions) {\n return new Promise(function (resolve, reject) {\n let selectUI // , selectUIParent\n function callbackWS (ws, newBase) {\n ensureLoadedProfile(createContext).then(\n _context => {\n const newPaneOptions: NewPaneOptions = Object.assign({\n newBase,\n folder: options.folder || undefined,\n workspace: ws\n }, options)\n for (const opt in options) {\n // get div, dom, me, folder, pane, refreshTable\n newPaneOptions[opt] = options[opt]\n }\n debug.log(`newThingUI: Minting new ${newPaneOptions.pane.name} at ${newPaneOptions.newBase}`)\n options.pane\n .mintNew!(dataBrowserContext, newPaneOptions)\n .then(function (newPaneOptions) {\n if (!newPaneOptions || !newPaneOptions.newInstance) {\n throw new Error('Cannot mint new - missing newInstance')\n }\n if (newPaneOptions.folder) {\n const tail = newPaneOptions.newInstance.uri.slice(\n newPaneOptions.folder.uri.length\n )\n const isPackage = tail.includes('/')\n debug.log(' new thing is packge? ' + isPackage)\n if (isPackage) {\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n kb.sym(newPaneOptions.newBase),\n newPaneOptions.folder.doc()\n )\n } else {\n // single file\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n newPaneOptions.newInstance,\n newPaneOptions.folder.doc()\n ) // Ping the patch system?\n }\n // @ts-ignore @@ TODO check whether refresh can exist here. Either fix type or remove unreachable code\n if (newPaneOptions.refreshTarget && newPaneOptions.refreshTarget.refresh) {\n // @@ TODO Remove the need to cast as any\n ;(newPaneOptions.refreshTarget as any).refresh() // Refresh the containing display\n }\n // selectUI.parentNode.removeChild(selectUI) It removes itself\n } else {\n const p = options.div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 120%;')\n // Make link to new thing\n p.innerHTML =\n 'Your <a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'><b>new ' +\n options.noun +\n '</b></a> is ready to be set up. ' +\n '<br/><br/><a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'>Go to your new ' +\n options.noun +\n '.</a>'\n // selectUI.parentNode.removeChild(selectUI) // Clean up\n // selectUIParent.removeChild(selectUI) // Clean up\n }\n selectNewTool() // toggle star to plain and menu vanish again\n })\n .catch(function (err) {\n complain(err)\n reject(err)\n })\n },\n err => {\n // login fails\n complain('Error logging on: ' + err)\n }\n )\n } // callbackWS\n\n const pa = options.pane\n // options.appPathSegment = pa.name // was 'edu.mit.solid.pane.'\n options.noun = pa.mintClass ? utils.label(pa.mintClass) : pa.name\n options.appPathSegment = options.noun.slice(0, 1).toUpperCase() + options.noun.slice(1)\n\n if (!options.folder) {\n // No folder given? Ask user for full URI\n selectUI = selectWorkspace(dom, {\n noun: options.noun,\n appPathSegment: options.appPathSegment\n }, callbackWS)\n options.div.appendChild(selectUI)\n // selectUIParent = options.div\n } else {\n const gotName = function (name) {\n if (!name) {\n // selectUIParent.removeChild(selectUI) itremves itself if cancelled\n selectNewTool() // toggle star to plain and menu vanish again\n } else {\n let uri = options.folder!.uri\n if (!uri.endsWith('/')) {\n uri = uri + '/'\n }\n uri = uri + encodeURIComponent(name) + '/'\n callbackWS(null, uri)\n }\n }\n widgets\n .askName(\n dom,\n kb,\n options.div,\n ns.foaf('name'),\n null,\n options.noun\n )\n .then(gotName)\n // selectUI = getNameForm(dom, kb, options.noun, gotName)\n // options.div.appendChild(selectUI)\n // selectUIParent = options.div\n }\n })\n } // makeNewAppInstance\n\n const iconArray: Array<any> = []\n const mintingPanes = Object.values(thePanes).filter(pane => pane.mintNew)\n const mintingClassMap = mintingPanes.reduce((classMap, pane) => {\n if (pane.mintClass) {\n classMap[pane.mintClass.uri] = (classMap[pane.mintClass.uri] || 0) + 1\n }\n return classMap\n }, {})\n mintingPanes.forEach(pane => {\n // @@ TODO Remove the need to cast to any\n const icon: any = createContext.div.appendChild(dom.createElement('img'))\n icon.setAttribute('src', pane.icon)\n const noun = pane.mintClass\n ? mintingClassMap[pane.mintClass.uri] > 1\n ? `${utils.label(pane.mintClass)} (using ${pane.name} pane)`\n : utils.label(pane.mintClass)\n : pane.name + ' @@'\n icon.setAttribute('title', 'Make new ' + noun)\n icon.setAttribute('style', iconStyle + 'display: none;')\n iconArray.push(icon)\n if (!icon.disabled) {\n icon.addEventListener('click', function (e) {\n selectTool(icon)\n makeNewAppInstance({\n event: e,\n folder: createContext.folder || null,\n iconEle: icon,\n pane,\n noun,\n noIndexHTML: true, // do NOT @@ for now write a HTML file\n div: createContext.div,\n me: createContext.me,\n dom: createContext.dom,\n refreshTarget: createContext.refreshTarget\n })\n })\n }\n })\n}\n\n// Form to get the name of a new thing before we create it\n//\n// Used in contacts for new groups, individuals.\n//\n/*\nfunction getNameForm (dom, kb, classLabel, gotNameCallback) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n form.innerHTML = '<p>Name of new ' + classLabel + ':</p>'\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '30')\n namefield.setAttribute('style', style.textInputStyle)\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.select() // focus next user input\n\n const gotName = function () {\n namefield.setAttribute('class', 'pendingedit')\n namefield.disabled = true\n continueButton.disabled = true\n cancel.disabled = true\n gotNameCallback(true, namefield.value)\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n form.appendChild(namefield)\n\n form.appendChild(dom.createElement('br'))\n\n const cancel = form.appendChild(widgets.cancelButton(dom))\n cancel.addEventListener('click', function (e) {\n form.parentNode.removeChild(form)\n gotNameCallback(false)\n }, false)\n\n const continueButton = form.appendChild(widgets.continueButton(dom))\n continueButton.addEventListener('click', function (e) {\n gotName()\n }, false)\n\n return form\n}\n*/\n"],"mappings":"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"}
1
+ {"version":3,"file":"create.cjs.js","names":[],"sources":["../../src/create/create.ts"],"sourcesContent":["/* create.js UI to craete new objects in the solid-app-set world\n **\n */\n\nimport { DataBrowserContext, NewPaneOptions, PaneDefinition } from 'pane-registry'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { ensureLoadedProfile, selectWorkspace } from '../login/login'\nimport ns from '../lib/ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { CreateContext, NewAppInstanceOptions } from './types'\n\nconst kb = solidLogicSingleton.store\n\n/* newThingUI -- return UI for user to select a new object, folder, etc\n **\n ** context must include: dom, div,\n ** optional: folder: NamedNode -- the folder where the thing is bring put\n ** (suppresses asking for a full URI or workspace)\n **\n */\nexport function newThingUI (\n createContext: CreateContext,\n dataBrowserContext: DataBrowserContext,\n thePanes: Array<PaneDefinition>\n): void {\n const dom = createContext.dom\n const div = createContext.div\n if (createContext.me && !createContext.me.uri) {\n throw new Error('newThingUI: Invalid userid: ' + createContext.me)\n }\n\n const iconStyle = 'padding: 0.7em; width: 2em; height: 2em;' // was: 'padding: 1em; width: 3em; height: 3em;'\n const star = div.appendChild(dom.createElement('img'))\n let visible = false // the inividual tools tools\n // noun_272948.svg = black star\n // noun_34653_green.svg = green plus\n star.setAttribute('src', icons.iconBase + 'noun_34653_green.svg')\n star.setAttribute('style', iconStyle)\n star.setAttribute('title', 'Add another tool')\n\n const complain = function complain (message) {\n const pre = div.appendChild(dom.createElement('pre'))\n pre.setAttribute('style', 'background-color: pink')\n pre.appendChild(dom.createTextNode(message))\n }\n\n function styleTheIcons (style) {\n for (let i = 0; i < iconArray.length; i++) {\n let st = iconStyle + style\n if (iconArray[i].disabled) {\n // @@ unused\n st += 'opacity: 0.3;'\n }\n iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;'\n }\n }\n\n function selectTool (icon) {\n styleTheIcons('display: none;') // 'background-color: #ccc;'\n icon.setAttribute('style', iconStyle + 'background-color: yellow;')\n }\n\n function selectNewTool (_event?) {\n visible = !visible\n star.setAttribute(\n 'style',\n iconStyle + (visible ? 'background-color: yellow;' : '')\n )\n styleTheIcons(visible ? '' : 'display: none;')\n }\n\n star.addEventListener('click', selectNewTool)\n\n function makeNewAppInstance (options: NewAppInstanceOptions) {\n return new Promise(function (resolve, reject) {\n let selectUI // , selectUIParent\n function callbackWS (ws, newBase) {\n ensureLoadedProfile(createContext).then(\n _context => {\n const newPaneOptions: NewPaneOptions = Object.assign({\n newBase,\n folder: options.folder || undefined,\n workspace: ws\n }, options)\n for (const opt in options) {\n // get div, dom, me, folder, pane, refreshTable\n newPaneOptions[opt] = options[opt]\n }\n debug.log(`newThingUI: Minting new ${newPaneOptions.pane.name} at ${newPaneOptions.newBase}`)\n options.pane\n .mintNew!(dataBrowserContext, newPaneOptions)\n .then(function (newPaneOptions) {\n if (!newPaneOptions || !newPaneOptions.newInstance) {\n throw new Error('Cannot mint new - missing newInstance')\n }\n if (newPaneOptions.folder) {\n const tail = newPaneOptions.newInstance.uri.slice(\n newPaneOptions.folder.uri.length\n )\n const isPackage = tail.includes('/')\n debug.log(' new thing is packge? ' + isPackage)\n if (isPackage) {\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n kb.sym(newPaneOptions.newBase),\n newPaneOptions.folder.doc()\n )\n } else {\n // single file\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n newPaneOptions.newInstance,\n newPaneOptions.folder.doc()\n ) // Ping the patch system?\n }\n // @ts-ignore @@ TODO check whether refresh can exist here. Either fix type or remove unreachable code\n if (newPaneOptions.refreshTarget && newPaneOptions.refreshTarget.refresh) {\n // @@ TODO Remove the need to cast as any\n ;(newPaneOptions.refreshTarget as any).refresh() // Refresh the containing display\n }\n // selectUI.parentNode.removeChild(selectUI) It removes itself\n } else {\n const p = options.div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 120%;')\n // Make link to new thing\n p.innerHTML =\n 'Your <a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'><b>new ' +\n options.noun +\n '</b></a> is ready to be set up. ' +\n '<br/><br/><a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'>Go to your new ' +\n options.noun +\n '.</a>'\n // selectUI.parentNode.removeChild(selectUI) // Clean up\n // selectUIParent.removeChild(selectUI) // Clean up\n }\n selectNewTool() // toggle star to plain and menu vanish again\n })\n .catch(function (err) {\n complain(err)\n reject(err)\n })\n },\n err => {\n // login fails\n complain('Error logging on: ' + err)\n }\n )\n } // callbackWS\n\n const pa = options.pane\n // options.appPathSegment = pa.name // was 'edu.mit.solid.pane.'\n options.noun = pa.mintClass ? utils.label(pa.mintClass) : pa.name\n options.appPathSegment = options.noun.slice(0, 1).toUpperCase() + options.noun.slice(1)\n\n if (!options.folder) {\n // No folder given? Ask user for full URI\n selectUI = selectWorkspace(dom, {\n noun: options.noun,\n appPathSegment: options.appPathSegment\n }, callbackWS)\n options.div.appendChild(selectUI)\n // selectUIParent = options.div\n } else {\n const gotName = function (name) {\n if (!name) {\n // selectUIParent.removeChild(selectUI) itremves itself if cancelled\n selectNewTool() // toggle star to plain and menu vanish again\n } else {\n let uri = options.folder!.uri\n if (!uri.endsWith('/')) {\n uri = uri + '/'\n }\n uri = uri + encodeURIComponent(name) + '/'\n callbackWS(null, uri)\n }\n }\n widgets\n .askName(\n dom,\n kb,\n options.div,\n ns.foaf('name'),\n null,\n options.noun\n )\n .then(gotName)\n // selectUI = getNameForm(dom, kb, options.noun, gotName)\n // options.div.appendChild(selectUI)\n // selectUIParent = options.div\n }\n })\n } // makeNewAppInstance\n\n const iconArray: Array<any> = []\n const mintingPanes = Object.values(thePanes).filter(pane => pane.mintNew)\n const mintingClassMap = mintingPanes.reduce((classMap, pane) => {\n if (pane.mintClass) {\n classMap[pane.mintClass.uri] = (classMap[pane.mintClass.uri] || 0) + 1\n }\n return classMap\n }, {})\n mintingPanes.forEach(pane => {\n // @@ TODO Remove the need to cast to any\n const icon: any = createContext.div.appendChild(dom.createElement('img'))\n icon.setAttribute('src', pane.icon)\n const noun = pane.mintClass\n ? mintingClassMap[pane.mintClass.uri] > 1\n ? `${utils.label(pane.mintClass)} (using ${pane.name} pane)`\n : utils.label(pane.mintClass)\n : pane.name + ' @@'\n icon.setAttribute('title', 'Make new ' + noun)\n icon.setAttribute('style', iconStyle + 'display: none;')\n iconArray.push(icon)\n if (!icon.disabled) {\n icon.addEventListener('click', function (e) {\n selectTool(icon)\n makeNewAppInstance({\n event: e,\n folder: createContext.folder || null,\n iconEle: icon,\n pane,\n noun,\n noIndexHTML: true, // do NOT @@ for now write a HTML file\n div: createContext.div,\n me: createContext.me,\n dom: createContext.dom,\n refreshTarget: createContext.refreshTarget\n })\n })\n }\n })\n}\n\n// Form to get the name of a new thing before we create it\n//\n// Used in contacts for new groups, individuals.\n//\n/*\nfunction getNameForm (dom, kb, classLabel, gotNameCallback) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n form.innerHTML = '<p>Name of new ' + classLabel + ':</p>'\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '30')\n namefield.setAttribute('style', style.textInputStyle)\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.select() // focus next user input\n\n const gotName = function () {\n namefield.setAttribute('class', 'pendingedit')\n namefield.disabled = true\n continueButton.disabled = true\n cancel.disabled = true\n gotNameCallback(true, namefield.value)\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n form.appendChild(namefield)\n\n form.appendChild(dom.createElement('br'))\n\n const cancel = form.appendChild(widgets.cancelButton(dom))\n cancel.addEventListener('click', function (e) {\n form.parentNode.removeChild(form)\n gotNameCallback(false)\n }, false)\n\n const continueButton = form.appendChild(widgets.continueButton(dom))\n continueButton.addEventListener('click', function (e) {\n gotName()\n }, false)\n\n return form\n}\n*/\n"],"mappings":"sSAcA,IAAM,uBAAK,CAAA,CAAA,oBAAoB,MAS/B,SAAgB,EACd,EACA,EACA,EACM,CACN,IAAM,EAAM,EAAc,IACpB,EAAM,EAAc,IAC1B,GAAI,EAAc,IAAM,CAAC,EAAc,GAAG,IACxC,MAAU,MAAM,gCAAkC,EAAc,EAAE,EAGpE,IAAM,EAAY,2CACZ,EAAO,EAAI,YAAY,EAAI,cAAc,KAAK,CAAC,EACjD,EAAU,GAGd,EAAK,aAAa,MAAO,EAAA,MAAM,SAAW,sBAAsB,EAChE,EAAK,aAAa,QAAS,CAAS,EACpC,EAAK,aAAa,QAAS,kBAAkB,EAE7C,IAAM,EAAW,SAAmB,EAAS,CAC3C,IAAM,EAAM,EAAI,YAAY,EAAI,cAAc,KAAK,CAAC,EACpD,EAAI,aAAa,QAAS,wBAAwB,EAClD,EAAI,YAAY,EAAI,eAAe,CAAO,CAAC,CAC7C,EAEA,SAAS,EAAe,EAAO,CAC7B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IAAK,CACzC,IAAI,EAAK,EAAY,EACjB,EAAU,EAAE,CAAC,WAEf,GAAM,iBAER,EAAU,EAAE,CAAC,aAAa,QAAS,CAAE,CACvC,CACF,CAEA,SAAS,EAAY,EAAM,CACzB,EAAc,gBAAgB,EAC9B,EAAK,aAAa,QAAS,mEAAuC,CACpE,CAEA,SAAS,EAAe,EAAS,CAC/B,EAAU,CAAC,EACX,EAAK,aACH,QACA,GAAa,EAAU,4BAA8B,GACvD,EACA,EAAc,EAAU,GAAK,gBAAgB,CAC/C,CAEA,EAAK,iBAAiB,QAAS,CAAa,EAE5C,SAAS,EAAoB,EAAgC,CAC3D,OAAO,IAAI,QAAQ,SAAU,EAAS,EAAQ,CAC5C,IAAI,EACJ,SAAS,EAAY,EAAI,EAAS,CAChC,EAAA,oBAAoB,CAAa,CAAC,CAAC,KACjC,GAAY,CACV,IAAM,EAAiC,OAAO,OAAO,CACnD,UACA,OAAQ,EAAQ,QAAU,IAAA,GAC1B,UAAW,CACb,EAAG,CAAO,EACV,IAAK,IAAM,KAAO,EAEhB,EAAe,GAAO,EAAQ,GAEhC,EAAA,IAAU,2BAA2B,EAAe,KAAK,KAAK,MAAM,EAAe,SAAS,EAC5F,EAAQ,KACL,QAAS,EAAoB,CAAc,CAAC,CAC5C,KAAK,SAAU,EAAgB,CAC9B,GAAI,CAAC,GAAkB,CAAC,EAAe,YACrC,MAAU,MAAM,uCAAuC,EAEzD,GAAI,EAAe,OAAQ,CAIzB,IAAM,EAHO,EAAe,YAAY,IAAI,MAC1C,EAAe,OAAO,IAAI,MAEV,CAAA,CAAK,SAAS,GAAG,EACnC,EAAA,IAAU,0BAA4B,CAAS,EAC3C,EACF,EAAG,IACD,EAAe,OACf,EAAA,QAAG,IAAI,UAAU,EACjB,EAAG,IAAI,EAAe,OAAO,EAC7B,EAAe,OAAO,IAAI,CAC5B,EAGA,EAAG,IACD,EAAe,OACf,EAAA,QAAG,IAAI,UAAU,EACjB,EAAe,YACf,EAAe,OAAO,IAAI,CAC5B,EAGE,EAAe,eAAiB,EAAe,cAAc,SAE9D,EAAgB,cAAsB,QAAQ,CAGnD,KAAO,CACL,IAAM,EAAI,EAAQ,IAAI,YAAY,EAAI,cAAc,GAAG,CAAC,EACxD,EAAE,aAAa,QAAS,kBAAkB,EAE1C,EAAE,UACA,iCACA,EAAe,YAAY,IAC3B,YACA,EAAQ,KACR,sEAEA,EAAe,YAAY,IAC3B,oBACA,EAAQ,KACR,OAGJ,CACA,EAAc,CAChB,CAAC,CAAC,CACD,MAAM,SAAU,EAAK,CACpB,EAAS,CAAG,EACZ,EAAO,CAAG,CACZ,CAAC,CACL,EACA,GAAO,CAEL,EAAS,qBAAuB,CAAG,CACrC,CACF,CACF,CAEA,IAAM,EAAK,EAAQ,KAEnB,EAAQ,KAAO,EAAG,UAAA,EAAA,MAAwB,EAAG,SAAS,EAAI,EAAG,KAC7D,EAAQ,eAAiB,EAAQ,KAAK,MAAM,EAAG,CAAC,CAAC,CAAC,YAAY,EAAI,EAAQ,KAAK,MAAM,CAAC,EAEjF,EAAQ,OAsBX,EAAA,QAEI,EACA,EACA,EAAQ,IACR,EAAA,QAAG,KAAK,MAAM,EACd,KACA,EAAQ,IACV,CAAC,CACA,KAAK,SAtBkB,EAAM,CAC9B,GAAI,CAAC,EAEH,EAAc,MACT,CACL,IAAI,EAAM,EAAQ,OAAQ,IACrB,EAAI,SAAS,GAAG,IACnB,GAAY,KAEd,EAAM,EAAM,mBAAmB,CAAI,EAAI,IACvC,EAAW,KAAM,CAAG,CACtB,CACF,CAUe,GA7Bf,EAAW,EAAA,gBAAgB,EAAK,CAC9B,KAAM,EAAQ,KACd,eAAgB,EAAQ,cAC1B,EAAG,CAAU,EACb,EAAQ,IAAI,YAAY,CAAQ,EA8BpC,CAAC,CACH,CAEA,IAAM,EAAwB,CAAC,EACzB,EAAe,OAAO,OAAO,CAAQ,CAAC,CAAC,OAAO,GAAQ,EAAK,OAAO,EAClE,EAAkB,EAAa,QAAQ,EAAU,KACjD,EAAK,YACP,EAAS,EAAK,UAAU,MAAQ,EAAS,EAAK,UAAU,MAAQ,GAAK,GAEhE,GACN,CAAC,CAAC,EACL,EAAa,QAAQ,GAAQ,CAE3B,IAAM,EAAY,EAAc,IAAI,YAAY,EAAI,cAAc,KAAK,CAAC,EACxE,EAAK,aAAa,MAAO,EAAK,IAAI,EAClC,IAAM,EAAO,EAAK,UACd,EAAgB,EAAK,UAAU,KAAO,EACpC,GAAA,EAAA,MAAe,EAAK,SAAS,EAAE,UAAU,EAAK,KAAK,QAAA,EAAA,MACvC,EAAK,SAAS,EAC5B,EAAK,KAAO,MAChB,EAAK,aAAa,QAAS,YAAc,CAAI,EAC7C,EAAK,aAAa,QAAS,wDAA4B,EACvD,EAAU,KAAK,CAAI,EACd,EAAK,UACR,EAAK,iBAAiB,QAAS,SAAU,EAAG,CAC1C,EAAW,CAAI,EACf,EAAmB,CACjB,MAAO,EACP,OAAQ,EAAc,QAAU,KAChC,QAAS,EACT,OACA,OACA,YAAa,GACb,IAAK,EAAc,IACnB,GAAI,EAAc,GAClB,IAAK,EAAc,IACnB,cAAe,EAAc,aAC/B,CAAC,CACH,CAAC,CAEL,CAAC,CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.esm.js","names":[],"sources":["../../src/create/create.ts"],"sourcesContent":["/* create.js UI to craete new objects in the solid-app-set world\n **\n */\n\nimport { DataBrowserContext, NewPaneOptions, PaneDefinition } from 'pane-registry'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { ensureLoadedProfile, selectWorkspace } from '../login/login'\nimport ns from '../lib/ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { CreateContext, NewAppInstanceOptions } from './types'\n\nconst kb = solidLogicSingleton.store\n\n/* newThingUI -- return UI for user to select a new object, folder, etc\n **\n ** context must include: dom, div,\n ** optional: folder: NamedNode -- the folder where the thing is bring put\n ** (suppresses asking for a full URI or workspace)\n **\n */\nexport function newThingUI (\n createContext: CreateContext,\n dataBrowserContext: DataBrowserContext,\n thePanes: Array<PaneDefinition>\n): void {\n const dom = createContext.dom\n const div = createContext.div\n if (createContext.me && !createContext.me.uri) {\n throw new Error('newThingUI: Invalid userid: ' + createContext.me)\n }\n\n const iconStyle = 'padding: 0.7em; width: 2em; height: 2em;' // was: 'padding: 1em; width: 3em; height: 3em;'\n const star = div.appendChild(dom.createElement('img'))\n let visible = false // the inividual tools tools\n // noun_272948.svg = black star\n // noun_34653_green.svg = green plus\n star.setAttribute('src', icons.iconBase + 'noun_34653_green.svg')\n star.setAttribute('style', iconStyle)\n star.setAttribute('title', 'Add another tool')\n\n const complain = function complain (message) {\n const pre = div.appendChild(dom.createElement('pre'))\n pre.setAttribute('style', 'background-color: pink')\n pre.appendChild(dom.createTextNode(message))\n }\n\n function styleTheIcons (style) {\n for (let i = 0; i < iconArray.length; i++) {\n let st = iconStyle + style\n if (iconArray[i].disabled) {\n // @@ unused\n st += 'opacity: 0.3;'\n }\n iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;'\n }\n }\n\n function selectTool (icon) {\n styleTheIcons('display: none;') // 'background-color: #ccc;'\n icon.setAttribute('style', iconStyle + 'background-color: yellow;')\n }\n\n function selectNewTool (_event?) {\n visible = !visible\n star.setAttribute(\n 'style',\n iconStyle + (visible ? 'background-color: yellow;' : '')\n )\n styleTheIcons(visible ? '' : 'display: none;')\n }\n\n star.addEventListener('click', selectNewTool)\n\n function makeNewAppInstance (options: NewAppInstanceOptions) {\n return new Promise(function (resolve, reject) {\n let selectUI // , selectUIParent\n function callbackWS (ws, newBase) {\n ensureLoadedProfile(createContext).then(\n _context => {\n const newPaneOptions: NewPaneOptions = Object.assign({\n newBase,\n folder: options.folder || undefined,\n workspace: ws\n }, options)\n for (const opt in options) {\n // get div, dom, me, folder, pane, refreshTable\n newPaneOptions[opt] = options[opt]\n }\n debug.log(`newThingUI: Minting new ${newPaneOptions.pane.name} at ${newPaneOptions.newBase}`)\n options.pane\n .mintNew!(dataBrowserContext, newPaneOptions)\n .then(function (newPaneOptions) {\n if (!newPaneOptions || !newPaneOptions.newInstance) {\n throw new Error('Cannot mint new - missing newInstance')\n }\n if (newPaneOptions.folder) {\n const tail = newPaneOptions.newInstance.uri.slice(\n newPaneOptions.folder.uri.length\n )\n const isPackage = tail.includes('/')\n debug.log(' new thing is packge? ' + isPackage)\n if (isPackage) {\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n kb.sym(newPaneOptions.newBase),\n newPaneOptions.folder.doc()\n )\n } else {\n // single file\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n newPaneOptions.newInstance,\n newPaneOptions.folder.doc()\n ) // Ping the patch system?\n }\n // @ts-ignore @@ TODO check whether refresh can exist here. Either fix type or remove unreachable code\n if (newPaneOptions.refreshTarget && newPaneOptions.refreshTarget.refresh) {\n // @@ TODO Remove the need to cast as any\n ;(newPaneOptions.refreshTarget as any).refresh() // Refresh the containing display\n }\n // selectUI.parentNode.removeChild(selectUI) It removes itself\n } else {\n const p = options.div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 120%;')\n // Make link to new thing\n p.innerHTML =\n 'Your <a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'><b>new ' +\n options.noun +\n '</b></a> is ready to be set up. ' +\n '<br/><br/><a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'>Go to your new ' +\n options.noun +\n '.</a>'\n // selectUI.parentNode.removeChild(selectUI) // Clean up\n // selectUIParent.removeChild(selectUI) // Clean up\n }\n selectNewTool() // toggle star to plain and menu vanish again\n })\n .catch(function (err) {\n complain(err)\n reject(err)\n })\n },\n err => {\n // login fails\n complain('Error logging on: ' + err)\n }\n )\n } // callbackWS\n\n const pa = options.pane\n // options.appPathSegment = pa.name // was 'edu.mit.solid.pane.'\n options.noun = pa.mintClass ? utils.label(pa.mintClass) : pa.name\n options.appPathSegment = options.noun.slice(0, 1).toUpperCase() + options.noun.slice(1)\n\n if (!options.folder) {\n // No folder given? Ask user for full URI\n selectUI = selectWorkspace(dom, {\n noun: options.noun,\n appPathSegment: options.appPathSegment\n }, callbackWS)\n options.div.appendChild(selectUI)\n // selectUIParent = options.div\n } else {\n const gotName = function (name) {\n if (!name) {\n // selectUIParent.removeChild(selectUI) itremves itself if cancelled\n selectNewTool() // toggle star to plain and menu vanish again\n } else {\n let uri = options.folder!.uri\n if (!uri.endsWith('/')) {\n uri = uri + '/'\n }\n uri = uri + encodeURIComponent(name) + '/'\n callbackWS(null, uri)\n }\n }\n widgets\n .askName(\n dom,\n kb,\n options.div,\n ns.foaf('name'),\n null,\n options.noun\n )\n .then(gotName)\n // selectUI = getNameForm(dom, kb, options.noun, gotName)\n // options.div.appendChild(selectUI)\n // selectUIParent = options.div\n }\n })\n } // makeNewAppInstance\n\n const iconArray: Array<any> = []\n const mintingPanes = Object.values(thePanes).filter(pane => pane.mintNew)\n const mintingClassMap = mintingPanes.reduce((classMap, pane) => {\n if (pane.mintClass) {\n classMap[pane.mintClass.uri] = (classMap[pane.mintClass.uri] || 0) + 1\n }\n return classMap\n }, {})\n mintingPanes.forEach(pane => {\n // @@ TODO Remove the need to cast to any\n const icon: any = createContext.div.appendChild(dom.createElement('img'))\n icon.setAttribute('src', pane.icon)\n const noun = pane.mintClass\n ? mintingClassMap[pane.mintClass.uri] > 1\n ? `${utils.label(pane.mintClass)} (using ${pane.name} pane)`\n : utils.label(pane.mintClass)\n : pane.name + ' @@'\n icon.setAttribute('title', 'Make new ' + noun)\n icon.setAttribute('style', iconStyle + 'display: none;')\n iconArray.push(icon)\n if (!icon.disabled) {\n icon.addEventListener('click', function (e) {\n selectTool(icon)\n makeNewAppInstance({\n event: e,\n folder: createContext.folder || null,\n iconEle: icon,\n pane,\n noun,\n noIndexHTML: true, // do NOT @@ for now write a HTML file\n div: createContext.div,\n me: createContext.me,\n dom: createContext.dom,\n refreshTarget: createContext.refreshTarget\n })\n })\n }\n })\n}\n\n// Form to get the name of a new thing before we create it\n//\n// Used in contacts for new groups, individuals.\n//\n/*\nfunction getNameForm (dom, kb, classLabel, gotNameCallback) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n form.innerHTML = '<p>Name of new ' + classLabel + ':</p>'\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '30')\n namefield.setAttribute('style', style.textInputStyle)\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.select() // focus next user input\n\n const gotName = function () {\n namefield.setAttribute('class', 'pendingedit')\n namefield.disabled = true\n continueButton.disabled = true\n cancel.disabled = true\n gotNameCallback(true, namefield.value)\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n form.appendChild(namefield)\n\n form.appendChild(dom.createElement('br'))\n\n const cancel = form.appendChild(widgets.cancelButton(dom))\n cancel.addEventListener('click', function (e) {\n form.parentNode.removeChild(form)\n gotNameCallback(false)\n }, false)\n\n const continueButton = form.appendChild(widgets.continueButton(dom))\n continueButton.addEventListener('click', function (e) {\n gotName()\n }, false)\n\n return form\n}\n*/\n"],"mappings":";;;;;;;;;;AAcA,IAAM,IAAK,EAAoB;AAS/B,SAAgB,EACd,GACA,GACA,GACM;CACN,IAAM,IAAM,EAAc,KACpB,IAAM,EAAc;CAC1B,IAAI,EAAc,MAAM,CAAC,EAAc,GAAG,KACxC,MAAU,MAAM,kCAAkC,EAAc,EAAE;CAGpE,IAAM,IAAY,4CACZ,IAAO,EAAI,YAAY,EAAI,cAAc,KAAK,CAAC,GACjD,IAAU;CAKd,AAFA,EAAK,aAAa,OAAO,EAAM,WAAW,sBAAsB,GAChE,EAAK,aAAa,SAAS,CAAS,GACpC,EAAK,aAAa,SAAS,kBAAkB;CAE7C,IAAM,IAAW,SAAmB,GAAS;EAC3C,IAAM,IAAM,EAAI,YAAY,EAAI,cAAc,KAAK,CAAC;EAEpD,AADA,EAAI,aAAa,SAAS,wBAAwB,GAClD,EAAI,YAAY,EAAI,eAAe,CAAO,CAAC;CAC7C;CAEA,SAAS,EAAe,GAAO;EAC7B,KAAK,IAAI,IAAI,GAAG,IAAI,EAAU,QAAQ,KAAK;GACzC,IAAI,IAAK,IAAY;GAKrB,AAJI,EAAU,GAAG,aAEf,KAAM,kBAER,EAAU,GAAG,aAAa,SAAS,CAAE;EACvC;CACF;CAEA,SAAS,EAAY,GAAM;EAEzB,AADA,EAAc,gBAAgB,GAC9B,EAAK,aAAa,SAAS,mEAAuC;CACpE;CAEA,SAAS,EAAe,GAAS;EAM/B,AALA,IAAU,CAAC,GACX,EAAK,aACH,SACA,KAAa,IAAU,8BAA8B,GACvD,GACA,EAAc,IAAU,KAAK,gBAAgB;CAC/C;CAEA,EAAK,iBAAiB,SAAS,CAAa;CAE5C,SAAS,EAAoB,GAAgC;EAC3D,OAAO,IAAI,QAAQ,SAAU,GAAS,GAAQ;GAC5C,IAAI;GACJ,SAAS,EAAY,GAAI,GAAS;IAChC,EAAoB,CAAa,EAAE,MACjC,MAAY;KACV,IAAM,IAAiC,OAAO,OAAO;MACnD;MACA,QAAQ,EAAQ,UAAU,KAAA;MAC1B,WAAW;KACb,GAAG,CAAO;KACV,KAAK,IAAM,KAAO,GAEhB,EAAe,KAAO,EAAQ;KAGhC,AADA,EAAU,2BAA2B,EAAe,KAAK,KAAK,MAAM,EAAe,SAAS,GAC5F,EAAQ,KACL,QAAS,GAAoB,CAAc,EAC3C,KAAK,SAAU,GAAgB;MAC9B,IAAI,CAAC,KAAkB,CAAC,EAAe,aACrC,MAAU,MAAM,uCAAuC;MAEzD,IAAI,EAAe,QAAQ;OAIzB,IAAM,IAHO,EAAe,YAAY,IAAI,MAC1C,EAAe,OAAO,IAAI,MAEV,EAAK,SAAS,GAAG;OAmBnC,AAlBA,EAAU,4BAA4B,CAAS,GAC3C,IACF,EAAG,IACD,EAAe,QACf,EAAG,IAAI,UAAU,GACjB,EAAG,IAAI,EAAe,OAAO,GAC7B,EAAe,OAAO,IAAI,CAC5B,IAGA,EAAG,IACD,EAAe,QACf,EAAG,IAAI,UAAU,GACjB,EAAe,aACf,EAAe,OAAO,IAAI,CAC5B,GAGE,EAAe,iBAAiB,EAAe,cAAc,WAE9D,EAAgB,cAAsB,QAAQ;MAGnD,OAAO;OACL,IAAM,IAAI,EAAQ,IAAI,YAAY,EAAI,cAAc,GAAG,CAAC;OAGxD,AAFA,EAAE,aAAa,SAAS,kBAAkB,GAE1C,EAAE,YACA,mCACA,EAAe,YAAY,MAC3B,cACA,EAAQ,OACR,wEAEA,EAAe,YAAY,MAC3B,sBACA,EAAQ,OACR;MAGJ;MACA,EAAc;KAChB,CAAC,EACA,MAAM,SAAU,GAAK;MAEpB,AADA,EAAS,CAAG,GACZ,EAAO,CAAG;KACZ,CAAC;IACL,IACA,MAAO;KAEL,EAAS,uBAAuB,CAAG;IACrC,CACF;GACF;GAEA,IAAM,IAAK,EAAQ;GAKnB,AAHA,EAAQ,OAAO,EAAG,YAAY,EAAY,EAAG,SAAS,IAAI,EAAG,MAC7D,EAAQ,iBAAiB,EAAQ,KAAK,MAAM,GAAG,CAAC,EAAE,YAAY,IAAI,EAAQ,KAAK,MAAM,CAAC,GAEjF,EAAQ,SAsBX,EAEI,GACA,GACA,EAAQ,KACR,EAAG,KAAK,MAAM,GACd,MACA,EAAQ,IACV,EACC,KAAK,SAtBkB,GAAM;IAC9B,IAAI,CAAC,GAEH,EAAc;SACT;KACL,IAAI,IAAM,EAAQ,OAAQ;KAK1B,AAJK,EAAI,SAAS,GAAG,MACnB,KAAY,MAEd,IAAM,IAAM,mBAAmB,CAAI,IAAI,KACvC,EAAW,MAAM,CAAG;IACtB;GACF,CAUe,KA7Bf,IAAW,EAAgB,GAAK;IAC9B,MAAM,EAAQ;IACd,gBAAgB,EAAQ;GAC1B,GAAG,CAAU,GACb,EAAQ,IAAI,YAAY,CAAQ;EA8BpC,CAAC;CACH;CAEA,IAAM,IAAwB,CAAC,GACzB,IAAe,OAAO,OAAO,CAAQ,EAAE,QAAO,MAAQ,EAAK,OAAO,GAClE,IAAkB,EAAa,QAAQ,GAAU,OACjD,EAAK,cACP,EAAS,EAAK,UAAU,QAAQ,EAAS,EAAK,UAAU,QAAQ,KAAK,IAEhE,IACN,CAAC,CAAC;CACL,EAAa,SAAQ,MAAQ;EAE3B,IAAM,IAAY,EAAc,IAAI,YAAY,EAAI,cAAc,KAAK,CAAC;EACxE,EAAK,aAAa,OAAO,EAAK,IAAI;EAClC,IAAM,IAAO,EAAK,YACd,EAAgB,EAAK,UAAU,OAAO,IACpC,GAAG,EAAY,EAAK,SAAS,EAAE,UAAU,EAAK,KAAK,UACnD,EAAY,EAAK,SAAS,IAC5B,EAAK,OAAO;EAIhB,AAHA,EAAK,aAAa,SAAS,cAAc,CAAI,GAC7C,EAAK,aAAa,SAAS,wDAA4B,GACvD,EAAU,KAAK,CAAI,GACd,EAAK,YACR,EAAK,iBAAiB,SAAS,SAAU,GAAG;GAE1C,AADA,EAAW,CAAI,GACf,EAAmB;IACjB,OAAO;IACP,QAAQ,EAAc,UAAU;IAChC,SAAS;IACT;IACA;IACA,aAAa;IACb,KAAK,EAAc;IACnB,IAAI,EAAc;IAClB,KAAK,EAAc;IACnB,eAAe,EAAc;GAC/B,CAAC;EACH,CAAC;CAEL,CAAC;AACH"}
1
+ {"version":3,"file":"create.esm.js","names":[],"sources":["../../src/create/create.ts"],"sourcesContent":["/* create.js UI to craete new objects in the solid-app-set world\n **\n */\n\nimport { DataBrowserContext, NewPaneOptions, PaneDefinition } from 'pane-registry'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { ensureLoadedProfile, selectWorkspace } from '../login/login'\nimport ns from '../lib/ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { CreateContext, NewAppInstanceOptions } from './types'\n\nconst kb = solidLogicSingleton.store\n\n/* newThingUI -- return UI for user to select a new object, folder, etc\n **\n ** context must include: dom, div,\n ** optional: folder: NamedNode -- the folder where the thing is bring put\n ** (suppresses asking for a full URI or workspace)\n **\n */\nexport function newThingUI (\n createContext: CreateContext,\n dataBrowserContext: DataBrowserContext,\n thePanes: Array<PaneDefinition>\n): void {\n const dom = createContext.dom\n const div = createContext.div\n if (createContext.me && !createContext.me.uri) {\n throw new Error('newThingUI: Invalid userid: ' + createContext.me)\n }\n\n const iconStyle = 'padding: 0.7em; width: 2em; height: 2em;' // was: 'padding: 1em; width: 3em; height: 3em;'\n const star = div.appendChild(dom.createElement('img'))\n let visible = false // the inividual tools tools\n // noun_272948.svg = black star\n // noun_34653_green.svg = green plus\n star.setAttribute('src', icons.iconBase + 'noun_34653_green.svg')\n star.setAttribute('style', iconStyle)\n star.setAttribute('title', 'Add another tool')\n\n const complain = function complain (message) {\n const pre = div.appendChild(dom.createElement('pre'))\n pre.setAttribute('style', 'background-color: pink')\n pre.appendChild(dom.createTextNode(message))\n }\n\n function styleTheIcons (style) {\n for (let i = 0; i < iconArray.length; i++) {\n let st = iconStyle + style\n if (iconArray[i].disabled) {\n // @@ unused\n st += 'opacity: 0.3;'\n }\n iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;'\n }\n }\n\n function selectTool (icon) {\n styleTheIcons('display: none;') // 'background-color: #ccc;'\n icon.setAttribute('style', iconStyle + 'background-color: yellow;')\n }\n\n function selectNewTool (_event?) {\n visible = !visible\n star.setAttribute(\n 'style',\n iconStyle + (visible ? 'background-color: yellow;' : '')\n )\n styleTheIcons(visible ? '' : 'display: none;')\n }\n\n star.addEventListener('click', selectNewTool)\n\n function makeNewAppInstance (options: NewAppInstanceOptions) {\n return new Promise(function (resolve, reject) {\n let selectUI // , selectUIParent\n function callbackWS (ws, newBase) {\n ensureLoadedProfile(createContext).then(\n _context => {\n const newPaneOptions: NewPaneOptions = Object.assign({\n newBase,\n folder: options.folder || undefined,\n workspace: ws\n }, options)\n for (const opt in options) {\n // get div, dom, me, folder, pane, refreshTable\n newPaneOptions[opt] = options[opt]\n }\n debug.log(`newThingUI: Minting new ${newPaneOptions.pane.name} at ${newPaneOptions.newBase}`)\n options.pane\n .mintNew!(dataBrowserContext, newPaneOptions)\n .then(function (newPaneOptions) {\n if (!newPaneOptions || !newPaneOptions.newInstance) {\n throw new Error('Cannot mint new - missing newInstance')\n }\n if (newPaneOptions.folder) {\n const tail = newPaneOptions.newInstance.uri.slice(\n newPaneOptions.folder.uri.length\n )\n const isPackage = tail.includes('/')\n debug.log(' new thing is packge? ' + isPackage)\n if (isPackage) {\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n kb.sym(newPaneOptions.newBase),\n newPaneOptions.folder.doc()\n )\n } else {\n // single file\n kb.add(\n newPaneOptions.folder,\n ns.ldp('contains'),\n newPaneOptions.newInstance,\n newPaneOptions.folder.doc()\n ) // Ping the patch system?\n }\n // @ts-ignore @@ TODO check whether refresh can exist here. Either fix type or remove unreachable code\n if (newPaneOptions.refreshTarget && newPaneOptions.refreshTarget.refresh) {\n // @@ TODO Remove the need to cast as any\n ;(newPaneOptions.refreshTarget as any).refresh() // Refresh the containing display\n }\n // selectUI.parentNode.removeChild(selectUI) It removes itself\n } else {\n const p = options.div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 120%;')\n // Make link to new thing\n p.innerHTML =\n 'Your <a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'><b>new ' +\n options.noun +\n '</b></a> is ready to be set up. ' +\n '<br/><br/><a target=\\'_blank\\' href=\\'' +\n newPaneOptions.newInstance.uri +\n '\\'>Go to your new ' +\n options.noun +\n '.</a>'\n // selectUI.parentNode.removeChild(selectUI) // Clean up\n // selectUIParent.removeChild(selectUI) // Clean up\n }\n selectNewTool() // toggle star to plain and menu vanish again\n })\n .catch(function (err) {\n complain(err)\n reject(err)\n })\n },\n err => {\n // login fails\n complain('Error logging on: ' + err)\n }\n )\n } // callbackWS\n\n const pa = options.pane\n // options.appPathSegment = pa.name // was 'edu.mit.solid.pane.'\n options.noun = pa.mintClass ? utils.label(pa.mintClass) : pa.name\n options.appPathSegment = options.noun.slice(0, 1).toUpperCase() + options.noun.slice(1)\n\n if (!options.folder) {\n // No folder given? Ask user for full URI\n selectUI = selectWorkspace(dom, {\n noun: options.noun,\n appPathSegment: options.appPathSegment\n }, callbackWS)\n options.div.appendChild(selectUI)\n // selectUIParent = options.div\n } else {\n const gotName = function (name) {\n if (!name) {\n // selectUIParent.removeChild(selectUI) itremves itself if cancelled\n selectNewTool() // toggle star to plain and menu vanish again\n } else {\n let uri = options.folder!.uri\n if (!uri.endsWith('/')) {\n uri = uri + '/'\n }\n uri = uri + encodeURIComponent(name) + '/'\n callbackWS(null, uri)\n }\n }\n widgets\n .askName(\n dom,\n kb,\n options.div,\n ns.foaf('name'),\n null,\n options.noun\n )\n .then(gotName)\n // selectUI = getNameForm(dom, kb, options.noun, gotName)\n // options.div.appendChild(selectUI)\n // selectUIParent = options.div\n }\n })\n } // makeNewAppInstance\n\n const iconArray: Array<any> = []\n const mintingPanes = Object.values(thePanes).filter(pane => pane.mintNew)\n const mintingClassMap = mintingPanes.reduce((classMap, pane) => {\n if (pane.mintClass) {\n classMap[pane.mintClass.uri] = (classMap[pane.mintClass.uri] || 0) + 1\n }\n return classMap\n }, {})\n mintingPanes.forEach(pane => {\n // @@ TODO Remove the need to cast to any\n const icon: any = createContext.div.appendChild(dom.createElement('img'))\n icon.setAttribute('src', pane.icon)\n const noun = pane.mintClass\n ? mintingClassMap[pane.mintClass.uri] > 1\n ? `${utils.label(pane.mintClass)} (using ${pane.name} pane)`\n : utils.label(pane.mintClass)\n : pane.name + ' @@'\n icon.setAttribute('title', 'Make new ' + noun)\n icon.setAttribute('style', iconStyle + 'display: none;')\n iconArray.push(icon)\n if (!icon.disabled) {\n icon.addEventListener('click', function (e) {\n selectTool(icon)\n makeNewAppInstance({\n event: e,\n folder: createContext.folder || null,\n iconEle: icon,\n pane,\n noun,\n noIndexHTML: true, // do NOT @@ for now write a HTML file\n div: createContext.div,\n me: createContext.me,\n dom: createContext.dom,\n refreshTarget: createContext.refreshTarget\n })\n })\n }\n })\n}\n\n// Form to get the name of a new thing before we create it\n//\n// Used in contacts for new groups, individuals.\n//\n/*\nfunction getNameForm (dom, kb, classLabel, gotNameCallback) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n form.innerHTML = '<p>Name of new ' + classLabel + ':</p>'\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '30')\n namefield.setAttribute('style', style.textInputStyle)\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.select() // focus next user input\n\n const gotName = function () {\n namefield.setAttribute('class', 'pendingedit')\n namefield.disabled = true\n continueButton.disabled = true\n cancel.disabled = true\n gotNameCallback(true, namefield.value)\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n form.appendChild(namefield)\n\n form.appendChild(dom.createElement('br'))\n\n const cancel = form.appendChild(widgets.cancelButton(dom))\n cancel.addEventListener('click', function (e) {\n form.parentNode.removeChild(form)\n gotNameCallback(false)\n }, false)\n\n const continueButton = form.appendChild(widgets.continueButton(dom))\n continueButton.addEventListener('click', function (e) {\n gotName()\n }, false)\n\n return form\n}\n*/\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","names":[],"sources":["../../src/create/index.ts"],"sourcesContent":["import {\n newThingUI\n} from './create'\n\nexport const create = {\n newThingUI\n}\n"],"mappings":"AAIA,IAAa,EAAS,CACpB,oCAAA,EAAA,UACF"}
1
+ {"version":3,"file":"index.cjs.js","names":[],"sources":["../../src/create/index.ts"],"sourcesContent":["import {\n newThingUI\n} from './create'\n\nexport const create = {\n newThingUI\n}\n"],"mappings":"AAIA,IAAa,EAAS,CACpB,oCAAA,CAAA,CAAA,UACF"}
@@ -1,2 +1,2 @@
1
- const e=require("../lib/style.cjs.js"),t=require("../utils/headerFooterHelpers.cjs.js");let n=require("solid-logic");var r=`https://solidproject.org`,i=`solidproject.org`;async function a(e,r){let i=document.getElementById(`PageFooter`);if(!i)return;let a=t.getPod(),s=await t.getPodOwner(a,e);return o(i,e,a,s,r),n.authSession.events.on(`login`,()=>o(i,e,a,s,r)),n.authSession.events.on(`logout`,()=>o(i,e,a,s,r)),i}async function o(e,t,r,i,a){let o=n.authn.currentUser();return e.innerHTML=``,e.appendChild(await s(t,o,r,i,a)),e}function s(n,a,o,s,c){let l=document.createElement(`div`);l.setAttribute(`style`,e.style.footer);let u=document.createElement(`a`);if(u.href=c&&c.solidProjectUrl?c.solidProjectUrl:r,u.innerText=c&&c.solidProjectName?c.solidProjectName:i,!o||!s||a&&a.equals(s)){let e=document.createElement(`span`);return e.innerText=`Powered by `,l.appendChild(e),l.appendChild(u),l}let d=document.createElement(`span`);d.innerText=`You're visiting `;let f=document.createElement(`a`);f.href=o.uri,f.innerText=`the Pod`;let p=document.createElement(`span`);p.innerText=` controlled by `;let m=document.createElement(`a`);m.href=s.uri,m.innerText=t.getName(n,s);let h=document.createElement(`span`);h.innerText=`. For more info, check out `;let g=document.createElement(`span`);return g.innerText=`.`,l.appendChild(d),l.appendChild(f),l.appendChild(p),l.appendChild(m),l.appendChild(h),l.appendChild(u),l.appendChild(g),l}exports.initFooter=a;
1
+ const e=require("../lib/style.cjs.js"),t=require("../utils/headerFooterHelpers.cjs.js");let n=require("solid-logic");var r=`https://solidproject.org`,i=`solidproject.org`;async function a(e,r){let i=document.getElementById(`PageFooter`);if(!i)return;let a=t.getPod(),s=await t.getPodOwner(a,e);return o(i,e,a,s,r),n.authSession.events.on(`login`,()=>o(i,e,a,s,r)),n.authSession.events.on(`logout`,()=>o(i,e,a,s,r)),i}async function o(e,t,r,i,a){let o=n.authn.currentUser();return e.innerHTML=``,e.appendChild(await s(t,o,r,i,a)),e}function s(n,a,o,s,c){let l=document.createElement(`div`);l.setAttribute(`style`,e.style.footer);let u=document.createElement(`a`);if(u.href=c&&c.solidProjectUrl?c.solidProjectUrl:r,u.innerText=c&&c.solidProjectName?c.solidProjectName:i,!o||!s||a&&a.equals(s)){let e=document.createElement(`span`);return e.innerText=`Powered by `,l.appendChild(e),l.appendChild(u),l}let d=document.createElement(`span`);d.innerText=`You're visiting `;let f=document.createElement(`a`);f.href=o.uri,f.innerText=`the Pod`;let p=document.createElement(`span`);p.innerText=` controlled by `;let m=document.createElement(`a`);m.href=s.uri,m.innerText=t.getName(n,s);let h=document.createElement(`span`);h.innerText=`. For more info, check out `;let g=document.createElement(`span`);return g.innerText=`.`,l.appendChild(d),l.appendChild(f),l.appendChild(p),l.appendChild(m),l.appendChild(h),l.appendChild(u),l.appendChild(g),l}exports.createControllerInfoBlock=s,exports.initFooter=a,exports.rebuildFooter=o;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -35,6 +35,6 @@ function u(n, r, i, a, c) {
35
35
  return g.innerText = ".", l.appendChild(d), l.appendChild(f), l.appendChild(p), l.appendChild(m), l.appendChild(h), l.appendChild(u), l.appendChild(g), l;
36
36
  }
37
37
  //#endregion
38
- export { c as initFooter };
38
+ export { u as createControllerInfoBlock, c as initFooter, l as rebuildFooter };
39
39
 
40
40
  //# sourceMappingURL=index.esm.js.map
@@ -1,2 +1,2 @@
1
- const e=require("../lib/style.cjs.js"),t=require("../lib/iconBase.cjs.js"),n=require("../widgets/buttons.cjs.js");require("../widgets/index.cjs.js");const r=require("../login/login.cjs.js"),i=require("./empty-profile.cjs.js"),a=require("../utils/headerFooterHelpers.cjs.js");let o=require("solid-logic");var s=t.icons.iconBase+`noun_help.svg`,c=`https://solidproject.org/assets/img/solid-emblem.svg`;async function l(e,t,n){let r=document.getElementById(`PageHeader`);if(!r)return;let i=a.getPod();u(r,e,i,t,n)(),o.authSession.events.on(`logout`,u(r,e,i,t,n)),o.authSession.events.on(`login`,u(r,e,i,t,n))}function u(e,t,n,r,i){return async()=>{let a=o.authn.currentUser();e.innerHTML=``,e.appendChild(await d(t,n,a,r,i))}}async function d(t,n,r,i,a){let o=document.createElement(`a`);o.href=n.uri,o.setAttribute(`style`,e.style.headerBannerLink);let s=document.createElement(`img`);a&&(s.src=a.logo?a.logo:c),s.setAttribute(`style`,e.style.headerBannerIcon),o.appendChild(s);let l=r?await g(t,r,i):p(),u=document.createElement(`div`);u.setAttribute(`style`,e.style.headerBanner),u.appendChild(o);let d=document.createElement(`div`);if(d.setAttribute(`style`,e.style.headerBannerRightMenu),d.appendChild(l),a&&a.helpMenuList){let e=f(a,a.helpMenuList);d.appendChild(e)}return u.appendChild(d),u}function f(n,r){if(!r)return;let i=document.createElement(`ul`);i.setAttribute(`style`,e.style.headerUserMenuList),r.forEach(function(e){(e.url?`url`:`onclick`)==`url`?i.appendChild(_(h(e.label,e.url,e.target))):i.appendChild(_(m(e.label,e.onclick)))});let o=document.createElement(`nav`);o.setAttribute(`style`,e.style.headerUserMenuNavigationMenuNotDisplayed),o.setAttribute(`aria-hidden`,`true`),o.setAttribute(`id`,`helperNav`),o.appendChild(i);let c=document.createElement(`div`);c.setAttribute(`style`,e.style.headerBannerUserMenu),c.appendChild(o);let l=document.createElement(`button`);l.setAttribute(`style`,e.style.headerUserMenuTrigger),l.type=`button`;let u=document.createElement(`img`);u.src=n&&n.helpIcon?n.helpIcon:t.icons.iconBase+s,u.setAttribute(`style`,e.style.headerUserMenuTriggerImg),c.appendChild(l),l.appendChild(u);let d=a.throttle(e=>y(e,l,o),50);l.addEventListener(`click`,d);let f=setTimeout(()=>null,0);return c.addEventListener(`mouseover`,t=>{clearTimeout(f),d(t),document.getElementById(`helperNav`)?.setAttribute(`style`,e.style.headerUserMenuNavigationMenu)}),c.addEventListener(`mouseout`,t=>{f=setTimeout(()=>d(t),200),document.getElementById(`helperNav`)?.setAttribute(`style`,e.style.headerUserMenuNavigationMenuNotDisplayed)}),c}function p(){let t=document.createElement(`div`);return t.setAttribute(`style`,e.style.headerBannerLogin),t.appendChild(r.loginStatusBox(document,null,{})),t}function m(t,n){let r=document.createElement(`button`);return r.setAttribute(`style`,e.style.headerUserMenuButton),r.onmouseover=function(){r.setAttribute(`style`,e.style.headerUserMenuButtonHover)},r.onmouseout=function(){r.setAttribute(`style`,e.style.headerUserMenuButton)},r.addEventListener(`click`,n),r.innerText=t,r}function h(t,n,r){let i=document.createElement(`a`);return i.setAttribute(`style`,e.style.headerUserMenuLink),i.onmouseover=function(){i.setAttribute(`style`,e.style.headerUserMenuLinkHover)},i.onmouseout=function(){i.setAttribute(`style`,e.style.headerUserMenuLink)},i.href=n,i.innerText=t,r&&(i.target=r),i}async function g(t,n,r){let i=t.fetcher;i&&await i.load(n);let o=document.createElement(`ul`);o.setAttribute(`style`,e.style.headerUserMenuList),r&&r.forEach(function(e){(e.url?`url`:`onclick`)==`url`?o.appendChild(_(h(e.label,e.url,e.target))):o.appendChild(_(m(e.label,e.onclick)))});let s=document.createElement(`nav`);s.setAttribute(`style`,e.style.headerUserMenuNavigationMenuNotDisplayed),s.setAttribute(`aria-hidden`,`true`),s.setAttribute(`id`,`loggedInNav`),s.appendChild(o);let c=document.createElement(`button`);c.setAttribute(`style`,e.style.headerUserMenuTrigger),c.type=`button`;let l=v(t,n);typeof l==`string`?c.innerHTML=l:c.appendChild(l);let u=document.createElement(`div`);u.setAttribute(`style`,e.style.headerBannerUserMenuNotDisplayed),u.appendChild(c),u.appendChild(s);let d=a.throttle(e=>y(e,c,s),50);c.addEventListener(`click`,d);let f=setTimeout(()=>null,0);return u.addEventListener(`mouseover`,t=>{clearTimeout(f),d(t),document.getElementById(`loggedInNav`)?.setAttribute(`style`,e.style.headerUserMenuNavigationMenu)}),u.addEventListener(`mouseout`,t=>{f=setTimeout(()=>d(t),200),document.getElementById(`loggedInNav`)?.setAttribute(`style`,e.style.headerUserMenuNavigationMenuNotDisplayed)}),u}function _(t){let n=document.createElement(`li`);return n.setAttribute(`style`,e.style.headerUserMenuListItem),n.appendChild(t),n}function v(t,r){let a=null;try{if(a=n.findImage(r),!a)return i.emptyProfile}catch{return i.emptyProfile}let o=document.createElement(`div`);return o.setAttribute(`style`,e.style.headerUserMenuPhoto),o.style.backgroundImage=`url(${a})`,o}function y(e,t,n){let r=t.getAttribute(`aria-expanded`)===`true`,i=e.type===`mouseover`,a=e.type===`mouseout`;r&&i||!r&&a||(t.setAttribute(`aria-expanded`,(!r).toString()),n.setAttribute(`aria-hidden`,r.toString()))}exports.initHeader=l;
1
+ const e=require("../lib/style.cjs.js"),t=require("../lib/iconBase.cjs.js"),n=require("../widgets/buttons.cjs.js");require("../widgets/index.cjs.js");const r=require("../login/login.cjs.js"),i=require("./empty-profile.cjs.js"),a=require("../utils/headerFooterHelpers.cjs.js");let o=require("solid-logic");var s=t.icons.iconBase+`noun_help.svg`,c=`https://solidproject.org/assets/img/solid-emblem.svg`;async function l(e,t,n){let r=document.getElementById(`PageHeader`);if(!r)return;let i=a.getPod();u(r,e,i,t,n)(),o.authSession.events.on(`logout`,u(r,e,i,t,n)),o.authSession.events.on(`login`,u(r,e,i,t,n))}function u(e,t,n,r,i){return async()=>{let a=o.authn.currentUser();e.innerHTML=``,e.appendChild(await d(t,n,a,r,i))}}async function d(t,n,r,i,a){let o=document.createElement(`a`);o.href=n.uri,o.setAttribute(`style`,e.style.headerBannerLink);let s=document.createElement(`img`);a&&(s.src=a.logo?a.logo:c),s.setAttribute(`style`,e.style.headerBannerIcon),o.appendChild(s);let l=r?await g(t,r,i):p(),u=document.createElement(`div`);u.setAttribute(`style`,e.style.headerBanner),u.appendChild(o);let d=document.createElement(`div`);if(d.setAttribute(`style`,e.style.headerBannerRightMenu),d.appendChild(l),a&&a.helpMenuList){let e=f(a,a.helpMenuList);d.appendChild(e)}return u.appendChild(d),u}function f(n,r){if(!r)return;let i=document.createElement(`ul`);i.setAttribute(`style`,e.style.headerUserMenuList),r.forEach(function(e){(e.url?`url`:`onclick`)==`url`?i.appendChild(_(h(e.label,e.url,e.target))):i.appendChild(_(m(e.label,e.onclick)))});let o=document.createElement(`nav`);o.setAttribute(`style`,e.style.headerUserMenuNavigationMenuNotDisplayed),o.setAttribute(`aria-hidden`,`true`),o.setAttribute(`id`,`helperNav`),o.appendChild(i);let c=document.createElement(`div`);c.setAttribute(`style`,e.style.headerBannerUserMenu),c.appendChild(o);let l=document.createElement(`button`);l.setAttribute(`style`,e.style.headerUserMenuTrigger),l.type=`button`;let u=document.createElement(`img`);u.src=n&&n.helpIcon?n.helpIcon:t.icons.iconBase+s,u.setAttribute(`style`,e.style.headerUserMenuTriggerImg),c.appendChild(l),l.appendChild(u);let d=a.throttle(e=>y(e,l,o),50);l.addEventListener(`click`,d);let f=setTimeout(()=>null,0);return c.addEventListener(`mouseover`,t=>{clearTimeout(f),d(t),document.getElementById(`helperNav`)?.setAttribute(`style`,e.style.headerUserMenuNavigationMenu)}),c.addEventListener(`mouseout`,t=>{f=setTimeout(()=>d(t),200),document.getElementById(`helperNav`)?.setAttribute(`style`,e.style.headerUserMenuNavigationMenuNotDisplayed)}),c}function p(){let t=document.createElement(`div`);return t.setAttribute(`style`,e.style.headerBannerLogin),t.appendChild(r.loginStatusBox(document,null,{})),t}function m(t,n){let r=document.createElement(`button`);return r.setAttribute(`style`,e.style.headerUserMenuButton),r.onmouseover=function(){r.setAttribute(`style`,e.style.headerUserMenuButtonHover)},r.onmouseout=function(){r.setAttribute(`style`,e.style.headerUserMenuButton)},r.addEventListener(`click`,n),r.innerText=t,r}function h(t,n,r){let i=document.createElement(`a`);return i.setAttribute(`style`,e.style.headerUserMenuLink),i.onmouseover=function(){i.setAttribute(`style`,e.style.headerUserMenuLinkHover)},i.onmouseout=function(){i.setAttribute(`style`,e.style.headerUserMenuLink)},i.href=n,i.innerText=t,r&&(i.target=r),i}async function g(t,n,r){let i=t.fetcher;i&&await i.load(n);let o=document.createElement(`ul`);o.setAttribute(`style`,e.style.headerUserMenuList),r&&r.forEach(function(e){(e.url?`url`:`onclick`)==`url`?o.appendChild(_(h(e.label,e.url,e.target))):o.appendChild(_(m(e.label,e.onclick)))});let s=document.createElement(`nav`);s.setAttribute(`style`,e.style.headerUserMenuNavigationMenuNotDisplayed),s.setAttribute(`aria-hidden`,`true`),s.setAttribute(`id`,`loggedInNav`),s.appendChild(o);let c=document.createElement(`button`);c.setAttribute(`style`,e.style.headerUserMenuTrigger),c.type=`button`;let l=v(t,n);typeof l==`string`?c.innerHTML=l:c.appendChild(l);let u=document.createElement(`div`);u.setAttribute(`style`,e.style.headerBannerUserMenuNotDisplayed),u.appendChild(c),u.appendChild(s);let d=a.throttle(e=>y(e,c,s),50);c.addEventListener(`click`,d);let f=setTimeout(()=>null,0);return u.addEventListener(`mouseover`,t=>{clearTimeout(f),d(t),document.getElementById(`loggedInNav`)?.setAttribute(`style`,e.style.headerUserMenuNavigationMenu)}),u.addEventListener(`mouseout`,t=>{f=setTimeout(()=>d(t),200),document.getElementById(`loggedInNav`)?.setAttribute(`style`,e.style.headerUserMenuNavigationMenuNotDisplayed)}),u}function _(t){let n=document.createElement(`li`);return n.setAttribute(`style`,e.style.headerUserMenuListItem),n.appendChild(t),n}function v(t,r){let a=null;try{if(a=n.findImage(r),!a)return i.emptyProfile}catch{return i.emptyProfile}let o=document.createElement(`div`);return o.setAttribute(`style`,e.style.headerUserMenuPhoto),o.style.backgroundImage=`url(${a})`,o}function y(e,t,n){let r=t.getAttribute(`aria-expanded`)===`true`,i=e.type===`mouseover`,a=e.type===`mouseout`;r&&i||!r&&a||(t.setAttribute(`aria-expanded`,(!r).toString()),n.setAttribute(`aria-hidden`,r.toString()))}exports.createBanner=d,exports.createHelpMenu=f,exports.createLoginSignUpButtons=p,exports.createUserMenu=g,exports.createUserMenuButton=m,exports.createUserMenuItem=_,exports.createUserMenuLink=h,exports.getProfileImg=v,exports.initHeader=l,exports.rebuildHeader=u;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","names":[],"sources":["../../src/header/index.ts"],"sourcesContent":["/* global EventListenerOrEventListenerObject */\n/*\n This file was copied from mashlib/src/global/header.ts file. It is modified to\n work in solid-ui by adjusting where imported functions are found.\n */\nimport { IndexedFormula, NamedNode } from 'rdflib'\nimport { icons } from '../lib/iconBase'\nimport { authn, authSession } from 'solid-logic'\nimport { loginStatusBox } from '../login/login'\n// import { loginStatusBox, authSession, currentUser } from '../authn/authn'\nimport * as widgets from '../widgets'\nimport { style } from '../lib/style'\nimport { emptyProfile } from './empty-profile'\nimport { getPod, throttle } from '../utils/headerFooterHelpers'\n\n/**\n * menu icons\n*/\nconst DEFAULT_HELP_MENU_ICON = icons.iconBase + 'noun_help.svg'\nconst DEFAUL_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg'\n\nexport type MenuItemLink = {\n label: string,\n url: string,\n target?: string\n}\n\nexport type MenuItemButton = {\n label: string,\n onclick: () => void\n}\n\nexport type MenuItems = MenuItemLink | MenuItemButton\n\n/*\n HeaderOptions allow for customizing the logo and menu list. If a logo is not provided the default\n is solid. Menulist will always show a link to logout and to the users profile.\n */\nexport type HeaderOptions = {\n logo?: string,\n helpIcon?: string,\n helpMenuList?: MenuItems[]\n}\n\n/**\n * Initialize header component, the header object returned depends on whether the user is authenticated.\n * @param store the data store\n * @param userMenuList a list of menu items when the user is logged in\n * @param options allow the header to be customized with a personalized logo, help icon and a help menu list of links or buttons.\n * @returns a header for an authenticated user with menu items given or a login screen\n */\nexport async function initHeader (store: IndexedFormula, userMenuList: MenuItems[], options?: HeaderOptions) {\n const header = document.getElementById('PageHeader')\n if (!header) {\n return\n }\n\n const pod = getPod()\n rebuildHeader(header, store, pod, userMenuList, options)()\n authSession.events.on('logout', rebuildHeader(header, store, pod, userMenuList, options))\n authSession.events.on('login', rebuildHeader(header, store, pod, userMenuList, options))\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function rebuildHeader (header: HTMLElement, store: IndexedFormula, pod: NamedNode, userMenuList: MenuItems[], options?: HeaderOptions) {\n return async () => {\n const user = authn.currentUser()\n header.innerHTML = ''\n header.appendChild(await createBanner(store, pod, user, userMenuList, options))\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createBanner (store: IndexedFormula, pod: NamedNode, user: NamedNode | null, userMenuList: MenuItems[], options?: HeaderOptions): Promise<HTMLElement> {\n const podLink = document.createElement('a')\n podLink.href = pod.uri\n podLink.setAttribute('style', style.headerBannerLink)\n const image = document.createElement('img')\n if (options) {\n image.src = options.logo ? options.logo : DEFAUL_SOLID_ICON_URL\n }\n image.setAttribute('style', style.headerBannerIcon)\n podLink.appendChild(image)\n\n const userMenu = user\n ? await createUserMenu(store, user, userMenuList)\n : createLoginSignUpButtons()\n\n const banner = document.createElement('div')\n banner.setAttribute('style', style.headerBanner)\n banner.appendChild(podLink)\n\n const leftSideOfHeader = document.createElement('div')\n leftSideOfHeader.setAttribute('style', style.headerBannerRightMenu)\n leftSideOfHeader.appendChild(userMenu)\n\n if (options && options.helpMenuList) {\n const helpMenu = createHelpMenu(options, options.helpMenuList)\n leftSideOfHeader.appendChild(helpMenu as HTMLDivElement)\n }\n\n banner.appendChild(leftSideOfHeader)\n\n return banner\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createHelpMenu (options: HeaderOptions, helpMenuItems: MenuItems[]) {\n if (!helpMenuItems) return\n const helpMenuList = document.createElement('ul')\n helpMenuList.setAttribute('style', style.headerUserMenuList)\n helpMenuItems.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n\n const helpMenu = document.createElement('nav')\n\n helpMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n helpMenu.setAttribute('aria-hidden', 'true')\n helpMenu.setAttribute('id', 'helperNav')\n helpMenu.appendChild(helpMenuList)\n\n const helpMenuContainer = document.createElement('div')\n helpMenuContainer.setAttribute('style', style.headerBannerUserMenu)\n helpMenuContainer.appendChild(helpMenu)\n\n const helpMenuTrigger = document.createElement('button')\n helpMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n helpMenuTrigger.type = 'button'\n\n const helpMenuIcon = document.createElement('img')\n helpMenuIcon.src = (options && options.helpIcon) ? options.helpIcon : icons.iconBase + DEFAULT_HELP_MENU_ICON\n helpMenuIcon.setAttribute('style', style.headerUserMenuTriggerImg)\n helpMenuContainer.appendChild(helpMenuTrigger)\n helpMenuTrigger.appendChild(helpMenuIcon)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, helpMenuTrigger, helpMenu), 50)\n helpMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n helpMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n helpMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return helpMenuContainer\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createLoginSignUpButtons () {\n const profileLoginButtonPre = document.createElement('div')\n profileLoginButtonPre.setAttribute('style', style.headerBannerLogin)\n profileLoginButtonPre.appendChild(loginStatusBox(document, null, {}))\n return profileLoginButtonPre\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuButton (label: string, onClick: EventListenerOrEventListenerObject): HTMLElement {\n const button = document.createElement('button')\n button.setAttribute('style', style.headerUserMenuButton)\n button.onmouseover = function () {\n button.setAttribute('style', style.headerUserMenuButtonHover)\n }\n button.onmouseout = function () {\n button.setAttribute('style', style.headerUserMenuButton)\n }\n button.addEventListener('click', onClick)\n button.innerText = label\n return button\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuLink (label: string, href: string, target?: string): HTMLElement {\n const link = document.createElement('a')\n link.setAttribute('style', style.headerUserMenuLink)\n link.onmouseover = function () {\n link.setAttribute('style', style.headerUserMenuLinkHover)\n }\n link.onmouseout = function () {\n link.setAttribute('style', style.headerUserMenuLink)\n }\n link.href = href\n link.innerText = label\n if (target) link.target = target\n return link\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createUserMenu (store: IndexedFormula, user: NamedNode, userMenuList: MenuItems[]): Promise<HTMLElement> {\n const fetcher = (<any>store).fetcher\n if (fetcher) {\n // Making sure that Profile is loaded before building menu\n await fetcher.load(user)\n }\n\n const loggedInMenuList = document.createElement('ul')\n loggedInMenuList.setAttribute('style', style.headerUserMenuList)\n if (userMenuList) {\n userMenuList.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n }\n const loggedInMenu = document.createElement('nav')\n\n loggedInMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n loggedInMenu.setAttribute('aria-hidden', 'true')\n loggedInMenu.setAttribute('id', 'loggedInNav')\n loggedInMenu.appendChild(loggedInMenuList)\n\n const loggedInMenuTrigger = document.createElement('button')\n loggedInMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n loggedInMenuTrigger.type = 'button'\n const profileImg = getProfileImg(store, user)\n if (typeof profileImg === 'string') {\n loggedInMenuTrigger.innerHTML = profileImg\n } else {\n loggedInMenuTrigger.appendChild(profileImg)\n }\n\n const loggedInMenuContainer = document.createElement('div')\n loggedInMenuContainer.setAttribute('style', style.headerBannerUserMenuNotDisplayed)\n loggedInMenuContainer.appendChild(loggedInMenuTrigger)\n loggedInMenuContainer.appendChild(loggedInMenu)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, loggedInMenuTrigger, loggedInMenu), 50)\n loggedInMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n loggedInMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n loggedInMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return loggedInMenuContainer\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuItem (child: HTMLElement): HTMLElement {\n const menuProfileItem = document.createElement('li')\n menuProfileItem.setAttribute('style', style.headerUserMenuListItem)\n menuProfileItem.appendChild(child)\n return menuProfileItem\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getProfileImg (store: IndexedFormula, user: NamedNode): string | HTMLElement {\n let profileUrl = null\n try {\n profileUrl = widgets.findImage(user)\n if (!profileUrl) {\n return emptyProfile\n }\n } catch {\n return emptyProfile\n }\n\n const profileImage = document.createElement('div')\n profileImage.setAttribute('style', style.headerUserMenuPhoto)\n profileImage.style.backgroundImage = `url(${profileUrl})`\n return profileImage\n}\n\n/**\n * @internal\n */\nfunction toggleMenu (event: Event, trigger: HTMLButtonElement, menu: HTMLElement): void {\n const isExpanded = trigger.getAttribute('aria-expanded') === 'true'\n const expand = event.type === 'mouseover'\n const close = event.type === 'mouseout'\n if ((isExpanded && expand) || (!isExpanded && close)) {\n return\n }\n trigger.setAttribute('aria-expanded', (!isExpanded).toString())\n menu.setAttribute('aria-hidden', isExpanded.toString())\n}\n"],"mappings":"gTAkBA,IAAM,EAAyB,EAAA,MAAM,SAAW,gBAC1C,EAAwB,uDAgC9B,eAAsB,EAAY,EAAuB,EAA2B,EAAyB,CAC3G,IAAM,EAAS,SAAS,eAAe,YAAY,EACnD,GAAI,CAAC,EACH,OAGF,IAAM,EAAM,EAAA,OAAO,EACnB,EAAc,EAAQ,EAAO,EAAK,EAAc,CAAO,EAAE,EACzD,EAAA,YAAY,OAAO,GAAG,SAAU,EAAc,EAAQ,EAAO,EAAK,EAAc,CAAO,CAAC,EACxF,EAAA,YAAY,OAAO,GAAG,QAAS,EAAc,EAAQ,EAAO,EAAK,EAAc,CAAO,CAAC,CACzF,CAIA,SAAgB,EAAe,EAAqB,EAAuB,EAAgB,EAA2B,EAAyB,CAC7I,OAAO,SAAY,CACjB,IAAM,EAAO,EAAA,MAAM,YAAY,EAC/B,EAAO,UAAY,GACnB,EAAO,YAAY,MAAM,EAAa,EAAO,EAAK,EAAM,EAAc,CAAO,CAAC,CAChF,CACF,CAIA,eAAsB,EAAc,EAAuB,EAAgB,EAAwB,EAA2B,EAA+C,CAC3K,IAAM,EAAU,SAAS,cAAc,GAAG,EAC1C,EAAQ,KAAO,EAAI,IACnB,EAAQ,aAAa,QAAS,EAAA,MAAM,gBAAgB,EACpD,IAAM,EAAQ,SAAS,cAAc,KAAK,EACtC,IACF,EAAM,IAAM,EAAQ,KAAO,EAAQ,KAAO,GAE5C,EAAM,aAAa,QAAS,EAAA,MAAM,gBAAgB,EAClD,EAAQ,YAAY,CAAK,EAEzB,IAAM,EAAW,EACb,MAAM,EAAe,EAAO,EAAM,CAAY,EAC9C,EAAyB,EAEvB,EAAS,SAAS,cAAc,KAAK,EAC3C,EAAO,aAAa,QAAS,EAAA,MAAM,YAAY,EAC/C,EAAO,YAAY,CAAO,EAE1B,IAAM,EAAmB,SAAS,cAAc,KAAK,EAIrD,GAHA,EAAiB,aAAa,QAAS,EAAA,MAAM,qBAAqB,EAClE,EAAiB,YAAY,CAAQ,EAEjC,GAAW,EAAQ,aAAc,CACnC,IAAM,EAAW,EAAe,EAAS,EAAQ,YAAY,EAC7D,EAAiB,YAAY,CAA0B,CACzD,CAIA,OAFA,EAAO,YAAY,CAAgB,EAE5B,CACT,CAIA,SAAgB,EAAgB,EAAwB,EAA4B,CAClF,GAAI,CAAC,EAAe,OACpB,IAAM,EAAe,SAAS,cAAc,IAAI,EAChD,EAAa,aAAa,QAAS,EAAA,MAAM,kBAAkB,EAC3D,EAAc,QAAQ,SAAU,EAAU,EACV,EAA0B,IAAM,MAAQ,YACjD,MACnB,EAAa,YAAY,EAAmB,EAAmB,EAAS,MAAQ,EAA0B,IAAM,EAA0B,MAAM,CAAC,CAAC,EAElJ,EAAa,YAAY,EAAmB,EAAqB,EAAS,MAAQ,EAA4B,OAAO,CAAC,CAAC,CAE3H,CAAC,EAED,IAAM,EAAW,SAAS,cAAc,KAAK,EAE7C,EAAS,aAAa,QAAS,EAAA,MAAM,wCAAwC,EAC7E,EAAS,aAAa,cAAe,MAAM,EAC3C,EAAS,aAAa,KAAM,WAAW,EACvC,EAAS,YAAY,CAAY,EAEjC,IAAM,EAAoB,SAAS,cAAc,KAAK,EACtD,EAAkB,aAAa,QAAS,EAAA,MAAM,oBAAoB,EAClE,EAAkB,YAAY,CAAQ,EAEtC,IAAM,EAAkB,SAAS,cAAc,QAAQ,EACvD,EAAgB,aAAa,QAAS,EAAA,MAAM,qBAAqB,EACjE,EAAgB,KAAO,SAEvB,IAAM,EAAe,SAAS,cAAc,KAAK,EACjD,EAAa,IAAO,GAAW,EAAQ,SAAY,EAAQ,SAAW,EAAA,MAAM,SAAW,EACvF,EAAa,aAAa,QAAS,EAAA,MAAM,wBAAwB,EACjE,EAAkB,YAAY,CAAe,EAC7C,EAAgB,YAAY,CAAY,EAExC,IAAM,EAAsB,EAAA,SAAU,GAAiB,EAAW,EAAO,EAAiB,CAAQ,EAAG,EAAE,EACvG,EAAgB,iBAAiB,QAAS,CAAmB,EAC7D,IAAI,EAAQ,eAAiB,KAAM,CAAC,EAapC,OAZA,EAAkB,iBAAiB,YAAa,GAAS,CACvD,aAAa,CAAK,EAClB,EAAoB,CAAK,EAEzB,SADqB,eAAe,WACpC,GAAK,aAAa,QAAS,EAAA,MAAM,4BAA4B,CAC/D,CAAC,EACD,EAAkB,iBAAiB,WAAY,GAAS,CACtD,EAAQ,eAAiB,EAAoB,CAAK,EAAG,GAAG,EAExD,SADqB,eAAe,WACpC,GAAK,aAAa,QAAS,EAAA,MAAM,wCAAwC,CAC3E,CAAC,EAEM,CACT,CAIA,SAAgB,GAA4B,CAC1C,IAAM,EAAwB,SAAS,cAAc,KAAK,EAG1D,OAFA,EAAsB,aAAa,QAAS,EAAA,MAAM,iBAAiB,EACnE,EAAsB,YAAY,EAAA,eAAe,SAAU,KAAM,CAAC,CAAC,CAAC,EAC7D,CACT,CAIA,SAAgB,EAAsB,EAAe,EAA0D,CAC7G,IAAM,EAAS,SAAS,cAAc,QAAQ,EAU9C,OATA,EAAO,aAAa,QAAS,EAAA,MAAM,oBAAoB,EACvD,EAAO,YAAc,UAAY,CAC/B,EAAO,aAAa,QAAS,EAAA,MAAM,yBAAyB,CAC9D,EACA,EAAO,WAAa,UAAY,CAC9B,EAAO,aAAa,QAAS,EAAA,MAAM,oBAAoB,CACzD,EACA,EAAO,iBAAiB,QAAS,CAAO,EACxC,EAAO,UAAY,EACZ,CACT,CAIA,SAAgB,EAAoB,EAAe,EAAc,EAA8B,CAC7F,IAAM,EAAO,SAAS,cAAc,GAAG,EAWvC,OAVA,EAAK,aAAa,QAAS,EAAA,MAAM,kBAAkB,EACnD,EAAK,YAAc,UAAY,CAC7B,EAAK,aAAa,QAAS,EAAA,MAAM,uBAAuB,CAC1D,EACA,EAAK,WAAa,UAAY,CAC5B,EAAK,aAAa,QAAS,EAAA,MAAM,kBAAkB,CACrD,EACA,EAAK,KAAO,EACZ,EAAK,UAAY,EACb,IAAQ,EAAK,OAAS,GACnB,CACT,CAKA,eAAsB,EAAgB,EAAuB,EAAiB,EAAiD,CAC7H,IAAM,EAAgB,EAAO,QACzB,GAEF,MAAM,EAAQ,KAAK,CAAI,EAGzB,IAAM,EAAmB,SAAS,cAAc,IAAI,EACpD,EAAiB,aAAa,QAAS,EAAA,MAAM,kBAAkB,EAC3D,GACF,EAAa,QAAQ,SAAU,EAAU,EACT,EAA0B,IAAM,MAAQ,YACjD,MACnB,EAAiB,YAAY,EAAmB,EAAmB,EAAS,MAAQ,EAA0B,IAAM,EAA0B,MAAM,CAAC,CAAC,EAEtJ,EAAiB,YAAY,EAAmB,EAAqB,EAAS,MAAQ,EAA4B,OAAO,CAAC,CAAC,CAE/H,CAAC,EAEH,IAAM,EAAe,SAAS,cAAc,KAAK,EAEjD,EAAa,aAAa,QAAS,EAAA,MAAM,wCAAwC,EACjF,EAAa,aAAa,cAAe,MAAM,EAC/C,EAAa,aAAa,KAAM,aAAa,EAC7C,EAAa,YAAY,CAAgB,EAEzC,IAAM,EAAsB,SAAS,cAAc,QAAQ,EAC3D,EAAoB,aAAa,QAAS,EAAA,MAAM,qBAAqB,EACrE,EAAoB,KAAO,SAC3B,IAAM,EAAa,EAAc,EAAO,CAAI,EACxC,OAAO,GAAe,SACxB,EAAoB,UAAY,EAEhC,EAAoB,YAAY,CAAU,EAG5C,IAAM,EAAwB,SAAS,cAAc,KAAK,EAC1D,EAAsB,aAAa,QAAS,EAAA,MAAM,gCAAgC,EAClF,EAAsB,YAAY,CAAmB,EACrD,EAAsB,YAAY,CAAY,EAE9C,IAAM,EAAsB,EAAA,SAAU,GAAiB,EAAW,EAAO,EAAqB,CAAY,EAAG,EAAE,EAC/G,EAAoB,iBAAiB,QAAS,CAAmB,EACjE,IAAI,EAAQ,eAAiB,KAAM,CAAC,EAapC,OAZA,EAAsB,iBAAiB,YAAa,GAAS,CAC3D,aAAa,CAAK,EAClB,EAAoB,CAAK,EAEzB,SADqB,eAAe,aACpC,GAAK,aAAa,QAAS,EAAA,MAAM,4BAA4B,CAC/D,CAAC,EACD,EAAsB,iBAAiB,WAAY,GAAS,CAC1D,EAAQ,eAAiB,EAAoB,CAAK,EAAG,GAAG,EAExD,SADqB,eAAe,aACpC,GAAK,aAAa,QAAS,EAAA,MAAM,wCAAwC,CAC3E,CAAC,EAEM,CACT,CAKA,SAAgB,EAAoB,EAAiC,CACnE,IAAM,EAAkB,SAAS,cAAc,IAAI,EAGnD,OAFA,EAAgB,aAAa,QAAS,EAAA,MAAM,sBAAsB,EAClE,EAAgB,YAAY,CAAK,EAC1B,CACT,CAIA,SAAgB,EAAe,EAAuB,EAAuC,CAC3F,IAAI,EAAa,KACjB,GAAI,CAEF,GADA,EAAA,EAAA,UAA+B,CAAI,EAC/B,CAAC,EACH,OAAO,EAAA,YAEX,MAAQ,CACN,OAAO,EAAA,YACT,CAEA,IAAM,EAAe,SAAS,cAAc,KAAK,EAGjD,OAFA,EAAa,aAAa,QAAS,EAAA,MAAM,mBAAmB,EAC5D,EAAa,MAAM,gBAAkB,OAAO,EAAW,GAChD,CACT,CAKA,SAAS,EAAY,EAAc,EAA4B,EAAyB,CACtF,IAAM,EAAa,EAAQ,aAAa,eAAe,IAAM,OACvD,EAAS,EAAM,OAAS,YACxB,EAAQ,EAAM,OAAS,WACxB,GAAc,GAAY,CAAC,GAAc,IAG9C,EAAQ,aAAa,iBAAkB,CAAC,GAAY,SAAS,CAAC,EAC9D,EAAK,aAAa,cAAe,EAAW,SAAS,CAAC,EACxD"}
1
+ {"version":3,"file":"index.cjs.js","names":[],"sources":["../../src/header/index.ts"],"sourcesContent":["/* global EventListenerOrEventListenerObject */\n/*\n This file was copied from mashlib/src/global/header.ts file. It is modified to\n work in solid-ui by adjusting where imported functions are found.\n */\nimport { IndexedFormula, NamedNode } from 'rdflib'\nimport { icons } from '../lib/iconBase'\nimport { authn, authSession } from 'solid-logic'\nimport { loginStatusBox } from '../login/login'\n// import { loginStatusBox, authSession, currentUser } from '../authn/authn'\nimport * as widgets from '../widgets'\nimport { style } from '../lib/style'\nimport { emptyProfile } from './empty-profile'\nimport { getPod, throttle } from '../utils/headerFooterHelpers'\n\n/**\n * menu icons\n*/\nconst DEFAULT_HELP_MENU_ICON = icons.iconBase + 'noun_help.svg'\nconst DEFAUL_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg'\n\nexport type MenuItemLink = {\n label: string,\n url: string,\n target?: string\n}\n\nexport type MenuItemButton = {\n label: string,\n onclick: () => void\n}\n\nexport type MenuItems = MenuItemLink | MenuItemButton\n\n/*\n HeaderOptions allow for customizing the logo and menu list. If a logo is not provided the default\n is solid. Menulist will always show a link to logout and to the users profile.\n */\nexport type HeaderOptions = {\n logo?: string,\n helpIcon?: string,\n helpMenuList?: MenuItems[]\n}\n\n/**\n * Initialize header component, the header object returned depends on whether the user is authenticated.\n * @param store the data store\n * @param userMenuList a list of menu items when the user is logged in\n * @param options allow the header to be customized with a personalized logo, help icon and a help menu list of links or buttons.\n * @returns a header for an authenticated user with menu items given or a login screen\n */\nexport async function initHeader (store: IndexedFormula, userMenuList: MenuItems[], options?: HeaderOptions) {\n const header = document.getElementById('PageHeader')\n if (!header) {\n return\n }\n\n const pod = getPod()\n rebuildHeader(header, store, pod, userMenuList, options)()\n authSession.events.on('logout', rebuildHeader(header, store, pod, userMenuList, options))\n authSession.events.on('login', rebuildHeader(header, store, pod, userMenuList, options))\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function rebuildHeader (header: HTMLElement, store: IndexedFormula, pod: NamedNode, userMenuList: MenuItems[], options?: HeaderOptions) {\n return async () => {\n const user = authn.currentUser()\n header.innerHTML = ''\n header.appendChild(await createBanner(store, pod, user, userMenuList, options))\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createBanner (store: IndexedFormula, pod: NamedNode, user: NamedNode | null, userMenuList: MenuItems[], options?: HeaderOptions): Promise<HTMLElement> {\n const podLink = document.createElement('a')\n podLink.href = pod.uri\n podLink.setAttribute('style', style.headerBannerLink)\n const image = document.createElement('img')\n if (options) {\n image.src = options.logo ? options.logo : DEFAUL_SOLID_ICON_URL\n }\n image.setAttribute('style', style.headerBannerIcon)\n podLink.appendChild(image)\n\n const userMenu = user\n ? await createUserMenu(store, user, userMenuList)\n : createLoginSignUpButtons()\n\n const banner = document.createElement('div')\n banner.setAttribute('style', style.headerBanner)\n banner.appendChild(podLink)\n\n const leftSideOfHeader = document.createElement('div')\n leftSideOfHeader.setAttribute('style', style.headerBannerRightMenu)\n leftSideOfHeader.appendChild(userMenu)\n\n if (options && options.helpMenuList) {\n const helpMenu = createHelpMenu(options, options.helpMenuList)\n leftSideOfHeader.appendChild(helpMenu as HTMLDivElement)\n }\n\n banner.appendChild(leftSideOfHeader)\n\n return banner\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createHelpMenu (options: HeaderOptions, helpMenuItems: MenuItems[]) {\n if (!helpMenuItems) return\n const helpMenuList = document.createElement('ul')\n helpMenuList.setAttribute('style', style.headerUserMenuList)\n helpMenuItems.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n\n const helpMenu = document.createElement('nav')\n\n helpMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n helpMenu.setAttribute('aria-hidden', 'true')\n helpMenu.setAttribute('id', 'helperNav')\n helpMenu.appendChild(helpMenuList)\n\n const helpMenuContainer = document.createElement('div')\n helpMenuContainer.setAttribute('style', style.headerBannerUserMenu)\n helpMenuContainer.appendChild(helpMenu)\n\n const helpMenuTrigger = document.createElement('button')\n helpMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n helpMenuTrigger.type = 'button'\n\n const helpMenuIcon = document.createElement('img')\n helpMenuIcon.src = (options && options.helpIcon) ? options.helpIcon : icons.iconBase + DEFAULT_HELP_MENU_ICON\n helpMenuIcon.setAttribute('style', style.headerUserMenuTriggerImg)\n helpMenuContainer.appendChild(helpMenuTrigger)\n helpMenuTrigger.appendChild(helpMenuIcon)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, helpMenuTrigger, helpMenu), 50)\n helpMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n helpMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n helpMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return helpMenuContainer\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createLoginSignUpButtons () {\n const profileLoginButtonPre = document.createElement('div')\n profileLoginButtonPre.setAttribute('style', style.headerBannerLogin)\n profileLoginButtonPre.appendChild(loginStatusBox(document, null, {}))\n return profileLoginButtonPre\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuButton (label: string, onClick: EventListenerOrEventListenerObject): HTMLElement {\n const button = document.createElement('button')\n button.setAttribute('style', style.headerUserMenuButton)\n button.onmouseover = function () {\n button.setAttribute('style', style.headerUserMenuButtonHover)\n }\n button.onmouseout = function () {\n button.setAttribute('style', style.headerUserMenuButton)\n }\n button.addEventListener('click', onClick)\n button.innerText = label\n return button\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuLink (label: string, href: string, target?: string): HTMLElement {\n const link = document.createElement('a')\n link.setAttribute('style', style.headerUserMenuLink)\n link.onmouseover = function () {\n link.setAttribute('style', style.headerUserMenuLinkHover)\n }\n link.onmouseout = function () {\n link.setAttribute('style', style.headerUserMenuLink)\n }\n link.href = href\n link.innerText = label\n if (target) link.target = target\n return link\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createUserMenu (store: IndexedFormula, user: NamedNode, userMenuList: MenuItems[]): Promise<HTMLElement> {\n const fetcher = (<any>store).fetcher\n if (fetcher) {\n // Making sure that Profile is loaded before building menu\n await fetcher.load(user)\n }\n\n const loggedInMenuList = document.createElement('ul')\n loggedInMenuList.setAttribute('style', style.headerUserMenuList)\n if (userMenuList) {\n userMenuList.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n }\n const loggedInMenu = document.createElement('nav')\n\n loggedInMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n loggedInMenu.setAttribute('aria-hidden', 'true')\n loggedInMenu.setAttribute('id', 'loggedInNav')\n loggedInMenu.appendChild(loggedInMenuList)\n\n const loggedInMenuTrigger = document.createElement('button')\n loggedInMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n loggedInMenuTrigger.type = 'button'\n const profileImg = getProfileImg(store, user)\n if (typeof profileImg === 'string') {\n loggedInMenuTrigger.innerHTML = profileImg\n } else {\n loggedInMenuTrigger.appendChild(profileImg)\n }\n\n const loggedInMenuContainer = document.createElement('div')\n loggedInMenuContainer.setAttribute('style', style.headerBannerUserMenuNotDisplayed)\n loggedInMenuContainer.appendChild(loggedInMenuTrigger)\n loggedInMenuContainer.appendChild(loggedInMenu)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, loggedInMenuTrigger, loggedInMenu), 50)\n loggedInMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n loggedInMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n loggedInMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return loggedInMenuContainer\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuItem (child: HTMLElement): HTMLElement {\n const menuProfileItem = document.createElement('li')\n menuProfileItem.setAttribute('style', style.headerUserMenuListItem)\n menuProfileItem.appendChild(child)\n return menuProfileItem\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getProfileImg (store: IndexedFormula, user: NamedNode): string | HTMLElement {\n let profileUrl = null\n try {\n profileUrl = widgets.findImage(user)\n if (!profileUrl) {\n return emptyProfile\n }\n } catch {\n return emptyProfile\n }\n\n const profileImage = document.createElement('div')\n profileImage.setAttribute('style', style.headerUserMenuPhoto)\n profileImage.style.backgroundImage = `url(${profileUrl})`\n return profileImage\n}\n\n/**\n * @internal\n */\nfunction toggleMenu (event: Event, trigger: HTMLButtonElement, menu: HTMLElement): void {\n const isExpanded = trigger.getAttribute('aria-expanded') === 'true'\n const expand = event.type === 'mouseover'\n const close = event.type === 'mouseout'\n if ((isExpanded && expand) || (!isExpanded && close)) {\n return\n }\n trigger.setAttribute('aria-expanded', (!isExpanded).toString())\n menu.setAttribute('aria-hidden', isExpanded.toString())\n}\n"],"mappings":"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"}
@@ -120,6 +120,6 @@ function x(e, t, n) {
120
120
  r && i || !r && a || (t.setAttribute("aria-expanded", (!r).toString()), n.setAttribute("aria-hidden", r.toString()));
121
121
  }
122
122
  //#endregion
123
- export { d as initHeader };
123
+ export { p as createBanner, m as createHelpMenu, h as createLoginSignUpButtons, v as createUserMenu, g as createUserMenuButton, y as createUserMenuItem, _ as createUserMenuLink, b as getProfileImg, d as initHeader, f as rebuildHeader };
124
124
 
125
125
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","names":[],"sources":["../../src/header/index.ts"],"sourcesContent":["/* global EventListenerOrEventListenerObject */\n/*\n This file was copied from mashlib/src/global/header.ts file. It is modified to\n work in solid-ui by adjusting where imported functions are found.\n */\nimport { IndexedFormula, NamedNode } from 'rdflib'\nimport { icons } from '../lib/iconBase'\nimport { authn, authSession } from 'solid-logic'\nimport { loginStatusBox } from '../login/login'\n// import { loginStatusBox, authSession, currentUser } from '../authn/authn'\nimport * as widgets from '../widgets'\nimport { style } from '../lib/style'\nimport { emptyProfile } from './empty-profile'\nimport { getPod, throttle } from '../utils/headerFooterHelpers'\n\n/**\n * menu icons\n*/\nconst DEFAULT_HELP_MENU_ICON = icons.iconBase + 'noun_help.svg'\nconst DEFAUL_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg'\n\nexport type MenuItemLink = {\n label: string,\n url: string,\n target?: string\n}\n\nexport type MenuItemButton = {\n label: string,\n onclick: () => void\n}\n\nexport type MenuItems = MenuItemLink | MenuItemButton\n\n/*\n HeaderOptions allow for customizing the logo and menu list. If a logo is not provided the default\n is solid. Menulist will always show a link to logout and to the users profile.\n */\nexport type HeaderOptions = {\n logo?: string,\n helpIcon?: string,\n helpMenuList?: MenuItems[]\n}\n\n/**\n * Initialize header component, the header object returned depends on whether the user is authenticated.\n * @param store the data store\n * @param userMenuList a list of menu items when the user is logged in\n * @param options allow the header to be customized with a personalized logo, help icon and a help menu list of links or buttons.\n * @returns a header for an authenticated user with menu items given or a login screen\n */\nexport async function initHeader (store: IndexedFormula, userMenuList: MenuItems[], options?: HeaderOptions) {\n const header = document.getElementById('PageHeader')\n if (!header) {\n return\n }\n\n const pod = getPod()\n rebuildHeader(header, store, pod, userMenuList, options)()\n authSession.events.on('logout', rebuildHeader(header, store, pod, userMenuList, options))\n authSession.events.on('login', rebuildHeader(header, store, pod, userMenuList, options))\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function rebuildHeader (header: HTMLElement, store: IndexedFormula, pod: NamedNode, userMenuList: MenuItems[], options?: HeaderOptions) {\n return async () => {\n const user = authn.currentUser()\n header.innerHTML = ''\n header.appendChild(await createBanner(store, pod, user, userMenuList, options))\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createBanner (store: IndexedFormula, pod: NamedNode, user: NamedNode | null, userMenuList: MenuItems[], options?: HeaderOptions): Promise<HTMLElement> {\n const podLink = document.createElement('a')\n podLink.href = pod.uri\n podLink.setAttribute('style', style.headerBannerLink)\n const image = document.createElement('img')\n if (options) {\n image.src = options.logo ? options.logo : DEFAUL_SOLID_ICON_URL\n }\n image.setAttribute('style', style.headerBannerIcon)\n podLink.appendChild(image)\n\n const userMenu = user\n ? await createUserMenu(store, user, userMenuList)\n : createLoginSignUpButtons()\n\n const banner = document.createElement('div')\n banner.setAttribute('style', style.headerBanner)\n banner.appendChild(podLink)\n\n const leftSideOfHeader = document.createElement('div')\n leftSideOfHeader.setAttribute('style', style.headerBannerRightMenu)\n leftSideOfHeader.appendChild(userMenu)\n\n if (options && options.helpMenuList) {\n const helpMenu = createHelpMenu(options, options.helpMenuList)\n leftSideOfHeader.appendChild(helpMenu as HTMLDivElement)\n }\n\n banner.appendChild(leftSideOfHeader)\n\n return banner\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createHelpMenu (options: HeaderOptions, helpMenuItems: MenuItems[]) {\n if (!helpMenuItems) return\n const helpMenuList = document.createElement('ul')\n helpMenuList.setAttribute('style', style.headerUserMenuList)\n helpMenuItems.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n\n const helpMenu = document.createElement('nav')\n\n helpMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n helpMenu.setAttribute('aria-hidden', 'true')\n helpMenu.setAttribute('id', 'helperNav')\n helpMenu.appendChild(helpMenuList)\n\n const helpMenuContainer = document.createElement('div')\n helpMenuContainer.setAttribute('style', style.headerBannerUserMenu)\n helpMenuContainer.appendChild(helpMenu)\n\n const helpMenuTrigger = document.createElement('button')\n helpMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n helpMenuTrigger.type = 'button'\n\n const helpMenuIcon = document.createElement('img')\n helpMenuIcon.src = (options && options.helpIcon) ? options.helpIcon : icons.iconBase + DEFAULT_HELP_MENU_ICON\n helpMenuIcon.setAttribute('style', style.headerUserMenuTriggerImg)\n helpMenuContainer.appendChild(helpMenuTrigger)\n helpMenuTrigger.appendChild(helpMenuIcon)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, helpMenuTrigger, helpMenu), 50)\n helpMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n helpMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n helpMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return helpMenuContainer\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createLoginSignUpButtons () {\n const profileLoginButtonPre = document.createElement('div')\n profileLoginButtonPre.setAttribute('style', style.headerBannerLogin)\n profileLoginButtonPre.appendChild(loginStatusBox(document, null, {}))\n return profileLoginButtonPre\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuButton (label: string, onClick: EventListenerOrEventListenerObject): HTMLElement {\n const button = document.createElement('button')\n button.setAttribute('style', style.headerUserMenuButton)\n button.onmouseover = function () {\n button.setAttribute('style', style.headerUserMenuButtonHover)\n }\n button.onmouseout = function () {\n button.setAttribute('style', style.headerUserMenuButton)\n }\n button.addEventListener('click', onClick)\n button.innerText = label\n return button\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuLink (label: string, href: string, target?: string): HTMLElement {\n const link = document.createElement('a')\n link.setAttribute('style', style.headerUserMenuLink)\n link.onmouseover = function () {\n link.setAttribute('style', style.headerUserMenuLinkHover)\n }\n link.onmouseout = function () {\n link.setAttribute('style', style.headerUserMenuLink)\n }\n link.href = href\n link.innerText = label\n if (target) link.target = target\n return link\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createUserMenu (store: IndexedFormula, user: NamedNode, userMenuList: MenuItems[]): Promise<HTMLElement> {\n const fetcher = (<any>store).fetcher\n if (fetcher) {\n // Making sure that Profile is loaded before building menu\n await fetcher.load(user)\n }\n\n const loggedInMenuList = document.createElement('ul')\n loggedInMenuList.setAttribute('style', style.headerUserMenuList)\n if (userMenuList) {\n userMenuList.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n }\n const loggedInMenu = document.createElement('nav')\n\n loggedInMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n loggedInMenu.setAttribute('aria-hidden', 'true')\n loggedInMenu.setAttribute('id', 'loggedInNav')\n loggedInMenu.appendChild(loggedInMenuList)\n\n const loggedInMenuTrigger = document.createElement('button')\n loggedInMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n loggedInMenuTrigger.type = 'button'\n const profileImg = getProfileImg(store, user)\n if (typeof profileImg === 'string') {\n loggedInMenuTrigger.innerHTML = profileImg\n } else {\n loggedInMenuTrigger.appendChild(profileImg)\n }\n\n const loggedInMenuContainer = document.createElement('div')\n loggedInMenuContainer.setAttribute('style', style.headerBannerUserMenuNotDisplayed)\n loggedInMenuContainer.appendChild(loggedInMenuTrigger)\n loggedInMenuContainer.appendChild(loggedInMenu)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, loggedInMenuTrigger, loggedInMenu), 50)\n loggedInMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n loggedInMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n loggedInMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return loggedInMenuContainer\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuItem (child: HTMLElement): HTMLElement {\n const menuProfileItem = document.createElement('li')\n menuProfileItem.setAttribute('style', style.headerUserMenuListItem)\n menuProfileItem.appendChild(child)\n return menuProfileItem\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getProfileImg (store: IndexedFormula, user: NamedNode): string | HTMLElement {\n let profileUrl = null\n try {\n profileUrl = widgets.findImage(user)\n if (!profileUrl) {\n return emptyProfile\n }\n } catch {\n return emptyProfile\n }\n\n const profileImage = document.createElement('div')\n profileImage.setAttribute('style', style.headerUserMenuPhoto)\n profileImage.style.backgroundImage = `url(${profileUrl})`\n return profileImage\n}\n\n/**\n * @internal\n */\nfunction toggleMenu (event: Event, trigger: HTMLButtonElement, menu: HTMLElement): void {\n const isExpanded = trigger.getAttribute('aria-expanded') === 'true'\n const expand = event.type === 'mouseover'\n const close = event.type === 'mouseout'\n if ((isExpanded && expand) || (!isExpanded && close)) {\n return\n }\n trigger.setAttribute('aria-expanded', (!isExpanded).toString())\n menu.setAttribute('aria-hidden', isExpanded.toString())\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","names":[],"sources":["../../src/header/index.ts"],"sourcesContent":["/* global EventListenerOrEventListenerObject */\n/*\n This file was copied from mashlib/src/global/header.ts file. It is modified to\n work in solid-ui by adjusting where imported functions are found.\n */\nimport { IndexedFormula, NamedNode } from 'rdflib'\nimport { icons } from '../lib/iconBase'\nimport { authn, authSession } from 'solid-logic'\nimport { loginStatusBox } from '../login/login'\n// import { loginStatusBox, authSession, currentUser } from '../authn/authn'\nimport * as widgets from '../widgets'\nimport { style } from '../lib/style'\nimport { emptyProfile } from './empty-profile'\nimport { getPod, throttle } from '../utils/headerFooterHelpers'\n\n/**\n * menu icons\n*/\nconst DEFAULT_HELP_MENU_ICON = icons.iconBase + 'noun_help.svg'\nconst DEFAUL_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg'\n\nexport type MenuItemLink = {\n label: string,\n url: string,\n target?: string\n}\n\nexport type MenuItemButton = {\n label: string,\n onclick: () => void\n}\n\nexport type MenuItems = MenuItemLink | MenuItemButton\n\n/*\n HeaderOptions allow for customizing the logo and menu list. If a logo is not provided the default\n is solid. Menulist will always show a link to logout and to the users profile.\n */\nexport type HeaderOptions = {\n logo?: string,\n helpIcon?: string,\n helpMenuList?: MenuItems[]\n}\n\n/**\n * Initialize header component, the header object returned depends on whether the user is authenticated.\n * @param store the data store\n * @param userMenuList a list of menu items when the user is logged in\n * @param options allow the header to be customized with a personalized logo, help icon and a help menu list of links or buttons.\n * @returns a header for an authenticated user with menu items given or a login screen\n */\nexport async function initHeader (store: IndexedFormula, userMenuList: MenuItems[], options?: HeaderOptions) {\n const header = document.getElementById('PageHeader')\n if (!header) {\n return\n }\n\n const pod = getPod()\n rebuildHeader(header, store, pod, userMenuList, options)()\n authSession.events.on('logout', rebuildHeader(header, store, pod, userMenuList, options))\n authSession.events.on('login', rebuildHeader(header, store, pod, userMenuList, options))\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function rebuildHeader (header: HTMLElement, store: IndexedFormula, pod: NamedNode, userMenuList: MenuItems[], options?: HeaderOptions) {\n return async () => {\n const user = authn.currentUser()\n header.innerHTML = ''\n header.appendChild(await createBanner(store, pod, user, userMenuList, options))\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createBanner (store: IndexedFormula, pod: NamedNode, user: NamedNode | null, userMenuList: MenuItems[], options?: HeaderOptions): Promise<HTMLElement> {\n const podLink = document.createElement('a')\n podLink.href = pod.uri\n podLink.setAttribute('style', style.headerBannerLink)\n const image = document.createElement('img')\n if (options) {\n image.src = options.logo ? options.logo : DEFAUL_SOLID_ICON_URL\n }\n image.setAttribute('style', style.headerBannerIcon)\n podLink.appendChild(image)\n\n const userMenu = user\n ? await createUserMenu(store, user, userMenuList)\n : createLoginSignUpButtons()\n\n const banner = document.createElement('div')\n banner.setAttribute('style', style.headerBanner)\n banner.appendChild(podLink)\n\n const leftSideOfHeader = document.createElement('div')\n leftSideOfHeader.setAttribute('style', style.headerBannerRightMenu)\n leftSideOfHeader.appendChild(userMenu)\n\n if (options && options.helpMenuList) {\n const helpMenu = createHelpMenu(options, options.helpMenuList)\n leftSideOfHeader.appendChild(helpMenu as HTMLDivElement)\n }\n\n banner.appendChild(leftSideOfHeader)\n\n return banner\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createHelpMenu (options: HeaderOptions, helpMenuItems: MenuItems[]) {\n if (!helpMenuItems) return\n const helpMenuList = document.createElement('ul')\n helpMenuList.setAttribute('style', style.headerUserMenuList)\n helpMenuItems.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n helpMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n\n const helpMenu = document.createElement('nav')\n\n helpMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n helpMenu.setAttribute('aria-hidden', 'true')\n helpMenu.setAttribute('id', 'helperNav')\n helpMenu.appendChild(helpMenuList)\n\n const helpMenuContainer = document.createElement('div')\n helpMenuContainer.setAttribute('style', style.headerBannerUserMenu)\n helpMenuContainer.appendChild(helpMenu)\n\n const helpMenuTrigger = document.createElement('button')\n helpMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n helpMenuTrigger.type = 'button'\n\n const helpMenuIcon = document.createElement('img')\n helpMenuIcon.src = (options && options.helpIcon) ? options.helpIcon : icons.iconBase + DEFAULT_HELP_MENU_ICON\n helpMenuIcon.setAttribute('style', style.headerUserMenuTriggerImg)\n helpMenuContainer.appendChild(helpMenuTrigger)\n helpMenuTrigger.appendChild(helpMenuIcon)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, helpMenuTrigger, helpMenu), 50)\n helpMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n helpMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n helpMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('helperNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return helpMenuContainer\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createLoginSignUpButtons () {\n const profileLoginButtonPre = document.createElement('div')\n profileLoginButtonPre.setAttribute('style', style.headerBannerLogin)\n profileLoginButtonPre.appendChild(loginStatusBox(document, null, {}))\n return profileLoginButtonPre\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuButton (label: string, onClick: EventListenerOrEventListenerObject): HTMLElement {\n const button = document.createElement('button')\n button.setAttribute('style', style.headerUserMenuButton)\n button.onmouseover = function () {\n button.setAttribute('style', style.headerUserMenuButtonHover)\n }\n button.onmouseout = function () {\n button.setAttribute('style', style.headerUserMenuButton)\n }\n button.addEventListener('click', onClick)\n button.innerText = label\n return button\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuLink (label: string, href: string, target?: string): HTMLElement {\n const link = document.createElement('a')\n link.setAttribute('style', style.headerUserMenuLink)\n link.onmouseover = function () {\n link.setAttribute('style', style.headerUserMenuLinkHover)\n }\n link.onmouseout = function () {\n link.setAttribute('style', style.headerUserMenuLink)\n }\n link.href = href\n link.innerText = label\n if (target) link.target = target\n return link\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport async function createUserMenu (store: IndexedFormula, user: NamedNode, userMenuList: MenuItems[]): Promise<HTMLElement> {\n const fetcher = (<any>store).fetcher\n if (fetcher) {\n // Making sure that Profile is loaded before building menu\n await fetcher.load(user)\n }\n\n const loggedInMenuList = document.createElement('ul')\n loggedInMenuList.setAttribute('style', style.headerUserMenuList)\n if (userMenuList) {\n userMenuList.forEach(function (menuItem) {\n const menuItemType: string = (menuItem as MenuItemLink).url ? 'url' : 'onclick'\n if (menuItemType === 'url') {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuLink(menuItem.label, (menuItem as MenuItemLink).url, (menuItem as MenuItemLink).target)))\n } else {\n loggedInMenuList.appendChild(createUserMenuItem(createUserMenuButton(menuItem.label, (menuItem as MenuItemButton).onclick)))\n }\n })\n }\n const loggedInMenu = document.createElement('nav')\n\n loggedInMenu.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n loggedInMenu.setAttribute('aria-hidden', 'true')\n loggedInMenu.setAttribute('id', 'loggedInNav')\n loggedInMenu.appendChild(loggedInMenuList)\n\n const loggedInMenuTrigger = document.createElement('button')\n loggedInMenuTrigger.setAttribute('style', style.headerUserMenuTrigger)\n loggedInMenuTrigger.type = 'button'\n const profileImg = getProfileImg(store, user)\n if (typeof profileImg === 'string') {\n loggedInMenuTrigger.innerHTML = profileImg\n } else {\n loggedInMenuTrigger.appendChild(profileImg)\n }\n\n const loggedInMenuContainer = document.createElement('div')\n loggedInMenuContainer.setAttribute('style', style.headerBannerUserMenuNotDisplayed)\n loggedInMenuContainer.appendChild(loggedInMenuTrigger)\n loggedInMenuContainer.appendChild(loggedInMenu)\n\n const throttledMenuToggle = throttle((event: Event) => toggleMenu(event, loggedInMenuTrigger, loggedInMenu), 50)\n loggedInMenuTrigger.addEventListener('click', throttledMenuToggle)\n let timer = setTimeout(() => null, 0)\n loggedInMenuContainer.addEventListener('mouseover', event => {\n clearTimeout(timer)\n throttledMenuToggle(event)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenu)\n })\n loggedInMenuContainer.addEventListener('mouseout', event => {\n timer = setTimeout(() => throttledMenuToggle(event), 200)\n const nav = document.getElementById('loggedInNav')\n nav?.setAttribute('style', style.headerUserMenuNavigationMenuNotDisplayed)\n })\n\n return loggedInMenuContainer\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function createUserMenuItem (child: HTMLElement): HTMLElement {\n const menuProfileItem = document.createElement('li')\n menuProfileItem.setAttribute('style', style.headerUserMenuListItem)\n menuProfileItem.appendChild(child)\n return menuProfileItem\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getProfileImg (store: IndexedFormula, user: NamedNode): string | HTMLElement {\n let profileUrl = null\n try {\n profileUrl = widgets.findImage(user)\n if (!profileUrl) {\n return emptyProfile\n }\n } catch {\n return emptyProfile\n }\n\n const profileImage = document.createElement('div')\n profileImage.setAttribute('style', style.headerUserMenuPhoto)\n profileImage.style.backgroundImage = `url(${profileUrl})`\n return profileImage\n}\n\n/**\n * @internal\n */\nfunction toggleMenu (event: Event, trigger: HTMLButtonElement, menu: HTMLElement): void {\n const isExpanded = trigger.getAttribute('aria-expanded') === 'true'\n const expand = event.type === 'mouseover'\n const close = event.type === 'mouseout'\n if ((isExpanded && expand) || (!isExpanded && close)) {\n return\n }\n trigger.setAttribute('aria-expanded', (!isExpanded).toString())\n menu.setAttribute('aria-hidden', isExpanded.toString())\n}\n"],"mappings":"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"}