solid-panes 4.4.2-7 → 4.5.0

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 (534) hide show
  1. package/README.md +40 -10
  2. package/dist/0314353e28ce6e5539af.svg +9 -0
  3. package/dist/04567ff683933c35c465.png +0 -0
  4. package/dist/10163fd9b5a0e00d63a0.png +0 -0
  5. package/dist/1234dcb2eec2e45f252b.png +0 -0
  6. package/dist/20899934157df4db56cb.png +0 -0
  7. package/dist/33760bf79f097f449da5.png +0 -0
  8. package/dist/4cceba29ab33b1ddd9bb.svg +6 -0
  9. package/dist/578d2b6ed32e7624164e.png +0 -0
  10. package/dist/5f62a5b2b7e99b9640c7.png +0 -0
  11. package/dist/6525766ecd288ec60129.png +0 -0
  12. package/dist/7800be6f6c4b5b0f4f20.png +0 -0
  13. package/dist/7b7538c6f6b317968009.svg +9 -0
  14. package/dist/92d03142abe6efc0b42d.svg +6 -0
  15. package/dist/976473cf5fe24d657d4b.png +0 -0
  16. package/dist/RDFXMLPane.css +70 -0
  17. package/dist/RDFXMLPane.d.ts +3 -2
  18. package/dist/RDFXMLPane.js +100 -0
  19. package/dist/argument/argumentPane.js +60 -0
  20. package/dist/attach/attachPane.js +393 -0
  21. package/dist/audio/audioPane.js +181 -0
  22. package/dist/bda84f59e7216675a208.png +0 -0
  23. package/dist/cd68e8f3990ba8b2139e.png +0 -0
  24. package/dist/classInstancePane.js +91 -0
  25. package/dist/dashboard/basicPreferences.d.ts +1 -1
  26. package/dist/dashboard/basicPreferences.js +147 -0
  27. package/dist/dashboard/dashboardPane.d.ts +1 -1
  28. package/dist/dashboard/dashboardPane.js +73 -0
  29. package/dist/dashboard/homepage.d.ts +1 -1
  30. package/dist/dashboard/homepage.js +42 -0
  31. package/dist/dataContentPane.css +271 -0
  32. package/dist/dataContentPane.d.ts +3 -2
  33. package/dist/dataContentPane.js +226 -0
  34. package/dist/defaultPane.css +97 -0
  35. package/dist/defaultPane.d.ts +3 -2
  36. package/dist/defaultPane.js +81 -0
  37. package/dist/dokieli/dokieliPane.js +74 -0
  38. package/dist/dokieli/{new.cjs.js → new.js} +10 -4
  39. package/dist/e7074a7e2cb69e51cfd3.png +0 -0
  40. package/dist/f3772696fb7ee53c23d8.png +0 -0
  41. package/dist/form/formPane.css +120 -0
  42. package/dist/form/pane.d.ts +2 -1
  43. package/dist/form/pane.js +250 -0
  44. package/dist/home/homePane.d.ts +1 -1
  45. package/dist/home/homePane.js +74 -0
  46. package/dist/humanReadablePane.css +129 -0
  47. package/dist/humanReadablePane.d.ts +3 -2
  48. package/dist/humanReadablePane.js +243 -0
  49. package/dist/icons/clock.svg +7 -0
  50. package/dist/icons/comment.svg +6 -0
  51. package/dist/icons/dashboard.svg +9 -0
  52. package/dist/icons/downArrow.svg +6 -0
  53. package/dist/icons/folder.svg +6 -0
  54. package/dist/icons/friends.svg +9 -0
  55. package/dist/icons/help.svg +8 -0
  56. package/dist/icons/iconHelper.js +23 -0
  57. package/dist/icons/menu.svg +8 -0
  58. package/dist/icons/person.svg +6 -0
  59. package/dist/icons/personInCircle.svg +8 -0
  60. package/dist/icons/sharing.svg +10 -0
  61. package/dist/icons/signOut.svg +8 -0
  62. package/dist/icons/signUp.svg +9 -0
  63. package/dist/icons/star.svg +3 -0
  64. package/dist/imagePane.css +4 -0
  65. package/dist/imagePane.d.ts +3 -2
  66. package/dist/imagePane.js +67 -0
  67. package/dist/index.d.ts +4 -4
  68. package/dist/index.js +123 -0
  69. package/dist/internal/internalPane.css +14 -0
  70. package/dist/internal/internalPane.d.ts +2 -1
  71. package/dist/internal/internalPane.js +183 -0
  72. package/dist/mainPage/footer.d.ts +15 -0
  73. package/dist/mainPage/footer.d.ts.map +1 -0
  74. package/dist/mainPage/footer.js +29 -0
  75. package/dist/mainPage/header.d.ts +15 -1
  76. package/dist/mainPage/header.d.ts.map +1 -1
  77. package/dist/mainPage/header.js +203 -0
  78. package/dist/mainPage/index.d.ts +15 -3
  79. package/dist/mainPage/index.d.ts.map +1 -1
  80. package/dist/mainPage/index.js +78 -0
  81. package/dist/mainPage/menu.css +243 -0
  82. package/dist/mainPage/menu.d.ts +7 -0
  83. package/dist/mainPage/menu.d.ts.map +1 -0
  84. package/dist/mainPage/menu.js +436 -0
  85. package/dist/microblogPane/mbStyle.css +267 -0
  86. package/dist/microblogPane/microblogPane.js +1031 -0
  87. package/dist/n3Pane.css +49 -0
  88. package/dist/n3Pane.d.ts +3 -2
  89. package/dist/n3Pane.js +88 -0
  90. package/dist/outline/context.d.ts +3 -3
  91. package/dist/outline/context.js +21 -0
  92. package/dist/outline/manager.css +78 -0
  93. package/dist/outline/manager.js +2115 -0
  94. package/dist/outline/outlineIcons.js +126 -0
  95. package/dist/outline/propertyViews.js +43 -0
  96. package/dist/outline/queryByExample.js +285 -0
  97. package/dist/outline/userInput.js +1821 -0
  98. package/dist/outline/viewAsImage.js +14 -0
  99. package/dist/outline/viewAsMbox.js +21 -0
  100. package/dist/pad/padPane.css +40 -0
  101. package/dist/pad/padPane.d.ts +2 -1
  102. package/dist/pad/padPane.js +421 -0
  103. package/dist/playlist/playlistPane.js +119 -0
  104. package/dist/profileUtils/ownerProfile.d.ts +5 -0
  105. package/dist/profileUtils/ownerProfile.d.ts.map +1 -0
  106. package/dist/profileUtils/ownerProfile.js +84 -0
  107. package/dist/registerPanes.js +145 -0
  108. package/dist/schedule/schedulePane.css +294 -0
  109. package/dist/schedule/schedulePane.d.ts +4 -2
  110. package/dist/schedule/schedulePane.js +1022 -0
  111. package/dist/sharing/sharingPane.js +48 -0
  112. package/dist/slideshow/slideshowPane.js +79 -0
  113. package/dist/social/editProfileDetails.d.ts +2 -1
  114. package/dist/social/editProfileDetails.js +362 -0
  115. package/dist/social/{icons.esm.js → icons.js} +18 -12
  116. package/dist/social/socialPane.css +1464 -0
  117. package/dist/social/socialPane.d.ts +3 -2
  118. package/dist/social/socialPane.js +651 -0
  119. package/dist/social/socialSections.d.ts +2 -2
  120. package/dist/social/socialSections.js +393 -0
  121. package/dist/social/spinner.js +13 -0
  122. package/dist/social/triage.d.ts +2 -2
  123. package/dist/social/triage.js +79 -0
  124. package/dist/solid-panes.js +84629 -0
  125. package/dist/solid-panes.js.map +1 -0
  126. package/dist/solid-panes.min.js +3933 -0
  127. package/dist/solid-panes.min.js.map +1 -0
  128. package/dist/styles/tabbedtab.css +1066 -0
  129. package/dist/styles/utilities.css +5 -0
  130. package/dist/tabbed/tabbedPane.d.ts +1 -1
  131. package/dist/tabbed/tabbedPane.js +59 -0
  132. package/dist/tableViewPane.js +56 -0
  133. package/dist/transaction/pane.js +477 -0
  134. package/dist/transaction/period.js +323 -0
  135. package/dist/trip/tripPane.js +174 -0
  136. package/dist/trustedApplications/trustedApplications.dom.d.ts +1 -1
  137. package/dist/trustedApplications/trustedApplications.dom.js +145 -0
  138. package/dist/trustedApplications/trustedApplications.utils.d.ts +1 -1
  139. package/dist/trustedApplications/trustedApplications.utils.js +23 -0
  140. package/dist/trustedApplications/trustedApplications.view.d.ts +1 -1
  141. package/dist/trustedApplications/trustedApplications.view.js +55 -0
  142. package/dist/ui/pane.js +146 -0
  143. package/dist/versionInfo.js +41 -0
  144. package/dist/video/videoPane.js +42 -0
  145. package/package.json +66 -51
  146. package/dist/RDFXMLPane2.cjs.js +0 -3
  147. package/dist/RDFXMLPane2.cjs.js.map +0 -1
  148. package/dist/RDFXMLPane2.esm.js +0 -55
  149. package/dist/RDFXMLPane2.esm.js.map +0 -1
  150. package/dist/_virtual/_rolldown/runtime.cjs.js +0 -1
  151. package/dist/_virtual/~icons/lucide/arrow-left.cjs.js +0 -2
  152. package/dist/_virtual/~icons/lucide/arrow-left.cjs.js.map +0 -1
  153. package/dist/_virtual/~icons/lucide/arrow-left.esm.js +0 -11
  154. package/dist/_virtual/~icons/lucide/arrow-left.esm.js.map +0 -1
  155. package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js +0 -2
  156. package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js.map +0 -1
  157. package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js +0 -11
  158. package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js.map +0 -1
  159. package/dist/_virtual/~icons/lucide/folder-open.cjs.js +0 -2
  160. package/dist/_virtual/~icons/lucide/folder-open.cjs.js.map +0 -1
  161. package/dist/_virtual/~icons/lucide/folder-open.esm.js +0 -11
  162. package/dist/_virtual/~icons/lucide/folder-open.esm.js.map +0 -1
  163. package/dist/_virtual/~icons/lucide/globe.cjs.js +0 -2
  164. package/dist/_virtual/~icons/lucide/globe.cjs.js.map +0 -1
  165. package/dist/_virtual/~icons/lucide/globe.esm.js +0 -11
  166. package/dist/_virtual/~icons/lucide/globe.esm.js.map +0 -1
  167. package/dist/_virtual/~icons/lucide/help-circle.cjs.js +0 -2
  168. package/dist/_virtual/~icons/lucide/help-circle.cjs.js.map +0 -1
  169. package/dist/_virtual/~icons/lucide/help-circle.esm.js +0 -11
  170. package/dist/_virtual/~icons/lucide/help-circle.esm.js.map +0 -1
  171. package/dist/_virtual/~icons/lucide/layout-dashboard.cjs.js +0 -2
  172. package/dist/_virtual/~icons/lucide/layout-dashboard.cjs.js.map +0 -1
  173. package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js +0 -11
  174. package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js.map +0 -1
  175. package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js +0 -2
  176. package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js.map +0 -1
  177. package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js +0 -11
  178. package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js.map +0 -1
  179. package/dist/_virtual/~icons/lucide/pencil.cjs.js +0 -2
  180. package/dist/_virtual/~icons/lucide/pencil.cjs.js.map +0 -1
  181. package/dist/_virtual/~icons/lucide/pencil.esm.js +0 -11
  182. package/dist/_virtual/~icons/lucide/pencil.esm.js.map +0 -1
  183. package/dist/_virtual/~icons/lucide/settings-2.cjs.js +0 -2
  184. package/dist/_virtual/~icons/lucide/settings-2.cjs.js.map +0 -1
  185. package/dist/_virtual/~icons/lucide/settings-2.esm.js +0 -11
  186. package/dist/_virtual/~icons/lucide/settings-2.esm.js.map +0 -1
  187. package/dist/_virtual/~icons/lucide/share-2.cjs.js +0 -2
  188. package/dist/_virtual/~icons/lucide/share-2.cjs.js.map +0 -1
  189. package/dist/_virtual/~icons/lucide/share-2.esm.js +0 -11
  190. package/dist/_virtual/~icons/lucide/share-2.esm.js.map +0 -1
  191. package/dist/_virtual/~icons/lucide/trash-2.cjs.js +0 -2
  192. package/dist/_virtual/~icons/lucide/trash-2.cjs.js.map +0 -1
  193. package/dist/_virtual/~icons/lucide/trash-2.esm.js +0 -11
  194. package/dist/_virtual/~icons/lucide/trash-2.esm.js.map +0 -1
  195. package/dist/_virtual/~icons/lucide/user.cjs.js +0 -2
  196. package/dist/_virtual/~icons/lucide/user.cjs.js.map +0 -1
  197. package/dist/_virtual/~icons/lucide/user.esm.js +0 -11
  198. package/dist/_virtual/~icons/lucide/user.esm.js.map +0 -1
  199. package/dist/_virtual/~icons/lucide/users.cjs.js +0 -2
  200. package/dist/_virtual/~icons/lucide/users.cjs.js.map +0 -1
  201. package/dist/_virtual/~icons/lucide/users.esm.js +0 -11
  202. package/dist/_virtual/~icons/lucide/users.esm.js.map +0 -1
  203. package/dist/audio/audioPane.cjs.js +0 -2
  204. package/dist/audio/audioPane.cjs.js.map +0 -1
  205. package/dist/audio/audioPane.esm.js +0 -99
  206. package/dist/audio/audioPane.esm.js.map +0 -1
  207. package/dist/classInstancePane.cjs.js +0 -2
  208. package/dist/classInstancePane.cjs.js.map +0 -1
  209. package/dist/classInstancePane.esm.js +0 -50
  210. package/dist/classInstancePane.esm.js.map +0 -1
  211. package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js +0 -14
  212. package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js.map +0 -1
  213. package/dist/components/file-explorer-header/FileExplorerHeader.d.ts +0 -19
  214. package/dist/components/file-explorer-header/FileExplorerHeader.d.ts.map +0 -1
  215. package/dist/components/file-explorer-header/FileExplorerHeader.esm.js +0 -292
  216. package/dist/components/file-explorer-header/FileExplorerHeader.esm.js.map +0 -1
  217. package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js +0 -2
  218. package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js.map +0 -1
  219. package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js +0 -7
  220. package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js.map +0 -1
  221. package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js +0 -22
  222. package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js.map +0 -1
  223. package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts +0 -15
  224. package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts.map +0 -1
  225. package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js +0 -266
  226. package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js.map +0 -1
  227. package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js +0 -2
  228. package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js.map +0 -1
  229. package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js +0 -7
  230. package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js.map +0 -1
  231. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js +0 -19
  232. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js.map +0 -1
  233. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts +0 -19
  234. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts.map +0 -1
  235. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js +0 -321
  236. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js.map +0 -1
  237. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js +0 -2
  238. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js.map +0 -1
  239. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js +0 -7
  240. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js.map +0 -1
  241. package/dist/components/file-explorer-header/FileExplorerProvider.cjs.js +0 -13
  242. package/dist/components/file-explorer-header/FileExplorerProvider.cjs.js.map +0 -1
  243. package/dist/components/file-explorer-header/FileExplorerProvider.d.ts +0 -36
  244. package/dist/components/file-explorer-header/FileExplorerProvider.d.ts.map +0 -1
  245. package/dist/components/file-explorer-header/FileExplorerProvider.esm.js +0 -468
  246. package/dist/components/file-explorer-header/FileExplorerProvider.esm.js.map +0 -1
  247. package/dist/components/file-explorer-header/FileExplorerProvider.styles.cjs.js +0 -2
  248. package/dist/components/file-explorer-header/FileExplorerProvider.styles.cjs.js.map +0 -1
  249. package/dist/components/file-explorer-header/FileExplorerProvider.styles.esm.js +0 -7
  250. package/dist/components/file-explorer-header/FileExplorerProvider.styles.esm.js.map +0 -1
  251. package/dist/components/file-explorer-header/helper.cjs.js +0 -2
  252. package/dist/components/file-explorer-header/helper.cjs.js.map +0 -1
  253. package/dist/components/file-explorer-header/helper.d.ts +0 -15
  254. package/dist/components/file-explorer-header/helper.d.ts.map +0 -1
  255. package/dist/components/file-explorer-header/helper.esm.js +0 -64
  256. package/dist/components/file-explorer-header/helper.esm.js.map +0 -1
  257. package/dist/components/file-explorer-header/types.d.ts +0 -2
  258. package/dist/components/file-explorer-header/types.d.ts.map +0 -1
  259. package/dist/components/header/Header.cjs.js +0 -19
  260. package/dist/components/header/Header.cjs.js.map +0 -1
  261. package/dist/components/header/Header.d.ts +0 -8
  262. package/dist/components/header/Header.d.ts.map +0 -1
  263. package/dist/components/header/Header.esm.js +0 -228
  264. package/dist/components/header/Header.esm.js.map +0 -1
  265. package/dist/components/header/Header.styles.cjs.js +0 -2
  266. package/dist/components/header/Header.styles.cjs.js.map +0 -1
  267. package/dist/components/header/Header.styles.esm.js +0 -7
  268. package/dist/components/header/Header.styles.esm.js.map +0 -1
  269. package/dist/components/header/index.cjs.js +0 -1
  270. package/dist/components/header/index.d.ts +0 -4
  271. package/dist/components/header/index.d.ts.map +0 -1
  272. package/dist/components/header/index.esm.js +0 -1
  273. package/dist/components/navbar/Navbar.cjs.js +0 -15
  274. package/dist/components/navbar/Navbar.cjs.js.map +0 -1
  275. package/dist/components/navbar/Navbar.d.ts +0 -14
  276. package/dist/components/navbar/Navbar.d.ts.map +0 -1
  277. package/dist/components/navbar/Navbar.esm.js +0 -232
  278. package/dist/components/navbar/Navbar.esm.js.map +0 -1
  279. package/dist/components/navbar/Navbar.styles.cjs.js +0 -2
  280. package/dist/components/navbar/Navbar.styles.cjs.js.map +0 -1
  281. package/dist/components/navbar/Navbar.styles.esm.js +0 -7
  282. package/dist/components/navbar/Navbar.styles.esm.js.map +0 -1
  283. package/dist/components/navbar/index.cjs.js +0 -1
  284. package/dist/components/navbar/index.d.ts +0 -4
  285. package/dist/components/navbar/index.d.ts.map +0 -1
  286. package/dist/components/navbar/index.esm.js +0 -1
  287. package/dist/components/resource-actions-menu/DeleteResourceDialog.cjs.js +0 -16
  288. package/dist/components/resource-actions-menu/DeleteResourceDialog.cjs.js.map +0 -1
  289. package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts +0 -8
  290. package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts.map +0 -1
  291. package/dist/components/resource-actions-menu/DeleteResourceDialog.esm.js +0 -215
  292. package/dist/components/resource-actions-menu/DeleteResourceDialog.esm.js.map +0 -1
  293. package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js +0 -18
  294. package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js.map +0 -1
  295. package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts +0 -16
  296. package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts.map +0 -1
  297. package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js +0 -260
  298. package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js.map +0 -1
  299. package/dist/dashboard/basicPreferences.cjs.js +0 -2
  300. package/dist/dashboard/basicPreferences.cjs.js.map +0 -1
  301. package/dist/dashboard/basicPreferences.esm.js +0 -70
  302. package/dist/dashboard/basicPreferences.esm.js.map +0 -1
  303. package/dist/dashboard/dashboardPane.cjs.js +0 -2
  304. package/dist/dashboard/dashboardPane.cjs.js.map +0 -1
  305. package/dist/dashboard/dashboardPane.esm.js +0 -7
  306. package/dist/dashboard/dashboardPane.esm.js.map +0 -1
  307. package/dist/dashboard/homepage.cjs.js +0 -2
  308. package/dist/dashboard/homepage.cjs.js.map +0 -1
  309. package/dist/dashboard/homepage.esm.js +0 -26
  310. package/dist/dashboard/homepage.esm.js.map +0 -1
  311. package/dist/dashboard/ontologyData.cjs.js +0 -37
  312. package/dist/dashboard/ontologyData.cjs.js.map +0 -1
  313. package/dist/dashboard/ontologyData.esm.js +0 -6
  314. package/dist/dashboard/ontologyData.esm.js.map +0 -1
  315. package/dist/dashboard/preferencesFormText.cjs.js +0 -20
  316. package/dist/dashboard/preferencesFormText.cjs.js.map +0 -1
  317. package/dist/dashboard/preferencesFormText.esm.js +0 -6
  318. package/dist/dashboard/preferencesFormText.esm.js.map +0 -1
  319. package/dist/dataContentPane2.cjs.js +0 -2
  320. package/dist/dataContentPane2.cjs.js.map +0 -1
  321. package/dist/dataContentPane2.esm.js +0 -109
  322. package/dist/dataContentPane2.esm.js.map +0 -1
  323. package/dist/defaultPane2.cjs.js +0 -2
  324. package/dist/defaultPane2.cjs.js.map +0 -1
  325. package/dist/defaultPane2.esm.js +0 -41
  326. package/dist/defaultPane2.esm.js.map +0 -1
  327. package/dist/dev.d.ts +0 -10
  328. package/dist/dev.d.ts.map +0 -1
  329. package/dist/dokieli/dokieliPane.cjs.js +0 -2
  330. package/dist/dokieli/dokieliPane.cjs.js.map +0 -1
  331. package/dist/dokieli/dokieliPane.esm.js +0 -39
  332. package/dist/dokieli/dokieliPane.esm.js.map +0 -1
  333. package/dist/dokieli/new.cjs.js.map +0 -1
  334. package/dist/dokieli/new.esm.js +0 -6
  335. package/dist/dokieli/new.esm.js.map +0 -1
  336. package/dist/form/pane.cjs.js +0 -4
  337. package/dist/form/pane.cjs.js.map +0 -1
  338. package/dist/form/pane.esm.js +0 -122
  339. package/dist/form/pane.esm.js.map +0 -1
  340. package/dist/home/homePane.cjs.js +0 -2
  341. package/dist/home/homePane.cjs.js.map +0 -1
  342. package/dist/home/homePane.esm.js +0 -35
  343. package/dist/home/homePane.esm.js.map +0 -1
  344. package/dist/humanReadablePane2.cjs.js +0 -2
  345. package/dist/humanReadablePane2.cjs.js.map +0 -1
  346. package/dist/humanReadablePane2.esm.js +0 -123
  347. package/dist/humanReadablePane2.esm.js.map +0 -1
  348. package/dist/icons/folder.cjs.js +0 -2
  349. package/dist/icons/folder.cjs.js.map +0 -1
  350. package/dist/icons/folder.esm.js +0 -6
  351. package/dist/icons/folder.esm.js.map +0 -1
  352. package/dist/icons/friends.cjs.js +0 -2
  353. package/dist/icons/friends.cjs.js.map +0 -1
  354. package/dist/icons/friends.esm.js +0 -6
  355. package/dist/icons/friends.esm.js.map +0 -1
  356. package/dist/icons/person.cjs.js +0 -2
  357. package/dist/icons/person.cjs.js.map +0 -1
  358. package/dist/icons/person.esm.js +0 -6
  359. package/dist/icons/person.esm.js.map +0 -1
  360. package/dist/imagePane2.cjs.js +0 -2
  361. package/dist/imagePane2.cjs.js.map +0 -1
  362. package/dist/imagePane2.esm.js +0 -32
  363. package/dist/imagePane2.esm.js.map +0 -1
  364. package/dist/index.cjs.js +0 -2
  365. package/dist/index.cjs.js.map +0 -1
  366. package/dist/index.esm.js +0 -31
  367. package/dist/index.esm.js.map +0 -1
  368. package/dist/internal/internalPane2.cjs.js +0 -2
  369. package/dist/internal/internalPane2.cjs.js.map +0 -1
  370. package/dist/internal/internalPane2.esm.js +0 -104
  371. package/dist/internal/internalPane2.esm.js.map +0 -1
  372. package/dist/mainPage/header.cjs.js +0 -2
  373. package/dist/mainPage/header.cjs.js.map +0 -1
  374. package/dist/mainPage/header.esm.js +0 -72
  375. package/dist/mainPage/header.esm.js.map +0 -1
  376. package/dist/mainPage/index.cjs.js +0 -2
  377. package/dist/mainPage/index.cjs.js.map +0 -1
  378. package/dist/mainPage/index.esm.js +0 -36
  379. package/dist/mainPage/index.esm.js.map +0 -1
  380. package/dist/mainPage/navbar.cjs.js +0 -2
  381. package/dist/mainPage/navbar.cjs.js.map +0 -1
  382. package/dist/mainPage/navbar.d.ts +0 -3
  383. package/dist/mainPage/navbar.d.ts.map +0 -1
  384. package/dist/mainPage/navbar.esm.js +0 -66
  385. package/dist/mainPage/navbar.esm.js.map +0 -1
  386. package/dist/n3Pane2.cjs.js +0 -3
  387. package/dist/n3Pane2.cjs.js.map +0 -1
  388. package/dist/n3Pane2.esm.js +0 -52
  389. package/dist/n3Pane2.esm.js.map +0 -1
  390. package/dist/outline/context.cjs.js +0 -2
  391. package/dist/outline/context.cjs.js.map +0 -1
  392. package/dist/outline/context.esm.js +0 -18
  393. package/dist/outline/context.esm.js.map +0 -1
  394. package/dist/outline/manager2.cjs.js +0 -2
  395. package/dist/outline/manager2.cjs.js.map +0 -1
  396. package/dist/outline/manager2.esm.js +0 -711
  397. package/dist/outline/manager2.esm.js.map +0 -1
  398. package/dist/outline/outlineIcons.cjs.js +0 -2
  399. package/dist/outline/outlineIcons.cjs.js.map +0 -1
  400. package/dist/outline/outlineIcons.esm.js +0 -10
  401. package/dist/outline/outlineIcons.esm.js.map +0 -1
  402. package/dist/outline/propertyViews.cjs.js +0 -2
  403. package/dist/outline/propertyViews.cjs.js.map +0 -1
  404. package/dist/outline/propertyViews.esm.js +0 -19
  405. package/dist/outline/propertyViews.esm.js.map +0 -1
  406. package/dist/outline/queryByExample.cjs.js +0 -2
  407. package/dist/outline/queryByExample.cjs.js.map +0 -1
  408. package/dist/outline/queryByExample.esm.js +0 -26
  409. package/dist/outline/queryByExample.esm.js.map +0 -1
  410. package/dist/outline/sourcePaneIcon.d.ts +0 -2
  411. package/dist/outline/sourcePaneIcon.d.ts.map +0 -1
  412. package/dist/outline/userInput.cjs.js +0 -61
  413. package/dist/outline/userInput.cjs.js.map +0 -1
  414. package/dist/outline/userInput.esm.js +0 -784
  415. package/dist/outline/userInput.esm.js.map +0 -1
  416. package/dist/outline/viewAsImage.cjs.js +0 -2
  417. package/dist/outline/viewAsImage.cjs.js.map +0 -1
  418. package/dist/outline/viewAsImage.esm.js +0 -10
  419. package/dist/outline/viewAsImage.esm.js.map +0 -1
  420. package/dist/outline/viewAsMbox.cjs.js +0 -2
  421. package/dist/outline/viewAsMbox.cjs.js.map +0 -1
  422. package/dist/outline/viewAsMbox.esm.js +0 -9
  423. package/dist/outline/viewAsMbox.esm.js.map +0 -1
  424. package/dist/pad/padPane2.cjs.js +0 -2
  425. package/dist/pad/padPane2.cjs.js.map +0 -1
  426. package/dist/pad/padPane2.esm.js +0 -173
  427. package/dist/pad/padPane2.esm.js.map +0 -1
  428. package/dist/playlist/playlistPane.cjs.js +0 -2
  429. package/dist/playlist/playlistPane.cjs.js.map +0 -1
  430. package/dist/playlist/playlistPane.esm.js +0 -49
  431. package/dist/playlist/playlistPane.esm.js.map +0 -1
  432. package/dist/registerPanes.cjs.js +0 -2
  433. package/dist/registerPanes.cjs.js.map +0 -1
  434. package/dist/registerPanes.esm.js +0 -46
  435. package/dist/registerPanes.esm.js.map +0 -1
  436. package/dist/schedule/formsForSchedule.cjs.js +0 -117
  437. package/dist/schedule/formsForSchedule.cjs.js.map +0 -1
  438. package/dist/schedule/formsForSchedule.esm.js +0 -6
  439. package/dist/schedule/formsForSchedule.esm.js.map +0 -1
  440. package/dist/schedule/schedulePane2.cjs.js +0 -8
  441. package/dist/schedule/schedulePane2.cjs.js.map +0 -1
  442. package/dist/schedule/schedulePane2.esm.js +0 -385
  443. package/dist/schedule/schedulePane2.esm.js.map +0 -1
  444. package/dist/sharing/sharingPane.cjs.js +0 -2
  445. package/dist/sharing/sharingPane.cjs.js.map +0 -1
  446. package/dist/sharing/sharingPane.esm.js +0 -22
  447. package/dist/sharing/sharingPane.esm.js.map +0 -1
  448. package/dist/slideshow/slideshowPane.cjs.js +0 -2
  449. package/dist/slideshow/slideshowPane.cjs.js.map +0 -1
  450. package/dist/slideshow/slideshowPane.esm.js +0 -46
  451. package/dist/slideshow/slideshowPane.esm.js.map +0 -1
  452. package/dist/social/editProfileDetails.cjs.js +0 -2
  453. package/dist/social/editProfileDetails.cjs.js.map +0 -1
  454. package/dist/social/editProfileDetails.esm.js +0 -12
  455. package/dist/social/editProfileDetails.esm.js.map +0 -1
  456. package/dist/social/icons.cjs.js +0 -82
  457. package/dist/social/icons.cjs.js.map +0 -1
  458. package/dist/social/icons.esm.js.map +0 -1
  459. package/dist/social/socialPane2.cjs.js +0 -6
  460. package/dist/social/socialPane2.cjs.js.map +0 -1
  461. package/dist/social/socialPane2.esm.js +0 -326
  462. package/dist/social/socialPane2.esm.js.map +0 -1
  463. package/dist/social/socialSections.cjs.js +0 -2
  464. package/dist/social/socialSections.cjs.js.map +0 -1
  465. package/dist/social/socialSections.esm.js +0 -222
  466. package/dist/social/socialSections.esm.js.map +0 -1
  467. package/dist/social/spinner.cjs.js +0 -1
  468. package/dist/social/spinner.esm.js +0 -1
  469. package/dist/social/triage.cjs.js +0 -2
  470. package/dist/social/triage.cjs.js.map +0 -1
  471. package/dist/social/triage.esm.js +0 -44
  472. package/dist/social/triage.esm.js.map +0 -1
  473. package/dist/tabbed/tabbedPane.cjs.js +0 -2
  474. package/dist/tabbed/tabbedPane.cjs.js.map +0 -1
  475. package/dist/tabbed/tabbedPane.esm.js +0 -38
  476. package/dist/tabbed/tabbedPane.esm.js.map +0 -1
  477. package/dist/tableViewPane.cjs.js +0 -2
  478. package/dist/tableViewPane.cjs.js.map +0 -1
  479. package/dist/tableViewPane.esm.js +0 -20
  480. package/dist/tableViewPane.esm.js.map +0 -1
  481. package/dist/transaction/pane.cjs.js +0 -8
  482. package/dist/transaction/pane.cjs.js.map +0 -1
  483. package/dist/transaction/pane.esm.js +0 -212
  484. package/dist/transaction/pane.esm.js.map +0 -1
  485. package/dist/transaction/period.cjs.js +0 -4
  486. package/dist/transaction/period.cjs.js.map +0 -1
  487. package/dist/transaction/period.esm.js +0 -126
  488. package/dist/transaction/period.esm.js.map +0 -1
  489. package/dist/trip/tripPane.cjs.js +0 -2
  490. package/dist/trip/tripPane.cjs.js.map +0 -1
  491. package/dist/trip/tripPane.esm.js +0 -85
  492. package/dist/trip/tripPane.esm.js.map +0 -1
  493. package/dist/trustedApplications/trustedApplications.dom.cjs.js +0 -2
  494. package/dist/trustedApplications/trustedApplications.dom.cjs.js.map +0 -1
  495. package/dist/trustedApplications/trustedApplications.dom.esm.js +0 -108
  496. package/dist/trustedApplications/trustedApplications.dom.esm.js.map +0 -1
  497. package/dist/trustedApplications/trustedApplications.utils.cjs.js +0 -2
  498. package/dist/trustedApplications/trustedApplications.utils.cjs.js.map +0 -1
  499. package/dist/trustedApplications/trustedApplications.utils.esm.js +0 -20
  500. package/dist/trustedApplications/trustedApplications.utils.esm.js.map +0 -1
  501. package/dist/trustedApplications/trustedApplications.view.cjs.js +0 -2
  502. package/dist/trustedApplications/trustedApplications.view.cjs.js.map +0 -1
  503. package/dist/trustedApplications/trustedApplications.view.esm.js +0 -41
  504. package/dist/trustedApplications/trustedApplications.view.esm.js.map +0 -1
  505. package/dist/ui/pane.cjs.js +0 -4
  506. package/dist/ui/pane.cjs.js.map +0 -1
  507. package/dist/ui/pane.esm.js +0 -56
  508. package/dist/ui/pane.esm.js.map +0 -1
  509. package/dist/utils/paneUtils.cjs.js +0 -2
  510. package/dist/utils/paneUtils.cjs.js.map +0 -1
  511. package/dist/utils/paneUtils.d.ts +0 -19
  512. package/dist/utils/paneUtils.d.ts.map +0 -1
  513. package/dist/utils/paneUtils.esm.js +0 -52
  514. package/dist/utils/paneUtils.esm.js.map +0 -1
  515. package/dist/utils/podUtils.cjs.js +0 -2
  516. package/dist/utils/podUtils.cjs.js.map +0 -1
  517. package/dist/utils/podUtils.d.ts +0 -4
  518. package/dist/utils/podUtils.d.ts.map +0 -1
  519. package/dist/utils/podUtils.esm.js +0 -46
  520. package/dist/utils/podUtils.esm.js.map +0 -1
  521. package/dist/utils/webIdUtils.cjs.js +0 -2
  522. package/dist/utils/webIdUtils.cjs.js.map +0 -1
  523. package/dist/utils/webIdUtils.d.ts +0 -6
  524. package/dist/utils/webIdUtils.d.ts.map +0 -1
  525. package/dist/utils/webIdUtils.esm.js +0 -48
  526. package/dist/utils/webIdUtils.esm.js.map +0 -1
  527. package/dist/versionInfo.cjs.js +0 -2
  528. package/dist/versionInfo.cjs.js.map +0 -1
  529. package/dist/versionInfo.esm.js +0 -40
  530. package/dist/versionInfo.esm.js.map +0 -1
  531. package/dist/video/videoPane.cjs.js +0 -2
  532. package/dist/video/videoPane.cjs.js.map +0 -1
  533. package/dist/video/videoPane.esm.js +0 -25
  534. package/dist/video/videoPane.esm.js.map +0 -1
@@ -1,8 +0,0 @@
1
- (function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.schedule-pane__table{border-collapse:collapse;background-color:#fff;min-width:40rem;min-height:13rem}.schedule-pane__button{padding:var(--spacing-xs,.5rem);background-color:#eef;border:.5rem solid #fff;font-size:100%}.schedule-pane__button-icon{width:var(--icon-sm,1.8rem);height:var(--icon-sm,1.8rem)}.schedule-pane__nav{text-align:center;vertical-align:middle;padding-top:4rem}.schedule-pane__cell{padding:var(--spacing-xs,.3rem);text-align:center}.schedule-pane__table .schedule-pane__form-heading{color:#888;padding:.2em;font-weight:700;margin:.7em 0!important;font-size:110%!important}.schedule-pane__table .schedule-pane__form-heading--time-proposals{margin-bottom:0!important}.schedule-pane__table .schedule-pane__panel--time-proposals{border:none!important;padding-bottom:.9rem!important}.schedule-pane__table .schedule-pane__panel{box-sizing:border-box;max-width:100%;margin-right:.5rem;padding-left:.75rem!important;padding-right:.75rem!important}@media (width<=1024px){.schedule-pane__table .schedule-pane__main-cell{box-sizing:border-box;padding-left:.5rem;padding-right:.5rem}.schedule-pane__table .schedule-pane__field-row--comment{flex-wrap:wrap;align-items:flex-start;gap:.5rem;flex-direction:row!important;display:flex!important}.schedule-pane__table .schedule-pane__field-row--comment>div:first-child{flex:0 6rem;min-width:4.5rem;width:auto!important}.schedule-pane__table .schedule-pane__field-value--comment{box-sizing:border-box;flex:20rem;width:auto;min-width:0;padding-right:.25rem}.schedule-pane__table .schedule-pane__field-value--comment .schedule-pane__form-control--textarea,.schedule-pane__table .schedule-pane__field-row--comment .schedule-pane__form-control--textarea{box-sizing:border-box;padding:.5rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:.2rem 0 0!important}}div.schedule-pane[data-layout=mobile] .schedule-pane__table{table-layout:fixed;width:100%;min-width:0;min-height:0}div.schedule-pane[data-layout=mobile] .schedule-pane__table td,div.schedule-pane[data-layout=mobile] .schedule-pane__table th{overflow-wrap:anywhere;min-width:0;max-width:100%}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__main-cell{box-sizing:border-box;padding-left:.5rem;padding-right:.5rem}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--compact{align-items:flex-start;gap:.25rem}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--compact .formFieldName{flex:0 5.5rem;min-width:4.5rem;width:auto!important}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--compact .formFieldValue{flex:auto;min-width:0}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--compact .schedule-pane__form-control{box-sizing:border-box;font-size:var(--font-size-sm,.875rem);padding:.35rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:.2rem 0 0!important}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment{align-items:stretch;gap:.25rem;flex-direction:column!important;display:flex!important}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment .formFieldName,div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment>div:first-child{flex:none;min-width:0;width:auto!important}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment .formFieldValue,div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment>div:last-child,div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-value--comment{flex:auto;width:100%;min-width:0;display:block}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment .schedule-pane__form-control--textarea,div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-value--comment .schedule-pane__form-control--textarea{box-sizing:border-box;font-size:var(--font-size-sm,.875rem);min-height:5.5rem;padding:.35rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:0!important}div.schedule-pane[data-layout=mobile] .schedule-pane__button{border-width:.2rem;padding:.4rem}div.schedule-pane[data-layout=mobile] .schedule-pane__button-icon{width:1.35rem;height:1.35rem}div.schedule-pane[data-layout=mobile] .schedule-pane__nav{padding-top:1rem}div.schedule-pane[data-layout=mobile] .schedule-pane__cell{padding:.2rem}@media (width<=576px){.schedule-pane__table{table-layout:fixed;width:100%;min-width:0;min-height:0}.schedule-pane__table td,.schedule-pane__table th{overflow-wrap:anywhere;min-width:0;max-width:100%}.schedule-pane__table .schedule-pane__main-cell{box-sizing:border-box;padding-left:.5rem;padding-right:.5rem}.schedule-pane__table .schedule-pane__field-row--compact{align-items:flex-start;gap:.25rem}.schedule-pane__table .schedule-pane__field-row--compact .formFieldName{flex:0 5.5rem;min-width:4.5rem;width:auto!important}.schedule-pane__table .schedule-pane__field-row--compact .formFieldValue{flex:auto;min-width:0}.schedule-pane__table .schedule-pane__field-row--compact .schedule-pane__form-control{box-sizing:border-box;font-size:var(--font-size-sm,.875rem);padding:.35rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:.2rem 0 0!important}.schedule-pane__table .schedule-pane__field-row--comment{align-items:stretch;gap:.25rem;flex-direction:column!important;display:flex!important}.schedule-pane__table .schedule-pane__field-row--comment .formFieldName,.schedule-pane__table .schedule-pane__field-row--comment>div:first-child{flex:none;min-width:0;width:auto!important}.schedule-pane__table .schedule-pane__field-row--comment .formFieldValue,.schedule-pane__table .schedule-pane__field-row--comment>div:last-child,.schedule-pane__table .schedule-pane__field-value--comment{flex:auto;width:100%;min-width:0;display:block}.schedule-pane__table .schedule-pane__field-row--comment .schedule-pane__form-control--textarea,.schedule-pane__table .schedule-pane__field-value--comment .schedule-pane__form-control--textarea{box-sizing:border-box;font-size:var(--font-size-sm,.875rem);min-height:5.5rem;padding:.35rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:0!important}.schedule-pane__button{border-width:.2rem;padding:.4rem}.schedule-pane__button-icon{width:1.35rem;height:1.35rem}.schedule-pane__nav{padding-top:1rem}.schedule-pane__cell{padding:.2rem}}
2
- :root{--icon-sm:1.8em;--color-background-row-default:white;--color-background-row-alternate:#f0f0f0}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("./formsForSchedule.cjs.js");;let n=require("solid-ui");n=e.__toESM(n);let r=require("solid-logic"),i=require("rdflib");i=e.__toESM(i);var a=n.ns,o=[a.sched(`No`),a.sched(`Maybe`),a.sched(`Yes`)];function s(e){let t=e.shift();t&&t()}var c={icon:n.icons.iconBase+`noun_346777.svg`,name:`schedule`,audience:[a.solid(`PowerUser`)],label:function(e,t){return t.session.store.findTypeURIs(e)[`http://www.w3.org/ns/pim/schedule#SchedulableEvent`]?`Scheduling poll`:null},mintClass:a.sched(`SchedulableEvent`),mintNew:function(e,t){return new Promise(function(a,o){let c=n.ns,l=e.session.store,u=t.newBase,d=t.useExisting||i.sym(t.newBase+`index.ttl#this`),f=function(e,t){e||(console.log(`Error in Schedule Pane: Error constructing new scheduler: `+t),o(Error(t)))},p=function(e,t,r){let a=i.graph(),o=i.Namespace(`http://www.w3.org/ns/auth/acl#`),s=a.sym(t+`#a1`),l=a.sym(t),u=a.sym(e);return a.add(s,n.ns.rdf(`type`),o(`Authorization`),l),a.add(s,o(`accessTo`),u,l),a.add(s,o(`agent`),_,l),a.add(s,o(`mode`),o(`Read`),l),a.add(s,o(`mode`),o(`Write`),l),a.add(s,o(`mode`),o(`Control`),l),s=a.sym(t+`#a2`),a.add(s,n.ns.rdf(`type`),o(`Authorization`),l),a.add(s,o(`accessTo`),u,l),a.add(s,o(`agentClass`),c.foaf(`Agent`),l),a.add(s,o(`mode`),o(`Read`),l),r&&a.add(s,o(`mode`),o(`Write`),l),i.serialize(l,a,t,`text/turtle`)},m=function(e,t,n){let r=l.any(l.sym(e),l.sym(`http://www.iana.org/assignments/link-relations/acl`));if(r){let i=p(e,r.uri,t);return h.webOperation(`PUT`,r.uri,{data:i,contentType:`text/turtle`}).then(e=>n(!0)).catch(e=>{n(!1,e.message)})}return h.load(e).catch(e=>{n(!1,`Getting headers for ACL: `+e)}).then(()=>{let n=l.any(l.sym(e),l.sym(`http://www.iana.org/assignments/link-relations/acl`));if(!n)throw Error(`No Link rel=ACL header for `+e);let r=p(e,n.uri,t);return h.webOperation(`PUT`,n.uri,{data:r,contentType:`text/turtle`})}).then(e=>n(!0)).catch(e=>{n(!1,e.message)})},h=l.fetcher,g=l.updater,_=t.me||r.authn.currentUser();if(!_){console.log(`MUST BE LOGGED IN`),alert(`NOT LOGGED IN`);return}let v=d.dir();if(!v)throw Error(`Schedule pane needs a base directory to mint a new poll`);let y=v.uri,b,x;if(t.useExisting){x=t.useExisting;let e=d.dir();if(!e)throw Error(`Existing schedule instance needs a containing directory`);if(u=e.uri,b=x.doc(),t.newBase)throw Error(`mint new scheduler: Illegal - have both new base and existing event`)}else b=l.sym(u+`details.ttl`),x=l.sym(b.uri+`#event`);let S=l.sym(u+`results.ttl`),C=t.noIndexHTML?[]:[{local:`index.html`,contentType:`text/html`}],w=[];for(let e=0;e<C.length;e++)(function(e){w.push(function(){let t=u+e.local;console.log(`Copying `+y+e.local+` to `+t);let n=function(){m(t,!1,function(e,n){e?s(w):(f(e,`FAILED to set ACL `+t+` : `+n),console.log(`FAILED to set ACL `+t+` : `+n))})};l.fetcher.webCopy(y+e.local,u+e.local,e.contentType).then(()=>r.authn.checkUser()).then(e=>{_=e,n()}).catch(t=>{console.log(`FAILED to copy `+y+e.local+` : `+t.message),f(!1,`FAILED to copy `+y+e.local+` : `+t.message)})})})(C[e]);w.push(function(){l.add(x,c.rdf(`type`),c.sched(`SchedulableEvent`),b),_&&(l.add(x,c.dc(`author`),_,b),l.add(x,c.foaf(`maker`),_,b)),l.add(x,c.dc(`created`),i.literal(new Date().toISOString(),i.sym(`http://www.w3.org/2001/XMLSchema#dateTime`)),b),l.add(x,c.sched(`resultsDocument`),b),g.put(b,l.statementsMatching(void 0,void 0,void 0,b),`text/turtle`,function(e,t,n){t?s(w):(f(t,`FAILED to save new scheduler at: `+b+` : `+n),console.log(`FAILED to save new scheduler at: `+b+` : `+n))})}),w.push(function(){l.fetcher.webOperation(`PUT`,S.uri,{data:``,contentType:`text/turtle`}).then(()=>{s(w)}).catch(e=>{f(!1,`Failed to initialize empty results file: `+e.message)})}),w.push(function(){m(S.uri,!0,function(e,t){f(e,`Failed to set Read-Write ACL on results file: `+t),e&&s(w)})}),w.push(function(){m(b.uri,!1,function(e,t){f(e,`Failed to set read ACL on configuration file: `+t),e&&s(w)})}),w.push(function(){console.log(`Finished minting new scheduler`),t.newInstance=x,a(t)}),s(w)})},render:function(e,a){let s=a.dom,l=a.session.store,u=n.ns,d=e,f=`app-when-can-we.w3.org`;function p(e){let t=a.environment??{};e.dataset.layout=t.layout??`desktop`}let m=l.fetcher,h=l.updater,g=!1,_=e,v=e.doc(),y=v.dir();if(!y)throw Error(`Schedule pane needs a containing directory for its details document`);let b=y.uri,x=i.sym(b+`results.ttl`),S=`https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl`,C=l.sym(`https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl#form1`),w=l.sym(`https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl#form2`),T=l.sym(`https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl#form3`);i.parse(t.default,l,S,`text/turtle`);let E=function(e,t){e||H.appendChild(n.widgets.errorMessageBlock(s,t,`pink`))},D=function(e){for(;e.firstChild;)e.removeChild(e.firstChild);return e},O=function(e,t){let r=l.any(t,n.ns.ui(`backgroundColor`));r&&(e.classList.add(`schedule-pane__cell`),e.setAttribute(`style`,`background-color: `+r+`;`))},k=null;r.authn.checkUser().then(e=>{k=e??null,W&&W.refresh(),e&&g&&(g=!1,F())}),console.log(`me: `+k);let A=function(){let e=n.login.newAppInstance(s,{noun:`scheduler`,appPathSegment:f},function(e,t){return j(i.sym(e||t))});return e.firstChild instanceof HTMLElement&&e.firstChild.classList.add(`schedule-pane__button`),e},j=function(e){let t=l.any(e,u.space(`uriPrefix`)),n=``;n=t?t.value:e.uri.split(`#`)[0],n.slice(-1)!==`/`&&(i.log.error(`app-when-can-we.w3.org: No / at end of uriPrefix `+n),n+=`/`),n+=`app-when-can-we.w3.org/id`+new Date().getTime()+`/`,M(_,n)},M=function(e,t){let n={thisInstance:e,newBase:t};c.mintNew(a,n).then(function(e){if(!e.newInstance)throw Error(`New scheduler instance was not returned`);let t=H.appendChild(s.createElement(`p`));t.setAttribute(`style`,`font-size: 140%;`),t.innerHTML=`Your <a href='`+e.newInstance.uri+`'><b>new scheduler</b></a> is ready to be set up. <br/><br/><a href='`+e.newInstance.uri+`'>Say when you what days work for you.</a>`}).catch(function(e){E(!1,`Error createing new scheduler at `+n.newInstance+`: `+e)})},N=function(){console.log(`getforms()`),P()},P=function(){console.log(`getDetails()`),m.nowOrWhenFetched(v.uri,void 0,function(e,t){if(console.log(`getDetails() ok? `+e),!e)return E(e,t);F()})},F=function(){console.log(`showAppropriateDisplay()`),r.authn.checkUser().then(t=>{if(!t)return I();if(!l.updater.editable(v.uri,l)||l.holds(e,u.rdf(`type`),u.wf(`TemplateInstance`))){L();return}l.any(e,u.sched(`ready`))?B():z()})},I=function(){D(G);let e={div:H,dom:s};n.login.ensureLoggedIn(e).then(e=>{k=e.me??null,g=!1,F()})},L=function(){let e=D(G);e.appendChild(n.login.newAppInstance(s,{noun:`poll`,appPathSegment:f},function(e,t){return j(i.sym(e||t))})),e.appendChild(s.createElement(`hr`));let t=e.appendChild(s.createElement(`p`));t.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.`;let r=e.appendChild(s.createElement(`input`));r.setAttribute(`type`,`text`),r.size=80,r.label=`base URL`,r.autocomplete=`on`,e.appendChild(s.createElement(`br`));let a=e.appendChild(s.createElement(`button`));a.classList.add(`schedule-pane__button`),a.textContent=`Start new poll at this URI`,a.addEventListener(`click`,function(e){let t=r.value;t.slice(-1)!==`/`&&(t+=`/`),M(_,t)})},R=s.createElement(`button`),z=function(){D(J),l.any(e,u.sched(`allDay`))||l.add(e,u.sched(`allDay`),i.literal(`true`,i.sym(`http://www.w3.org/2001/XMLSchema#boolean`)),v);let t=0,r=!1,a=function(e){return!!e.querySelector(`input, select, textarea, button`)},o=function(e,t){if(!e)return t;let n=(e.value||``).toLowerCase();return n===`true`||n===`1`?!0:n===`false`||n===`0`?!1:t},c=function(t){let r=o(l.any(e,u.sched(`allDay`)),!0),i=l.sym(S+(r?`#AllDayForm2`:`#NotAllDayForm2`));n.widgets.appendForm(document,t,{},e,i,v,E)},d=function(e,t=!1){if(Array.from(e.querySelectorAll(`input, select, textarea`)).forEach(e=>{e.classList.add(`schedule-pane__form-control`),e.tagName.toLowerCase()===`textarea`&&e.classList.add(`schedule-pane__form-control--textarea`)}),Array.from(e.querySelectorAll(`div[style*="border: 0.05em solid"]`)).forEach(e=>{e.classList.add(`schedule-pane__panel`)}),Array.from(e.querySelectorAll(`h3`)).forEach(e=>{e.classList.add(`schedule-pane__form-heading`),(e.textContent||``).trim().toLowerCase()===`time proposals`&&(e.classList.add(`schedule-pane__form-heading--time-proposals`),e.closest(`.schedule-pane__panel`)?.classList.add(`schedule-pane__panel--time-proposals`))}),!t)return;Array.from(e.querySelectorAll(`.formFieldName`)).forEach(e=>{let t=e.parentElement,n=(e.textContent||``).trim().toLowerCase();t&&((n===`summary`||n===`location`)&&t.classList.add(`schedule-pane__field-row--compact`),n===`comment`&&t.classList.add(`schedule-pane__field-row--comment`))});let n=e.querySelector(`textarea`)?.parentElement?.parentElement,r=n?.parentElement;r&&r.classList.add(`schedule-pane__field-row--comment`),n&&n.classList.add(`schedule-pane__field-value--comment`)},f=function(e){let t=e.firstElementChild;return!t||e.childElementCount!==1?e:t};{let i=[C,w,T],o=[];t=0;for(let t=0;t<i.length;t++){let r=s.createElement(`div`);n.widgets.appendForm(document,r,{},e,i[t],v,E),d(r,t===0),t===1&&!a(r)&&(c(r),d(r)),o.push(f(r))}let l=function(){D(G).appendChild(o[t]),t===0?u.setAttribute(`disabled`,``):u.removeAttribute(`disabled`),t===o.length-1?(p.setAttribute(`disabled`,``),r||=(J.appendChild(m),J.appendChild(R),!0)):p.removeAttribute(`disabled`)},u=D(q).appendChild(s.createElement(`button`));u.classList.add(`schedule-pane__button`),u.textContent=`<- go back`,u.addEventListener(`click`,function(e){t>0&&(--t,l())},!1);let p=D(Y).appendChild(s.createElement(`button`));p.classList.add(`schedule-pane__button`),p.textContent=`continue ->`,p.addEventListener(`click`,function(e){t<o.length-1&&(t+=1,l())},!1),l()}let p=[];p.push(i.st(e,u.sched(`availabilityOptions`),u.sched(`YesNoMaybe`),v)),p.push(i.st(e,u.sched(`ready`),i.literal(new Date().toISOString(),i.sym(`http://www.w3.org/2001/XMLSchema#dateTime`)),v)),p.push(i.st(e,u.sched(`results`),x,v)),R.classList.add(`schedule-pane__button`),R.textContent=`Go to poll`,R.addEventListener(`click`,function(t){l.any(e,u.sched(`ready`))?(B(),Y.appendChild(m)):(Y.appendChild(m),l.updater.update([],p,function(e,t,n){t?B():E(t,n)}))},!1);let m=s.createElement(`button`);m.classList.add(`schedule-pane__button`);let h=m.appendChild(s.createElement(`img`));h.setAttribute(`src`,n.icons.iconBase+`noun_480183.svg`),h.classList.add(`schedule-pane__button-icon`),m.addEventListener(`click`,function(t){let n=l.anyValue(e,u.cal(`summary`))||l.anyValue(e,u.dc(`title`))||``,r=`mailto:`+l.each(e,u.sched(`invitee`)).map(function(e){let t=l.any(e,u.foaf(`mbox`));return t?t.uri.replace(`mailto:`,``):``}).join(`,`)+`?subject=`+encodeURIComponent(n+`-- When can we meet?`)+`&body=`+encodeURIComponent(n+`
3
-
4
- When can you?
5
-
6
- See `+e+`
7
- `);console.log(`Mail: `+r),window.location.href=r},!1)};function B(){m.nowOrWhenFetched(x.uri,void 0,(e,t,n)=>{e?(D(G),V()):n.status===404?(console.log(`Initializing details file `+x),h.put(x,[],`text/turtle`,function(e,t,n){t?(D(G),V()):(E(t,`FAILED to create results file at: `+x.uri+` : `+n),console.log(`FAILED to craete results file at: `+x.uri+` : `+n))})):E(e,`FAILED to read results file: `+t)})}function V(){let t=l.any(d,u.cal(`summary`)),r=l.any(d,u.cal(`comment`)),a=l.any(d,u.cal(`location`)),c=G;t&&(c.appendChild(s.createElement(`h3`)).textContent=t.value),a&&(c.appendChild(s.createElement(`address`)).textContent=a.value),r&&(c.appendChild(s.createElement(`p`)).textContent=r.value);let f=l.any(d,u.dc(`author`));if(f){let e=l.any(f,u.foaf(`name`));e&&(c.appendChild(s.createElement(`p`)).textContent=e.value)}let p=new i.Query(`Responses`,0),m={};m.time=i.variable(`time`),m.author=i.variable(`author`),m.value=i.variable(`value`),m.resp=i.variable(`resp`),m.cell=i.variable(`cell`),p.vars.push(m.time,m.author,m.value,m.resp,m.cell),p.pat.add(d,u.sched(`response`),m.resp),p.pat.add(m.resp,u.dc(`author`),m.author),p.pat.add(m.resp,u.sched(`cell`),m.cell),p.pat.add(m.cell,u.sched(`availabilty`),m.value),p.pat.add(m.cell,u.cal(`dtstart`),m.time);let h={set_x:[],set_y:[]};h.set_x=l.each(e,u.sched(`option`)),h.set_x=h.set_x.map(function(e){return l.any(e,u.cal(`dtstart`))}).filter(function(e){return!!e}),h.set_y=l.each(e,u.sched(`response`)),h.set_y=h.set_y.map(function(e){return l.any(e,u.dc(`author`))}).filter(function(e){return!!e});let g=l.each(d,u.sched(`option`)).map(function(e){return l.any(e,u.cal(`dtstart`))}).filter(function(e){return!!e}),_=function(){let e=c.appendChild(n.matrix.matrixForQuery(s,p,m.time,m.author,m.value,h,function(){}));e.setAttribute(`class`,`matrix`);let t=s.createElement(`button`);t.classList.add(`schedule-pane__button`);let r=s.createElement(`img`);r.setAttribute(`src`,n.icons.iconBase+`noun_479395.svg`),r.classList.add(`schedule-pane__button-icon`),t.appendChild(r),t.addEventListener(`click`,function(n){t.disabled=!0,l.fetcher.refresh(x,function(n,r){n?(e.refresh(),t.disabled=!1):console.log(`Cant refresh matrix`+r)})},!1),D(J),J.appendChild(t)},v={},y={div:J,dom:s};n.login.ensureLoggedIn(y).then(e=>{let t=e.me;if(!t)return;let r=x;h.set_y=h.set_y.filter(function(e){return!e.sameTerm(t)}),h.set_y.push(t),h.cellFunction=function(e,r,i,a){if(a!==null&&l.fetcher.nowOrWhenFetched(a.uri.split(`#`)[0],void 0,function(t,n){t&&O(e,a)}),i.sameTerm(t)){let t=function(){return O(e,a),``},i={},c=u.sched(`availabilty`);if(!r)return``;let d=v[r.toNT()],f=n.widgets.makeSelectForOptions(s,l,d,c,o,i,x,t);e.appendChild(f)}else a!==null&&(e.textContent=n.utils.label(a));return``};let a=l.each(d,u.sched(`response`)),c=null;a.forEach(function(e){l.holds(e,u.dc(`author`),t)&&(c=e)});let f=[],p=n.widgets.newThing(r).uri;c===null?(c=i.sym(p+`_response`),f.push(i.st(d,u.sched(`response`),c,r)),f.push(i.st(c,u.dc(`author`),t,r))):l.each(c,u.sched(`cell`)).forEach(function(e){let t=l.any(e,u.cal(`dtstart`));t&&(v[t.toNT()]=e)});for(let e=0;e<g.length;e++){let t=g[e];if(!t||v[t.toNT()])continue;let n=i.sym(p+`_`+e);f.push(i.st(c,u.sched(`cell`),n,r)),f.push(i.st(n,u.cal(`dtstart`),t,r)),v[t.toNT()]=n}f.length?l.updater.update([],f,function(e,t,n){t?_():E(t,n)}):_()});let b=l.any(e,u.foaf(`maker`));if(!b||!k||b.sameTerm(k)){let e=s.createElement(`button`);e.classList.add(`schedule-pane__button`);let t=s.createElement(`img`);t.setAttribute(`src`,n.icons.iconBase+`noun_344563.svg`),t.classList.add(`schedule-pane__button-icon`),e.appendChild(t),e.addEventListener(`click`,function(e){D(c),z()},!1),D(q),q.appendChild(e)}D(Y),Y.appendChild(A())}let H=s.createElement(`div`);H.classList.add(`schedule-pane`),p(H);let U=H.appendChild(s.createElement(`table`));U.classList.add(`schedule-pane__table`);let W=null,G=U.appendChild(s.createElement(`tr`)).appendChild(s.createElement(`td`));G.classList.add(`schedule-pane__main-cell`),G.setAttribute(`colspan`,`3`);let K=U.appendChild(s.createElement(`tr`));K.classList.add(`naviMenu`,`schedule-pane__nav`);let q=K.appendChild(s.createElement(`td`)),J=K.appendChild(s.createElement(`td`)),Y=K.appendChild(s.createElement(`td`));return N(),H}};exports.schedulePane=c;
8
- //# sourceMappingURL=schedulePane2.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schedulePane2.cjs.js","names":[],"sources":["../../src/schedule/schedulePane.ts"],"sourcesContent":["/* Scheduler Pane\n **\n **\n */\n/* global alert */\n\nimport * as UI from 'solid-ui'\nimport { authn } from 'solid-logic'\nimport * as $rdf from 'rdflib'\nimport type { DataBrowserContext, RenderEnvironment } from 'pane-registry'\nimport type { NamedNode, Node as RdflibNode, Statement, Variable } from 'rdflib'\nimport formText from './formsForSchedule.ttl'\nimport './schedulePane.css'\nimport '../styles/utilities.css'\n\nconst ns = UI.ns\n\n// @@ Give other combos too-- see schedule ontology\nconst possibleAvailabilities = [\n ns.sched('No'),\n ns.sched('Maybe'),\n ns.sched('Yes')\n]\n\ntype AgendaTask = () => void\n\ntype CopySpec = {\n local: string\n contentType: string\n}\n\ntype MintOptions = {\n newBase: string\n useExisting?: NamedNode\n noIndexHTML?: boolean\n me?: NamedNode | null\n newInstance?: NamedNode\n thisInstance?: NamedNode\n}\n\ntype MatrixOptionsLike = {\n set_x: RdflibNode[]\n set_y: RdflibNode[]\n cellFunction?: (cell: HTMLElement, x: RdflibNode, y: RdflibNode, value: NamedNode | null) => string\n}\n\ntype ResponseQueryVars = {\n time: Variable\n author: Variable\n value: Variable\n resp: Variable\n cell: Variable\n}\n\ntype LoginStatusBoxLike = {\n refresh: () => void\n}\n\nfunction runNextAgendaItem (agenda: AgendaTask[]): void {\n const nextTask = agenda.shift()\n if (nextTask) {\n nextTask()\n }\n}\n\nexport const schedulePane = {\n icon: UI.icons.iconBase + 'noun_346777.svg', // @@ better?\n\n name: 'schedule',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve an Scheduler pane?\n label: function (subject: NamedNode, context: DataBrowserContext) {\n const kb = context.session.store\n const t = kb.findTypeURIs(subject)\n if (t['http://www.w3.org/ns/pim/schedule#SchedulableEvent']) {\n return 'Scheduling poll'\n }\n return null // No under other circumstances\n },\n\n // Mint a new Schedule poll\n mintClass: ns.sched('SchedulableEvent'),\n\n mintNew: function (context: DataBrowserContext, options: MintOptions) {\n return new Promise<MintOptions>(function (resolve, reject) {\n const ns = UI.ns\n const kb = context.session.store\n let newBase = options.newBase\n const thisInstance =\n options.useExisting || $rdf.sym(options.newBase + 'index.ttl#this')\n\n const complainIfBad = function (ok: boolean, body: string) {\n if (ok) return\n console.log(\n 'Error in Schedule Pane: Error constructing new scheduler: ' + body\n )\n reject(new Error(body))\n }\n\n // ////////////////////// Accesss control\n\n // Two constiations of ACL for this app, public read and public read/write\n // In all cases owner has read write control\n\n const genACLtext = function (docURI: string, aclURI: string, allWrite: boolean) {\n const g = $rdf.graph()\n const auth = $rdf.Namespace('http://www.w3.org/ns/auth/acl#')\n let a = g.sym(aclURI + '#a1')\n const acl = g.sym(aclURI)\n const doc = g.sym(docURI)\n g.add(a, UI.ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agent'), me as NamedNode, acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n g.add(a, auth('mode'), auth('Write'), acl)\n g.add(a, auth('mode'), auth('Control'), acl)\n\n a = g.sym(aclURI + '#a2')\n g.add(a, UI.ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agentClass'), ns.foaf('Agent'), acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n if (allWrite) {\n g.add(a, auth('mode'), auth('Write'), acl)\n }\n return $rdf.serialize(acl, g, aclURI, 'text/turtle')\n }\n\n /*\n const setACL3 = function (docURI, allWrite, callbackFunction) {\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n return UI.acl.setACL(docURI, aclText, callbackFunction)\n }\n */\n\n const setACL2 = function setACL2 (docURI, allWrite, callbackFunction) {\n const aclDoc = kb.any(\n kb.sym(docURI),\n kb.sym('http://www.iana.org/assignments/link-relations/acl')\n ) as NamedNode | null // @@ check that this get set by web.js\n\n if (aclDoc) {\n // Great we already know where it is\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n\n return fetcher\n .webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then(_result => callbackFunction(true))\n .catch(err => {\n callbackFunction(false, err.message)\n })\n } else {\n return fetcher\n .load(docURI)\n .catch(err => {\n callbackFunction(false, 'Getting headers for ACL: ' + err)\n })\n .then(() => {\n const aclDoc = kb.any(\n kb.sym(docURI),\n kb.sym('http://www.iana.org/assignments/link-relations/acl')\n ) as NamedNode | null\n\n if (!aclDoc) {\n // complainIfBad(false, \"No Link rel=ACL header for \" + docURI)\n throw new Error('No Link rel=ACL header for ' + docURI)\n }\n\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n\n return fetcher.webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n })\n .then(_result => callbackFunction(true))\n .catch(err => {\n callbackFunction(false, err.message)\n })\n }\n }\n\n // Body of mintNew\n const fetcher = kb.fetcher\n const updater = kb.updater\n\n let me: NamedNode | null = options.me || authn.currentUser()\n if (!me) {\n console.log('MUST BE LOGGED IN')\n alert('NOT LOGGED IN')\n return\n }\n\n const baseDir = thisInstance.dir()\n if (!baseDir) {\n throw new Error('Schedule pane needs a base directory to mint a new poll')\n }\n const base = baseDir.uri\n let newDetailsDoc: NamedNode\n let newInstance: NamedNode\n\n if (options.useExisting) {\n newInstance = options.useExisting\n const existingBaseDir = thisInstance.dir()\n if (!existingBaseDir) {\n throw new Error('Existing schedule instance needs a containing directory')\n }\n newBase = existingBaseDir.uri\n newDetailsDoc = newInstance.doc()\n // newIndexDoc = null\n if (options.newBase) {\n throw new Error(\n 'mint new scheduler: Illegal - have both new base and existing event'\n )\n }\n } else {\n newDetailsDoc = kb.sym(newBase + 'details.ttl')\n // newIndexDoc = kb.sym(newBase + 'index.html')\n newInstance = kb.sym(newDetailsDoc.uri + '#event')\n }\n\n const newResultsDoc = kb.sym(newBase + 'results.ttl')\n\n const toBeCopied: CopySpec[] = options.noIndexHTML\n ? []\n : [{ local: 'index.html', contentType: 'text/html' }]\n\n const agenda: AgendaTask[] = []\n\n // @@ This needs some form of visible progress bar\n for (let f = 0; f < toBeCopied.length; f++) {\n const item = toBeCopied[f]\n const fun = function copyItem (item: CopySpec) {\n agenda.push(function () {\n const newURI = newBase + item.local\n console.log('Copying ' + base + item.local + ' to ' + newURI)\n\n const setThatACL = function () {\n setACL2(newURI, false, function (ok, message) {\n if (!ok) {\n complainIfBad(\n ok,\n 'FAILED to set ACL ' + newURI + ' : ' + message\n )\n console.log('FAILED to set ACL ' + newURI + ' : ' + message)\n } else {\n runNextAgendaItem(agenda) // beware too much nesting\n }\n })\n }\n\n kb.fetcher\n .webCopy(\n base + item.local,\n newBase + item.local,\n item.contentType\n )\n .then(() => authn.checkUser())\n .then(webId => {\n me = webId as NamedNode | null\n\n setThatACL()\n })\n .catch(err => {\n console.log(\n 'FAILED to copy ' + base + item.local + ' : ' + err.message\n )\n complainIfBad(\n false,\n 'FAILED to copy ' + base + item.local + ' : ' + err.message\n )\n })\n })\n }\n fun(item)\n }\n\n agenda.push(function createDetailsFile () {\n kb.add(\n newInstance,\n ns.rdf('type'),\n ns.sched('SchedulableEvent'),\n newDetailsDoc\n )\n if (me) {\n kb.add(newInstance, ns.dc('author'), me, newDetailsDoc) // Who is sending the invitation?\n kb.add(newInstance, ns.foaf('maker'), me, newDetailsDoc) // Uneditable - wh is allowed to edit this?\n }\n\n kb.add(\n newInstance,\n ns.dc('created'),\n $rdf.literal(\n new Date().toISOString(),\n $rdf.sym('http://www.w3.org/2001/XMLSchema#dateTime')\n ),\n newDetailsDoc\n )\n kb.add(newInstance, ns.sched('resultsDocument'), newDetailsDoc)\n\n updater.put(\n newDetailsDoc,\n kb.statementsMatching(undefined, undefined, undefined, newDetailsDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n runNextAgendaItem(agenda)\n } else {\n complainIfBad(\n ok,\n 'FAILED to save new scheduler at: ' +\n newDetailsDoc +\n ' : ' +\n message\n )\n console.log(\n 'FAILED to save new scheduler at: ' +\n newDetailsDoc +\n ' : ' +\n message\n )\n }\n }\n )\n })\n\n agenda.push(function () {\n kb.fetcher\n .webOperation('PUT', newResultsDoc.uri, {\n data: '',\n contentType: 'text/turtle'\n })\n .then(() => {\n runNextAgendaItem(agenda)\n })\n .catch(err => {\n complainIfBad(\n false,\n 'Failed to initialize empty results file: ' + err.message\n )\n })\n })\n\n agenda.push(function () {\n setACL2(newResultsDoc.uri, true, function (ok, body) {\n complainIfBad(\n ok,\n 'Failed to set Read-Write ACL on results file: ' + body\n )\n if (ok) runNextAgendaItem(agenda)\n })\n })\n\n agenda.push(function () {\n setACL2(newDetailsDoc.uri, false, function (ok, body) {\n complainIfBad(\n ok,\n 'Failed to set read ACL on configuration file: ' + body\n )\n if (ok) runNextAgendaItem(agenda)\n })\n })\n\n agenda.push(function () {\n // give the user links to the new app\n console.log('Finished minting new scheduler')\n options.newInstance = newInstance\n resolve(options)\n })\n\n runNextAgendaItem(agenda)\n // Created new data files.\n }) // promise\n }, // mintNew\n\n // Render one meeting schedule poll\n render: function (subject: NamedNode, context: DataBrowserContext) {\n const dom = context.dom\n const kb = context.session.store\n const ns = UI.ns\n const invitation = subject\n const appPathSegment = 'app-when-can-we.w3.org' // how to allocate this string and connect to\n\n function applyEnvironmentAttributes (element: HTMLDivElement): void {\n const environment = (context.environment ?? {}) as Partial<RenderEnvironment>\n element.dataset.layout = environment.layout ?? 'desktop'\n }\n\n // ////////////////////////////////////////////\n\n const fetcher = kb.fetcher\n const updater = kb.updater\n let waitingForLogin = false\n\n const thisInstance = subject\n const detailsDoc = subject.doc()\n const baseDir = detailsDoc.dir()\n if (!baseDir) {\n throw new Error('Schedule pane needs a containing directory for its details document')\n }\n const base = baseDir.uri\n\n const resultsDoc = $rdf.sym(base + 'results.ttl')\n // const formsURI = base + 'forms.ttl'\n // We can't in fact host stuff from there because of CORS\n const formsURI =\n 'https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl'\n\n const form1 = kb.sym(formsURI + '#form1')\n const form2 = kb.sym(formsURI + '#form2')\n const form3 = kb.sym(formsURI + '#form3')\n\n $rdf.parse(formText, kb, formsURI, 'text/turtle') // Load forms directly\n\n // Utility functions\n\n const complainIfBad = function (ok, message) {\n if (!ok) {\n div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'))\n }\n }\n\n const clearElement = function (ele) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild)\n }\n return ele\n }\n\n const refreshCellColor = function (cell, value) {\n const bg = kb.any(value, UI.ns.ui('backgroundColor'))\n if (bg) {\n cell.classList.add('schedule-pane__cell')\n cell.setAttribute(\n 'style',\n 'background-color: ' + bg + ';'\n )\n }\n }\n\n let me: NamedNode | null = null\n\n authn.checkUser().then(webId => {\n me = (webId as NamedNode | null) ?? null\n\n if (logInOutButton) {\n logInOutButton.refresh()\n }\n if (webId && waitingForLogin) {\n waitingForLogin = false\n showAppropriateDisplay()\n }\n })\n console.log('me: ' + me) // @@ curently not actually used elsewhere\n\n // ////////////////////////////// Reproduction: spawn a new instance\n //\n // Viral growth path: user of app decides to make another instance\n //\n\n const newInstanceButton = function () {\n const b = UI.login.newAppInstance(\n dom,\n { noun: 'scheduler', appPathSegment },\n function (workspace: string | null, newBase: string) {\n return initializeNewInstanceInWorkspace(\n $rdf.sym(workspace || newBase)\n )\n }\n )\n if (b.firstChild instanceof HTMLElement) {\n b.firstChild.classList.add('schedule-pane__button')\n }\n return b\n } // newInstanceButton\n\n // /////////////////////// Create new document files for new instance of app\n\n const initializeNewInstanceInWorkspace = function (ws: NamedNode) {\n const uriPrefix = kb.any(ws, ns.space('uriPrefix'))\n let newBase = ''\n if (!uriPrefix) {\n newBase = ws.uri.split('#')[0]\n } else {\n newBase = uriPrefix.value\n }\n if (newBase.slice(-1) !== '/') {\n $rdf.log.error(appPathSegment + ': No / at end of uriPrefix ' + newBase) // @@ paramater?\n newBase = newBase + '/'\n }\n const now = new Date()\n newBase += appPathSegment + '/id' + now.getTime() + '/' // unique id\n\n initializeNewInstanceAtBase(thisInstance, newBase)\n }\n\n const initializeNewInstanceAtBase = function (thisInstance: NamedNode, newBase: string) {\n const options: MintOptions = { thisInstance, newBase }\n schedulePane.mintNew(context, options)\n .then(function (options) {\n if (!options.newInstance) {\n throw new Error('New scheduler instance was not returned')\n }\n const p = div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 140%;')\n p.innerHTML =\n 'Your <a href=\\'' +\n options.newInstance.uri +\n '\\'><b>new scheduler</b></a> is ready to be set up. ' +\n '<br/><br/><a href=\\'' +\n options.newInstance.uri +\n '\\'>Say when you what days work for you.</a>'\n })\n .catch(function (error) {\n complainIfBad(\n false,\n 'Error createing new scheduler at ' +\n options.newInstance +\n ': ' +\n error\n )\n })\n }\n\n // ///////////////////////\n\n const getForms = function () {\n console.log('getforms()')\n getDetails()\n /*\n fetcher.nowOrWhenFetched(formsURI, undefined, function (ok, body) {\n console.log('getforms() ok? ' + ok)\n if (!ok) return complainIfBad(ok, body)\n getDetails()\n })\n */\n }\n\n const getDetails = function () {\n console.log('getDetails()') // Looking for blank screen hang-up\n fetcher.nowOrWhenFetched(detailsDoc.uri, undefined, function (ok, body) {\n console.log('getDetails() ok? ' + ok)\n if (!ok) return complainIfBad(ok, body)\n showAppropriateDisplay()\n })\n }\n\n const showAppropriateDisplay = function showAppropriateDisplay () {\n console.log('showAppropriateDisplay()')\n\n authn.checkUser().then(webId => {\n if (!webId) {\n return showSignon()\n }\n\n // On gh-pages, the turtle will not load properly (bad mime type)\n // but we can trap it as being a non-editable server.\n\n if (\n !kb.updater.editable(detailsDoc.uri, kb) ||\n kb.holds(subject, ns.rdf('type'), ns.wf('TemplateInstance'))\n ) {\n // This is read-only example e.g. on github pages, etc\n showBootstrap()\n return\n }\n\n const ready = kb.any(subject, ns.sched('ready'))\n\n if (!ready) {\n showForms()\n } else {\n // no editing not author\n getResults()\n }\n })\n }\n\n const showSignon = function showSignon () {\n clearElement(naviMain)\n const signonContext = { div, dom }\n UI.login.ensureLoggedIn(signonContext).then(context => {\n me = context.me ?? null\n waitingForLogin = false // untested\n showAppropriateDisplay()\n })\n }\n\n const showBootstrap = function showBootstrap () {\n const div = clearElement(naviMain)\n div.appendChild(\n UI.login.newAppInstance(\n dom,\n { noun: 'poll', appPathSegment },\n function (workspace: string | null, newBase: string) {\n return initializeNewInstanceInWorkspace(\n $rdf.sym(workspace || newBase)\n )\n }\n )\n )\n\n div.appendChild(dom.createElement('hr')) // @@\n\n const p = div.appendChild(dom.createElement('p'))\n p.textContent =\n 'Where would you like to store the data for the poll? ' +\n 'Give the URL of the directory where you would like the data stored.'\n const baseField = div.appendChild(dom.createElement('input'))\n baseField.setAttribute('type', 'text')\n baseField.size = 80 // really a string\n baseField.label = 'base URL'\n baseField.autocomplete = 'on'\n\n div.appendChild(dom.createElement('br')) // @@\n\n const button = div.appendChild(dom.createElement('button'))\n button.classList.add('schedule-pane__button')\n button.textContent = 'Start new poll at this URI'\n button.addEventListener('click', function (_e) {\n let newBase = baseField.value\n if (newBase.slice(-1) !== '/') {\n newBase += '/'\n }\n initializeNewInstanceAtBase(thisInstance, newBase)\n })\n }\n\n // ///////////// The forms to configure the poll\n\n const doneButton = dom.createElement('button')\n\n const showForms = function () {\n clearElement(naviCenter) // Remove refresh button if nec\n const div = naviMain\n\n // form2 depends on sched:allDay; seed a local default for new polls\n if (!kb.any(subject, ns.sched('allDay'))) {\n kb.add(\n subject,\n ns.sched('allDay'),\n $rdf.literal('true', $rdf.sym('http://www.w3.org/2001/XMLSchema#boolean')),\n detailsDoc\n )\n }\n\n const wizard = true\n let currentSlide = 0\n let gotDoneButton = false\n\n const hasFormControls = function (container) {\n return !!container.querySelector('input, select, textarea, button')\n }\n\n const asBoolean = function (term, fallback) {\n if (!term) return fallback\n const value = (term.value || '').toLowerCase()\n if (value === 'true' || value === '1') return true\n if (value === 'false' || value === '0') return false\n return fallback\n }\n\n const renderTimeProposalFallback = function (slide) {\n const allDayValue = asBoolean(kb.any(subject, ns.sched('allDay')), true)\n const fallbackForm = kb.sym(\n formsURI + (allDayValue ? '#AllDayForm2' : '#NotAllDayForm2')\n )\n UI.widgets.appendForm(\n document,\n slide,\n {},\n subject,\n fallbackForm,\n detailsDoc,\n complainIfBad\n )\n }\n\n const annotateRenderedForm = function (\n container: HTMLElement,\n includePrimaryFields: boolean = false\n ) {\n const controls = Array.from(\n container.querySelectorAll('input, select, textarea')\n ) as HTMLElement[]\n controls.forEach(control => {\n control.classList.add('schedule-pane__form-control')\n if (control.tagName.toLowerCase() === 'textarea') {\n control.classList.add('schedule-pane__form-control--textarea')\n }\n })\n\n const borderedPanels = Array.from(\n container.querySelectorAll('div[style*=\"border: 0.05em solid\"]')\n ) as HTMLElement[]\n borderedPanels.forEach(panel => {\n panel.classList.add('schedule-pane__panel')\n })\n\n const headings = Array.from(container.querySelectorAll('h3')) as HTMLElement[]\n headings.forEach(heading => {\n heading.classList.add('schedule-pane__form-heading')\n const headingText = (heading.textContent || '').trim().toLowerCase()\n if (headingText === 'time proposals') {\n heading.classList.add('schedule-pane__form-heading--time-proposals')\n heading.closest('.schedule-pane__panel')?.classList.add(\n 'schedule-pane__panel--time-proposals'\n )\n }\n })\n\n if (!includePrimaryFields) {\n return\n }\n\n const labels = Array.from(container.querySelectorAll('.formFieldName'))\n labels.forEach(labelElement => {\n const row = labelElement.parentElement as HTMLElement | null\n const labelText = (labelElement.textContent || '').trim().toLowerCase()\n if (!row) return\n if (labelText === 'summary' || labelText === 'location') {\n row.classList.add('schedule-pane__field-row--compact')\n }\n if (labelText === 'comment') {\n row.classList.add('schedule-pane__field-row--comment')\n }\n })\n\n const commentField = container.querySelector('textarea') as HTMLTextAreaElement | null\n const commentFieldWrapper = commentField?.parentElement as HTMLElement | null\n const commentValueCell = commentFieldWrapper?.parentElement as HTMLElement | null\n const commentRow = commentValueCell?.parentElement as HTMLElement | null\n if (commentRow) {\n commentRow.classList.add('schedule-pane__field-row--comment')\n }\n if (commentValueCell) {\n commentValueCell.classList.add('schedule-pane__field-value--comment')\n }\n }\n\n const unwrapSlide = function (slide: HTMLElement) {\n const firstElement = slide.firstElementChild as HTMLElement | null\n if (!firstElement || slide.childElementCount !== 1) {\n return slide\n }\n return firstElement\n }\n\n if (wizard) {\n const forms = [form1, form2, form3]\n const slides: HTMLElement[] = []\n currentSlide = 0\n for (let f = 0; f < forms.length; f++) {\n const slide = dom.createElement('div')\n UI.widgets.appendForm(\n document,\n slide,\n {},\n subject,\n forms[f],\n detailsDoc,\n complainIfBad\n )\n annotateRenderedForm(slide, f === 0)\n\n // Some stores end up with form2's ui:Options unresolved; force a usable input form.\n if (f === 1 && !hasFormControls(slide)) {\n renderTimeProposalFallback(slide)\n annotateRenderedForm(slide)\n }\n\n slides.push(unwrapSlide(slide))\n }\n\n const refresh = function () {\n clearElement(naviMain).appendChild(slides[currentSlide])\n\n if (currentSlide === 0) {\n b1.setAttribute('disabled', '')\n } else {\n b1.removeAttribute('disabled')\n }\n if (currentSlide === slides.length - 1) {\n b2.setAttribute('disabled', '')\n if (!gotDoneButton) {\n // Only expose at last slide seen\n naviCenter.appendChild(emailButton) // could also check data shape\n naviCenter.appendChild(doneButton) // could also check data shape\n gotDoneButton = true\n }\n } else {\n b2.removeAttribute('disabled')\n }\n }\n const b1 = clearElement(naviLeft).appendChild(dom.createElement('button'))\n b1.classList.add('schedule-pane__button')\n b1.textContent = '<- go back'\n b1.addEventListener(\n 'click',\n function (_e) {\n if (currentSlide > 0) {\n currentSlide -= 1\n refresh()\n }\n },\n false\n )\n\n const b2 = clearElement(naviRight).appendChild(\n dom.createElement('button')\n )\n b2.classList.add('schedule-pane__button')\n b2.textContent = 'continue ->'\n b2.addEventListener(\n 'click',\n function (_e) {\n if (currentSlide < slides.length - 1) {\n currentSlide += 1\n refresh()\n }\n },\n false\n )\n\n refresh()\n } else {\n // not wizard one big form\n // @@@ create the initial config doc if not exist\n const table = div.appendChild(dom.createElement('table'))\n UI.widgets.appendForm(\n document,\n table,\n {},\n subject,\n form1,\n detailsDoc,\n complainIfBad\n )\n annotateRenderedForm(table, true)\n UI.widgets.appendForm(\n document,\n table,\n {},\n subject,\n form2,\n detailsDoc,\n complainIfBad\n )\n annotateRenderedForm(table)\n UI.widgets.appendForm(\n document,\n table,\n {},\n subject,\n form3,\n detailsDoc,\n complainIfBad\n )\n annotateRenderedForm(table)\n naviCenter.appendChild(doneButton) // could also check data shape\n }\n // @@@ link config to results\n\n const insertables: Statement[] = []\n insertables.push(\n $rdf.st(\n subject,\n ns.sched('availabilityOptions'),\n ns.sched('YesNoMaybe'),\n detailsDoc\n )\n )\n insertables.push(\n $rdf.st(\n subject,\n ns.sched('ready'),\n $rdf.literal(\n new Date().toISOString(),\n $rdf.sym('http://www.w3.org/2001/XMLSchema#dateTime')\n ),\n detailsDoc\n )\n )\n insertables.push(\n $rdf.st(subject, ns.sched('results'), resultsDoc, detailsDoc)\n ) // @@ also link in results\n\n doneButton.classList.add('schedule-pane__button')\n doneButton.textContent = 'Go to poll'\n doneButton.addEventListener(\n 'click',\n function (_e) {\n if (kb.any(subject, ns.sched('ready'))) {\n // already done\n getResults()\n naviRight.appendChild(emailButton)\n } else {\n naviRight.appendChild(emailButton)\n kb.updater.update([], insertables, function (\n uri,\n success,\n errorBody\n ) {\n if (!success) {\n complainIfBad(success, errorBody)\n } else {\n // naviRight.appendChild(emailButton)\n getResults()\n }\n })\n }\n },\n false\n )\n\n const emailButton = dom.createElement('button')\n emailButton.classList.add('schedule-pane__button')\n const emailIcon = emailButton.appendChild(dom.createElement('img'))\n emailIcon.setAttribute('src', UI.icons.iconBase + 'noun_480183.svg') // noun_480183.svg\n emailIcon.classList.add('schedule-pane__button-icon')\n // emailButton.textContent = 'email invitations'\n emailButton.addEventListener(\n 'click',\n function (_e) {\n const title =\n kb.anyValue(subject, ns.cal('summary')) ||\n kb.anyValue(subject, ns.dc('title')) ||\n ''\n const mailto =\n 'mailto:' +\n kb\n .each(subject, ns.sched('invitee'))\n .map(function (who) {\n const mbox = kb.any(who as NamedNode, ns.foaf('mbox')) as NamedNode | null\n return mbox ? mbox.uri.replace('mailto:', '') : ''\n })\n .join(',') +\n '?subject=' +\n encodeURIComponent(title + '-- When can we meet?') +\n '&body=' +\n encodeURIComponent(\n title + '\\n\\nWhen can you?\\n\\nSee ' + subject + '\\n'\n )\n // @@ assumed there is a data browser\n\n console.log('Mail: ' + mailto)\n window.location.href = mailto\n },\n false\n )\n } // showForms\n\n // Ask for each day, what times .. @@ to be added some time\n /*\n const setTimesOfDay = function () {\n const i, j, x, y, slot, cell, day\n const insertables = []\n const possibleDays = kb.each(invitation, ns.sched('option'))\n .map(function (opt) {return kb.any(opt, ns.cal('dtstart'))})\n const cellLookup = []\n const slots = kb.each(invitation, ns.sched('slot'))\n if (slots.length === 0) {\n for (i = 0; i < 2; i++) {\n slot = UI.widgets.newThing(detailsDoc)\n insertables.push($rdf.st(invitation, ns.sched('slot'), slot))\n insertables.push($rdf.st(slot, ns.rdfs('label'), 'slot ' + (i + 1)))\n for (j = 0; j < possibleDays.length; j++) {\n day - possibleDays[j]\n x = kb.any(slot, ns.rdfs('label'))\n y = kb.any(day, ns.cal('dtstart'))\n cell = UI.widgets.newThing(detailsDoc)\n cellLookup[x.toNT() + y.toNT()] = cell\n insertables.push($rdf.st(slot, ns.sched('cell'), cell))\n insertables.push($rdf.st(cell, ns.sched('day'), possibleDays[j]))\n }\n }\n }\n\n const query = new $rdf.Query('TimesOfDay')\n const v = {}['day', 'label', 'value', 'slot', 'cell'].map(function (x) {\n query.consts.push(v[x] = $rdf.constiable(x)) })\n query.pat.add(invitation, ns.sched('slot'), v.slot)\n query.pat.add(v.slot, ns.rdfs('label'), v.label)\n query.pat.add(v.slot, ns.sched('cell'), v.cell)\n query.pat.add(v.cell, ns.sched('timeOfDay'), v.value)\n query.pat.add(v.cell, ns.sched('day'), v.day)\n\n const options = {}\n options.set_x = kb.each(subject, ns.sched('slot')) // @@@@@ option -> dtstart in future\n options.set_x = options.set_x.map(function (opt) { return kb.any(opt, ns.rdfs('label')) })\n\n options.set_y = kb.each(subject, ns.sched('option')); // @@@@@ option -> dtstart in future\n options.set_y = options.set_y.map(function (opt) { return kb.any(opt, ns.cal('dtstart')) })\n\n const possibleTimes = kb.each(invitation, ns.sched('option'))\n .map(function (opt) { return kb.any(opt, ns.cal('dtstart')) })\n\n const displayTheMatrix = function () {\n const matrix = div.appendChild(UI.matrix.matrixForQuery(\n dom, query, v.time, v.author, v.value, options, function () {}))\n\n matrix.setAttribute('class', 'matrix')\n\n const refreshButton = dom.createElement('button')\n refreshButton.setAttribute('style', inputStyle)\n refreshButton.textContent = 'refresh'\n refreshButton.addEventListener('click', function (e) {\n refreshButton.disabled = true\n store.fetcher.nowOrWhenFetched(subject.doc(), undefined, function (ok, body) {\n if (!ok) {\n console.log('Cant refresh matrix' + body)\n } else {\n matrix.refresh()\n refreshButton.disabled = false\n }\n })\n }, false)\n\n clearElement(naviCenter)\n naviCenter.appendChild(refreshButton)\n }\n\n const dataPointForNT = []\n\n const doc = resultsDoc\n options.set_y = options.set_y.filter(function (z) { return (! z.sameTerm(me)) })\n options.set_y.push(me) // Put me on the end\n\n options.cellFunction = function (cell, x, y, value) {\n // const point = cellLookup[x.toNT() + y.toNT()]\n\n if (y.sameTerm(me)) {\n const callbackFunction = function () { refreshCellColor(cell, value); }; // @@ may need that\n const selectOptions = {}\n const predicate = ns.sched('timeOfDay')\n const cellSubject = dataPointForNT[x.toNT()]\n const selector = UI.widgets.makeSelectForOptions(dom, kb, cellSubject, predicate,\n possibleAvailabilities, selectOptions, resultsDoc, callbackFunction)\n cell.appendChild(selector)\n } else if (value !== null) {\n cell.textContent = UI.utils.label(value)\n }\n\n }\n\n const responses = kb.each(invitation, ns.sched('response'))\n const myResponse = null\n responses.map(function (r) {\n if (kb.holds(r, ns.dc('author'), me)) {\n myResponse = r\n }\n })\n\n const id = UI.widgets.newThing(doc).uri\n if (myResponse === null) {\n myResponse = $rdf.sym(id + '_response')\n insertables.push($rdf.st(invitation, ns.sched('response'), myResponse, doc))\n insertables.push($rdf.st(myResponse, ns.dc('author'), me, doc))\n } else {\n const dps = kb.each(myResponse, ns.sched('cell'))\n dps.map(function (dataPoint) {\n const time = kb.any(dataPoint, ns.cal('dtstart'))\n dataPointForNT[time.toNT()] = dataPoint\n })\n }\n for (let j = 0; j < possibleTimes.length; j++) {\n if (dataPointForNT[possibleTimes[j].toNT()]) continue\n const dataPoint = $rdf.sym(id + '_' + j)\n insertables.push($rdf.st(myResponse, ns.sched('cell'), dataPoint, doc))\n insertables.push($rdf.st(dataPoint, ns.cal('dtstart'), possibleTimes[j], doc)) // @@\n dataPointForNT[possibleTimes[j].toNT()] = dataPoint\n }\n if (insertables.length) {\n store.updater.update([], insertables, function (uri, success, errorBody) {\n if (!success) {\n complainIfBad(success, errorBody)\n } else {\n displayTheMatrix()\n }\n })\n } else { // no insertables\n displayTheMatrix()\n }\n }\n */\n // end setTimesOfDay\n\n // Read or create empty results file\n function getResults () {\n fetcher.nowOrWhenFetched(resultsDoc.uri, undefined, (ok, body, response) => {\n if (!ok) {\n if (response.status === 404) {\n // / Check explicitly for 404 error\n console.log('Initializing details file ' + resultsDoc)\n updater.put(resultsDoc, [], 'text/turtle', function (\n uri2,\n ok,\n message\n ) {\n if (ok) {\n clearElement(naviMain)\n showResults()\n } else {\n complainIfBad(\n ok,\n 'FAILED to create results file at: ' +\n resultsDoc.uri +\n ' : ' +\n message\n )\n console.log(\n 'FAILED to craete results file at: ' +\n resultsDoc.uri +\n ' : ' +\n message\n )\n }\n })\n } else {\n // Other error, not 404 -- do not try to overwite the file\n complainIfBad(ok, 'FAILED to read results file: ' + body)\n }\n } else {\n // Happy read\n clearElement(naviMain)\n showResults()\n }\n })\n }\n\n function showResults () {\n // Now the form for responsing to the poll\n //\n\n // div.appendChild(dom.createElement('hr'))\n\n // const invitation = subject\n const title = kb.any(invitation, ns.cal('summary'))\n const comment = kb.any(invitation, ns.cal('comment'))\n const location = kb.any(invitation, ns.cal('location'))\n const div = naviMain\n if (title) div.appendChild(dom.createElement('h3')).textContent = title.value\n if (location) {\n div.appendChild(dom.createElement('address')).textContent =\n location.value\n }\n if (comment) {\n div.appendChild(dom.createElement('p')).textContent = comment.value\n }\n const author = kb.any(invitation, ns.dc('author')) as NamedNode | null\n if (author) {\n const authorName = kb.any(author, ns.foaf('name'))\n if (authorName) {\n div.appendChild(dom.createElement('p')).textContent = authorName.value\n }\n }\n\n const query = new $rdf.Query('Responses', 0)\n const v = {} as ResponseQueryVars\n v.time = $rdf.variable('time')\n v.author = $rdf.variable('author')\n v.value = $rdf.variable('value')\n v.resp = $rdf.variable('resp')\n v.cell = $rdf.variable('cell')\n query.vars.push(v.time, v.author, v.value, v.resp, v.cell)\n query.pat.add(invitation, ns.sched('response'), v.resp)\n query.pat.add(v.resp, ns.dc('author'), v.author)\n query.pat.add(v.resp, ns.sched('cell'), v.cell)\n query.pat.add(v.cell, ns.sched('availabilty'), v.value)\n query.pat.add(v.cell, ns.cal('dtstart'), v.time)\n\n // Sort by by person @@@\n\n const options: MatrixOptionsLike = { set_x: [], set_y: [] }\n options.set_x = kb.each(subject, ns.sched('option')) as RdflibNode[] // @@@@@ option -> dtstart in future\n options.set_x = options.set_x.map(function (opt) {\n return kb.any(opt as NamedNode, ns.cal('dtstart'))\n }).filter(function (time) {\n return !!time\n })\n\n options.set_y = kb.each(subject, ns.sched('response')) as RdflibNode[]\n options.set_y = options.set_y.map(function (resp) {\n return kb.any(resp as NamedNode, ns.dc('author'))\n }).filter(function (author) {\n return !!author\n })\n\n const possibleTimes = kb\n .each(invitation, ns.sched('option'))\n .map(function (opt) {\n return kb.any(opt as NamedNode, ns.cal('dtstart'))\n })\n .filter(function (time) {\n return !!time\n })\n\n const displayTheMatrix = function () {\n const matrix = div.appendChild(\n UI.matrix.matrixForQuery(\n dom,\n query,\n v.time,\n v.author,\n v.value,\n options,\n function () {}\n )\n )\n\n matrix.setAttribute('class', 'matrix')\n\n const refreshButton = dom.createElement('button')\n refreshButton.classList.add('schedule-pane__button')\n // refreshButton.textContent = 'refresh' // noun_479395.svg\n const refreshIcon = dom.createElement('img')\n refreshIcon.setAttribute('src', UI.icons.iconBase + 'noun_479395.svg')\n refreshIcon.classList.add('schedule-pane__button-icon')\n refreshButton.appendChild(refreshIcon)\n refreshButton.addEventListener(\n 'click',\n function (_e) {\n refreshButton.disabled = true\n kb.fetcher.refresh(resultsDoc, function (ok, body) {\n if (!ok) {\n console.log('Cant refresh matrix' + body)\n } else {\n matrix.refresh()\n refreshButton.disabled = false\n }\n })\n },\n false\n )\n\n clearElement(naviCenter)\n naviCenter.appendChild(refreshButton)\n }\n\n // @@ Give other combos too-- see schedule ontology\n // const possibleAvailabilities = [ SCHED('No'), SCHED('Maybe'), SCHED('Yes') ]\n\n // const me = authn.currentUser()\n\n const dataPointForNT: Record<string, NamedNode> = {}\n\n const loginContext = { div: naviCenter, dom }\n UI.login.ensureLoggedIn(loginContext).then(context => {\n const me = context.me\n if (!me) {\n return\n }\n const doc = resultsDoc\n options.set_y = options.set_y.filter(function (z) {\n return !z.sameTerm(me)\n })\n options.set_y.push(me) // Put me on the end\n\n options.cellFunction = function (cell, x, y, value) {\n if (value !== null) {\n kb.fetcher.nowOrWhenFetched(\n value.uri.split('#')[0],\n undefined,\n function (ok, _error) {\n if (ok) refreshCellColor(cell, value)\n }\n )\n }\n if (y.sameTerm(me)) {\n const callbackFunction = function () {\n refreshCellColor(cell, value)\n return ''\n } // @@ may need that\n const selectOptions = {}\n const predicate = ns.sched('availabilty')\n if (!x) return ''\n const cellSubject = dataPointForNT[x.toNT()]\n const selector = UI.widgets.makeSelectForOptions(\n dom,\n kb,\n cellSubject,\n predicate,\n possibleAvailabilities,\n selectOptions,\n resultsDoc,\n callbackFunction\n )\n cell.appendChild(selector)\n } else if (value !== null) {\n cell.textContent = UI.utils.label(value)\n }\n return ''\n }\n\n const responses = kb.each(invitation, ns.sched('response'))\n let myResponse: NamedNode | null = null\n responses.forEach(function (r) {\n if (kb.holds(r, ns.dc('author'), me)) {\n myResponse = r as NamedNode\n }\n })\n\n const insertables: Statement[] = [] // list of statements to be stored\n\n const id = UI.widgets.newThing(doc).uri\n if (myResponse === null) {\n myResponse = $rdf.sym(id + '_response')\n insertables.push(\n $rdf.st(invitation, ns.sched('response'), myResponse, doc)\n )\n insertables.push($rdf.st(myResponse, ns.dc('author'), me, doc))\n } else {\n const dps = kb.each(myResponse, ns.sched('cell'))\n dps.forEach(function (dataPoint) {\n const time = kb.any(dataPoint as NamedNode, ns.cal('dtstart'))\n if (!time) return\n dataPointForNT[time.toNT()] = dataPoint as NamedNode\n })\n }\n for (let j = 0; j < possibleTimes.length; j++) {\n const possibleTime = possibleTimes[j]\n if (!possibleTime) continue\n if (dataPointForNT[possibleTime.toNT()]) continue\n const dataPoint = $rdf.sym(id + '_' + j)\n insertables.push(\n $rdf.st(myResponse, ns.sched('cell'), dataPoint, doc)\n )\n insertables.push(\n $rdf.st(dataPoint, ns.cal('dtstart'), possibleTime, doc)\n ) // @@\n dataPointForNT[possibleTime.toNT()] = dataPoint\n }\n if (insertables.length) {\n kb.updater.update([], insertables, function (\n uri,\n success,\n errorBody\n ) {\n if (!success) {\n complainIfBad(success, errorBody)\n } else {\n displayTheMatrix()\n }\n })\n } else {\n // no insertables\n displayTheMatrix()\n }\n }) // @@@@ end of .then\n\n // If I made this in the first place, allow me to edit it.\n // @@ optionally -- allows others to if according to original\n const instanceCreator = kb.any(subject, ns.foaf('maker')) // owner?\n if (!instanceCreator || !me || instanceCreator.sameTerm(me)) {\n const editButton = dom.createElement('button')\n editButton.classList.add('schedule-pane__button')\n // editButton.textContent = '(Modify the poll)' // noun_344563.svg\n const editIcon = dom.createElement('img')\n editIcon.setAttribute('src', UI.icons.iconBase + 'noun_344563.svg')\n editIcon.classList.add('schedule-pane__button-icon')\n editButton.appendChild(editIcon)\n editButton.addEventListener(\n 'click',\n function (_e) {\n clearElement(div)\n showForms()\n },\n false\n )\n clearElement(naviLeft)\n naviLeft.appendChild(editButton)\n }\n\n // div.appendChild(editButton)\n\n clearElement(naviRight)\n naviRight.appendChild(newInstanceButton())\n } // showResults\n\n const div = dom.createElement('div')\n div.classList.add('schedule-pane')\n applyEnvironmentAttributes(div)\n const structure = div.appendChild(dom.createElement('table')) // @@ make responsive style\n structure.classList.add('schedule-pane__table')\n\n const logInOutButton: LoginStatusBoxLike | null = null\n /*\n const logInOutButton = UI.login.loginStatusBox(dom, setUser)\n // floating divs lead to a mess\n // logInOutButton.setAttribute('style', 'float: right') // float the beginning of the end\n naviLoginout3.appendChild(logInOutButton)\n logInOutButton.setAttribute('style', 'margin-right: 0em;')\n */\n\n const naviTop = structure.appendChild(dom.createElement('tr'))\n const naviMain = naviTop.appendChild(dom.createElement('td'))\n naviMain.classList.add('schedule-pane__main-cell')\n naviMain.setAttribute('colspan', '3')\n\n const naviMenu = structure.appendChild(dom.createElement('tr'))\n naviMenu.classList.add('naviMenu', 'schedule-pane__nav')\n const naviLeft = naviMenu.appendChild(dom.createElement('td'))\n const naviCenter = naviMenu.appendChild(dom.createElement('td'))\n const naviRight = naviMenu.appendChild(dom.createElement('td'))\n\n getForms()\n\n return div\n } // render\n} // property list\n// ends\n"],"mappings":"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"}
@@ -1,385 +0,0 @@
1
- (function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.schedule-pane__table{border-collapse:collapse;background-color:#fff;min-width:40rem;min-height:13rem}.schedule-pane__button{padding:var(--spacing-xs,.5rem);background-color:#eef;border:.5rem solid #fff;font-size:100%}.schedule-pane__button-icon{width:var(--icon-sm,1.8rem);height:var(--icon-sm,1.8rem)}.schedule-pane__nav{text-align:center;vertical-align:middle;padding-top:4rem}.schedule-pane__cell{padding:var(--spacing-xs,.3rem);text-align:center}.schedule-pane__table .schedule-pane__form-heading{color:#888;padding:.2em;font-weight:700;margin:.7em 0!important;font-size:110%!important}.schedule-pane__table .schedule-pane__form-heading--time-proposals{margin-bottom:0!important}.schedule-pane__table .schedule-pane__panel--time-proposals{border:none!important;padding-bottom:.9rem!important}.schedule-pane__table .schedule-pane__panel{box-sizing:border-box;max-width:100%;margin-right:.5rem;padding-left:.75rem!important;padding-right:.75rem!important}@media (width<=1024px){.schedule-pane__table .schedule-pane__main-cell{box-sizing:border-box;padding-left:.5rem;padding-right:.5rem}.schedule-pane__table .schedule-pane__field-row--comment{flex-wrap:wrap;align-items:flex-start;gap:.5rem;flex-direction:row!important;display:flex!important}.schedule-pane__table .schedule-pane__field-row--comment>div:first-child{flex:0 6rem;min-width:4.5rem;width:auto!important}.schedule-pane__table .schedule-pane__field-value--comment{box-sizing:border-box;flex:20rem;width:auto;min-width:0;padding-right:.25rem}.schedule-pane__table .schedule-pane__field-value--comment .schedule-pane__form-control--textarea,.schedule-pane__table .schedule-pane__field-row--comment .schedule-pane__form-control--textarea{box-sizing:border-box;padding:.5rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:.2rem 0 0!important}}div.schedule-pane[data-layout=mobile] .schedule-pane__table{table-layout:fixed;width:100%;min-width:0;min-height:0}div.schedule-pane[data-layout=mobile] .schedule-pane__table td,div.schedule-pane[data-layout=mobile] .schedule-pane__table th{overflow-wrap:anywhere;min-width:0;max-width:100%}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__main-cell{box-sizing:border-box;padding-left:.5rem;padding-right:.5rem}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--compact{align-items:flex-start;gap:.25rem}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--compact .formFieldName{flex:0 5.5rem;min-width:4.5rem;width:auto!important}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--compact .formFieldValue{flex:auto;min-width:0}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--compact .schedule-pane__form-control{box-sizing:border-box;font-size:var(--font-size-sm,.875rem);padding:.35rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:.2rem 0 0!important}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment{align-items:stretch;gap:.25rem;flex-direction:column!important;display:flex!important}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment .formFieldName,div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment>div:first-child{flex:none;min-width:0;width:auto!important}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment .formFieldValue,div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment>div:last-child,div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-value--comment{flex:auto;width:100%;min-width:0;display:block}div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-row--comment .schedule-pane__form-control--textarea,div.schedule-pane[data-layout=mobile] .schedule-pane__table .schedule-pane__field-value--comment .schedule-pane__form-control--textarea{box-sizing:border-box;font-size:var(--font-size-sm,.875rem);min-height:5.5rem;padding:.35rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:0!important}div.schedule-pane[data-layout=mobile] .schedule-pane__button{border-width:.2rem;padding:.4rem}div.schedule-pane[data-layout=mobile] .schedule-pane__button-icon{width:1.35rem;height:1.35rem}div.schedule-pane[data-layout=mobile] .schedule-pane__nav{padding-top:1rem}div.schedule-pane[data-layout=mobile] .schedule-pane__cell{padding:.2rem}@media (width<=576px){.schedule-pane__table{table-layout:fixed;width:100%;min-width:0;min-height:0}.schedule-pane__table td,.schedule-pane__table th{overflow-wrap:anywhere;min-width:0;max-width:100%}.schedule-pane__table .schedule-pane__main-cell{box-sizing:border-box;padding-left:.5rem;padding-right:.5rem}.schedule-pane__table .schedule-pane__field-row--compact{align-items:flex-start;gap:.25rem}.schedule-pane__table .schedule-pane__field-row--compact .formFieldName{flex:0 5.5rem;min-width:4.5rem;width:auto!important}.schedule-pane__table .schedule-pane__field-row--compact .formFieldValue{flex:auto;min-width:0}.schedule-pane__table .schedule-pane__field-row--compact .schedule-pane__form-control{box-sizing:border-box;font-size:var(--font-size-sm,.875rem);padding:.35rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:.2rem 0 0!important}.schedule-pane__table .schedule-pane__field-row--comment{align-items:stretch;gap:.25rem;flex-direction:column!important;display:flex!important}.schedule-pane__table .schedule-pane__field-row--comment .formFieldName,.schedule-pane__table .schedule-pane__field-row--comment>div:first-child{flex:none;min-width:0;width:auto!important}.schedule-pane__table .schedule-pane__field-row--comment .formFieldValue,.schedule-pane__table .schedule-pane__field-row--comment>div:last-child,.schedule-pane__table .schedule-pane__field-value--comment{flex:auto;width:100%;min-width:0;display:block}.schedule-pane__table .schedule-pane__field-row--comment .schedule-pane__form-control--textarea,.schedule-pane__table .schedule-pane__field-value--comment .schedule-pane__form-control--textarea{box-sizing:border-box;font-size:var(--font-size-sm,.875rem);min-height:5.5rem;padding:.35rem .45rem;width:100%!important;min-width:0!important;max-width:100%!important;margin:0!important}.schedule-pane__button{border-width:.2rem;padding:.4rem}.schedule-pane__button-icon{width:1.35rem;height:1.35rem}.schedule-pane__nav{padding-top:1rem}.schedule-pane__cell{padding:.2rem}}
2
- :root{--icon-sm:1.8em;--color-background-row-default:white;--color-background-row-alternate:#f0f0f0}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();import e from "./formsForSchedule.esm.js";
3
-
4
-
5
- import * as t from "solid-ui";
6
- import { authn as n } from "solid-logic";
7
- import * as r from "rdflib";
8
- //#region src/schedule/schedulePane.ts
9
- var i = t.ns, a = [
10
- i.sched("No"),
11
- i.sched("Maybe"),
12
- i.sched("Yes")
13
- ];
14
- function o(e) {
15
- let t = e.shift();
16
- t && t();
17
- }
18
- var s = {
19
- icon: t.icons.iconBase + "noun_346777.svg",
20
- name: "schedule",
21
- audience: [i.solid("PowerUser")],
22
- label: function(e, t) {
23
- return t.session.store.findTypeURIs(e)["http://www.w3.org/ns/pim/schedule#SchedulableEvent"] ? "Scheduling poll" : null;
24
- },
25
- mintClass: i.sched("SchedulableEvent"),
26
- mintNew: function(e, i) {
27
- return new Promise(function(a, s) {
28
- let c = t.ns, l = e.session.store, u = i.newBase, d = i.useExisting || r.sym(i.newBase + "index.ttl#this"), f = function(e, t) {
29
- e || (console.log("Error in Schedule Pane: Error constructing new scheduler: " + t), s(Error(t)));
30
- }, p = function(e, n, i) {
31
- let a = r.graph(), o = r.Namespace("http://www.w3.org/ns/auth/acl#"), s = a.sym(n + "#a1"), l = a.sym(n), u = a.sym(e);
32
- return a.add(s, t.ns.rdf("type"), o("Authorization"), l), a.add(s, o("accessTo"), u, l), a.add(s, o("agent"), _, l), a.add(s, o("mode"), o("Read"), l), a.add(s, o("mode"), o("Write"), l), a.add(s, o("mode"), o("Control"), l), s = a.sym(n + "#a2"), a.add(s, t.ns.rdf("type"), o("Authorization"), l), a.add(s, o("accessTo"), u, l), a.add(s, o("agentClass"), c.foaf("Agent"), l), a.add(s, o("mode"), o("Read"), l), i && a.add(s, o("mode"), o("Write"), l), r.serialize(l, a, n, "text/turtle");
33
- }, m = function(e, t, n) {
34
- let r = l.any(l.sym(e), l.sym("http://www.iana.org/assignments/link-relations/acl"));
35
- if (r) {
36
- let i = p(e, r.uri, t);
37
- return h.webOperation("PUT", r.uri, {
38
- data: i,
39
- contentType: "text/turtle"
40
- }).then((e) => n(!0)).catch((e) => {
41
- n(!1, e.message);
42
- });
43
- }
44
- return h.load(e).catch((e) => {
45
- n(!1, "Getting headers for ACL: " + e);
46
- }).then(() => {
47
- let n = l.any(l.sym(e), l.sym("http://www.iana.org/assignments/link-relations/acl"));
48
- if (!n) throw Error("No Link rel=ACL header for " + e);
49
- let r = p(e, n.uri, t);
50
- return h.webOperation("PUT", n.uri, {
51
- data: r,
52
- contentType: "text/turtle"
53
- });
54
- }).then((e) => n(!0)).catch((e) => {
55
- n(!1, e.message);
56
- });
57
- }, h = l.fetcher, g = l.updater, _ = i.me || n.currentUser();
58
- if (!_) {
59
- console.log("MUST BE LOGGED IN"), alert("NOT LOGGED IN");
60
- return;
61
- }
62
- let v = d.dir();
63
- if (!v) throw Error("Schedule pane needs a base directory to mint a new poll");
64
- let y = v.uri, b, x;
65
- if (i.useExisting) {
66
- x = i.useExisting;
67
- let e = d.dir();
68
- if (!e) throw Error("Existing schedule instance needs a containing directory");
69
- if (u = e.uri, b = x.doc(), i.newBase) throw Error("mint new scheduler: Illegal - have both new base and existing event");
70
- } else b = l.sym(u + "details.ttl"), x = l.sym(b.uri + "#event");
71
- let S = l.sym(u + "results.ttl"), C = i.noIndexHTML ? [] : [{
72
- local: "index.html",
73
- contentType: "text/html"
74
- }], w = [];
75
- for (let e = 0; e < C.length; e++) (function(e) {
76
- w.push(function() {
77
- let t = u + e.local;
78
- console.log("Copying " + y + e.local + " to " + t);
79
- let r = function() {
80
- m(t, !1, function(e, n) {
81
- e ? o(w) : (f(e, "FAILED to set ACL " + t + " : " + n), console.log("FAILED to set ACL " + t + " : " + n));
82
- });
83
- };
84
- l.fetcher.webCopy(y + e.local, u + e.local, e.contentType).then(() => n.checkUser()).then((e) => {
85
- _ = e, r();
86
- }).catch((t) => {
87
- console.log("FAILED to copy " + y + e.local + " : " + t.message), f(!1, "FAILED to copy " + y + e.local + " : " + t.message);
88
- });
89
- });
90
- })(C[e]);
91
- w.push(function() {
92
- l.add(x, c.rdf("type"), c.sched("SchedulableEvent"), b), _ && (l.add(x, c.dc("author"), _, b), l.add(x, c.foaf("maker"), _, b)), l.add(x, c.dc("created"), r.literal((/* @__PURE__ */ new Date()).toISOString(), r.sym("http://www.w3.org/2001/XMLSchema#dateTime")), b), l.add(x, c.sched("resultsDocument"), b), g.put(b, l.statementsMatching(void 0, void 0, void 0, b), "text/turtle", function(e, t, n) {
93
- t ? o(w) : (f(t, "FAILED to save new scheduler at: " + b + " : " + n), console.log("FAILED to save new scheduler at: " + b + " : " + n));
94
- });
95
- }), w.push(function() {
96
- l.fetcher.webOperation("PUT", S.uri, {
97
- data: "",
98
- contentType: "text/turtle"
99
- }).then(() => {
100
- o(w);
101
- }).catch((e) => {
102
- f(!1, "Failed to initialize empty results file: " + e.message);
103
- });
104
- }), w.push(function() {
105
- m(S.uri, !0, function(e, t) {
106
- f(e, "Failed to set Read-Write ACL on results file: " + t), e && o(w);
107
- });
108
- }), w.push(function() {
109
- m(b.uri, !1, function(e, t) {
110
- f(e, "Failed to set read ACL on configuration file: " + t), e && o(w);
111
- });
112
- }), w.push(function() {
113
- console.log("Finished minting new scheduler"), i.newInstance = x, a(i);
114
- }), o(w);
115
- });
116
- },
117
- render: function(i, o) {
118
- let c = o.dom, l = o.session.store, u = t.ns, d = i, f = "app-when-can-we.w3.org";
119
- function p(e) {
120
- let t = o.environment ?? {};
121
- e.dataset.layout = t.layout ?? "desktop";
122
- }
123
- let m = l.fetcher, h = l.updater, g = !1, _ = i, v = i.doc(), y = v.dir();
124
- if (!y) throw Error("Schedule pane needs a containing directory for its details document");
125
- let b = y.uri, x = r.sym(b + "results.ttl"), S = "https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl", C = l.sym("https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl#form1"), w = l.sym("https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl#form2"), T = l.sym("https://solidos.github.io/solid-panes/schedule/formsForSchedule.ttl#form3");
126
- r.parse(e, l, S, "text/turtle");
127
- let E = function(e, n) {
128
- e || H.appendChild(t.widgets.errorMessageBlock(c, n, "pink"));
129
- }, D = function(e) {
130
- for (; e.firstChild;) e.removeChild(e.firstChild);
131
- return e;
132
- }, O = function(e, n) {
133
- let r = l.any(n, t.ns.ui("backgroundColor"));
134
- r && (e.classList.add("schedule-pane__cell"), e.setAttribute("style", "background-color: " + r + ";"));
135
- }, k = null;
136
- n.checkUser().then((e) => {
137
- k = e ?? null, W && W.refresh(), e && g && (g = !1, F());
138
- }), console.log("me: " + k);
139
- let A = function() {
140
- let e = t.login.newAppInstance(c, {
141
- noun: "scheduler",
142
- appPathSegment: f
143
- }, function(e, t) {
144
- return j(r.sym(e || t));
145
- });
146
- return e.firstChild instanceof HTMLElement && e.firstChild.classList.add("schedule-pane__button"), e;
147
- }, j = function(e) {
148
- let t = l.any(e, u.space("uriPrefix")), n = "";
149
- n = t ? t.value : e.uri.split("#")[0], n.slice(-1) !== "/" && (r.log.error("app-when-can-we.w3.org: No / at end of uriPrefix " + n), n += "/"), n += "app-when-can-we.w3.org/id" + (/* @__PURE__ */ new Date()).getTime() + "/", M(_, n);
150
- }, M = function(e, t) {
151
- let n = {
152
- thisInstance: e,
153
- newBase: t
154
- };
155
- s.mintNew(o, n).then(function(e) {
156
- if (!e.newInstance) throw Error("New scheduler instance was not returned");
157
- let t = H.appendChild(c.createElement("p"));
158
- t.setAttribute("style", "font-size: 140%;"), t.innerHTML = "Your <a href='" + e.newInstance.uri + "'><b>new scheduler</b></a> is ready to be set up. <br/><br/><a href='" + e.newInstance.uri + "'>Say when you what days work for you.</a>";
159
- }).catch(function(e) {
160
- E(!1, "Error createing new scheduler at " + n.newInstance + ": " + e);
161
- });
162
- }, N = function() {
163
- console.log("getforms()"), P();
164
- }, P = function() {
165
- console.log("getDetails()"), m.nowOrWhenFetched(v.uri, void 0, function(e, t) {
166
- if (console.log("getDetails() ok? " + e), !e) return E(e, t);
167
- F();
168
- });
169
- }, F = function() {
170
- console.log("showAppropriateDisplay()"), n.checkUser().then((e) => {
171
- if (!e) return I();
172
- if (!l.updater.editable(v.uri, l) || l.holds(i, u.rdf("type"), u.wf("TemplateInstance"))) {
173
- L();
174
- return;
175
- }
176
- l.any(i, u.sched("ready")) ? B() : z();
177
- });
178
- }, I = function() {
179
- D(G);
180
- let e = {
181
- div: H,
182
- dom: c
183
- };
184
- t.login.ensureLoggedIn(e).then((e) => {
185
- k = e.me ?? null, g = !1, F();
186
- });
187
- }, L = function() {
188
- let e = D(G);
189
- e.appendChild(t.login.newAppInstance(c, {
190
- noun: "poll",
191
- appPathSegment: f
192
- }, function(e, t) {
193
- return j(r.sym(e || t));
194
- })), e.appendChild(c.createElement("hr"));
195
- let n = e.appendChild(c.createElement("p"));
196
- n.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.";
197
- let i = e.appendChild(c.createElement("input"));
198
- i.setAttribute("type", "text"), i.size = 80, i.label = "base URL", i.autocomplete = "on", e.appendChild(c.createElement("br"));
199
- let a = e.appendChild(c.createElement("button"));
200
- a.classList.add("schedule-pane__button"), a.textContent = "Start new poll at this URI", a.addEventListener("click", function(e) {
201
- let t = i.value;
202
- t.slice(-1) !== "/" && (t += "/"), M(_, t);
203
- });
204
- }, R = c.createElement("button"), z = function() {
205
- D(J), l.any(i, u.sched("allDay")) || l.add(i, u.sched("allDay"), r.literal("true", r.sym("http://www.w3.org/2001/XMLSchema#boolean")), v);
206
- let e = 0, n = !1, a = function(e) {
207
- return !!e.querySelector("input, select, textarea, button");
208
- }, o = function(e, t) {
209
- if (!e) return t;
210
- let n = (e.value || "").toLowerCase();
211
- return n === "true" || n === "1" ? !0 : n === "false" || n === "0" ? !1 : t;
212
- }, s = function(e) {
213
- let n = o(l.any(i, u.sched("allDay")), !0), r = l.sym(S + (n ? "#AllDayForm2" : "#NotAllDayForm2"));
214
- t.widgets.appendForm(document, e, {}, i, r, v, E);
215
- }, d = function(e, t = !1) {
216
- if (Array.from(e.querySelectorAll("input, select, textarea")).forEach((e) => {
217
- e.classList.add("schedule-pane__form-control"), e.tagName.toLowerCase() === "textarea" && e.classList.add("schedule-pane__form-control--textarea");
218
- }), Array.from(e.querySelectorAll("div[style*=\"border: 0.05em solid\"]")).forEach((e) => {
219
- e.classList.add("schedule-pane__panel");
220
- }), Array.from(e.querySelectorAll("h3")).forEach((e) => {
221
- e.classList.add("schedule-pane__form-heading"), (e.textContent || "").trim().toLowerCase() === "time proposals" && (e.classList.add("schedule-pane__form-heading--time-proposals"), e.closest(".schedule-pane__panel")?.classList.add("schedule-pane__panel--time-proposals"));
222
- }), !t) return;
223
- Array.from(e.querySelectorAll(".formFieldName")).forEach((e) => {
224
- let t = e.parentElement, n = (e.textContent || "").trim().toLowerCase();
225
- t && ((n === "summary" || n === "location") && t.classList.add("schedule-pane__field-row--compact"), n === "comment" && t.classList.add("schedule-pane__field-row--comment"));
226
- });
227
- let n = e.querySelector("textarea")?.parentElement?.parentElement, r = n?.parentElement;
228
- r && r.classList.add("schedule-pane__field-row--comment"), n && n.classList.add("schedule-pane__field-value--comment");
229
- }, f = function(e) {
230
- let t = e.firstElementChild;
231
- return !t || e.childElementCount !== 1 ? e : t;
232
- };
233
- {
234
- let r = [
235
- C,
236
- w,
237
- T
238
- ], o = [];
239
- e = 0;
240
- for (let e = 0; e < r.length; e++) {
241
- let n = c.createElement("div");
242
- t.widgets.appendForm(document, n, {}, i, r[e], v, E), d(n, e === 0), e === 1 && !a(n) && (s(n), d(n)), o.push(f(n));
243
- }
244
- let l = function() {
245
- D(G).appendChild(o[e]), e === 0 ? u.setAttribute("disabled", "") : u.removeAttribute("disabled"), e === o.length - 1 ? (p.setAttribute("disabled", ""), n ||= (J.appendChild(m), J.appendChild(R), !0)) : p.removeAttribute("disabled");
246
- }, u = D(q).appendChild(c.createElement("button"));
247
- u.classList.add("schedule-pane__button"), u.textContent = "<- go back", u.addEventListener("click", function(t) {
248
- e > 0 && (--e, l());
249
- }, !1);
250
- let p = D(Y).appendChild(c.createElement("button"));
251
- p.classList.add("schedule-pane__button"), p.textContent = "continue ->", p.addEventListener("click", function(t) {
252
- e < o.length - 1 && (e += 1, l());
253
- }, !1), l();
254
- }
255
- let p = [];
256
- p.push(r.st(i, u.sched("availabilityOptions"), u.sched("YesNoMaybe"), v)), p.push(r.st(i, u.sched("ready"), r.literal((/* @__PURE__ */ new Date()).toISOString(), r.sym("http://www.w3.org/2001/XMLSchema#dateTime")), v)), p.push(r.st(i, u.sched("results"), x, v)), R.classList.add("schedule-pane__button"), R.textContent = "Go to poll", R.addEventListener("click", function(e) {
257
- l.any(i, u.sched("ready")) ? (B(), Y.appendChild(m)) : (Y.appendChild(m), l.updater.update([], p, function(e, t, n) {
258
- t ? B() : E(t, n);
259
- }));
260
- }, !1);
261
- let m = c.createElement("button");
262
- m.classList.add("schedule-pane__button");
263
- let h = m.appendChild(c.createElement("img"));
264
- h.setAttribute("src", t.icons.iconBase + "noun_480183.svg"), h.classList.add("schedule-pane__button-icon"), m.addEventListener("click", function(e) {
265
- let t = l.anyValue(i, u.cal("summary")) || l.anyValue(i, u.dc("title")) || "", n = "mailto:" + l.each(i, u.sched("invitee")).map(function(e) {
266
- let t = l.any(e, u.foaf("mbox"));
267
- return t ? t.uri.replace("mailto:", "") : "";
268
- }).join(",") + "?subject=" + encodeURIComponent(t + "-- When can we meet?") + "&body=" + encodeURIComponent(t + "\n\nWhen can you?\n\nSee " + i + "\n");
269
- console.log("Mail: " + n), window.location.href = n;
270
- }, !1);
271
- };
272
- function B() {
273
- m.nowOrWhenFetched(x.uri, void 0, (e, t, n) => {
274
- e ? (D(G), V()) : n.status === 404 ? (console.log("Initializing details file " + x), h.put(x, [], "text/turtle", function(e, t, n) {
275
- t ? (D(G), V()) : (E(t, "FAILED to create results file at: " + x.uri + " : " + n), console.log("FAILED to craete results file at: " + x.uri + " : " + n));
276
- })) : E(e, "FAILED to read results file: " + t);
277
- });
278
- }
279
- function V() {
280
- let e = l.any(d, u.cal("summary")), n = l.any(d, u.cal("comment")), o = l.any(d, u.cal("location")), s = G;
281
- e && (s.appendChild(c.createElement("h3")).textContent = e.value), o && (s.appendChild(c.createElement("address")).textContent = o.value), n && (s.appendChild(c.createElement("p")).textContent = n.value);
282
- let f = l.any(d, u.dc("author"));
283
- if (f) {
284
- let e = l.any(f, u.foaf("name"));
285
- e && (s.appendChild(c.createElement("p")).textContent = e.value);
286
- }
287
- let p = new r.Query("Responses", 0), m = {};
288
- m.time = r.variable("time"), m.author = r.variable("author"), m.value = r.variable("value"), m.resp = r.variable("resp"), m.cell = r.variable("cell"), p.vars.push(m.time, m.author, m.value, m.resp, m.cell), p.pat.add(d, u.sched("response"), m.resp), p.pat.add(m.resp, u.dc("author"), m.author), p.pat.add(m.resp, u.sched("cell"), m.cell), p.pat.add(m.cell, u.sched("availabilty"), m.value), p.pat.add(m.cell, u.cal("dtstart"), m.time);
289
- let h = {
290
- set_x: [],
291
- set_y: []
292
- };
293
- h.set_x = l.each(i, u.sched("option")), h.set_x = h.set_x.map(function(e) {
294
- return l.any(e, u.cal("dtstart"));
295
- }).filter(function(e) {
296
- return !!e;
297
- }), h.set_y = l.each(i, u.sched("response")), h.set_y = h.set_y.map(function(e) {
298
- return l.any(e, u.dc("author"));
299
- }).filter(function(e) {
300
- return !!e;
301
- });
302
- let g = l.each(d, u.sched("option")).map(function(e) {
303
- return l.any(e, u.cal("dtstart"));
304
- }).filter(function(e) {
305
- return !!e;
306
- }), _ = function() {
307
- let e = s.appendChild(t.matrix.matrixForQuery(c, p, m.time, m.author, m.value, h, function() {}));
308
- e.setAttribute("class", "matrix");
309
- let n = c.createElement("button");
310
- n.classList.add("schedule-pane__button");
311
- let r = c.createElement("img");
312
- r.setAttribute("src", t.icons.iconBase + "noun_479395.svg"), r.classList.add("schedule-pane__button-icon"), n.appendChild(r), n.addEventListener("click", function(t) {
313
- n.disabled = !0, l.fetcher.refresh(x, function(t, r) {
314
- t ? (e.refresh(), n.disabled = !1) : console.log("Cant refresh matrix" + r);
315
- });
316
- }, !1), D(J), J.appendChild(n);
317
- }, v = {}, y = {
318
- div: J,
319
- dom: c
320
- };
321
- t.login.ensureLoggedIn(y).then((e) => {
322
- let n = e.me;
323
- if (!n) return;
324
- let i = x;
325
- h.set_y = h.set_y.filter(function(e) {
326
- return !e.sameTerm(n);
327
- }), h.set_y.push(n), h.cellFunction = function(e, r, i, o) {
328
- if (o !== null && l.fetcher.nowOrWhenFetched(o.uri.split("#")[0], void 0, function(t, n) {
329
- t && O(e, o);
330
- }), i.sameTerm(n)) {
331
- let n = function() {
332
- return O(e, o), "";
333
- }, i = {}, s = u.sched("availabilty");
334
- if (!r) return "";
335
- let d = v[r.toNT()], f = t.widgets.makeSelectForOptions(c, l, d, s, a, i, x, n);
336
- e.appendChild(f);
337
- } else o !== null && (e.textContent = t.utils.label(o));
338
- return "";
339
- };
340
- let o = l.each(d, u.sched("response")), s = null;
341
- o.forEach(function(e) {
342
- l.holds(e, u.dc("author"), n) && (s = e);
343
- });
344
- let f = [], p = t.widgets.newThing(i).uri;
345
- s === null ? (s = r.sym(p + "_response"), f.push(r.st(d, u.sched("response"), s, i)), f.push(r.st(s, u.dc("author"), n, i))) : l.each(s, u.sched("cell")).forEach(function(e) {
346
- let t = l.any(e, u.cal("dtstart"));
347
- t && (v[t.toNT()] = e);
348
- });
349
- for (let e = 0; e < g.length; e++) {
350
- let t = g[e];
351
- if (!t || v[t.toNT()]) continue;
352
- let n = r.sym(p + "_" + e);
353
- f.push(r.st(s, u.sched("cell"), n, i)), f.push(r.st(n, u.cal("dtstart"), t, i)), v[t.toNT()] = n;
354
- }
355
- f.length ? l.updater.update([], f, function(e, t, n) {
356
- t ? _() : E(t, n);
357
- }) : _();
358
- });
359
- let b = l.any(i, u.foaf("maker"));
360
- if (!b || !k || b.sameTerm(k)) {
361
- let e = c.createElement("button");
362
- e.classList.add("schedule-pane__button");
363
- let n = c.createElement("img");
364
- n.setAttribute("src", t.icons.iconBase + "noun_344563.svg"), n.classList.add("schedule-pane__button-icon"), e.appendChild(n), e.addEventListener("click", function(e) {
365
- D(s), z();
366
- }, !1), D(q), q.appendChild(e);
367
- }
368
- D(Y), Y.appendChild(A());
369
- }
370
- let H = c.createElement("div");
371
- H.classList.add("schedule-pane"), p(H);
372
- let U = H.appendChild(c.createElement("table"));
373
- U.classList.add("schedule-pane__table");
374
- let W = null, G = U.appendChild(c.createElement("tr")).appendChild(c.createElement("td"));
375
- G.classList.add("schedule-pane__main-cell"), G.setAttribute("colspan", "3");
376
- let K = U.appendChild(c.createElement("tr"));
377
- K.classList.add("naviMenu", "schedule-pane__nav");
378
- let q = K.appendChild(c.createElement("td")), J = K.appendChild(c.createElement("td")), Y = K.appendChild(c.createElement("td"));
379
- return N(), H;
380
- }
381
- };
382
- //#endregion
383
- export { s as schedulePane };
384
-
385
- //# sourceMappingURL=schedulePane2.esm.js.map