solid-panes 4.4.2-2 → 4.4.2-4

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 (410) hide show
  1. package/README.md +10 -10
  2. package/dist/RDFXMLPane.d.ts +2 -3
  3. package/dist/RDFXMLPane2.cjs.js +3 -0
  4. package/dist/RDFXMLPane2.cjs.js.map +1 -0
  5. package/dist/RDFXMLPane2.esm.js +55 -0
  6. package/dist/RDFXMLPane2.esm.js.map +1 -0
  7. package/dist/_virtual/_rolldown/runtime.cjs.js +1 -0
  8. package/dist/_virtual/~icons/lucide/help-circle.cjs.js +2 -0
  9. package/dist/_virtual/~icons/lucide/help-circle.cjs.js.map +1 -0
  10. package/dist/_virtual/~icons/lucide/help-circle.esm.js +11 -0
  11. package/dist/_virtual/~icons/lucide/help-circle.esm.js.map +1 -0
  12. package/dist/_virtual/~icons/lucide/user.cjs.js +2 -0
  13. package/dist/_virtual/~icons/lucide/user.cjs.js.map +1 -0
  14. package/dist/_virtual/~icons/lucide/user.esm.js +11 -0
  15. package/dist/_virtual/~icons/lucide/user.esm.js.map +1 -0
  16. package/dist/audio/audioPane.cjs.js +2 -0
  17. package/dist/audio/audioPane.cjs.js.map +1 -0
  18. package/dist/audio/audioPane.esm.js +96 -0
  19. package/dist/audio/audioPane.esm.js.map +1 -0
  20. package/dist/classInstancePane.cjs.js +2 -0
  21. package/dist/classInstancePane.cjs.js.map +1 -0
  22. package/dist/classInstancePane.esm.js +50 -0
  23. package/dist/classInstancePane.esm.js.map +1 -0
  24. package/dist/components/header/Header.cjs.js +19 -0
  25. package/dist/components/header/Header.cjs.js.map +1 -0
  26. package/dist/components/header/Header.d.ts +8 -0
  27. package/dist/components/header/Header.d.ts.map +1 -0
  28. package/dist/components/header/Header.esm.js +228 -0
  29. package/dist/components/header/Header.esm.js.map +1 -0
  30. package/dist/components/header/Header.styles.cjs.js +2 -0
  31. package/dist/components/header/Header.styles.cjs.js.map +1 -0
  32. package/dist/components/header/Header.styles.esm.js +7 -0
  33. package/dist/components/header/Header.styles.esm.js.map +1 -0
  34. package/dist/components/header/index.cjs.js +1 -0
  35. package/dist/components/header/index.d.ts +4 -0
  36. package/dist/components/header/index.d.ts.map +1 -0
  37. package/dist/components/header/index.esm.js +1 -0
  38. package/dist/dashboard/basicPreferences.cjs.js +2 -0
  39. package/dist/dashboard/basicPreferences.cjs.js.map +1 -0
  40. package/dist/dashboard/basicPreferences.d.ts +1 -1
  41. package/dist/dashboard/basicPreferences.esm.js +70 -0
  42. package/dist/dashboard/basicPreferences.esm.js.map +1 -0
  43. package/dist/dashboard/dashboardPane.cjs.js +2 -0
  44. package/dist/dashboard/dashboardPane.cjs.js.map +1 -0
  45. package/dist/dashboard/dashboardPane.d.ts +1 -1
  46. package/dist/dashboard/dashboardPane.esm.js +7 -0
  47. package/dist/dashboard/dashboardPane.esm.js.map +1 -0
  48. package/dist/dashboard/homepage.cjs.js +2 -0
  49. package/dist/dashboard/homepage.cjs.js.map +1 -0
  50. package/dist/dashboard/homepage.d.ts +1 -1
  51. package/dist/dashboard/homepage.esm.js +26 -0
  52. package/dist/dashboard/homepage.esm.js.map +1 -0
  53. package/dist/dashboard/ontologyData.cjs.js +37 -0
  54. package/dist/dashboard/ontologyData.cjs.js.map +1 -0
  55. package/dist/dashboard/ontologyData.esm.js +6 -0
  56. package/dist/dashboard/ontologyData.esm.js.map +1 -0
  57. package/dist/dashboard/preferencesFormText.cjs.js +20 -0
  58. package/dist/dashboard/preferencesFormText.cjs.js.map +1 -0
  59. package/dist/dashboard/preferencesFormText.esm.js +6 -0
  60. package/dist/dashboard/preferencesFormText.esm.js.map +1 -0
  61. package/dist/dataContentPane.d.ts +2 -3
  62. package/dist/dataContentPane2.cjs.js +2 -0
  63. package/dist/dataContentPane2.cjs.js.map +1 -0
  64. package/dist/dataContentPane2.esm.js +109 -0
  65. package/dist/dataContentPane2.esm.js.map +1 -0
  66. package/dist/defaultPane.d.ts +2 -3
  67. package/dist/defaultPane2.cjs.js +2 -0
  68. package/dist/defaultPane2.cjs.js.map +1 -0
  69. package/dist/defaultPane2.esm.js +41 -0
  70. package/dist/defaultPane2.esm.js.map +1 -0
  71. package/dist/dev.d.ts +10 -0
  72. package/dist/dev.d.ts.map +1 -0
  73. package/dist/dokieli/dokieliPane.cjs.js +2 -0
  74. package/dist/dokieli/dokieliPane.cjs.js.map +1 -0
  75. package/dist/dokieli/dokieliPane.esm.js +39 -0
  76. package/dist/dokieli/dokieliPane.esm.js.map +1 -0
  77. package/dist/dokieli/{new.js → new.cjs.js} +4 -10
  78. package/dist/dokieli/new.cjs.js.map +1 -0
  79. package/dist/dokieli/new.esm.js +6 -0
  80. package/dist/dokieli/new.esm.js.map +1 -0
  81. package/dist/form/pane.cjs.js +4 -0
  82. package/dist/form/pane.cjs.js.map +1 -0
  83. package/dist/form/pane.d.ts +1 -2
  84. package/dist/form/pane.esm.js +121 -0
  85. package/dist/form/pane.esm.js.map +1 -0
  86. package/dist/home/homePane.cjs.js +2 -0
  87. package/dist/home/homePane.cjs.js.map +1 -0
  88. package/dist/home/homePane.d.ts +1 -1
  89. package/dist/home/homePane.esm.js +35 -0
  90. package/dist/home/homePane.esm.js.map +1 -0
  91. package/dist/humanReadablePane.d.ts +2 -3
  92. package/dist/humanReadablePane2.cjs.js +2 -0
  93. package/dist/humanReadablePane2.cjs.js.map +1 -0
  94. package/dist/humanReadablePane2.esm.js +123 -0
  95. package/dist/humanReadablePane2.esm.js.map +1 -0
  96. package/dist/icons/dashboard.cjs.js +2 -0
  97. package/dist/icons/dashboard.cjs.js.map +1 -0
  98. package/dist/icons/dashboard.esm.js +6 -0
  99. package/dist/icons/dashboard.esm.js.map +1 -0
  100. package/dist/icons/folder.cjs.js +2 -0
  101. package/dist/icons/folder.cjs.js.map +1 -0
  102. package/dist/icons/folder.esm.js +6 -0
  103. package/dist/icons/folder.esm.js.map +1 -0
  104. package/dist/icons/friends.cjs.js +2 -0
  105. package/dist/icons/friends.cjs.js.map +1 -0
  106. package/dist/icons/friends.esm.js +6 -0
  107. package/dist/icons/friends.esm.js.map +1 -0
  108. package/dist/icons/iconHelper.cjs.js +2 -0
  109. package/dist/icons/iconHelper.cjs.js.map +1 -0
  110. package/dist/icons/iconHelper.esm.js +17 -0
  111. package/dist/icons/iconHelper.esm.js.map +1 -0
  112. package/dist/icons/{menu.svg → menu.cjs.js} +3 -2
  113. package/dist/icons/menu.cjs.js.map +1 -0
  114. package/dist/icons/menu.esm.js +6 -0
  115. package/dist/icons/menu.esm.js.map +1 -0
  116. package/dist/icons/person.cjs.js +2 -0
  117. package/dist/icons/person.cjs.js.map +1 -0
  118. package/dist/icons/person.esm.js +6 -0
  119. package/dist/icons/person.esm.js.map +1 -0
  120. package/dist/imagePane.d.ts +2 -3
  121. package/dist/imagePane2.cjs.js +2 -0
  122. package/dist/imagePane2.cjs.js.map +1 -0
  123. package/dist/imagePane2.esm.js +32 -0
  124. package/dist/imagePane2.esm.js.map +1 -0
  125. package/dist/index.cjs.js +2 -0
  126. package/dist/index.cjs.js.map +1 -0
  127. package/dist/index.d.ts +4 -4
  128. package/dist/index.esm.js +26 -0
  129. package/dist/index.esm.js.map +1 -0
  130. package/dist/internal/internalPane.d.ts +1 -2
  131. package/dist/internal/internalPane2.cjs.js +2 -0
  132. package/dist/internal/internalPane2.cjs.js.map +1 -0
  133. package/dist/internal/internalPane2.esm.js +104 -0
  134. package/dist/internal/internalPane2.esm.js.map +1 -0
  135. package/dist/mainPage/footer.cjs.js +2 -0
  136. package/dist/mainPage/footer.cjs.js.map +1 -0
  137. package/dist/mainPage/footer.d.ts +1 -3
  138. package/dist/mainPage/footer.esm.js +18 -0
  139. package/dist/mainPage/footer.esm.js.map +1 -0
  140. package/dist/mainPage/header.cjs.js +2 -0
  141. package/dist/mainPage/header.cjs.js.map +1 -0
  142. package/dist/mainPage/header.d.ts +1 -15
  143. package/dist/mainPage/header.d.ts.map +1 -1
  144. package/dist/mainPage/header.esm.js +25 -0
  145. package/dist/mainPage/header.esm.js.map +1 -0
  146. package/dist/mainPage/index.cjs.js +2 -0
  147. package/dist/mainPage/index.cjs.js.map +1 -0
  148. package/dist/mainPage/index.d.ts +3 -7
  149. package/dist/mainPage/index.d.ts.map +1 -1
  150. package/dist/mainPage/index.esm.js +38 -0
  151. package/dist/mainPage/index.esm.js.map +1 -0
  152. package/dist/mainPage/menu.d.ts +1 -2
  153. package/dist/mainPage/menu2.cjs.js +2 -0
  154. package/dist/mainPage/menu2.cjs.js.map +1 -0
  155. package/dist/mainPage/menu2.esm.js +184 -0
  156. package/dist/mainPage/menu2.esm.js.map +1 -0
  157. package/dist/n3Pane.d.ts +2 -3
  158. package/dist/n3Pane2.cjs.js +3 -0
  159. package/dist/n3Pane2.cjs.js.map +1 -0
  160. package/dist/n3Pane2.esm.js +52 -0
  161. package/dist/n3Pane2.esm.js.map +1 -0
  162. package/dist/outline/context.cjs.js +2 -0
  163. package/dist/outline/context.cjs.js.map +1 -0
  164. package/dist/outline/context.d.ts +3 -3
  165. package/dist/outline/context.esm.js +18 -0
  166. package/dist/outline/context.esm.js.map +1 -0
  167. package/dist/outline/manager2.cjs.js +3 -0
  168. package/dist/outline/manager2.cjs.js.map +1 -0
  169. package/dist/outline/manager2.esm.js +875 -0
  170. package/dist/outline/manager2.esm.js.map +1 -0
  171. package/dist/outline/outlineIcons.cjs.js +2 -0
  172. package/dist/outline/outlineIcons.cjs.js.map +1 -0
  173. package/dist/outline/outlineIcons.esm.js +10 -0
  174. package/dist/outline/outlineIcons.esm.js.map +1 -0
  175. package/dist/outline/propertyViews.cjs.js +2 -0
  176. package/dist/outline/propertyViews.cjs.js.map +1 -0
  177. package/dist/outline/propertyViews.esm.js +19 -0
  178. package/dist/outline/propertyViews.esm.js.map +1 -0
  179. package/dist/outline/queryByExample.cjs.js +2 -0
  180. package/dist/outline/queryByExample.cjs.js.map +1 -0
  181. package/dist/outline/queryByExample.esm.js +25 -0
  182. package/dist/outline/queryByExample.esm.js.map +1 -0
  183. package/dist/outline/userInput.cjs.js +61 -0
  184. package/dist/outline/userInput.cjs.js.map +1 -0
  185. package/dist/outline/userInput.esm.js +784 -0
  186. package/dist/outline/userInput.esm.js.map +1 -0
  187. package/dist/outline/viewAsImage.cjs.js +2 -0
  188. package/dist/outline/viewAsImage.cjs.js.map +1 -0
  189. package/dist/outline/viewAsImage.esm.js +10 -0
  190. package/dist/outline/viewAsImage.esm.js.map +1 -0
  191. package/dist/outline/viewAsMbox.cjs.js +2 -0
  192. package/dist/outline/viewAsMbox.cjs.js.map +1 -0
  193. package/dist/outline/viewAsMbox.esm.js +9 -0
  194. package/dist/outline/viewAsMbox.esm.js.map +1 -0
  195. package/dist/pad/padPane.d.ts +1 -2
  196. package/dist/pad/padPane2.cjs.js +2 -0
  197. package/dist/pad/padPane2.cjs.js.map +1 -0
  198. package/dist/pad/padPane2.esm.js +172 -0
  199. package/dist/pad/padPane2.esm.js.map +1 -0
  200. package/dist/playlist/playlistPane.cjs.js +2 -0
  201. package/dist/playlist/playlistPane.cjs.js.map +1 -0
  202. package/dist/playlist/playlistPane.esm.js +49 -0
  203. package/dist/playlist/playlistPane.esm.js.map +1 -0
  204. package/dist/profileUtils/ownerProfile.cjs.js +2 -0
  205. package/dist/profileUtils/ownerProfile.cjs.js.map +1 -0
  206. package/dist/profileUtils/ownerProfile.d.ts +1 -1
  207. package/dist/profileUtils/ownerProfile.esm.js +50 -0
  208. package/dist/profileUtils/ownerProfile.esm.js.map +1 -0
  209. package/dist/registerPanes.cjs.js +2 -0
  210. package/dist/registerPanes.cjs.js.map +1 -0
  211. package/dist/registerPanes.esm.js +46 -0
  212. package/dist/registerPanes.esm.js.map +1 -0
  213. package/dist/schedule/formsForSchedule.cjs.js +117 -0
  214. package/dist/schedule/formsForSchedule.cjs.js.map +1 -0
  215. package/dist/schedule/formsForSchedule.esm.js +6 -0
  216. package/dist/schedule/formsForSchedule.esm.js.map +1 -0
  217. package/dist/schedule/schedulePane.d.ts +2 -4
  218. package/dist/schedule/schedulePane2.cjs.js +8 -0
  219. package/dist/schedule/schedulePane2.cjs.js.map +1 -0
  220. package/dist/schedule/schedulePane2.esm.js +384 -0
  221. package/dist/schedule/schedulePane2.esm.js.map +1 -0
  222. package/dist/sharing/sharingPane.cjs.js +2 -0
  223. package/dist/sharing/sharingPane.cjs.js.map +1 -0
  224. package/dist/sharing/sharingPane.esm.js +22 -0
  225. package/dist/sharing/sharingPane.esm.js.map +1 -0
  226. package/dist/slideshow/slideshowPane.cjs.js +2 -0
  227. package/dist/slideshow/slideshowPane.cjs.js.map +1 -0
  228. package/dist/slideshow/slideshowPane.esm.js +46 -0
  229. package/dist/slideshow/slideshowPane.esm.js.map +1 -0
  230. package/dist/social/editProfileDetails.cjs.js +2 -0
  231. package/dist/social/editProfileDetails.cjs.js.map +1 -0
  232. package/dist/social/editProfileDetails.d.ts +1 -2
  233. package/dist/social/editProfileDetails.esm.js +12 -0
  234. package/dist/social/editProfileDetails.esm.js.map +1 -0
  235. package/dist/social/icons.cjs.js +82 -0
  236. package/dist/social/icons.cjs.js.map +1 -0
  237. package/dist/social/{icons.js → icons.esm.js} +12 -18
  238. package/dist/social/icons.esm.js.map +1 -0
  239. package/dist/social/socialPane.d.ts +2 -3
  240. package/dist/social/socialPane2.cjs.js +6 -0
  241. package/dist/social/socialPane2.cjs.js.map +1 -0
  242. package/dist/social/socialPane2.esm.js +326 -0
  243. package/dist/social/socialPane2.esm.js.map +1 -0
  244. package/dist/social/socialSections.cjs.js +2 -0
  245. package/dist/social/socialSections.cjs.js.map +1 -0
  246. package/dist/social/socialSections.d.ts +2 -2
  247. package/dist/social/socialSections.esm.js +221 -0
  248. package/dist/social/socialSections.esm.js.map +1 -0
  249. package/dist/social/spinner.cjs.js +1 -0
  250. package/dist/social/spinner.esm.js +1 -0
  251. package/dist/social/triage.cjs.js +2 -0
  252. package/dist/social/triage.cjs.js.map +1 -0
  253. package/dist/social/triage.d.ts +2 -2
  254. package/dist/social/triage.esm.js +44 -0
  255. package/dist/social/triage.esm.js.map +1 -0
  256. package/dist/tabbed/tabbedPane.cjs.js +2 -0
  257. package/dist/tabbed/tabbedPane.cjs.js.map +1 -0
  258. package/dist/tabbed/tabbedPane.d.ts +1 -1
  259. package/dist/tabbed/tabbedPane.esm.js +38 -0
  260. package/dist/tabbed/tabbedPane.esm.js.map +1 -0
  261. package/dist/tableViewPane.cjs.js +2 -0
  262. package/dist/tableViewPane.cjs.js.map +1 -0
  263. package/dist/tableViewPane.esm.js +20 -0
  264. package/dist/tableViewPane.esm.js.map +1 -0
  265. package/dist/transaction/pane.cjs.js +8 -0
  266. package/dist/transaction/pane.cjs.js.map +1 -0
  267. package/dist/transaction/pane.esm.js +212 -0
  268. package/dist/transaction/pane.esm.js.map +1 -0
  269. package/dist/transaction/period.cjs.js +4 -0
  270. package/dist/transaction/period.cjs.js.map +1 -0
  271. package/dist/transaction/period.esm.js +126 -0
  272. package/dist/transaction/period.esm.js.map +1 -0
  273. package/dist/trip/tripPane.cjs.js +2 -0
  274. package/dist/trip/tripPane.cjs.js.map +1 -0
  275. package/dist/trip/tripPane.esm.js +85 -0
  276. package/dist/trip/tripPane.esm.js.map +1 -0
  277. package/dist/trustedApplications/trustedApplications.dom.cjs.js +2 -0
  278. package/dist/trustedApplications/trustedApplications.dom.cjs.js.map +1 -0
  279. package/dist/trustedApplications/trustedApplications.dom.d.ts +1 -1
  280. package/dist/trustedApplications/trustedApplications.dom.esm.js +108 -0
  281. package/dist/trustedApplications/trustedApplications.dom.esm.js.map +1 -0
  282. package/dist/trustedApplications/trustedApplications.utils.cjs.js +2 -0
  283. package/dist/trustedApplications/trustedApplications.utils.cjs.js.map +1 -0
  284. package/dist/trustedApplications/trustedApplications.utils.d.ts +1 -1
  285. package/dist/trustedApplications/trustedApplications.utils.esm.js +20 -0
  286. package/dist/trustedApplications/trustedApplications.utils.esm.js.map +1 -0
  287. package/dist/trustedApplications/trustedApplications.view.cjs.js +2 -0
  288. package/dist/trustedApplications/trustedApplications.view.cjs.js.map +1 -0
  289. package/dist/trustedApplications/trustedApplications.view.d.ts +1 -1
  290. package/dist/trustedApplications/trustedApplications.view.esm.js +41 -0
  291. package/dist/trustedApplications/trustedApplications.view.esm.js.map +1 -0
  292. package/dist/ui/pane.cjs.js +4 -0
  293. package/dist/ui/pane.cjs.js.map +1 -0
  294. package/dist/ui/pane.esm.js +56 -0
  295. package/dist/ui/pane.esm.js.map +1 -0
  296. package/dist/versionInfo.cjs.js +2 -0
  297. package/dist/versionInfo.cjs.js.map +1 -0
  298. package/dist/versionInfo.esm.js +40 -0
  299. package/dist/versionInfo.esm.js.map +1 -0
  300. package/dist/video/videoPane.cjs.js +2 -0
  301. package/dist/video/videoPane.cjs.js.map +1 -0
  302. package/dist/video/videoPane.esm.js +25 -0
  303. package/dist/video/videoPane.esm.js.map +1 -0
  304. package/package.json +35 -62
  305. package/dist/0314353e28ce6e5539af.svg +0 -9
  306. package/dist/04567ff683933c35c465.png +0 -0
  307. package/dist/10163fd9b5a0e00d63a0.png +0 -0
  308. package/dist/1234dcb2eec2e45f252b.png +0 -0
  309. package/dist/20899934157df4db56cb.png +0 -0
  310. package/dist/33760bf79f097f449da5.png +0 -0
  311. package/dist/4cceba29ab33b1ddd9bb.svg +0 -6
  312. package/dist/578d2b6ed32e7624164e.png +0 -0
  313. package/dist/5f62a5b2b7e99b9640c7.png +0 -0
  314. package/dist/6525766ecd288ec60129.png +0 -0
  315. package/dist/7800be6f6c4b5b0f4f20.png +0 -0
  316. package/dist/7b7538c6f6b317968009.svg +0 -9
  317. package/dist/92d03142abe6efc0b42d.svg +0 -6
  318. package/dist/976473cf5fe24d657d4b.png +0 -0
  319. package/dist/RDFXMLPane.css +0 -70
  320. package/dist/RDFXMLPane.js +0 -100
  321. package/dist/argument/argumentPane.js +0 -60
  322. package/dist/attach/attachPane.js +0 -393
  323. package/dist/audio/audioPane.js +0 -181
  324. package/dist/bda84f59e7216675a208.png +0 -0
  325. package/dist/cd68e8f3990ba8b2139e.png +0 -0
  326. package/dist/classInstancePane.js +0 -91
  327. package/dist/dashboard/basicPreferences.js +0 -147
  328. package/dist/dashboard/dashboardPane.js +0 -73
  329. package/dist/dashboard/homepage.js +0 -42
  330. package/dist/dataContentPane.css +0 -271
  331. package/dist/dataContentPane.js +0 -226
  332. package/dist/defaultPane.css +0 -97
  333. package/dist/defaultPane.js +0 -81
  334. package/dist/dokieli/dokieliPane.js +0 -74
  335. package/dist/e7074a7e2cb69e51cfd3.png +0 -0
  336. package/dist/f3772696fb7ee53c23d8.png +0 -0
  337. package/dist/form/formPane.css +0 -120
  338. package/dist/form/pane.js +0 -250
  339. package/dist/home/homePane.js +0 -74
  340. package/dist/humanReadablePane.css +0 -129
  341. package/dist/humanReadablePane.js +0 -243
  342. package/dist/icons/clock.svg +0 -7
  343. package/dist/icons/comment.svg +0 -6
  344. package/dist/icons/dashboard.svg +0 -9
  345. package/dist/icons/downArrow.svg +0 -6
  346. package/dist/icons/folder.svg +0 -6
  347. package/dist/icons/friends.svg +0 -9
  348. package/dist/icons/help.svg +0 -8
  349. package/dist/icons/iconHelper.js +0 -23
  350. package/dist/icons/person.svg +0 -6
  351. package/dist/icons/personInCircle.svg +0 -8
  352. package/dist/icons/sharing.svg +0 -10
  353. package/dist/icons/signOut.svg +0 -8
  354. package/dist/icons/signUp.svg +0 -9
  355. package/dist/icons/star.svg +0 -3
  356. package/dist/imagePane.css +0 -4
  357. package/dist/imagePane.js +0 -67
  358. package/dist/index.js +0 -123
  359. package/dist/internal/internalPane.css +0 -14
  360. package/dist/internal/internalPane.js +0 -183
  361. package/dist/mainPage/footer.js +0 -29
  362. package/dist/mainPage/header.js +0 -203
  363. package/dist/mainPage/index.js +0 -78
  364. package/dist/mainPage/menu.css +0 -243
  365. package/dist/mainPage/menu.js +0 -449
  366. package/dist/microblogPane/mbStyle.css +0 -267
  367. package/dist/microblogPane/microblogPane.js +0 -1031
  368. package/dist/n3Pane.css +0 -49
  369. package/dist/n3Pane.js +0 -88
  370. package/dist/outline/context.js +0 -21
  371. package/dist/outline/manager.css +0 -78
  372. package/dist/outline/manager.js +0 -2115
  373. package/dist/outline/outlineIcons.js +0 -126
  374. package/dist/outline/propertyViews.js +0 -43
  375. package/dist/outline/queryByExample.js +0 -285
  376. package/dist/outline/userInput.js +0 -1821
  377. package/dist/outline/viewAsImage.js +0 -14
  378. package/dist/outline/viewAsMbox.js +0 -21
  379. package/dist/pad/padPane.css +0 -40
  380. package/dist/pad/padPane.js +0 -421
  381. package/dist/playlist/playlistPane.js +0 -119
  382. package/dist/profileUtils/ownerProfile.js +0 -84
  383. package/dist/registerPanes.js +0 -145
  384. package/dist/schedule/schedulePane.css +0 -294
  385. package/dist/schedule/schedulePane.js +0 -1022
  386. package/dist/sharing/sharingPane.js +0 -48
  387. package/dist/slideshow/slideshowPane.js +0 -79
  388. package/dist/social/editProfileDetails.js +0 -362
  389. package/dist/social/socialPane.css +0 -1464
  390. package/dist/social/socialPane.js +0 -651
  391. package/dist/social/socialSections.js +0 -393
  392. package/dist/social/spinner.js +0 -13
  393. package/dist/social/triage.js +0 -79
  394. package/dist/solid-panes.js +0 -87502
  395. package/dist/solid-panes.js.map +0 -1
  396. package/dist/solid-panes.min.js +0 -3811
  397. package/dist/solid-panes.min.js.map +0 -1
  398. package/dist/styles/tabbedtab.css +0 -1066
  399. package/dist/styles/utilities.css +0 -5
  400. package/dist/tabbed/tabbedPane.js +0 -59
  401. package/dist/tableViewPane.js +0 -56
  402. package/dist/transaction/pane.js +0 -477
  403. package/dist/transaction/period.js +0 -323
  404. package/dist/trip/tripPane.js +0 -174
  405. package/dist/trustedApplications/trustedApplications.dom.js +0 -145
  406. package/dist/trustedApplications/trustedApplications.utils.js +0 -23
  407. package/dist/trustedApplications/trustedApplications.view.js +0 -55
  408. package/dist/ui/pane.js +0 -146
  409. package/dist/versionInfo.js +0 -41
  410. package/dist/video/videoPane.js +0 -42
@@ -1,1022 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.schedulePane = void 0;
7
- var UI = _interopRequireWildcard(require("solid-ui"));
8
- var _solidLogic = require("solid-logic");
9
- var $rdf = _interopRequireWildcard(require("rdflib"));
10
- require("./schedulePane.css");
11
- require("../styles/utilities.css");
12
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
- /* Scheduler Pane
14
- **
15
- **
16
- */
17
- /* global alert */
18
- /* babel-plugin-inline-import './formsForSchedule.ttl' */
19
- const formText = "@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix cal: <http://www.w3.org/2002/12/cal/ical#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix sched: <http://www.w3.org/ns/pim/schedule#>.\n\n cal:Vevent ui:annotationForm <#form2>, <#form3>; ui:creationForm <#form1> .\n\n<#bigForm>\n dc:title\n \"Schedule event (single form).\";\n a ui:Group;\n ui:parts ( <#form1> <#form2> <#form3> ).\n\n<#form1>\n dc:title\n \"Schedule an event (wizard)\";\n a ui:Form;\n ui:parts (\n <#form1header>\n <#eventTitle>\n <#eventLocation>\n <#eventType>\n <#eventSwitch>\n <#eventComment>\n <#eventAuthor> ).\n\n<#form1header> a ui:Heading; ui:contents \"Schedule an event\" .\n\n<#eventTitle>\n a ui:SingleLineTextField;\n ui:maxLength\n \"128\";\n ui:property\n cal:summary;\n ui:size\n \"40\".\n\n<#eventLocation>\n a ui:SingleLineTextField;\n ui:maxLength\n \"512\";\n ui:property\n cal:location;\n ui:size\n \"40\".\n\n<#eventType> a ui:BooleanField;\n ui:property sched:allDay;\n ui:default true . # Used to be the only way\n\n<#eventSwitch> a ui:Options;\n ui:dependingOn sched:allDay;\n ui:case [ ui:for true; ui:use <#AllDayForm> ];\n ui:case [ ui:for false; ui:use <#NotAllDayForm> ].\n\n <#AllDayForm> a ui:IntegerField ;\n ui:property sched:durationInDays;\n ui:label \"How many days?\";\n ui:min 1;\n ui:default 1 .\n\n <#NotAllDayForm> a ui:IntegerField ;\n ui:property sched:durationInMinutes;\n ui:label \"Duration (mins)\";\n ui:min 5;\n ui:default 55 .\n\n<#eventComment>\n a ui:MultiLineTextField;\n# ui:maxLength\n# \"1048\";\n# ui:size\n# \"40\".\n ui:property\n cal:comment.\n\n<#eventAuthor>\n a ui:Multiple; ui:min 1; ui:part <#eventAuthorGroup>; ui:property dc:author.\n\n <#eventAuthorGroup> a ui:Group; ui:parts ( <#authorName> <#authorEmail> ) .\n <#authorName> a ui:SingleLineTextField; ui:property foaf:name .\n <#authorEmail> a ui:EmailField; ui:label \"email\"; ui:property foaf:mbox .\n\n\n#####################\n\n<#form2> dc:title \"Select possible days or times\"; a ui:Form;\n ui:parts ( <#id1118132113134> <#possibleSwitch> ).\n\n <#id1118132113134> a ui:Heading; ui:contents \"Time proposals\" .\n\n <#possibleSwitch> a ui:Options;\n ui:dependingOn sched:allDay;\n ui:case [ ui:for true; ui:use <#AllDayForm2> ];\n ui:case [ ui:for false; ui:use <#NotAllDayForm2> ].\n\n <#AllDayForm2>\n a ui:Multiple; ui:min 2; ui:part <#posssibleDate>; ui:property sched:option.\n <#posssibleDate> a ui:DateField; ui:property cal:dtstart; ui:label \"date\".\n\n <#NotAllDayForm2>\n a ui:Multiple; ui:min 2; ui:part <#posssibleTime>; ui:property sched:option.\n <#posssibleTime> a ui:DateTimeField; ui:property cal:dtstart; ui:label \"date and time\".\n\n ##################################\n\n <#form3> dc:title \"Select invited people\"; a ui:Form; ui:parts ( <#id1118132113135> <#id1417314641301b> ) .\n<#id1417314641301b>\n a ui:Multiple; ui:min 1; ui:part <#id1417314674292b>; ui:property sched:invitee.\n <#id1417314674292b> a ui:EmailField; ui:label \"email\"; ui:property foaf:mbox .\n <#id1118132113135> a ui:Heading; ui:contents \"Who to invite\" .\n\n# ENDS\n";
20
- const ns = UI.ns;
21
-
22
- // @@ Give other combos too-- see schedule ontology
23
- const possibleAvailabilities = [ns.sched('No'), ns.sched('Maybe'), ns.sched('Yes')];
24
- function runNextAgendaItem(agenda) {
25
- const nextTask = agenda.shift();
26
- if (nextTask) {
27
- nextTask();
28
- }
29
- }
30
- const schedulePane = exports.schedulePane = {
31
- icon: UI.icons.iconBase + 'noun_346777.svg',
32
- // @@ better?
33
-
34
- name: 'schedule',
35
- audience: [ns.solid('PowerUser')],
36
- // Does the subject deserve an Scheduler pane?
37
- label: function (subject, context) {
38
- const kb = context.session.store;
39
- const t = kb.findTypeURIs(subject);
40
- if (t['http://www.w3.org/ns/pim/schedule#SchedulableEvent']) {
41
- return 'Scheduling poll';
42
- }
43
- return null; // No under other circumstances
44
- },
45
- // Mint a new Schedule poll
46
- mintClass: ns.sched('SchedulableEvent'),
47
- mintNew: function (context, options) {
48
- return new Promise(function (resolve, reject) {
49
- const ns = UI.ns;
50
- const kb = context.session.store;
51
- let newBase = options.newBase;
52
- const thisInstance = options.useExisting || $rdf.sym(options.newBase + 'index.ttl#this');
53
- const complainIfBad = function (ok, body) {
54
- if (ok) return;
55
- console.log('Error in Schedule Pane: Error constructing new scheduler: ' + body);
56
- reject(new Error(body));
57
- };
58
-
59
- // ////////////////////// Accesss control
60
-
61
- // Two constiations of ACL for this app, public read and public read/write
62
- // In all cases owner has read write control
63
-
64
- const genACLtext = function (docURI, aclURI, allWrite) {
65
- const g = $rdf.graph();
66
- const auth = $rdf.Namespace('http://www.w3.org/ns/auth/acl#');
67
- let a = g.sym(aclURI + '#a1');
68
- const acl = g.sym(aclURI);
69
- const doc = g.sym(docURI);
70
- g.add(a, UI.ns.rdf('type'), auth('Authorization'), acl);
71
- g.add(a, auth('accessTo'), doc, acl);
72
- g.add(a, auth('agent'), me, acl);
73
- g.add(a, auth('mode'), auth('Read'), acl);
74
- g.add(a, auth('mode'), auth('Write'), acl);
75
- g.add(a, auth('mode'), auth('Control'), acl);
76
- a = g.sym(aclURI + '#a2');
77
- g.add(a, UI.ns.rdf('type'), auth('Authorization'), acl);
78
- g.add(a, auth('accessTo'), doc, acl);
79
- g.add(a, auth('agentClass'), ns.foaf('Agent'), acl);
80
- g.add(a, auth('mode'), auth('Read'), acl);
81
- if (allWrite) {
82
- g.add(a, auth('mode'), auth('Write'), acl);
83
- }
84
- return $rdf.serialize(acl, g, aclURI, 'text/turtle');
85
- };
86
-
87
- /*
88
- const setACL3 = function (docURI, allWrite, callbackFunction) {
89
- const aclText = genACLtext(docURI, aclDoc.uri, allWrite)
90
- return UI.acl.setACL(docURI, aclText, callbackFunction)
91
- }
92
- */
93
-
94
- const setACL2 = function setACL2(docURI, allWrite, callbackFunction) {
95
- const aclDoc = kb.any(kb.sym(docURI), kb.sym('http://www.iana.org/assignments/link-relations/acl')); // @@ check that this get set by web.js
96
-
97
- if (aclDoc) {
98
- // Great we already know where it is
99
- const aclText = genACLtext(docURI, aclDoc.uri, allWrite);
100
- return fetcher.webOperation('PUT', aclDoc.uri, {
101
- data: aclText,
102
- contentType: 'text/turtle'
103
- }).then(_result => callbackFunction(true)).catch(err => {
104
- callbackFunction(false, err.message);
105
- });
106
- } else {
107
- return fetcher.load(docURI).catch(err => {
108
- callbackFunction(false, 'Getting headers for ACL: ' + err);
109
- }).then(() => {
110
- const aclDoc = kb.any(kb.sym(docURI), kb.sym('http://www.iana.org/assignments/link-relations/acl'));
111
- if (!aclDoc) {
112
- // complainIfBad(false, "No Link rel=ACL header for " + docURI)
113
- throw new Error('No Link rel=ACL header for ' + docURI);
114
- }
115
- const aclText = genACLtext(docURI, aclDoc.uri, allWrite);
116
- return fetcher.webOperation('PUT', aclDoc.uri, {
117
- data: aclText,
118
- contentType: 'text/turtle'
119
- });
120
- }).then(_result => callbackFunction(true)).catch(err => {
121
- callbackFunction(false, err.message);
122
- });
123
- }
124
- };
125
-
126
- // Body of mintNew
127
- const fetcher = kb.fetcher;
128
- const updater = kb.updater;
129
- let me = options.me || _solidLogic.authn.currentUser();
130
- if (!me) {
131
- console.log('MUST BE LOGGED IN');
132
- alert('NOT LOGGED IN');
133
- return;
134
- }
135
- const baseDir = thisInstance.dir();
136
- if (!baseDir) {
137
- throw new Error('Schedule pane needs a base directory to mint a new poll');
138
- }
139
- const base = baseDir.uri;
140
- let newDetailsDoc;
141
- let newInstance;
142
- if (options.useExisting) {
143
- newInstance = options.useExisting;
144
- const existingBaseDir = thisInstance.dir();
145
- if (!existingBaseDir) {
146
- throw new Error('Existing schedule instance needs a containing directory');
147
- }
148
- newBase = existingBaseDir.uri;
149
- newDetailsDoc = newInstance.doc();
150
- // newIndexDoc = null
151
- if (options.newBase) {
152
- throw new Error('mint new scheduler: Illegal - have both new base and existing event');
153
- }
154
- } else {
155
- newDetailsDoc = kb.sym(newBase + 'details.ttl');
156
- // newIndexDoc = kb.sym(newBase + 'index.html')
157
- newInstance = kb.sym(newDetailsDoc.uri + '#event');
158
- }
159
- const newResultsDoc = kb.sym(newBase + 'results.ttl');
160
- const toBeCopied = options.noIndexHTML ? [] : [{
161
- local: 'index.html',
162
- contentType: 'text/html'
163
- }];
164
- const agenda = [];
165
-
166
- // @@ This needs some form of visible progress bar
167
- for (let f = 0; f < toBeCopied.length; f++) {
168
- const item = toBeCopied[f];
169
- const fun = function copyItem(item) {
170
- agenda.push(function () {
171
- const newURI = newBase + item.local;
172
- console.log('Copying ' + base + item.local + ' to ' + newURI);
173
- const setThatACL = function () {
174
- setACL2(newURI, false, function (ok, message) {
175
- if (!ok) {
176
- complainIfBad(ok, 'FAILED to set ACL ' + newURI + ' : ' + message);
177
- console.log('FAILED to set ACL ' + newURI + ' : ' + message);
178
- } else {
179
- runNextAgendaItem(agenda); // beware too much nesting
180
- }
181
- });
182
- };
183
- kb.fetcher.webCopy(base + item.local, newBase + item.local, item.contentType).then(() => _solidLogic.authn.checkUser()).then(webId => {
184
- me = webId;
185
- setThatACL();
186
- }).catch(err => {
187
- console.log('FAILED to copy ' + base + item.local + ' : ' + err.message);
188
- complainIfBad(false, 'FAILED to copy ' + base + item.local + ' : ' + err.message);
189
- });
190
- });
191
- };
192
- fun(item);
193
- }
194
- agenda.push(function createDetailsFile() {
195
- kb.add(newInstance, ns.rdf('type'), ns.sched('SchedulableEvent'), newDetailsDoc);
196
- if (me) {
197
- kb.add(newInstance, ns.dc('author'), me, newDetailsDoc); // Who is sending the invitation?
198
- kb.add(newInstance, ns.foaf('maker'), me, newDetailsDoc); // Uneditable - wh is allowed to edit this?
199
- }
200
- kb.add(newInstance, ns.dc('created'), $rdf.literal(new Date().toISOString(), $rdf.sym('http://www.w3.org/2001/XMLSchema#dateTime')), newDetailsDoc);
201
- kb.add(newInstance, ns.sched('resultsDocument'), newDetailsDoc);
202
- updater.put(newDetailsDoc, kb.statementsMatching(undefined, undefined, undefined, newDetailsDoc), 'text/turtle', function (uri2, ok, message) {
203
- if (ok) {
204
- runNextAgendaItem(agenda);
205
- } else {
206
- complainIfBad(ok, 'FAILED to save new scheduler at: ' + newDetailsDoc + ' : ' + message);
207
- console.log('FAILED to save new scheduler at: ' + newDetailsDoc + ' : ' + message);
208
- }
209
- });
210
- });
211
- agenda.push(function () {
212
- kb.fetcher.webOperation('PUT', newResultsDoc.uri, {
213
- data: '',
214
- contentType: 'text/turtle'
215
- }).then(() => {
216
- runNextAgendaItem(agenda);
217
- }).catch(err => {
218
- complainIfBad(false, 'Failed to initialize empty results file: ' + err.message);
219
- });
220
- });
221
- agenda.push(function () {
222
- setACL2(newResultsDoc.uri, true, function (ok, body) {
223
- complainIfBad(ok, 'Failed to set Read-Write ACL on results file: ' + body);
224
- if (ok) runNextAgendaItem(agenda);
225
- });
226
- });
227
- agenda.push(function () {
228
- setACL2(newDetailsDoc.uri, false, function (ok, body) {
229
- complainIfBad(ok, 'Failed to set read ACL on configuration file: ' + body);
230
- if (ok) runNextAgendaItem(agenda);
231
- });
232
- });
233
- agenda.push(function () {
234
- // give the user links to the new app
235
- console.log('Finished minting new scheduler');
236
- options.newInstance = newInstance;
237
- resolve(options);
238
- });
239
- runNextAgendaItem(agenda);
240
- // Created new data files.
241
- }); // promise
242
- },
243
- // mintNew
244
-
245
- // Render one meeting schedule poll
246
- render: function (subject, context) {
247
- const dom = context.dom;
248
- const kb = context.session.store;
249
- const ns = UI.ns;
250
- const invitation = subject;
251
- const appPathSegment = 'app-when-can-we.w3.org'; // how to allocate this string and connect to
252
-
253
- function applyEnvironmentAttributes(element) {
254
- const environment = context.environment ?? {};
255
- element.dataset.layout = environment.layout ?? 'desktop';
256
- }
257
-
258
- // ////////////////////////////////////////////
259
-
260
- const fetcher = kb.fetcher;
261
- const updater = kb.updater;
262
- let waitingForLogin = false;
263
- const thisInstance = subject;
264
- const detailsDoc = subject.doc();
265
- const baseDir = detailsDoc.dir();
266
- if (!baseDir) {
267
- throw new Error('Schedule pane needs a containing directory for its details document');
268
- }
269
- const base = baseDir.uri;
270
- const resultsDoc = $rdf.sym(base + 'results.ttl');
271
- // const formsURI = base + 'forms.ttl'
272
- // We can't in fact host stuff from there because of CORS
273
- const formsURI = 'https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl';
274
- const form1 = kb.sym(formsURI + '#form1');
275
- const form2 = kb.sym(formsURI + '#form2');
276
- const form3 = kb.sym(formsURI + '#form3');
277
- $rdf.parse(formText, kb, formsURI, 'text/turtle'); // Load forms directly
278
-
279
- // Utility functions
280
-
281
- const complainIfBad = function (ok, message) {
282
- if (!ok) {
283
- div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'));
284
- }
285
- };
286
- const clearElement = function (ele) {
287
- while (ele.firstChild) {
288
- ele.removeChild(ele.firstChild);
289
- }
290
- return ele;
291
- };
292
- const refreshCellColor = function (cell, value) {
293
- const bg = kb.any(value, UI.ns.ui('backgroundColor'));
294
- if (bg) {
295
- cell.classList.add('schedule-pane__cell');
296
- cell.setAttribute('style', 'background-color: ' + bg + ';');
297
- }
298
- };
299
- let me = null;
300
- _solidLogic.authn.checkUser().then(webId => {
301
- me = webId ?? null;
302
- if (logInOutButton) {
303
- logInOutButton.refresh();
304
- }
305
- if (webId && waitingForLogin) {
306
- waitingForLogin = false;
307
- showAppropriateDisplay();
308
- }
309
- });
310
- console.log('me: ' + me); // @@ curently not actually used elsewhere
311
-
312
- // ////////////////////////////// Reproduction: spawn a new instance
313
- //
314
- // Viral growth path: user of app decides to make another instance
315
- //
316
-
317
- const newInstanceButton = function () {
318
- const b = UI.login.newAppInstance(dom, {
319
- noun: 'scheduler',
320
- appPathSegment
321
- }, function (workspace, newBase) {
322
- return initializeNewInstanceInWorkspace($rdf.sym(workspace || newBase));
323
- });
324
- if (b.firstChild instanceof HTMLElement) {
325
- b.firstChild.classList.add('schedule-pane__button');
326
- }
327
- return b;
328
- }; // newInstanceButton
329
-
330
- // /////////////////////// Create new document files for new instance of app
331
-
332
- const initializeNewInstanceInWorkspace = function (ws) {
333
- const uriPrefix = kb.any(ws, ns.space('uriPrefix'));
334
- let newBase = '';
335
- if (!uriPrefix) {
336
- newBase = ws.uri.split('#')[0];
337
- } else {
338
- newBase = uriPrefix.value;
339
- }
340
- if (newBase.slice(-1) !== '/') {
341
- $rdf.log.error(appPathSegment + ': No / at end of uriPrefix ' + newBase); // @@ paramater?
342
- newBase = newBase + '/';
343
- }
344
- const now = new Date();
345
- newBase += appPathSegment + '/id' + now.getTime() + '/'; // unique id
346
-
347
- initializeNewInstanceAtBase(thisInstance, newBase);
348
- };
349
- const initializeNewInstanceAtBase = function (thisInstance, newBase) {
350
- const options = {
351
- thisInstance,
352
- newBase
353
- };
354
- schedulePane.mintNew(context, options).then(function (options) {
355
- if (!options.newInstance) {
356
- throw new Error('New scheduler instance was not returned');
357
- }
358
- const p = div.appendChild(dom.createElement('p'));
359
- p.setAttribute('style', 'font-size: 140%;');
360
- p.innerHTML = 'Your <a href=\'' + options.newInstance.uri + '\'><b>new scheduler</b></a> is ready to be set up. ' + '<br/><br/><a href=\'' + options.newInstance.uri + '\'>Say when you what days work for you.</a>';
361
- }).catch(function (error) {
362
- complainIfBad(false, 'Error createing new scheduler at ' + options.newInstance + ': ' + error);
363
- });
364
- };
365
-
366
- // ///////////////////////
367
-
368
- const getForms = function () {
369
- console.log('getforms()');
370
- getDetails();
371
- /*
372
- fetcher.nowOrWhenFetched(formsURI, undefined, function (ok, body) {
373
- console.log('getforms() ok? ' + ok)
374
- if (!ok) return complainIfBad(ok, body)
375
- getDetails()
376
- })
377
- */
378
- };
379
- const getDetails = function () {
380
- console.log('getDetails()'); // Looking for blank screen hang-up
381
- fetcher.nowOrWhenFetched(detailsDoc.uri, undefined, function (ok, body) {
382
- console.log('getDetails() ok? ' + ok);
383
- if (!ok) return complainIfBad(ok, body);
384
- showAppropriateDisplay();
385
- });
386
- };
387
- const showAppropriateDisplay = function showAppropriateDisplay() {
388
- console.log('showAppropriateDisplay()');
389
- _solidLogic.authn.checkUser().then(webId => {
390
- if (!webId) {
391
- return showSignon();
392
- }
393
-
394
- // On gh-pages, the turtle will not load properly (bad mime type)
395
- // but we can trap it as being a non-editable server.
396
-
397
- if (!kb.updater.editable(detailsDoc.uri, kb) || kb.holds(subject, ns.rdf('type'), ns.wf('TemplateInstance'))) {
398
- // This is read-only example e.g. on github pages, etc
399
- showBootstrap();
400
- return;
401
- }
402
- const ready = kb.any(subject, ns.sched('ready'));
403
- if (!ready) {
404
- showForms();
405
- } else {
406
- // no editing not author
407
- getResults();
408
- }
409
- });
410
- };
411
- const showSignon = function showSignon() {
412
- clearElement(naviMain);
413
- const signonContext = {
414
- div,
415
- dom
416
- };
417
- UI.login.ensureLoggedIn(signonContext).then(context => {
418
- me = context.me ?? null;
419
- waitingForLogin = false; // untested
420
- showAppropriateDisplay();
421
- });
422
- };
423
- const showBootstrap = function showBootstrap() {
424
- const div = clearElement(naviMain);
425
- div.appendChild(UI.login.newAppInstance(dom, {
426
- noun: 'poll',
427
- appPathSegment
428
- }, function (workspace, newBase) {
429
- return initializeNewInstanceInWorkspace($rdf.sym(workspace || newBase));
430
- }));
431
- div.appendChild(dom.createElement('hr')); // @@
432
-
433
- const p = div.appendChild(dom.createElement('p'));
434
- p.textContent = 'Where would you like to store the data for the poll? ' + 'Give the URL of the directory where you would like the data stored.';
435
- const baseField = div.appendChild(dom.createElement('input'));
436
- baseField.setAttribute('type', 'text');
437
- baseField.size = 80; // really a string
438
- baseField.label = 'base URL';
439
- baseField.autocomplete = 'on';
440
- div.appendChild(dom.createElement('br')); // @@
441
-
442
- const button = div.appendChild(dom.createElement('button'));
443
- button.classList.add('schedule-pane__button');
444
- button.textContent = 'Start new poll at this URI';
445
- button.addEventListener('click', function (_e) {
446
- let newBase = baseField.value;
447
- if (newBase.slice(-1) !== '/') {
448
- newBase += '/';
449
- }
450
- initializeNewInstanceAtBase(thisInstance, newBase);
451
- });
452
- };
453
-
454
- // ///////////// The forms to configure the poll
455
-
456
- const doneButton = dom.createElement('button');
457
- const showForms = function () {
458
- clearElement(naviCenter); // Remove refresh button if nec
459
- const div = naviMain;
460
-
461
- // form2 depends on sched:allDay; seed a local default for new polls
462
- if (!kb.any(subject, ns.sched('allDay'))) {
463
- kb.add(subject, ns.sched('allDay'), $rdf.literal('true', $rdf.sym('http://www.w3.org/2001/XMLSchema#boolean')), detailsDoc);
464
- }
465
- const wizard = true;
466
- let currentSlide = 0;
467
- let gotDoneButton = false;
468
- const hasFormControls = function (container) {
469
- return !!container.querySelector('input, select, textarea, button');
470
- };
471
- const asBoolean = function (term, fallback) {
472
- if (!term) return fallback;
473
- const value = (term.value || '').toLowerCase();
474
- if (value === 'true' || value === '1') return true;
475
- if (value === 'false' || value === '0') return false;
476
- return fallback;
477
- };
478
- const renderTimeProposalFallback = function (slide) {
479
- const allDayValue = asBoolean(kb.any(subject, ns.sched('allDay')), true);
480
- const fallbackForm = kb.sym(formsURI + (allDayValue ? '#AllDayForm2' : '#NotAllDayForm2'));
481
- UI.widgets.appendForm(document, slide, {}, subject, fallbackForm, detailsDoc, complainIfBad);
482
- };
483
- const annotateRenderedForm = function (container, includePrimaryFields = false) {
484
- const controls = Array.from(container.querySelectorAll('input, select, textarea'));
485
- controls.forEach(control => {
486
- control.classList.add('schedule-pane__form-control');
487
- if (control.tagName.toLowerCase() === 'textarea') {
488
- control.classList.add('schedule-pane__form-control--textarea');
489
- }
490
- });
491
- const borderedPanels = Array.from(container.querySelectorAll('div[style*="border: 0.05em solid"]'));
492
- borderedPanels.forEach(panel => {
493
- panel.classList.add('schedule-pane__panel');
494
- });
495
- const headings = Array.from(container.querySelectorAll('h3'));
496
- headings.forEach(heading => {
497
- heading.classList.add('schedule-pane__form-heading');
498
- const headingText = (heading.textContent || '').trim().toLowerCase();
499
- if (headingText === 'time proposals') {
500
- heading.classList.add('schedule-pane__form-heading--time-proposals');
501
- heading.closest('.schedule-pane__panel')?.classList.add('schedule-pane__panel--time-proposals');
502
- }
503
- });
504
- if (!includePrimaryFields) {
505
- return;
506
- }
507
- const labels = Array.from(container.querySelectorAll('.formFieldName'));
508
- labels.forEach(labelElement => {
509
- const row = labelElement.parentElement;
510
- const labelText = (labelElement.textContent || '').trim().toLowerCase();
511
- if (!row) return;
512
- if (labelText === 'summary' || labelText === 'location') {
513
- row.classList.add('schedule-pane__field-row--compact');
514
- }
515
- if (labelText === 'comment') {
516
- row.classList.add('schedule-pane__field-row--comment');
517
- }
518
- });
519
- const commentField = container.querySelector('textarea');
520
- const commentFieldWrapper = commentField?.parentElement;
521
- const commentValueCell = commentFieldWrapper?.parentElement;
522
- const commentRow = commentValueCell?.parentElement;
523
- if (commentRow) {
524
- commentRow.classList.add('schedule-pane__field-row--comment');
525
- }
526
- if (commentValueCell) {
527
- commentValueCell.classList.add('schedule-pane__field-value--comment');
528
- }
529
- };
530
- const unwrapSlide = function (slide) {
531
- const firstElement = slide.firstElementChild;
532
- if (!firstElement || slide.childElementCount !== 1) {
533
- return slide;
534
- }
535
- return firstElement;
536
- };
537
- if (wizard) {
538
- const forms = [form1, form2, form3];
539
- const slides = [];
540
- currentSlide = 0;
541
- for (let f = 0; f < forms.length; f++) {
542
- const slide = dom.createElement('div');
543
- UI.widgets.appendForm(document, slide, {}, subject, forms[f], detailsDoc, complainIfBad);
544
- annotateRenderedForm(slide, f === 0);
545
-
546
- // Some stores end up with form2's ui:Options unresolved; force a usable input form.
547
- if (f === 1 && !hasFormControls(slide)) {
548
- renderTimeProposalFallback(slide);
549
- annotateRenderedForm(slide);
550
- }
551
- slides.push(unwrapSlide(slide));
552
- }
553
- const refresh = function () {
554
- clearElement(naviMain).appendChild(slides[currentSlide]);
555
- if (currentSlide === 0) {
556
- b1.setAttribute('disabled', '');
557
- } else {
558
- b1.removeAttribute('disabled');
559
- }
560
- if (currentSlide === slides.length - 1) {
561
- b2.setAttribute('disabled', '');
562
- if (!gotDoneButton) {
563
- // Only expose at last slide seen
564
- naviCenter.appendChild(emailButton); // could also check data shape
565
- naviCenter.appendChild(doneButton); // could also check data shape
566
- gotDoneButton = true;
567
- }
568
- } else {
569
- b2.removeAttribute('disabled');
570
- }
571
- };
572
- const b1 = clearElement(naviLeft).appendChild(dom.createElement('button'));
573
- b1.classList.add('schedule-pane__button');
574
- b1.textContent = '<- go back';
575
- b1.addEventListener('click', function (_e) {
576
- if (currentSlide > 0) {
577
- currentSlide -= 1;
578
- refresh();
579
- }
580
- }, false);
581
- const b2 = clearElement(naviRight).appendChild(dom.createElement('button'));
582
- b2.classList.add('schedule-pane__button');
583
- b2.textContent = 'continue ->';
584
- b2.addEventListener('click', function (_e) {
585
- if (currentSlide < slides.length - 1) {
586
- currentSlide += 1;
587
- refresh();
588
- }
589
- }, false);
590
- refresh();
591
- } else {
592
- // not wizard one big form
593
- // @@@ create the initial config doc if not exist
594
- const table = div.appendChild(dom.createElement('table'));
595
- UI.widgets.appendForm(document, table, {}, subject, form1, detailsDoc, complainIfBad);
596
- annotateRenderedForm(table, true);
597
- UI.widgets.appendForm(document, table, {}, subject, form2, detailsDoc, complainIfBad);
598
- annotateRenderedForm(table);
599
- UI.widgets.appendForm(document, table, {}, subject, form3, detailsDoc, complainIfBad);
600
- annotateRenderedForm(table);
601
- naviCenter.appendChild(doneButton); // could also check data shape
602
- }
603
- // @@@ link config to results
604
-
605
- const insertables = [];
606
- insertables.push($rdf.st(subject, ns.sched('availabilityOptions'), ns.sched('YesNoMaybe'), detailsDoc));
607
- insertables.push($rdf.st(subject, ns.sched('ready'), $rdf.literal(new Date().toISOString(), $rdf.sym('http://www.w3.org/2001/XMLSchema#dateTime')), detailsDoc));
608
- insertables.push($rdf.st(subject, ns.sched('results'), resultsDoc, detailsDoc)); // @@ also link in results
609
-
610
- doneButton.classList.add('schedule-pane__button');
611
- doneButton.textContent = 'Go to poll';
612
- doneButton.addEventListener('click', function (_e) {
613
- if (kb.any(subject, ns.sched('ready'))) {
614
- // already done
615
- getResults();
616
- naviRight.appendChild(emailButton);
617
- } else {
618
- naviRight.appendChild(emailButton);
619
- kb.updater.update([], insertables, function (uri, success, errorBody) {
620
- if (!success) {
621
- complainIfBad(success, errorBody);
622
- } else {
623
- // naviRight.appendChild(emailButton)
624
- getResults();
625
- }
626
- });
627
- }
628
- }, false);
629
- const emailButton = dom.createElement('button');
630
- emailButton.classList.add('schedule-pane__button');
631
- const emailIcon = emailButton.appendChild(dom.createElement('img'));
632
- emailIcon.setAttribute('src', UI.icons.iconBase + 'noun_480183.svg'); // noun_480183.svg
633
- emailIcon.classList.add('schedule-pane__button-icon');
634
- // emailButton.textContent = 'email invitations'
635
- emailButton.addEventListener('click', function (_e) {
636
- const title = kb.anyValue(subject, ns.cal('summary')) || kb.anyValue(subject, ns.dc('title')) || '';
637
- const mailto = 'mailto:' + kb.each(subject, ns.sched('invitee')).map(function (who) {
638
- const mbox = kb.any(who, ns.foaf('mbox'));
639
- return mbox ? mbox.uri.replace('mailto:', '') : '';
640
- }).join(',') + '?subject=' + encodeURIComponent(title + '-- When can we meet?') + '&body=' + encodeURIComponent(title + '\n\nWhen can you?\n\nSee ' + subject + '\n');
641
- // @@ assumed there is a data browser
642
-
643
- console.log('Mail: ' + mailto);
644
- window.location.href = mailto;
645
- }, false);
646
- }; // showForms
647
-
648
- // Ask for each day, what times .. @@ to be added some time
649
- /*
650
- const setTimesOfDay = function () {
651
- const i, j, x, y, slot, cell, day
652
- const insertables = []
653
- const possibleDays = kb.each(invitation, ns.sched('option'))
654
- .map(function (opt) {return kb.any(opt, ns.cal('dtstart'))})
655
- const cellLookup = []
656
- const slots = kb.each(invitation, ns.sched('slot'))
657
- if (slots.length === 0) {
658
- for (i = 0; i < 2; i++) {
659
- slot = UI.widgets.newThing(detailsDoc)
660
- insertables.push($rdf.st(invitation, ns.sched('slot'), slot))
661
- insertables.push($rdf.st(slot, ns.rdfs('label'), 'slot ' + (i + 1)))
662
- for (j = 0; j < possibleDays.length; j++) {
663
- day - possibleDays[j]
664
- x = kb.any(slot, ns.rdfs('label'))
665
- y = kb.any(day, ns.cal('dtstart'))
666
- cell = UI.widgets.newThing(detailsDoc)
667
- cellLookup[x.toNT() + y.toNT()] = cell
668
- insertables.push($rdf.st(slot, ns.sched('cell'), cell))
669
- insertables.push($rdf.st(cell, ns.sched('day'), possibleDays[j]))
670
- }
671
- }
672
- }
673
- const query = new $rdf.Query('TimesOfDay')
674
- const v = {}['day', 'label', 'value', 'slot', 'cell'].map(function (x) {
675
- query.consts.push(v[x] = $rdf.constiable(x)) })
676
- query.pat.add(invitation, ns.sched('slot'), v.slot)
677
- query.pat.add(v.slot, ns.rdfs('label'), v.label)
678
- query.pat.add(v.slot, ns.sched('cell'), v.cell)
679
- query.pat.add(v.cell, ns.sched('timeOfDay'), v.value)
680
- query.pat.add(v.cell, ns.sched('day'), v.day)
681
- const options = {}
682
- options.set_x = kb.each(subject, ns.sched('slot')) // @@@@@ option -> dtstart in future
683
- options.set_x = options.set_x.map(function (opt) { return kb.any(opt, ns.rdfs('label')) })
684
- options.set_y = kb.each(subject, ns.sched('option')); // @@@@@ option -> dtstart in future
685
- options.set_y = options.set_y.map(function (opt) { return kb.any(opt, ns.cal('dtstart')) })
686
- const possibleTimes = kb.each(invitation, ns.sched('option'))
687
- .map(function (opt) { return kb.any(opt, ns.cal('dtstart')) })
688
- const displayTheMatrix = function () {
689
- const matrix = div.appendChild(UI.matrix.matrixForQuery(
690
- dom, query, v.time, v.author, v.value, options, function () {}))
691
- matrix.setAttribute('class', 'matrix')
692
- const refreshButton = dom.createElement('button')
693
- refreshButton.setAttribute('style', inputStyle)
694
- refreshButton.textContent = 'refresh'
695
- refreshButton.addEventListener('click', function (e) {
696
- refreshButton.disabled = true
697
- store.fetcher.nowOrWhenFetched(subject.doc(), undefined, function (ok, body) {
698
- if (!ok) {
699
- console.log('Cant refresh matrix' + body)
700
- } else {
701
- matrix.refresh()
702
- refreshButton.disabled = false
703
- }
704
- })
705
- }, false)
706
- clearElement(naviCenter)
707
- naviCenter.appendChild(refreshButton)
708
- }
709
- const dataPointForNT = []
710
- const doc = resultsDoc
711
- options.set_y = options.set_y.filter(function (z) { return (! z.sameTerm(me)) })
712
- options.set_y.push(me) // Put me on the end
713
- options.cellFunction = function (cell, x, y, value) {
714
- // const point = cellLookup[x.toNT() + y.toNT()]
715
- if (y.sameTerm(me)) {
716
- const callbackFunction = function () { refreshCellColor(cell, value); }; // @@ may need that
717
- const selectOptions = {}
718
- const predicate = ns.sched('timeOfDay')
719
- const cellSubject = dataPointForNT[x.toNT()]
720
- const selector = UI.widgets.makeSelectForOptions(dom, kb, cellSubject, predicate,
721
- possibleAvailabilities, selectOptions, resultsDoc, callbackFunction)
722
- cell.appendChild(selector)
723
- } else if (value !== null) {
724
- cell.textContent = UI.utils.label(value)
725
- }
726
- }
727
- const responses = kb.each(invitation, ns.sched('response'))
728
- const myResponse = null
729
- responses.map(function (r) {
730
- if (kb.holds(r, ns.dc('author'), me)) {
731
- myResponse = r
732
- }
733
- })
734
- const id = UI.widgets.newThing(doc).uri
735
- if (myResponse === null) {
736
- myResponse = $rdf.sym(id + '_response')
737
- insertables.push($rdf.st(invitation, ns.sched('response'), myResponse, doc))
738
- insertables.push($rdf.st(myResponse, ns.dc('author'), me, doc))
739
- } else {
740
- const dps = kb.each(myResponse, ns.sched('cell'))
741
- dps.map(function (dataPoint) {
742
- const time = kb.any(dataPoint, ns.cal('dtstart'))
743
- dataPointForNT[time.toNT()] = dataPoint
744
- })
745
- }
746
- for (let j = 0; j < possibleTimes.length; j++) {
747
- if (dataPointForNT[possibleTimes[j].toNT()]) continue
748
- const dataPoint = $rdf.sym(id + '_' + j)
749
- insertables.push($rdf.st(myResponse, ns.sched('cell'), dataPoint, doc))
750
- insertables.push($rdf.st(dataPoint, ns.cal('dtstart'), possibleTimes[j], doc)) // @@
751
- dataPointForNT[possibleTimes[j].toNT()] = dataPoint
752
- }
753
- if (insertables.length) {
754
- store.updater.update([], insertables, function (uri, success, errorBody) {
755
- if (!success) {
756
- complainIfBad(success, errorBody)
757
- } else {
758
- displayTheMatrix()
759
- }
760
- })
761
- } else { // no insertables
762
- displayTheMatrix()
763
- }
764
- }
765
- */
766
- // end setTimesOfDay
767
-
768
- // Read or create empty results file
769
- function getResults() {
770
- fetcher.nowOrWhenFetched(resultsDoc.uri, undefined, (ok, body, response) => {
771
- if (!ok) {
772
- if (response.status === 404) {
773
- // / Check explicitly for 404 error
774
- console.log('Initializing details file ' + resultsDoc);
775
- updater.put(resultsDoc, [], 'text/turtle', function (uri2, ok, message) {
776
- if (ok) {
777
- clearElement(naviMain);
778
- showResults();
779
- } else {
780
- complainIfBad(ok, 'FAILED to create results file at: ' + resultsDoc.uri + ' : ' + message);
781
- console.log('FAILED to craete results file at: ' + resultsDoc.uri + ' : ' + message);
782
- }
783
- });
784
- } else {
785
- // Other error, not 404 -- do not try to overwite the file
786
- complainIfBad(ok, 'FAILED to read results file: ' + body);
787
- }
788
- } else {
789
- // Happy read
790
- clearElement(naviMain);
791
- showResults();
792
- }
793
- });
794
- }
795
- function showResults() {
796
- // Now the form for responsing to the poll
797
- //
798
-
799
- // div.appendChild(dom.createElement('hr'))
800
-
801
- // const invitation = subject
802
- const title = kb.any(invitation, ns.cal('summary'));
803
- const comment = kb.any(invitation, ns.cal('comment'));
804
- const location = kb.any(invitation, ns.cal('location'));
805
- const div = naviMain;
806
- if (title) div.appendChild(dom.createElement('h3')).textContent = title.value;
807
- if (location) {
808
- div.appendChild(dom.createElement('address')).textContent = location.value;
809
- }
810
- if (comment) {
811
- div.appendChild(dom.createElement('p')).textContent = comment.value;
812
- }
813
- const author = kb.any(invitation, ns.dc('author'));
814
- if (author) {
815
- const authorName = kb.any(author, ns.foaf('name'));
816
- if (authorName) {
817
- div.appendChild(dom.createElement('p')).textContent = authorName.value;
818
- }
819
- }
820
- const query = new $rdf.Query('Responses', 0);
821
- const v = {};
822
- v.time = $rdf.variable('time');
823
- v.author = $rdf.variable('author');
824
- v.value = $rdf.variable('value');
825
- v.resp = $rdf.variable('resp');
826
- v.cell = $rdf.variable('cell');
827
- query.vars.push(v.time, v.author, v.value, v.resp, v.cell);
828
- query.pat.add(invitation, ns.sched('response'), v.resp);
829
- query.pat.add(v.resp, ns.dc('author'), v.author);
830
- query.pat.add(v.resp, ns.sched('cell'), v.cell);
831
- query.pat.add(v.cell, ns.sched('availabilty'), v.value);
832
- query.pat.add(v.cell, ns.cal('dtstart'), v.time);
833
-
834
- // Sort by by person @@@
835
-
836
- const options = {
837
- set_x: [],
838
- set_y: []
839
- };
840
- options.set_x = kb.each(subject, ns.sched('option')); // @@@@@ option -> dtstart in future
841
- options.set_x = options.set_x.map(function (opt) {
842
- return kb.any(opt, ns.cal('dtstart'));
843
- }).filter(function (time) {
844
- return !!time;
845
- });
846
- options.set_y = kb.each(subject, ns.sched('response'));
847
- options.set_y = options.set_y.map(function (resp) {
848
- return kb.any(resp, ns.dc('author'));
849
- }).filter(function (author) {
850
- return !!author;
851
- });
852
- const possibleTimes = kb.each(invitation, ns.sched('option')).map(function (opt) {
853
- return kb.any(opt, ns.cal('dtstart'));
854
- }).filter(function (time) {
855
- return !!time;
856
- });
857
- const displayTheMatrix = function () {
858
- const matrix = div.appendChild(UI.matrix.matrixForQuery(dom, query, v.time, v.author, v.value, options, function () {}));
859
- matrix.setAttribute('class', 'matrix');
860
- const refreshButton = dom.createElement('button');
861
- refreshButton.classList.add('schedule-pane__button');
862
- // refreshButton.textContent = 'refresh' // noun_479395.svg
863
- const refreshIcon = dom.createElement('img');
864
- refreshIcon.setAttribute('src', UI.icons.iconBase + 'noun_479395.svg');
865
- refreshIcon.classList.add('schedule-pane__button-icon');
866
- refreshButton.appendChild(refreshIcon);
867
- refreshButton.addEventListener('click', function (_e) {
868
- refreshButton.disabled = true;
869
- kb.fetcher.refresh(resultsDoc, function (ok, body) {
870
- if (!ok) {
871
- console.log('Cant refresh matrix' + body);
872
- } else {
873
- matrix.refresh();
874
- refreshButton.disabled = false;
875
- }
876
- });
877
- }, false);
878
- clearElement(naviCenter);
879
- naviCenter.appendChild(refreshButton);
880
- };
881
-
882
- // @@ Give other combos too-- see schedule ontology
883
- // const possibleAvailabilities = [ SCHED('No'), SCHED('Maybe'), SCHED('Yes') ]
884
-
885
- // const me = authn.currentUser()
886
-
887
- const dataPointForNT = {};
888
- const loginContext = {
889
- div: naviCenter,
890
- dom
891
- };
892
- UI.login.ensureLoggedIn(loginContext).then(context => {
893
- const me = context.me;
894
- if (!me) {
895
- return;
896
- }
897
- const doc = resultsDoc;
898
- options.set_y = options.set_y.filter(function (z) {
899
- return !z.sameTerm(me);
900
- });
901
- options.set_y.push(me); // Put me on the end
902
-
903
- options.cellFunction = function (cell, x, y, value) {
904
- if (value !== null) {
905
- kb.fetcher.nowOrWhenFetched(value.uri.split('#')[0], undefined, function (ok, _error) {
906
- if (ok) refreshCellColor(cell, value);
907
- });
908
- }
909
- if (y.sameTerm(me)) {
910
- const callbackFunction = function () {
911
- refreshCellColor(cell, value);
912
- return '';
913
- }; // @@ may need that
914
- const selectOptions = {};
915
- const predicate = ns.sched('availabilty');
916
- if (!x) return '';
917
- const cellSubject = dataPointForNT[x.toNT()];
918
- const selector = UI.widgets.makeSelectForOptions(dom, kb, cellSubject, predicate, possibleAvailabilities, selectOptions, resultsDoc, callbackFunction);
919
- cell.appendChild(selector);
920
- } else if (value !== null) {
921
- cell.textContent = UI.utils.label(value);
922
- }
923
- return '';
924
- };
925
- const responses = kb.each(invitation, ns.sched('response'));
926
- let myResponse = null;
927
- responses.forEach(function (r) {
928
- if (kb.holds(r, ns.dc('author'), me)) {
929
- myResponse = r;
930
- }
931
- });
932
- const insertables = []; // list of statements to be stored
933
-
934
- const id = UI.widgets.newThing(doc).uri;
935
- if (myResponse === null) {
936
- myResponse = $rdf.sym(id + '_response');
937
- insertables.push($rdf.st(invitation, ns.sched('response'), myResponse, doc));
938
- insertables.push($rdf.st(myResponse, ns.dc('author'), me, doc));
939
- } else {
940
- const dps = kb.each(myResponse, ns.sched('cell'));
941
- dps.forEach(function (dataPoint) {
942
- const time = kb.any(dataPoint, ns.cal('dtstart'));
943
- if (!time) return;
944
- dataPointForNT[time.toNT()] = dataPoint;
945
- });
946
- }
947
- for (let j = 0; j < possibleTimes.length; j++) {
948
- const possibleTime = possibleTimes[j];
949
- if (!possibleTime) continue;
950
- if (dataPointForNT[possibleTime.toNT()]) continue;
951
- const dataPoint = $rdf.sym(id + '_' + j);
952
- insertables.push($rdf.st(myResponse, ns.sched('cell'), dataPoint, doc));
953
- insertables.push($rdf.st(dataPoint, ns.cal('dtstart'), possibleTime, doc)); // @@
954
- dataPointForNT[possibleTime.toNT()] = dataPoint;
955
- }
956
- if (insertables.length) {
957
- kb.updater.update([], insertables, function (uri, success, errorBody) {
958
- if (!success) {
959
- complainIfBad(success, errorBody);
960
- } else {
961
- displayTheMatrix();
962
- }
963
- });
964
- } else {
965
- // no insertables
966
- displayTheMatrix();
967
- }
968
- }); // @@@@ end of .then
969
-
970
- // If I made this in the first place, allow me to edit it.
971
- // @@ optionally -- allows others to if according to original
972
- const instanceCreator = kb.any(subject, ns.foaf('maker')); // owner?
973
- if (!instanceCreator || !me || instanceCreator.sameTerm(me)) {
974
- const editButton = dom.createElement('button');
975
- editButton.classList.add('schedule-pane__button');
976
- // editButton.textContent = '(Modify the poll)' // noun_344563.svg
977
- const editIcon = dom.createElement('img');
978
- editIcon.setAttribute('src', UI.icons.iconBase + 'noun_344563.svg');
979
- editIcon.classList.add('schedule-pane__button-icon');
980
- editButton.appendChild(editIcon);
981
- editButton.addEventListener('click', function (_e) {
982
- clearElement(div);
983
- showForms();
984
- }, false);
985
- clearElement(naviLeft);
986
- naviLeft.appendChild(editButton);
987
- }
988
-
989
- // div.appendChild(editButton)
990
-
991
- clearElement(naviRight);
992
- naviRight.appendChild(newInstanceButton());
993
- } // showResults
994
-
995
- const div = dom.createElement('div');
996
- div.classList.add('schedule-pane');
997
- applyEnvironmentAttributes(div);
998
- const structure = div.appendChild(dom.createElement('table')); // @@ make responsive style
999
- structure.classList.add('schedule-pane__table');
1000
- const logInOutButton = null;
1001
- /*
1002
- const logInOutButton = UI.login.loginStatusBox(dom, setUser)
1003
- // floating divs lead to a mess
1004
- // logInOutButton.setAttribute('style', 'float: right') // float the beginning of the end
1005
- naviLoginout3.appendChild(logInOutButton)
1006
- logInOutButton.setAttribute('style', 'margin-right: 0em;')
1007
- */
1008
-
1009
- const naviTop = structure.appendChild(dom.createElement('tr'));
1010
- const naviMain = naviTop.appendChild(dom.createElement('td'));
1011
- naviMain.classList.add('schedule-pane__main-cell');
1012
- naviMain.setAttribute('colspan', '3');
1013
- const naviMenu = structure.appendChild(dom.createElement('tr'));
1014
- naviMenu.classList.add('naviMenu', 'schedule-pane__nav');
1015
- const naviLeft = naviMenu.appendChild(dom.createElement('td'));
1016
- const naviCenter = naviMenu.appendChild(dom.createElement('td'));
1017
- const naviRight = naviMenu.appendChild(dom.createElement('td'));
1018
- getForms();
1019
- return div;
1020
- } // render
1021
- }; // property list
1022
- // ends