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.
- package/README.md +40 -10
- package/dist/0314353e28ce6e5539af.svg +9 -0
- package/dist/04567ff683933c35c465.png +0 -0
- package/dist/10163fd9b5a0e00d63a0.png +0 -0
- package/dist/1234dcb2eec2e45f252b.png +0 -0
- package/dist/20899934157df4db56cb.png +0 -0
- package/dist/33760bf79f097f449da5.png +0 -0
- package/dist/4cceba29ab33b1ddd9bb.svg +6 -0
- package/dist/578d2b6ed32e7624164e.png +0 -0
- package/dist/5f62a5b2b7e99b9640c7.png +0 -0
- package/dist/6525766ecd288ec60129.png +0 -0
- package/dist/7800be6f6c4b5b0f4f20.png +0 -0
- package/dist/7b7538c6f6b317968009.svg +9 -0
- package/dist/92d03142abe6efc0b42d.svg +6 -0
- package/dist/976473cf5fe24d657d4b.png +0 -0
- package/dist/RDFXMLPane.css +70 -0
- package/dist/RDFXMLPane.d.ts +3 -2
- package/dist/RDFXMLPane.js +100 -0
- package/dist/argument/argumentPane.js +60 -0
- package/dist/attach/attachPane.js +393 -0
- package/dist/audio/audioPane.js +181 -0
- package/dist/bda84f59e7216675a208.png +0 -0
- package/dist/cd68e8f3990ba8b2139e.png +0 -0
- package/dist/classInstancePane.js +91 -0
- package/dist/dashboard/basicPreferences.d.ts +1 -1
- package/dist/dashboard/basicPreferences.js +147 -0
- package/dist/dashboard/dashboardPane.d.ts +1 -1
- package/dist/dashboard/dashboardPane.js +73 -0
- package/dist/dashboard/homepage.d.ts +1 -1
- package/dist/dashboard/homepage.js +42 -0
- package/dist/dataContentPane.css +271 -0
- package/dist/dataContentPane.d.ts +3 -2
- package/dist/dataContentPane.js +226 -0
- package/dist/defaultPane.css +97 -0
- package/dist/defaultPane.d.ts +3 -2
- package/dist/defaultPane.js +81 -0
- package/dist/dokieli/dokieliPane.js +74 -0
- package/dist/dokieli/{new.cjs.js → new.js} +10 -4
- package/dist/e7074a7e2cb69e51cfd3.png +0 -0
- package/dist/f3772696fb7ee53c23d8.png +0 -0
- package/dist/form/formPane.css +120 -0
- package/dist/form/pane.d.ts +2 -1
- package/dist/form/pane.js +250 -0
- package/dist/home/homePane.d.ts +1 -1
- package/dist/home/homePane.js +74 -0
- package/dist/humanReadablePane.css +129 -0
- package/dist/humanReadablePane.d.ts +3 -2
- package/dist/humanReadablePane.js +243 -0
- package/dist/icons/clock.svg +7 -0
- package/dist/icons/comment.svg +6 -0
- package/dist/icons/dashboard.svg +9 -0
- package/dist/icons/downArrow.svg +6 -0
- package/dist/icons/folder.svg +6 -0
- package/dist/icons/friends.svg +9 -0
- package/dist/icons/help.svg +8 -0
- package/dist/icons/iconHelper.js +23 -0
- package/dist/icons/menu.svg +8 -0
- package/dist/icons/person.svg +6 -0
- package/dist/icons/personInCircle.svg +8 -0
- package/dist/icons/sharing.svg +10 -0
- package/dist/icons/signOut.svg +8 -0
- package/dist/icons/signUp.svg +9 -0
- package/dist/icons/star.svg +3 -0
- package/dist/imagePane.css +4 -0
- package/dist/imagePane.d.ts +3 -2
- package/dist/imagePane.js +67 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +123 -0
- package/dist/internal/internalPane.css +14 -0
- package/dist/internal/internalPane.d.ts +2 -1
- package/dist/internal/internalPane.js +183 -0
- package/dist/mainPage/footer.d.ts +15 -0
- package/dist/mainPage/footer.d.ts.map +1 -0
- package/dist/mainPage/footer.js +29 -0
- package/dist/mainPage/header.d.ts +15 -1
- package/dist/mainPage/header.d.ts.map +1 -1
- package/dist/mainPage/header.js +203 -0
- package/dist/mainPage/index.d.ts +15 -3
- package/dist/mainPage/index.d.ts.map +1 -1
- package/dist/mainPage/index.js +78 -0
- package/dist/mainPage/menu.css +243 -0
- package/dist/mainPage/menu.d.ts +7 -0
- package/dist/mainPage/menu.d.ts.map +1 -0
- package/dist/mainPage/menu.js +436 -0
- package/dist/microblogPane/mbStyle.css +267 -0
- package/dist/microblogPane/microblogPane.js +1031 -0
- package/dist/n3Pane.css +49 -0
- package/dist/n3Pane.d.ts +3 -2
- package/dist/n3Pane.js +88 -0
- package/dist/outline/context.d.ts +3 -3
- package/dist/outline/context.js +21 -0
- package/dist/outline/manager.css +78 -0
- package/dist/outline/manager.js +2115 -0
- package/dist/outline/outlineIcons.js +126 -0
- package/dist/outline/propertyViews.js +43 -0
- package/dist/outline/queryByExample.js +285 -0
- package/dist/outline/userInput.js +1821 -0
- package/dist/outline/viewAsImage.js +14 -0
- package/dist/outline/viewAsMbox.js +21 -0
- package/dist/pad/padPane.css +40 -0
- package/dist/pad/padPane.d.ts +2 -1
- package/dist/pad/padPane.js +421 -0
- package/dist/playlist/playlistPane.js +119 -0
- package/dist/profileUtils/ownerProfile.d.ts +5 -0
- package/dist/profileUtils/ownerProfile.d.ts.map +1 -0
- package/dist/profileUtils/ownerProfile.js +84 -0
- package/dist/registerPanes.js +145 -0
- package/dist/schedule/schedulePane.css +294 -0
- package/dist/schedule/schedulePane.d.ts +4 -2
- package/dist/schedule/schedulePane.js +1022 -0
- package/dist/sharing/sharingPane.js +48 -0
- package/dist/slideshow/slideshowPane.js +79 -0
- package/dist/social/editProfileDetails.d.ts +2 -1
- package/dist/social/editProfileDetails.js +362 -0
- package/dist/social/{icons.esm.js → icons.js} +18 -12
- package/dist/social/socialPane.css +1464 -0
- package/dist/social/socialPane.d.ts +3 -2
- package/dist/social/socialPane.js +651 -0
- package/dist/social/socialSections.d.ts +2 -2
- package/dist/social/socialSections.js +393 -0
- package/dist/social/spinner.js +13 -0
- package/dist/social/triage.d.ts +2 -2
- package/dist/social/triage.js +79 -0
- package/dist/solid-panes.js +84629 -0
- package/dist/solid-panes.js.map +1 -0
- package/dist/solid-panes.min.js +3933 -0
- package/dist/solid-panes.min.js.map +1 -0
- package/dist/styles/tabbedtab.css +1066 -0
- package/dist/styles/utilities.css +5 -0
- package/dist/tabbed/tabbedPane.d.ts +1 -1
- package/dist/tabbed/tabbedPane.js +59 -0
- package/dist/tableViewPane.js +56 -0
- package/dist/transaction/pane.js +477 -0
- package/dist/transaction/period.js +323 -0
- package/dist/trip/tripPane.js +174 -0
- package/dist/trustedApplications/trustedApplications.dom.d.ts +1 -1
- package/dist/trustedApplications/trustedApplications.dom.js +145 -0
- package/dist/trustedApplications/trustedApplications.utils.d.ts +1 -1
- package/dist/trustedApplications/trustedApplications.utils.js +23 -0
- package/dist/trustedApplications/trustedApplications.view.d.ts +1 -1
- package/dist/trustedApplications/trustedApplications.view.js +55 -0
- package/dist/ui/pane.js +146 -0
- package/dist/versionInfo.js +41 -0
- package/dist/video/videoPane.js +42 -0
- package/package.json +66 -51
- package/dist/RDFXMLPane2.cjs.js +0 -3
- package/dist/RDFXMLPane2.cjs.js.map +0 -1
- package/dist/RDFXMLPane2.esm.js +0 -55
- package/dist/RDFXMLPane2.esm.js.map +0 -1
- package/dist/_virtual/_rolldown/runtime.cjs.js +0 -1
- package/dist/_virtual/~icons/lucide/arrow-left.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/arrow-left.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/arrow-left.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/arrow-left.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/folder-open.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/folder-open.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/folder-open.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/folder-open.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/globe.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/globe.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/globe.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/globe.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/help-circle.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/help-circle.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/help-circle.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/help-circle.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/layout-dashboard.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/layout-dashboard.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/pencil.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/pencil.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/pencil.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/pencil.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/settings-2.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/settings-2.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/settings-2.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/settings-2.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/share-2.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/share-2.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/share-2.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/share-2.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/trash-2.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/trash-2.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/trash-2.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/trash-2.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/user.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/user.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/user.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/user.esm.js.map +0 -1
- package/dist/_virtual/~icons/lucide/users.cjs.js +0 -2
- package/dist/_virtual/~icons/lucide/users.cjs.js.map +0 -1
- package/dist/_virtual/~icons/lucide/users.esm.js +0 -11
- package/dist/_virtual/~icons/lucide/users.esm.js.map +0 -1
- package/dist/audio/audioPane.cjs.js +0 -2
- package/dist/audio/audioPane.cjs.js.map +0 -1
- package/dist/audio/audioPane.esm.js +0 -99
- package/dist/audio/audioPane.esm.js.map +0 -1
- package/dist/classInstancePane.cjs.js +0 -2
- package/dist/classInstancePane.cjs.js.map +0 -1
- package/dist/classInstancePane.esm.js +0 -50
- package/dist/classInstancePane.esm.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js +0 -14
- package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeader.d.ts +0 -19
- package/dist/components/file-explorer-header/FileExplorerHeader.d.ts.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeader.esm.js +0 -292
- package/dist/components/file-explorer-header/FileExplorerHeader.esm.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js +0 -2
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js +0 -7
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js +0 -22
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts +0 -15
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js +0 -266
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js +0 -2
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js +0 -7
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js +0 -19
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts +0 -19
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js +0 -321
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js +0 -2
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js +0 -7
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerProvider.cjs.js +0 -13
- package/dist/components/file-explorer-header/FileExplorerProvider.cjs.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerProvider.d.ts +0 -36
- package/dist/components/file-explorer-header/FileExplorerProvider.d.ts.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerProvider.esm.js +0 -468
- package/dist/components/file-explorer-header/FileExplorerProvider.esm.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerProvider.styles.cjs.js +0 -2
- package/dist/components/file-explorer-header/FileExplorerProvider.styles.cjs.js.map +0 -1
- package/dist/components/file-explorer-header/FileExplorerProvider.styles.esm.js +0 -7
- package/dist/components/file-explorer-header/FileExplorerProvider.styles.esm.js.map +0 -1
- package/dist/components/file-explorer-header/helper.cjs.js +0 -2
- package/dist/components/file-explorer-header/helper.cjs.js.map +0 -1
- package/dist/components/file-explorer-header/helper.d.ts +0 -15
- package/dist/components/file-explorer-header/helper.d.ts.map +0 -1
- package/dist/components/file-explorer-header/helper.esm.js +0 -64
- package/dist/components/file-explorer-header/helper.esm.js.map +0 -1
- package/dist/components/file-explorer-header/types.d.ts +0 -2
- package/dist/components/file-explorer-header/types.d.ts.map +0 -1
- package/dist/components/header/Header.cjs.js +0 -19
- package/dist/components/header/Header.cjs.js.map +0 -1
- package/dist/components/header/Header.d.ts +0 -8
- package/dist/components/header/Header.d.ts.map +0 -1
- package/dist/components/header/Header.esm.js +0 -228
- package/dist/components/header/Header.esm.js.map +0 -1
- package/dist/components/header/Header.styles.cjs.js +0 -2
- package/dist/components/header/Header.styles.cjs.js.map +0 -1
- package/dist/components/header/Header.styles.esm.js +0 -7
- package/dist/components/header/Header.styles.esm.js.map +0 -1
- package/dist/components/header/index.cjs.js +0 -1
- package/dist/components/header/index.d.ts +0 -4
- package/dist/components/header/index.d.ts.map +0 -1
- package/dist/components/header/index.esm.js +0 -1
- package/dist/components/navbar/Navbar.cjs.js +0 -15
- package/dist/components/navbar/Navbar.cjs.js.map +0 -1
- package/dist/components/navbar/Navbar.d.ts +0 -14
- package/dist/components/navbar/Navbar.d.ts.map +0 -1
- package/dist/components/navbar/Navbar.esm.js +0 -232
- package/dist/components/navbar/Navbar.esm.js.map +0 -1
- package/dist/components/navbar/Navbar.styles.cjs.js +0 -2
- package/dist/components/navbar/Navbar.styles.cjs.js.map +0 -1
- package/dist/components/navbar/Navbar.styles.esm.js +0 -7
- package/dist/components/navbar/Navbar.styles.esm.js.map +0 -1
- package/dist/components/navbar/index.cjs.js +0 -1
- package/dist/components/navbar/index.d.ts +0 -4
- package/dist/components/navbar/index.d.ts.map +0 -1
- package/dist/components/navbar/index.esm.js +0 -1
- package/dist/components/resource-actions-menu/DeleteResourceDialog.cjs.js +0 -16
- package/dist/components/resource-actions-menu/DeleteResourceDialog.cjs.js.map +0 -1
- package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts +0 -8
- package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts.map +0 -1
- package/dist/components/resource-actions-menu/DeleteResourceDialog.esm.js +0 -215
- package/dist/components/resource-actions-menu/DeleteResourceDialog.esm.js.map +0 -1
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js +0 -18
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js.map +0 -1
- package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts +0 -16
- package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts.map +0 -1
- package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js +0 -260
- package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js.map +0 -1
- package/dist/dashboard/basicPreferences.cjs.js +0 -2
- package/dist/dashboard/basicPreferences.cjs.js.map +0 -1
- package/dist/dashboard/basicPreferences.esm.js +0 -70
- package/dist/dashboard/basicPreferences.esm.js.map +0 -1
- package/dist/dashboard/dashboardPane.cjs.js +0 -2
- package/dist/dashboard/dashboardPane.cjs.js.map +0 -1
- package/dist/dashboard/dashboardPane.esm.js +0 -7
- package/dist/dashboard/dashboardPane.esm.js.map +0 -1
- package/dist/dashboard/homepage.cjs.js +0 -2
- package/dist/dashboard/homepage.cjs.js.map +0 -1
- package/dist/dashboard/homepage.esm.js +0 -26
- package/dist/dashboard/homepage.esm.js.map +0 -1
- package/dist/dashboard/ontologyData.cjs.js +0 -37
- package/dist/dashboard/ontologyData.cjs.js.map +0 -1
- package/dist/dashboard/ontologyData.esm.js +0 -6
- package/dist/dashboard/ontologyData.esm.js.map +0 -1
- package/dist/dashboard/preferencesFormText.cjs.js +0 -20
- package/dist/dashboard/preferencesFormText.cjs.js.map +0 -1
- package/dist/dashboard/preferencesFormText.esm.js +0 -6
- package/dist/dashboard/preferencesFormText.esm.js.map +0 -1
- package/dist/dataContentPane2.cjs.js +0 -2
- package/dist/dataContentPane2.cjs.js.map +0 -1
- package/dist/dataContentPane2.esm.js +0 -109
- package/dist/dataContentPane2.esm.js.map +0 -1
- package/dist/defaultPane2.cjs.js +0 -2
- package/dist/defaultPane2.cjs.js.map +0 -1
- package/dist/defaultPane2.esm.js +0 -41
- package/dist/defaultPane2.esm.js.map +0 -1
- package/dist/dev.d.ts +0 -10
- package/dist/dev.d.ts.map +0 -1
- package/dist/dokieli/dokieliPane.cjs.js +0 -2
- package/dist/dokieli/dokieliPane.cjs.js.map +0 -1
- package/dist/dokieli/dokieliPane.esm.js +0 -39
- package/dist/dokieli/dokieliPane.esm.js.map +0 -1
- package/dist/dokieli/new.cjs.js.map +0 -1
- package/dist/dokieli/new.esm.js +0 -6
- package/dist/dokieli/new.esm.js.map +0 -1
- package/dist/form/pane.cjs.js +0 -4
- package/dist/form/pane.cjs.js.map +0 -1
- package/dist/form/pane.esm.js +0 -122
- package/dist/form/pane.esm.js.map +0 -1
- package/dist/home/homePane.cjs.js +0 -2
- package/dist/home/homePane.cjs.js.map +0 -1
- package/dist/home/homePane.esm.js +0 -35
- package/dist/home/homePane.esm.js.map +0 -1
- package/dist/humanReadablePane2.cjs.js +0 -2
- package/dist/humanReadablePane2.cjs.js.map +0 -1
- package/dist/humanReadablePane2.esm.js +0 -123
- package/dist/humanReadablePane2.esm.js.map +0 -1
- package/dist/icons/folder.cjs.js +0 -2
- package/dist/icons/folder.cjs.js.map +0 -1
- package/dist/icons/folder.esm.js +0 -6
- package/dist/icons/folder.esm.js.map +0 -1
- package/dist/icons/friends.cjs.js +0 -2
- package/dist/icons/friends.cjs.js.map +0 -1
- package/dist/icons/friends.esm.js +0 -6
- package/dist/icons/friends.esm.js.map +0 -1
- package/dist/icons/person.cjs.js +0 -2
- package/dist/icons/person.cjs.js.map +0 -1
- package/dist/icons/person.esm.js +0 -6
- package/dist/icons/person.esm.js.map +0 -1
- package/dist/imagePane2.cjs.js +0 -2
- package/dist/imagePane2.cjs.js.map +0 -1
- package/dist/imagePane2.esm.js +0 -32
- package/dist/imagePane2.esm.js.map +0 -1
- package/dist/index.cjs.js +0 -2
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.esm.js +0 -31
- package/dist/index.esm.js.map +0 -1
- package/dist/internal/internalPane2.cjs.js +0 -2
- package/dist/internal/internalPane2.cjs.js.map +0 -1
- package/dist/internal/internalPane2.esm.js +0 -104
- package/dist/internal/internalPane2.esm.js.map +0 -1
- package/dist/mainPage/header.cjs.js +0 -2
- package/dist/mainPage/header.cjs.js.map +0 -1
- package/dist/mainPage/header.esm.js +0 -72
- package/dist/mainPage/header.esm.js.map +0 -1
- package/dist/mainPage/index.cjs.js +0 -2
- package/dist/mainPage/index.cjs.js.map +0 -1
- package/dist/mainPage/index.esm.js +0 -36
- package/dist/mainPage/index.esm.js.map +0 -1
- package/dist/mainPage/navbar.cjs.js +0 -2
- package/dist/mainPage/navbar.cjs.js.map +0 -1
- package/dist/mainPage/navbar.d.ts +0 -3
- package/dist/mainPage/navbar.d.ts.map +0 -1
- package/dist/mainPage/navbar.esm.js +0 -66
- package/dist/mainPage/navbar.esm.js.map +0 -1
- package/dist/n3Pane2.cjs.js +0 -3
- package/dist/n3Pane2.cjs.js.map +0 -1
- package/dist/n3Pane2.esm.js +0 -52
- package/dist/n3Pane2.esm.js.map +0 -1
- package/dist/outline/context.cjs.js +0 -2
- package/dist/outline/context.cjs.js.map +0 -1
- package/dist/outline/context.esm.js +0 -18
- package/dist/outline/context.esm.js.map +0 -1
- package/dist/outline/manager2.cjs.js +0 -2
- package/dist/outline/manager2.cjs.js.map +0 -1
- package/dist/outline/manager2.esm.js +0 -711
- package/dist/outline/manager2.esm.js.map +0 -1
- package/dist/outline/outlineIcons.cjs.js +0 -2
- package/dist/outline/outlineIcons.cjs.js.map +0 -1
- package/dist/outline/outlineIcons.esm.js +0 -10
- package/dist/outline/outlineIcons.esm.js.map +0 -1
- package/dist/outline/propertyViews.cjs.js +0 -2
- package/dist/outline/propertyViews.cjs.js.map +0 -1
- package/dist/outline/propertyViews.esm.js +0 -19
- package/dist/outline/propertyViews.esm.js.map +0 -1
- package/dist/outline/queryByExample.cjs.js +0 -2
- package/dist/outline/queryByExample.cjs.js.map +0 -1
- package/dist/outline/queryByExample.esm.js +0 -26
- package/dist/outline/queryByExample.esm.js.map +0 -1
- package/dist/outline/sourcePaneIcon.d.ts +0 -2
- package/dist/outline/sourcePaneIcon.d.ts.map +0 -1
- package/dist/outline/userInput.cjs.js +0 -61
- package/dist/outline/userInput.cjs.js.map +0 -1
- package/dist/outline/userInput.esm.js +0 -784
- package/dist/outline/userInput.esm.js.map +0 -1
- package/dist/outline/viewAsImage.cjs.js +0 -2
- package/dist/outline/viewAsImage.cjs.js.map +0 -1
- package/dist/outline/viewAsImage.esm.js +0 -10
- package/dist/outline/viewAsImage.esm.js.map +0 -1
- package/dist/outline/viewAsMbox.cjs.js +0 -2
- package/dist/outline/viewAsMbox.cjs.js.map +0 -1
- package/dist/outline/viewAsMbox.esm.js +0 -9
- package/dist/outline/viewAsMbox.esm.js.map +0 -1
- package/dist/pad/padPane2.cjs.js +0 -2
- package/dist/pad/padPane2.cjs.js.map +0 -1
- package/dist/pad/padPane2.esm.js +0 -173
- package/dist/pad/padPane2.esm.js.map +0 -1
- package/dist/playlist/playlistPane.cjs.js +0 -2
- package/dist/playlist/playlistPane.cjs.js.map +0 -1
- package/dist/playlist/playlistPane.esm.js +0 -49
- package/dist/playlist/playlistPane.esm.js.map +0 -1
- package/dist/registerPanes.cjs.js +0 -2
- package/dist/registerPanes.cjs.js.map +0 -1
- package/dist/registerPanes.esm.js +0 -46
- package/dist/registerPanes.esm.js.map +0 -1
- package/dist/schedule/formsForSchedule.cjs.js +0 -117
- package/dist/schedule/formsForSchedule.cjs.js.map +0 -1
- package/dist/schedule/formsForSchedule.esm.js +0 -6
- package/dist/schedule/formsForSchedule.esm.js.map +0 -1
- package/dist/schedule/schedulePane2.cjs.js +0 -8
- package/dist/schedule/schedulePane2.cjs.js.map +0 -1
- package/dist/schedule/schedulePane2.esm.js +0 -385
- package/dist/schedule/schedulePane2.esm.js.map +0 -1
- package/dist/sharing/sharingPane.cjs.js +0 -2
- package/dist/sharing/sharingPane.cjs.js.map +0 -1
- package/dist/sharing/sharingPane.esm.js +0 -22
- package/dist/sharing/sharingPane.esm.js.map +0 -1
- package/dist/slideshow/slideshowPane.cjs.js +0 -2
- package/dist/slideshow/slideshowPane.cjs.js.map +0 -1
- package/dist/slideshow/slideshowPane.esm.js +0 -46
- package/dist/slideshow/slideshowPane.esm.js.map +0 -1
- package/dist/social/editProfileDetails.cjs.js +0 -2
- package/dist/social/editProfileDetails.cjs.js.map +0 -1
- package/dist/social/editProfileDetails.esm.js +0 -12
- package/dist/social/editProfileDetails.esm.js.map +0 -1
- package/dist/social/icons.cjs.js +0 -82
- package/dist/social/icons.cjs.js.map +0 -1
- package/dist/social/icons.esm.js.map +0 -1
- package/dist/social/socialPane2.cjs.js +0 -6
- package/dist/social/socialPane2.cjs.js.map +0 -1
- package/dist/social/socialPane2.esm.js +0 -326
- package/dist/social/socialPane2.esm.js.map +0 -1
- package/dist/social/socialSections.cjs.js +0 -2
- package/dist/social/socialSections.cjs.js.map +0 -1
- package/dist/social/socialSections.esm.js +0 -222
- package/dist/social/socialSections.esm.js.map +0 -1
- package/dist/social/spinner.cjs.js +0 -1
- package/dist/social/spinner.esm.js +0 -1
- package/dist/social/triage.cjs.js +0 -2
- package/dist/social/triage.cjs.js.map +0 -1
- package/dist/social/triage.esm.js +0 -44
- package/dist/social/triage.esm.js.map +0 -1
- package/dist/tabbed/tabbedPane.cjs.js +0 -2
- package/dist/tabbed/tabbedPane.cjs.js.map +0 -1
- package/dist/tabbed/tabbedPane.esm.js +0 -38
- package/dist/tabbed/tabbedPane.esm.js.map +0 -1
- package/dist/tableViewPane.cjs.js +0 -2
- package/dist/tableViewPane.cjs.js.map +0 -1
- package/dist/tableViewPane.esm.js +0 -20
- package/dist/tableViewPane.esm.js.map +0 -1
- package/dist/transaction/pane.cjs.js +0 -8
- package/dist/transaction/pane.cjs.js.map +0 -1
- package/dist/transaction/pane.esm.js +0 -212
- package/dist/transaction/pane.esm.js.map +0 -1
- package/dist/transaction/period.cjs.js +0 -4
- package/dist/transaction/period.cjs.js.map +0 -1
- package/dist/transaction/period.esm.js +0 -126
- package/dist/transaction/period.esm.js.map +0 -1
- package/dist/trip/tripPane.cjs.js +0 -2
- package/dist/trip/tripPane.cjs.js.map +0 -1
- package/dist/trip/tripPane.esm.js +0 -85
- package/dist/trip/tripPane.esm.js.map +0 -1
- package/dist/trustedApplications/trustedApplications.dom.cjs.js +0 -2
- package/dist/trustedApplications/trustedApplications.dom.cjs.js.map +0 -1
- package/dist/trustedApplications/trustedApplications.dom.esm.js +0 -108
- package/dist/trustedApplications/trustedApplications.dom.esm.js.map +0 -1
- package/dist/trustedApplications/trustedApplications.utils.cjs.js +0 -2
- package/dist/trustedApplications/trustedApplications.utils.cjs.js.map +0 -1
- package/dist/trustedApplications/trustedApplications.utils.esm.js +0 -20
- package/dist/trustedApplications/trustedApplications.utils.esm.js.map +0 -1
- package/dist/trustedApplications/trustedApplications.view.cjs.js +0 -2
- package/dist/trustedApplications/trustedApplications.view.cjs.js.map +0 -1
- package/dist/trustedApplications/trustedApplications.view.esm.js +0 -41
- package/dist/trustedApplications/trustedApplications.view.esm.js.map +0 -1
- package/dist/ui/pane.cjs.js +0 -4
- package/dist/ui/pane.cjs.js.map +0 -1
- package/dist/ui/pane.esm.js +0 -56
- package/dist/ui/pane.esm.js.map +0 -1
- package/dist/utils/paneUtils.cjs.js +0 -2
- package/dist/utils/paneUtils.cjs.js.map +0 -1
- package/dist/utils/paneUtils.d.ts +0 -19
- package/dist/utils/paneUtils.d.ts.map +0 -1
- package/dist/utils/paneUtils.esm.js +0 -52
- package/dist/utils/paneUtils.esm.js.map +0 -1
- package/dist/utils/podUtils.cjs.js +0 -2
- package/dist/utils/podUtils.cjs.js.map +0 -1
- package/dist/utils/podUtils.d.ts +0 -4
- package/dist/utils/podUtils.d.ts.map +0 -1
- package/dist/utils/podUtils.esm.js +0 -46
- package/dist/utils/podUtils.esm.js.map +0 -1
- package/dist/utils/webIdUtils.cjs.js +0 -2
- package/dist/utils/webIdUtils.cjs.js.map +0 -1
- package/dist/utils/webIdUtils.d.ts +0 -6
- package/dist/utils/webIdUtils.d.ts.map +0 -1
- package/dist/utils/webIdUtils.esm.js +0 -48
- package/dist/utils/webIdUtils.esm.js.map +0 -1
- package/dist/versionInfo.cjs.js +0 -2
- package/dist/versionInfo.cjs.js.map +0 -1
- package/dist/versionInfo.esm.js +0 -40
- package/dist/versionInfo.esm.js.map +0 -1
- package/dist/video/videoPane.cjs.js +0 -2
- package/dist/video/videoPane.cjs.js.map +0 -1
- package/dist/video/videoPane.esm.js +0 -25
- package/dist/video/videoPane.esm.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schedulePane2.esm.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,2 +0,0 @@
|
|
|
1
|
-
let e=require("solid-ui");var t={icon:e.icons.iconBase+`padlock-timbl.svg`,name:`sharing`,label:(t,n)=>{let r=n.session.store.findTypeURIs(t);return r[e.ns.ldp(`Resource`).uri]||r[e.ns.ldp(`Container`).uri]||r[e.ns.ldp(`BasicContainer`).uri]?`Sharing`:null},render:(t,n)=>{let r=n.dom,i=n.session.store,a=s(),o=r.createElement(`div`);return o.classList.add(`sharingPane`),e.aclControl.preventBrowserDropEvents(r),o.appendChild(e.aclControl.ACLControlBox5(t,n,a,i)),o;function s(){let n=i.findTypeURIs(t);return n[e.ns.ldp(`BasicContainer`).uri]||n[e.ns.ldp(`Container`).uri]?`folder`:`file`}}};exports.default=t;
|
|
2
|
-
//# sourceMappingURL=sharingPane.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sharingPane.cjs.js","names":[],"sources":["../../src/sharing/sharingPane.ts"],"sourcesContent":["/* Sharing Pane\n **\n ** This outline pane allows a user to view and adjust the sharing -- access control lists\n ** for anything which has that capability.\n **\n ** I am using in places single quotes strings like 'this'\n ** where internationalization (\"i18n\") is not a problem, and double quoted\n ** like \"this\" where the string is seen by the user and so I18n is an issue.\n */\n\nimport { aclControl, icons, ns } from 'solid-ui'\n\nconst sharingPane = {\n icon: icons.iconBase + 'padlock-timbl.svg',\n\n name: 'sharing',\n\n label: (subject, context) => {\n const store = context.session.store\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('Resource').uri]) return 'Sharing' // @@ be more sophisticated?\n if (t[ns.ldp('Container').uri]) return 'Sharing' // @@ be more sophisticated?\n if (t[ns.ldp('BasicContainer').uri]) return 'Sharing' // @@ be more sophisticated?\n // check being allowed to see/change sharing?\n return null // No under other circumstances\n },\n\n render: (subject, context) => {\n const dom = context.dom\n const store = context.session.store\n const noun = getNoun()\n\n const div = dom.createElement('div')\n div.classList.add('sharingPane')\n aclControl.preventBrowserDropEvents(dom)\n div.appendChild(aclControl.ACLControlBox5(subject, context, noun, store))\n return div\n\n function getNoun () {\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('BasicContainer').uri] || t[ns.ldp('Container').uri]) {\n return 'folder'\n }\n return 'file'\n }\n }\n}\n\nexport default sharingPane\n"],"mappings":"0BAYA,IAAM,EAAc,CAClB,KAAM,EAAA,MAAM,SAAW,oBAEvB,KAAM,UAEN,OAAQ,EAAS,IAAY,CAE3B,IAAM,EADQ,EAAQ,QAAQ,MACd,aAAa,CAAO,EAKpC,OAJI,EAAE,EAAA,GAAG,IAAI,UAAU,CAAC,CAAC,MACrB,EAAE,EAAA,GAAG,IAAI,WAAW,CAAC,CAAC,MACtB,EAAE,EAAA,GAAG,IAAI,gBAAgB,CAAC,CAAC,KAAa,UAErC,IACT,EAEA,QAAS,EAAS,IAAY,CAC5B,IAAM,EAAM,EAAQ,IACd,EAAQ,EAAQ,QAAQ,MACxB,EAAO,EAAQ,EAEf,EAAM,EAAI,cAAc,KAAK,EAInC,OAHA,EAAI,UAAU,IAAI,aAAa,EAC/B,EAAA,WAAW,yBAAyB,CAAG,EACvC,EAAI,YAAY,EAAA,WAAW,eAAe,EAAS,EAAS,EAAM,CAAK,CAAC,EACjE,EAEP,SAAS,GAAW,CAClB,IAAM,EAAI,EAAM,aAAa,CAAO,EAIpC,OAHI,EAAE,EAAA,GAAG,IAAI,gBAAgB,CAAC,CAAC,MAAQ,EAAE,EAAA,GAAG,IAAI,WAAW,CAAC,CAAC,KACpD,SAEF,MACT,CACF,CACF"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { aclControl as e, icons as t, ns as n } from "solid-ui";
|
|
2
|
-
//#region src/sharing/sharingPane.ts
|
|
3
|
-
var r = {
|
|
4
|
-
icon: t.iconBase + "padlock-timbl.svg",
|
|
5
|
-
name: "sharing",
|
|
6
|
-
label: (e, t) => {
|
|
7
|
-
let r = t.session.store.findTypeURIs(e);
|
|
8
|
-
return r[n.ldp("Resource").uri] || r[n.ldp("Container").uri] || r[n.ldp("BasicContainer").uri] ? "Sharing" : null;
|
|
9
|
-
},
|
|
10
|
-
render: (t, r) => {
|
|
11
|
-
let i = r.dom, a = r.session.store, o = c(), s = i.createElement("div");
|
|
12
|
-
return s.classList.add("sharingPane"), e.preventBrowserDropEvents(i), s.appendChild(e.ACLControlBox5(t, r, o, a)), s;
|
|
13
|
-
function c() {
|
|
14
|
-
let e = a.findTypeURIs(t);
|
|
15
|
-
return e[n.ldp("BasicContainer").uri] || e[n.ldp("Container").uri] ? "folder" : "file";
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
//#endregion
|
|
20
|
-
export { r as default };
|
|
21
|
-
|
|
22
|
-
//# sourceMappingURL=sharingPane.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sharingPane.esm.js","names":[],"sources":["../../src/sharing/sharingPane.ts"],"sourcesContent":["/* Sharing Pane\n **\n ** This outline pane allows a user to view and adjust the sharing -- access control lists\n ** for anything which has that capability.\n **\n ** I am using in places single quotes strings like 'this'\n ** where internationalization (\"i18n\") is not a problem, and double quoted\n ** like \"this\" where the string is seen by the user and so I18n is an issue.\n */\n\nimport { aclControl, icons, ns } from 'solid-ui'\n\nconst sharingPane = {\n icon: icons.iconBase + 'padlock-timbl.svg',\n\n name: 'sharing',\n\n label: (subject, context) => {\n const store = context.session.store\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('Resource').uri]) return 'Sharing' // @@ be more sophisticated?\n if (t[ns.ldp('Container').uri]) return 'Sharing' // @@ be more sophisticated?\n if (t[ns.ldp('BasicContainer').uri]) return 'Sharing' // @@ be more sophisticated?\n // check being allowed to see/change sharing?\n return null // No under other circumstances\n },\n\n render: (subject, context) => {\n const dom = context.dom\n const store = context.session.store\n const noun = getNoun()\n\n const div = dom.createElement('div')\n div.classList.add('sharingPane')\n aclControl.preventBrowserDropEvents(dom)\n div.appendChild(aclControl.ACLControlBox5(subject, context, noun, store))\n return div\n\n function getNoun () {\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('BasicContainer').uri] || t[ns.ldp('Container').uri]) {\n return 'folder'\n }\n return 'file'\n }\n }\n}\n\nexport default sharingPane\n"],"mappings":";;AAYA,IAAM,IAAc;CAClB,MAAM,EAAM,WAAW;CAEvB,MAAM;CAEN,QAAQ,GAAS,MAAY;EAE3B,IAAM,IADQ,EAAQ,QAAQ,MACd,aAAa,CAAO;EAKpC,OAJI,EAAE,EAAG,IAAI,UAAU,CAAC,CAAC,QACrB,EAAE,EAAG,IAAI,WAAW,CAAC,CAAC,QACtB,EAAE,EAAG,IAAI,gBAAgB,CAAC,CAAC,OAAa,YAErC;CACT;CAEA,SAAS,GAAS,MAAY;EAC5B,IAAM,IAAM,EAAQ,KACd,IAAQ,EAAQ,QAAQ,OACxB,IAAO,EAAQ,GAEf,IAAM,EAAI,cAAc,KAAK;EAInC,OAHA,EAAI,UAAU,IAAI,aAAa,GAC/B,EAAW,yBAAyB,CAAG,GACvC,EAAI,YAAY,EAAW,eAAe,GAAS,GAAS,GAAM,CAAK,CAAC,GACjE;EAEP,SAAS,IAAW;GAClB,IAAM,IAAI,EAAM,aAAa,CAAO;GAIpC,OAHI,EAAE,EAAG,IAAI,gBAAgB,CAAC,CAAC,QAAQ,EAAE,EAAG,IAAI,WAAW,CAAC,CAAC,OACpD,WAEF;EACT;CACF;AACF"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("../_virtual/_rolldown/runtime.cjs.js");let t=require("solid-ui");t=e.__toESM(t);let n=require("@solid/better-simple-slideshow");n=e.__toESM(n);var r=t.ns,i={icon:t.icons.iconBase+`noun_138712.svg`,name:`slideshow`,audience:[r.solid(`PowerUser`)],label:function(e,n){let r=n.session.store,i=t.ns,a=r.findTypeURIs(e);if(a[i.ldp(`Container`).uri]||a[i.ldp(`BasicContainer`).uri]){let n=r.each(e,i.ldp(`contains`)),a=0;return n.forEach(function(e){t.widgets.isImage(e)&&a++}),a>0?`Slideshow`:null}return null},render:function(e,r){let i=r.dom;t.widgets.addStyleSheet(i,`https://leemark.github.io/better-simple-slideshow/css/simple-slideshow-styles.css`);let a=r.session.store,o=t.ns,s=i.createElement(`div`);s.setAttribute(`class`,`bss-slides`);let c=a.findTypeURIs(e),l;(c[o.ldp(`BasicContainer`).uri]||c[o.ldp(`Container`).uri])&&(l=o.ldp(`contains`));let u=a.each(e,l);u.sort();for(let e=0;e<u.length;e++){if(!t.widgets.isImage(u[e]))continue;let n=s.appendChild(i.createElement(`figure`)),r=n.appendChild(i.createElement(`img`));a.fetcher._fetch(u[e].uri).then(function(e){return e.blob()}).then(function(e){let t=URL.createObjectURL(e);r.setAttribute(`src`,t)}),r.style.width=`100%`,n.appendChild(i.createElement(`figcaption`))}let d={dom:i};return setTimeout(function(){(0,n.default)(`.bss-slides`,d)},1e3),s}};exports.slideshowPane=i;
|
|
2
|
-
//# sourceMappingURL=slideshowPane.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slideshowPane.cjs.js","names":["UI"],"sources":["../../src/slideshow/slideshowPane.js"],"sourcesContent":["/* slideshow Pane\n **\n */\nimport * as UI from 'solid-ui'\n\nimport makeBSS from '@solid/better-simple-slideshow'\nconst ns = UI.ns\n\nexport const slideshowPane = {\n icon: UI.icons.iconBase + 'noun_138712.svg',\n\n name: 'slideshow',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve an slideshow pane?\n label: function (subject, context) {\n const store = context.session.store\n const ns = UI.ns\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('Container').uri] || t[ns.ldp('BasicContainer').uri]) {\n const contents = store.each(subject, ns.ldp('contains'))\n let count = 0\n contents.forEach(function (file) {\n if (UI.widgets.isImage(file)) count++\n })\n return count > 0 ? 'Slideshow' : null\n }\n return null\n },\n\n // See https://github.com/leemark/better-simple-slideshow\n // and follow instructions there\n render: function (subject, context) {\n const dom = context.dom\n const styleSheet =\n 'https://leemark.github.io/better-simple-slideshow/css/simple-slideshow-styles.css'\n UI.widgets.addStyleSheet(dom, styleSheet)\n\n const store = context.session.store\n const ns = UI.ns\n const div = dom.createElement('div')\n div.setAttribute('class', 'bss-slides')\n\n const t = store.findTypeURIs(subject)\n let predicate\n if (t[ns.ldp('BasicContainer').uri] || t[ns.ldp('Container').uri]) {\n predicate = ns.ldp('contains')\n }\n const images = store.each(subject, predicate) // @@ random order?\n // @@ Ideally: sort by embedded time of image\n images.sort() // Sort for now by URI\n for (let i = 0; i < images.length; i++) {\n if (!UI.widgets.isImage(images[i])) continue\n const figure = div.appendChild(dom.createElement('figure'))\n const img = figure.appendChild(dom.createElement('img'))\n\n // get image with authenticated fetch\n store.fetcher._fetch(images[i].uri)\n .then(function (response) {\n return response.blob()\n })\n .then(function (myBlob) {\n const objectURL = URL.createObjectURL(myBlob)\n img.setAttribute('src', objectURL) // w640 h480 //\n })\n img.style.width = '100%'\n figure.appendChild(dom.createElement('figcaption'))\n }\n const options = { dom }\n\n setTimeout(function () {\n makeBSS('.bss-slides', options)\n }, 1000) // Must run after the code which called this\n\n return div\n }\n}\n\n// ends\n"],"mappings":"gKAMA,IAAM,EAAKA,EAAG,GAED,EAAgB,CAC3B,KAAMA,EAAG,MAAM,SAAW,kBAE1B,KAAM,YAEN,SAAU,CAAC,EAAG,MAAM,WAAW,CAAC,EAGhC,MAAO,SAAU,EAAS,EAAS,CACjC,IAAM,EAAQ,EAAQ,QAAQ,MACxB,EAAKA,EAAG,GACR,EAAI,EAAM,aAAa,CAAO,EACpC,GAAI,EAAE,EAAG,IAAI,WAAW,CAAC,CAAC,MAAQ,EAAE,EAAG,IAAI,gBAAgB,CAAC,CAAC,KAAM,CACjE,IAAM,EAAW,EAAM,KAAK,EAAS,EAAG,IAAI,UAAU,CAAC,EACnD,EAAQ,EAIZ,OAHA,EAAS,QAAQ,SAAU,EAAM,CAC3BA,EAAG,QAAQ,QAAQ,CAAI,GAAG,GAChC,CAAC,EACM,EAAQ,EAAI,YAAc,IACnC,CACA,OAAO,IACT,EAIA,OAAQ,SAAU,EAAS,EAAS,CAClC,IAAM,EAAM,EAAQ,IAGpB,EAAG,QAAQ,cAAc,EAAK,mFAAU,EAExC,IAAM,EAAQ,EAAQ,QAAQ,MACxB,EAAKA,EAAG,GACR,EAAM,EAAI,cAAc,KAAK,EACnC,EAAI,aAAa,QAAS,YAAY,EAEtC,IAAM,EAAI,EAAM,aAAa,CAAO,EAChC,GACA,EAAE,EAAG,IAAI,gBAAgB,CAAC,CAAC,MAAQ,EAAE,EAAG,IAAI,WAAW,CAAC,CAAC,QAC3D,EAAY,EAAG,IAAI,UAAU,GAE/B,IAAM,EAAS,EAAM,KAAK,EAAS,CAAS,EAE5C,EAAO,KAAK,EACZ,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACtC,GAAI,CAACA,EAAG,QAAQ,QAAQ,EAAO,EAAE,EAAG,SACpC,IAAM,EAAS,EAAI,YAAY,EAAI,cAAc,QAAQ,CAAC,EACpD,EAAM,EAAO,YAAY,EAAI,cAAc,KAAK,CAAC,EAGvD,EAAM,QAAQ,OAAO,EAAO,EAAE,CAAC,GAAG,CAAC,CAChC,KAAK,SAAU,EAAU,CACxB,OAAO,EAAS,KAAK,CACvB,CAAC,CAAC,CACD,KAAK,SAAU,EAAQ,CACtB,IAAM,EAAY,IAAI,gBAAgB,CAAM,EAC5C,EAAI,aAAa,MAAO,CAAS,CACnC,CAAC,EACH,EAAI,MAAM,MAAQ,OAClB,EAAO,YAAY,EAAI,cAAc,YAAY,CAAC,CACpD,CACA,IAAM,EAAU,CAAE,KAAI,EAMtB,OAJA,WAAW,UAAY,EACrB,EAAA,EAAA,QAAA,CAAQ,cAAe,CAAO,CAChC,EAAG,GAAI,EAEA,CACT,CACF"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import * as e from "solid-ui";
|
|
2
|
-
import t from "@solid/better-simple-slideshow";
|
|
3
|
-
//#region src/slideshow/slideshowPane.js
|
|
4
|
-
var n = e.ns, r = {
|
|
5
|
-
icon: e.icons.iconBase + "noun_138712.svg",
|
|
6
|
-
name: "slideshow",
|
|
7
|
-
audience: [n.solid("PowerUser")],
|
|
8
|
-
label: function(t, n) {
|
|
9
|
-
let r = n.session.store, i = e.ns, a = r.findTypeURIs(t);
|
|
10
|
-
if (a[i.ldp("Container").uri] || a[i.ldp("BasicContainer").uri]) {
|
|
11
|
-
let n = r.each(t, i.ldp("contains")), a = 0;
|
|
12
|
-
return n.forEach(function(t) {
|
|
13
|
-
e.widgets.isImage(t) && a++;
|
|
14
|
-
}), a > 0 ? "Slideshow" : null;
|
|
15
|
-
}
|
|
16
|
-
return null;
|
|
17
|
-
},
|
|
18
|
-
render: function(n, r) {
|
|
19
|
-
let i = r.dom;
|
|
20
|
-
e.widgets.addStyleSheet(i, "https://leemark.github.io/better-simple-slideshow/css/simple-slideshow-styles.css");
|
|
21
|
-
let a = r.session.store, o = e.ns, s = i.createElement("div");
|
|
22
|
-
s.setAttribute("class", "bss-slides");
|
|
23
|
-
let c = a.findTypeURIs(n), l;
|
|
24
|
-
(c[o.ldp("BasicContainer").uri] || c[o.ldp("Container").uri]) && (l = o.ldp("contains"));
|
|
25
|
-
let u = a.each(n, l);
|
|
26
|
-
u.sort();
|
|
27
|
-
for (let t = 0; t < u.length; t++) {
|
|
28
|
-
if (!e.widgets.isImage(u[t])) continue;
|
|
29
|
-
let n = s.appendChild(i.createElement("figure")), r = n.appendChild(i.createElement("img"));
|
|
30
|
-
a.fetcher._fetch(u[t].uri).then(function(e) {
|
|
31
|
-
return e.blob();
|
|
32
|
-
}).then(function(e) {
|
|
33
|
-
let t = URL.createObjectURL(e);
|
|
34
|
-
r.setAttribute("src", t);
|
|
35
|
-
}), r.style.width = "100%", n.appendChild(i.createElement("figcaption"));
|
|
36
|
-
}
|
|
37
|
-
let d = { dom: i };
|
|
38
|
-
return setTimeout(function() {
|
|
39
|
-
t(".bss-slides", d);
|
|
40
|
-
}, 1e3), s;
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
//#endregion
|
|
44
|
-
export { r as slideshowPane };
|
|
45
|
-
|
|
46
|
-
//# sourceMappingURL=slideshowPane.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slideshowPane.esm.js","names":["ns"],"sources":["../../src/slideshow/slideshowPane.js"],"sourcesContent":["/* slideshow Pane\n **\n */\nimport * as UI from 'solid-ui'\n\nimport makeBSS from '@solid/better-simple-slideshow'\nconst ns = UI.ns\n\nexport const slideshowPane = {\n icon: UI.icons.iconBase + 'noun_138712.svg',\n\n name: 'slideshow',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve an slideshow pane?\n label: function (subject, context) {\n const store = context.session.store\n const ns = UI.ns\n const t = store.findTypeURIs(subject)\n if (t[ns.ldp('Container').uri] || t[ns.ldp('BasicContainer').uri]) {\n const contents = store.each(subject, ns.ldp('contains'))\n let count = 0\n contents.forEach(function (file) {\n if (UI.widgets.isImage(file)) count++\n })\n return count > 0 ? 'Slideshow' : null\n }\n return null\n },\n\n // See https://github.com/leemark/better-simple-slideshow\n // and follow instructions there\n render: function (subject, context) {\n const dom = context.dom\n const styleSheet =\n 'https://leemark.github.io/better-simple-slideshow/css/simple-slideshow-styles.css'\n UI.widgets.addStyleSheet(dom, styleSheet)\n\n const store = context.session.store\n const ns = UI.ns\n const div = dom.createElement('div')\n div.setAttribute('class', 'bss-slides')\n\n const t = store.findTypeURIs(subject)\n let predicate\n if (t[ns.ldp('BasicContainer').uri] || t[ns.ldp('Container').uri]) {\n predicate = ns.ldp('contains')\n }\n const images = store.each(subject, predicate) // @@ random order?\n // @@ Ideally: sort by embedded time of image\n images.sort() // Sort for now by URI\n for (let i = 0; i < images.length; i++) {\n if (!UI.widgets.isImage(images[i])) continue\n const figure = div.appendChild(dom.createElement('figure'))\n const img = figure.appendChild(dom.createElement('img'))\n\n // get image with authenticated fetch\n store.fetcher._fetch(images[i].uri)\n .then(function (response) {\n return response.blob()\n })\n .then(function (myBlob) {\n const objectURL = URL.createObjectURL(myBlob)\n img.setAttribute('src', objectURL) // w640 h480 //\n })\n img.style.width = '100%'\n figure.appendChild(dom.createElement('figcaption'))\n }\n const options = { dom }\n\n setTimeout(function () {\n makeBSS('.bss-slides', options)\n }, 1000) // Must run after the code which called this\n\n return div\n }\n}\n\n// ends\n"],"mappings":";;;AAMA,IAAMA,IAAK,EAAG,IAED,IAAgB;CAC3B,MAAM,EAAG,MAAM,WAAW;CAE1B,MAAM;CAEN,UAAU,CAACA,EAAG,MAAM,WAAW,CAAC;CAGhC,OAAO,SAAU,GAAS,GAAS;EACjC,IAAM,IAAQ,EAAQ,QAAQ,OACxB,IAAK,EAAG,IACR,IAAI,EAAM,aAAa,CAAO;EACpC,IAAI,EAAE,EAAG,IAAI,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAG,IAAI,gBAAgB,CAAC,CAAC,MAAM;GACjE,IAAM,IAAW,EAAM,KAAK,GAAS,EAAG,IAAI,UAAU,CAAC,GACnD,IAAQ;GAIZ,OAHA,EAAS,QAAQ,SAAU,GAAM;IAC/B,AAAI,EAAG,QAAQ,QAAQ,CAAI,KAAG;GAChC,CAAC,GACM,IAAQ,IAAI,cAAc;EACnC;EACA,OAAO;CACT;CAIA,QAAQ,SAAU,GAAS,GAAS;EAClC,IAAM,IAAM,EAAQ;EAGpB,EAAG,QAAQ,cAAc,GAAK,mFAAU;EAExC,IAAM,IAAQ,EAAQ,QAAQ,OACxB,IAAK,EAAG,IACR,IAAM,EAAI,cAAc,KAAK;EACnC,EAAI,aAAa,SAAS,YAAY;EAEtC,IAAM,IAAI,EAAM,aAAa,CAAO,GAChC;EACJ,CAAI,EAAE,EAAG,IAAI,gBAAgB,CAAC,CAAC,QAAQ,EAAE,EAAG,IAAI,WAAW,CAAC,CAAC,UAC3D,IAAY,EAAG,IAAI,UAAU;EAE/B,IAAM,IAAS,EAAM,KAAK,GAAS,CAAS;EAE5C,EAAO,KAAK;EACZ,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,QAAQ,KAAK;GACtC,IAAI,CAAC,EAAG,QAAQ,QAAQ,EAAO,EAAE,GAAG;GACpC,IAAM,IAAS,EAAI,YAAY,EAAI,cAAc,QAAQ,CAAC,GACpD,IAAM,EAAO,YAAY,EAAI,cAAc,KAAK,CAAC;GAYvD,AATA,EAAM,QAAQ,OAAO,EAAO,EAAE,CAAC,GAAG,CAAC,CAChC,KAAK,SAAU,GAAU;IACxB,OAAO,EAAS,KAAK;GACvB,CAAC,CAAC,CACD,KAAK,SAAU,GAAQ;IACtB,IAAM,IAAY,IAAI,gBAAgB,CAAM;IAC5C,EAAI,aAAa,OAAO,CAAS;GACnC,CAAC,GACH,EAAI,MAAM,QAAQ,QAClB,EAAO,YAAY,EAAI,cAAc,YAAY,CAAC;EACpD;EACA,IAAM,IAAU,EAAE,OAAI;EAMtB,OAJA,WAAW,WAAY;GACrB,EAAQ,eAAe,CAAO;EAChC,GAAG,GAAI,GAEA;CACT;AACF"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
require("./icons.cjs.js"),require("./spinner.cjs.js");let e=require("solid-ui");require("rdflib"),require("solid-ui/components/button"),require("lit-html"),e.ns.foaf(`homepage`),e.ns.foaf(`weblog`),e.ns.foaf(`workplaceHomepage`),e.ns.foaf(`schoolHomepage`);function t(e,t,n,r){}exports.appendProfileLinks=t;
|
|
2
|
-
//# sourceMappingURL=editProfileDetails.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"editProfileDetails.cjs.js","names":[],"sources":["../../src/social/editProfileDetails.ts"],"sourcesContent":["import { LiveStore, NamedNode, st, sym } from 'rdflib'\nimport { html, render } from 'lit-html'\nimport { ns } from 'solid-ui'\nimport 'solid-ui/components/button'\nimport { editIcon, plusIcon, trashIcon } from './icons'\nimport { createSpinner } from './spinner'\n/* The following code was generated by AI Model: GPT-5.4\n Prompt: can you create me a form to enter this data [\nns.foaf('homepage'),\nns.foaf('weblog'),\nns.foaf('workplaceHomepage'),\nns.foaf('schoolHomepage')\n] and put an edit button at the top left corner of the header\n that when you click it pops up so you can enter this information\n and save it to the Webid. You can look in\n Dev2025/profile-pane/src/sections/heading/mutations to see how\n to write this data in the profile. */\ntype SolidUIButton = HTMLElement & {\n type: string\n variant: string\n size: string\n label: string\n disabled: boolean\n}\n\ntype ProfileLinkField = {\n key: 'homepage' | 'weblog' | 'workplaceHomepage' | 'schoolHomepage'\n label: string\n placeholder: string\n predicate: NamedNode\n}\n\ntype ProfileLinksValues = Record<ProfileLinkField['key'], string[]>\n\ntype EditProfileDetailsButtonOptions = {\n dom: HTMLDocument\n store: LiveStore\n subject: NamedNode\n onSaved: () => void\n}\n\nexport const profileLinkFields: ProfileLinkField[] = [\n {\n key: 'homepage',\n label: 'Homepage',\n placeholder: 'https://example.com',\n predicate: ns.foaf('homepage')\n },\n {\n key: 'weblog',\n label: 'Weblog',\n placeholder: 'https://blog.example.com',\n predicate: ns.foaf('weblog')\n },\n {\n key: 'workplaceHomepage',\n label: 'Workplace Homepage',\n placeholder: 'https://company.example.com',\n predicate: ns.foaf('workplaceHomepage')\n },\n {\n key: 'schoolHomepage',\n label: 'School Homepage',\n placeholder: 'https://school.example.edu',\n predicate: ns.foaf('schoolHomepage')\n }\n]\n\nfunction createEmptyProfileLinkValues (): ProfileLinksValues {\n return {\n homepage: [''],\n weblog: [''],\n workplaceHomepage: [''],\n schoolHomepage: ['']\n }\n}\n\nfunction readProfileLinkValues (store: LiveStore, subject: NamedNode): ProfileLinksValues {\n const doc = subject.doc()\n return profileLinkFields.reduce((result, field) => {\n const values = store\n .statementsMatching(subject, field.predicate, undefined, doc)\n .map((statement) => statement.object?.value || '')\n .filter(Boolean)\n\n result[field.key] = values.length ? values : ['']\n return result\n }, createEmptyProfileLinkValues())\n}\n\nfunction normalizeUrlList (values: string[], fieldLabel: string): string[] {\n const unique = new Set<string>()\n const lines = values\n .map((entry) => entry.trim())\n .filter(Boolean)\n\n for (const line of lines) {\n let parsed: URL\n try {\n parsed = new URL(line)\n } catch {\n throw new Error(`${fieldLabel} must contain valid absolute URLs.`)\n }\n\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new Error(`${fieldLabel} only supports http and https URLs.`)\n }\n\n unique.add(parsed.toString())\n }\n\n return [...unique]\n}\n\nasync function saveProfileLinkValues (\n store: LiveStore,\n subject: NamedNode,\n values: ProfileLinksValues\n): Promise<void> {\n const updater = (store as any).updater\n const fetcher = (store as any).fetcher\n if (!updater || typeof updater.serialize !== 'function' || !fetcher || typeof fetcher.webOperation !== 'function') {\n throw new Error('This profile cannot be edited with the current store.')\n }\n\n const doc = subject.doc()\n const insertions: any[] = []\n const existingStatements: any[] = []\n\n for (const field of profileLinkFields) {\n existingStatements.push(...store.statementsMatching(subject, field.predicate, undefined, doc))\n const nextValues = normalizeUrlList(values[field.key], field.label)\n for (const nextValue of nextValues) {\n insertions.push(st(subject, field.predicate, sym(nextValue), doc))\n }\n }\n\n const retainedStatements = store\n .statementsMatching(undefined, undefined, undefined, doc)\n .filter((statement) => {\n return !profileLinkFields.some((field) => {\n return statement.subject.equals(subject) && statement.predicate.equals(field.predicate)\n })\n })\n\n const nextStatements = retainedStatements.concat(insertions)\n const contentType = 'text/turtle'\n const body = updater.serialize(doc.value, nextStatements, contentType)\n const response = await fetcher.webOperation('PUT', doc.value, {\n noMeta: true,\n contentType,\n body\n })\n\n if (!response || response.ok !== true) {\n const status = response?.status || 'unknown'\n throw new Error(`Unable to save profile links. Web error: ${status}`)\n }\n\n existingStatements.forEach((statement) => {\n store.removeStatement(statement)\n })\n\n for (const statement of insertions) {\n store.add(statement.subject, statement.predicate, statement.object, statement.why)\n }\n}\n\nexport function appendProfileLinks (\n _container: HTMLElement,\n _dom: HTMLDocument,\n _store: LiveStore,\n _subject: NamedNode\n): void {\n // Hidden for now because social-pane website links are not part of the new design.\n // Revisit later if we decide to show profile links in this header again.\n}\n\nexport function createEditProfileDetailsButton (\n options: EditProfileDetailsButtonOptions\n): HTMLElement {\n const { dom, store, subject, onSaved } = options\n const button = dom.createElement('solid-ui-button') as SolidUIButton\n button.type = 'button'\n button.className = 'social-pane__edit-button profile__action-button profile__heading-action-button profile-action-text flex-center profile-section-collapsible__edit-button'\n button.variant = 'secondary'\n button.size = 'sm'\n\n const label = dom.createElement('span')\n label.className = 'profile-section-collapsible__edit-label social-pane__edit-button-label'\n label.innerHTML = `${editIcon} Edit`\n button.appendChild(label)\n\n const icon = dom.createElement('span')\n icon.className = 'profile-section-collapsible__edit-icon social-pane__edit-button-icon'\n icon.setAttribute('aria-hidden', 'true')\n icon.innerHTML = editIcon\n button.appendChild(icon)\n\n button.setAttribute('aria-label', 'Edit profile links')\n\n const openDialog = () => {\n const initialValues = readProfileLinkValues(store, subject)\n const formState = profileLinkFields.reduce((result, field) => {\n result[field.key] = [...initialValues[field.key]]\n return result\n }, createEmptyProfileLinkValues())\n const overlay = dom.createElement('div')\n overlay.classList.add('social-pane__dialog-backdrop', 'flex-center')\n\n const dialog = dom.createElement('div')\n dialog.classList.add('social-pane__dialog')\n dialog.setAttribute('role', 'dialog')\n dialog.setAttribute('aria-modal', 'true')\n dialog.setAttribute('aria-label', 'Edit profile links')\n overlay.appendChild(dialog)\n\n const dialogHeader = dom.createElement('div')\n dialogHeader.classList.add('social-pane__dialog-header')\n dialog.appendChild(dialogHeader)\n\n const title = dom.createElement('h2')\n title.className = 'social-pane__dialog-title'\n title.textContent = 'Edit profile links'\n dialogHeader.appendChild(title)\n\n const form = dom.createElement('form')\n form.classList.add('social-pane__dialog-form', 'flex-column')\n dialog.appendChild(form)\n\n const savingOverlay = dom.createElement('div')\n savingOverlay.className = 'social-pane__dialog-saving-overlay'\n savingOverlay.hidden = true\n dialog.appendChild(savingOverlay)\n\n const fieldsContainer = dom.createElement('div')\n fieldsContainer.className = 'social-pane__dialog-fields'\n form.appendChild(fieldsContainer)\n\n const errorMessage = dom.createElement('p')\n errorMessage.className = 'social-pane__dialog-error'\n\n const focusRow = (fieldKey: ProfileLinkField['key'], rowIndex: number) => {\n const nextField = fieldsContainer.querySelector<HTMLInputElement>(`input[data-profile-link-key=\"${fieldKey}\"][data-profile-link-index=\"${String(rowIndex)}\"]`)\n nextField?.focus()\n }\n\n const renderFields = (focusTarget?: { fieldKey: ProfileLinkField['key'], rowIndex: number }) => {\n fieldsContainer.replaceChildren()\n\n for (const field of profileLinkFields) {\n const fieldWrapper = dom.createElement('section')\n fieldWrapper.classList.add('social-pane__dialog-field', 'flex-column')\n\n const fieldHeader = dom.createElement('div')\n fieldHeader.className = 'social-pane__dialog-field-header'\n fieldWrapper.appendChild(fieldHeader)\n\n const fieldLabel = dom.createElement('h3')\n fieldLabel.className = 'social-pane__dialog-label'\n fieldLabel.textContent = field.label\n fieldHeader.appendChild(fieldLabel)\n\n const addButton = dom.createElement('solid-ui-button') as SolidUIButton\n addButton.type = 'button'\n addButton.className = 'social-pane__dialog-row-button--add'\n addButton.setAttribute('aria-label', `Add another ${field.label.toLowerCase()}`)\n addButton.variant = 'secondary'\n addButton.size = 'sm'\n const addButtonContent = dom.createElement('span')\n addButtonContent.className = 'social-pane__add-more-content'\n const addButtonInline = dom.createElement('span')\n addButtonInline.className = 'social-pane__add-more-inline'\n const addButtonIcon = dom.createElement('span')\n addButtonIcon.className = 'social-pane__add-more-icon'\n addButtonIcon.setAttribute('aria-hidden', 'true')\n addButtonIcon.innerHTML = plusIcon\n const addButtonText = dom.createElement('span')\n addButtonText.textContent = 'Add More'\n addButtonInline.appendChild(addButtonIcon)\n addButtonInline.appendChild(addButtonText)\n addButtonContent.appendChild(addButtonInline)\n addButton.appendChild(addButtonContent)\n addButton.addEventListener('click', () => {\n formState[field.key].push('')\n renderFields({ fieldKey: field.key, rowIndex: formState[field.key].length - 1 })\n })\n fieldHeader.appendChild(addButton)\n\n const rows = dom.createElement('div')\n rows.className = 'social-pane__dialog-row-list'\n fieldWrapper.appendChild(rows)\n\n const values = formState[field.key].length ? formState[field.key] : ['']\n values.forEach((value, index) => {\n const row = dom.createElement('div')\n row.className = 'social-pane__dialog-row'\n\n const input = dom.createElement('input')\n input.classList.add('social-pane__dialog-input', 'input')\n input.type = 'url'\n input.placeholder = field.placeholder\n input.value = value\n input.setAttribute('data-profile-link-key', field.key)\n input.setAttribute('data-profile-link-index', String(index))\n input.addEventListener('input', () => {\n formState[field.key][index] = input.value\n })\n row.appendChild(input)\n\n const removeButton = dom.createElement('solid-ui-button') as SolidUIButton\n removeButton.type = 'button'\n removeButton.className = 'social-pane__dialog-row-button--remove'\n removeButton.setAttribute('aria-label', `Remove ${field.label.toLowerCase()} ${index + 1}`)\n removeButton.setAttribute('title', 'Remove')\n removeButton.variant = 'icon'\n removeButton.size = 'md'\n const removeButtonIcon = dom.createElement('span')\n removeButtonIcon.className = 'social-pane__dialog-row-button-icon social-pane__dialog-row-button-icon--remove'\n removeButtonIcon.setAttribute('slot', 'icon')\n removeButtonIcon.setAttribute('aria-hidden', 'true')\n removeButtonIcon.innerHTML = trashIcon\n removeButton.appendChild(removeButtonIcon)\n removeButton.addEventListener('click', () => {\n if (formState[field.key].length === 1) {\n formState[field.key][0] = ''\n } else {\n formState[field.key].splice(index, 1)\n }\n renderFields()\n })\n row.appendChild(removeButton)\n\n rows.appendChild(row)\n })\n\n fieldsContainer.appendChild(fieldWrapper)\n }\n\n if (focusTarget) {\n focusRow(focusTarget.fieldKey, focusTarget.rowIndex)\n }\n }\n\n renderFields()\n\n form.appendChild(errorMessage)\n\n const actions = dom.createElement('div')\n actions.className = 'social-pane__dialog-actions'\n form.appendChild(actions)\n\n const closeButton = dom.createElement('solid-ui-button') as SolidUIButton\n closeButton.type = 'button'\n closeButton.className = 'social-pane__dialog-button--cancel'\n closeButton.setAttribute('aria-label', 'Close dialog')\n closeButton.label = 'Close'\n closeButton.variant = 'secondary'\n closeButton.size = 'md'\n actions.appendChild(closeButton)\n\n const saveButton = dom.createElement('solid-ui-button') as SolidUIButton\n saveButton.type = 'button'\n saveButton.className = 'social-pane__dialog-button--save'\n saveButton.label = 'Save Changes'\n saveButton.variant = 'primary'\n saveButton.size = 'md'\n actions.appendChild(saveButton)\n\n let isSaving = false\n\n const setSavingState = (nextSaving: boolean) => {\n isSaving = nextSaving\n dialog.classList.toggle('modal--saving', nextSaving)\n dialog.setAttribute('aria-busy', String(nextSaving))\n form.toggleAttribute('inert', nextSaving)\n saveButton.disabled = nextSaving\n saveButton.setAttribute('aria-busy', String(nextSaving))\n closeButton.disabled = nextSaving\n savingOverlay.hidden = !nextSaving\n\n if (nextSaving) {\n const activeElement = dialog.ownerDocument.activeElement as HTMLElement | null\n if (activeElement && dialog.contains(activeElement)) {\n activeElement.blur()\n }\n\n render(html`\n <div class=\"modal__saving-indicator inline-flex-row justify-center\" aria-live=\"polite\" aria-label=\"Saving changes\">\n ${createSpinner()}\n </div>\n `, savingOverlay)\n } else {\n render(html``, savingOverlay)\n }\n }\n\n const closeDialog = (force = false) => {\n if (isSaving && !force) return\n overlay.remove()\n }\n\n const requestCloseDialog = () => {\n closeDialog()\n }\n\n const handleSave = async () => {\n errorMessage.textContent = ''\n setSavingState(true)\n\n const nextValues = profileLinkFields.reduce((result, field) => {\n result[field.key] = [...formState[field.key]]\n return result\n }, createEmptyProfileLinkValues())\n\n try {\n await saveProfileLinkValues(store, subject, nextValues)\n setSavingState(false)\n closeDialog(true)\n onSaved()\n } catch (error) {\n errorMessage.textContent = error instanceof Error ? error.message : 'Unable to save profile links.'\n } finally {\n if (isSaving) {\n setSavingState(false)\n }\n }\n }\n\n overlay.addEventListener('click', (event) => {\n if (event.target === overlay) closeDialog()\n })\n closeButton.addEventListener('click', requestCloseDialog)\n\n saveButton.addEventListener('click', async (event) => {\n event.preventDefault()\n await handleSave()\n })\n\n overlay.addEventListener('keydown', (event) => {\n if (event.key === 'Escape') closeDialog()\n })\n\n form.addEventListener('submit', (event) => {\n event.preventDefault()\n })\n\n dom.body.appendChild(overlay)\n focusRow('homepage', 0)\n }\n\n button.addEventListener('click', openDialog)\n return button\n}\n"],"mappings":"4JA8Ce,EAAA,GAAG,KAAK,UAAU,EAMlB,EAAA,GAAG,KAAK,QAAQ,EAMhB,EAAA,GAAG,KAAK,mBAAmB,EAM3B,EAAA,GAAG,KAAK,gBAAgB,EAwGvC,SAAgB,EACd,EACA,EACA,EACA,EACM,CAGR"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import "./icons.esm.js";
|
|
2
|
-
import "./spinner.esm.js";
|
|
3
|
-
import { ns as e } from "solid-ui";
|
|
4
|
-
import "rdflib";
|
|
5
|
-
import "solid-ui/components/button";
|
|
6
|
-
import "lit-html";
|
|
7
|
-
e.foaf("homepage"), e.foaf("weblog"), e.foaf("workplaceHomepage"), e.foaf("schoolHomepage");
|
|
8
|
-
function t(e, t, n, r) {}
|
|
9
|
-
//#endregion
|
|
10
|
-
export { t as appendProfileLinks };
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=editProfileDetails.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"editProfileDetails.esm.js","names":[],"sources":["../../src/social/editProfileDetails.ts"],"sourcesContent":["import { LiveStore, NamedNode, st, sym } from 'rdflib'\nimport { html, render } from 'lit-html'\nimport { ns } from 'solid-ui'\nimport 'solid-ui/components/button'\nimport { editIcon, plusIcon, trashIcon } from './icons'\nimport { createSpinner } from './spinner'\n/* The following code was generated by AI Model: GPT-5.4\n Prompt: can you create me a form to enter this data [\nns.foaf('homepage'),\nns.foaf('weblog'),\nns.foaf('workplaceHomepage'),\nns.foaf('schoolHomepage')\n] and put an edit button at the top left corner of the header\n that when you click it pops up so you can enter this information\n and save it to the Webid. You can look in\n Dev2025/profile-pane/src/sections/heading/mutations to see how\n to write this data in the profile. */\ntype SolidUIButton = HTMLElement & {\n type: string\n variant: string\n size: string\n label: string\n disabled: boolean\n}\n\ntype ProfileLinkField = {\n key: 'homepage' | 'weblog' | 'workplaceHomepage' | 'schoolHomepage'\n label: string\n placeholder: string\n predicate: NamedNode\n}\n\ntype ProfileLinksValues = Record<ProfileLinkField['key'], string[]>\n\ntype EditProfileDetailsButtonOptions = {\n dom: HTMLDocument\n store: LiveStore\n subject: NamedNode\n onSaved: () => void\n}\n\nexport const profileLinkFields: ProfileLinkField[] = [\n {\n key: 'homepage',\n label: 'Homepage',\n placeholder: 'https://example.com',\n predicate: ns.foaf('homepage')\n },\n {\n key: 'weblog',\n label: 'Weblog',\n placeholder: 'https://blog.example.com',\n predicate: ns.foaf('weblog')\n },\n {\n key: 'workplaceHomepage',\n label: 'Workplace Homepage',\n placeholder: 'https://company.example.com',\n predicate: ns.foaf('workplaceHomepage')\n },\n {\n key: 'schoolHomepage',\n label: 'School Homepage',\n placeholder: 'https://school.example.edu',\n predicate: ns.foaf('schoolHomepage')\n }\n]\n\nfunction createEmptyProfileLinkValues (): ProfileLinksValues {\n return {\n homepage: [''],\n weblog: [''],\n workplaceHomepage: [''],\n schoolHomepage: ['']\n }\n}\n\nfunction readProfileLinkValues (store: LiveStore, subject: NamedNode): ProfileLinksValues {\n const doc = subject.doc()\n return profileLinkFields.reduce((result, field) => {\n const values = store\n .statementsMatching(subject, field.predicate, undefined, doc)\n .map((statement) => statement.object?.value || '')\n .filter(Boolean)\n\n result[field.key] = values.length ? values : ['']\n return result\n }, createEmptyProfileLinkValues())\n}\n\nfunction normalizeUrlList (values: string[], fieldLabel: string): string[] {\n const unique = new Set<string>()\n const lines = values\n .map((entry) => entry.trim())\n .filter(Boolean)\n\n for (const line of lines) {\n let parsed: URL\n try {\n parsed = new URL(line)\n } catch {\n throw new Error(`${fieldLabel} must contain valid absolute URLs.`)\n }\n\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new Error(`${fieldLabel} only supports http and https URLs.`)\n }\n\n unique.add(parsed.toString())\n }\n\n return [...unique]\n}\n\nasync function saveProfileLinkValues (\n store: LiveStore,\n subject: NamedNode,\n values: ProfileLinksValues\n): Promise<void> {\n const updater = (store as any).updater\n const fetcher = (store as any).fetcher\n if (!updater || typeof updater.serialize !== 'function' || !fetcher || typeof fetcher.webOperation !== 'function') {\n throw new Error('This profile cannot be edited with the current store.')\n }\n\n const doc = subject.doc()\n const insertions: any[] = []\n const existingStatements: any[] = []\n\n for (const field of profileLinkFields) {\n existingStatements.push(...store.statementsMatching(subject, field.predicate, undefined, doc))\n const nextValues = normalizeUrlList(values[field.key], field.label)\n for (const nextValue of nextValues) {\n insertions.push(st(subject, field.predicate, sym(nextValue), doc))\n }\n }\n\n const retainedStatements = store\n .statementsMatching(undefined, undefined, undefined, doc)\n .filter((statement) => {\n return !profileLinkFields.some((field) => {\n return statement.subject.equals(subject) && statement.predicate.equals(field.predicate)\n })\n })\n\n const nextStatements = retainedStatements.concat(insertions)\n const contentType = 'text/turtle'\n const body = updater.serialize(doc.value, nextStatements, contentType)\n const response = await fetcher.webOperation('PUT', doc.value, {\n noMeta: true,\n contentType,\n body\n })\n\n if (!response || response.ok !== true) {\n const status = response?.status || 'unknown'\n throw new Error(`Unable to save profile links. Web error: ${status}`)\n }\n\n existingStatements.forEach((statement) => {\n store.removeStatement(statement)\n })\n\n for (const statement of insertions) {\n store.add(statement.subject, statement.predicate, statement.object, statement.why)\n }\n}\n\nexport function appendProfileLinks (\n _container: HTMLElement,\n _dom: HTMLDocument,\n _store: LiveStore,\n _subject: NamedNode\n): void {\n // Hidden for now because social-pane website links are not part of the new design.\n // Revisit later if we decide to show profile links in this header again.\n}\n\nexport function createEditProfileDetailsButton (\n options: EditProfileDetailsButtonOptions\n): HTMLElement {\n const { dom, store, subject, onSaved } = options\n const button = dom.createElement('solid-ui-button') as SolidUIButton\n button.type = 'button'\n button.className = 'social-pane__edit-button profile__action-button profile__heading-action-button profile-action-text flex-center profile-section-collapsible__edit-button'\n button.variant = 'secondary'\n button.size = 'sm'\n\n const label = dom.createElement('span')\n label.className = 'profile-section-collapsible__edit-label social-pane__edit-button-label'\n label.innerHTML = `${editIcon} Edit`\n button.appendChild(label)\n\n const icon = dom.createElement('span')\n icon.className = 'profile-section-collapsible__edit-icon social-pane__edit-button-icon'\n icon.setAttribute('aria-hidden', 'true')\n icon.innerHTML = editIcon\n button.appendChild(icon)\n\n button.setAttribute('aria-label', 'Edit profile links')\n\n const openDialog = () => {\n const initialValues = readProfileLinkValues(store, subject)\n const formState = profileLinkFields.reduce((result, field) => {\n result[field.key] = [...initialValues[field.key]]\n return result\n }, createEmptyProfileLinkValues())\n const overlay = dom.createElement('div')\n overlay.classList.add('social-pane__dialog-backdrop', 'flex-center')\n\n const dialog = dom.createElement('div')\n dialog.classList.add('social-pane__dialog')\n dialog.setAttribute('role', 'dialog')\n dialog.setAttribute('aria-modal', 'true')\n dialog.setAttribute('aria-label', 'Edit profile links')\n overlay.appendChild(dialog)\n\n const dialogHeader = dom.createElement('div')\n dialogHeader.classList.add('social-pane__dialog-header')\n dialog.appendChild(dialogHeader)\n\n const title = dom.createElement('h2')\n title.className = 'social-pane__dialog-title'\n title.textContent = 'Edit profile links'\n dialogHeader.appendChild(title)\n\n const form = dom.createElement('form')\n form.classList.add('social-pane__dialog-form', 'flex-column')\n dialog.appendChild(form)\n\n const savingOverlay = dom.createElement('div')\n savingOverlay.className = 'social-pane__dialog-saving-overlay'\n savingOverlay.hidden = true\n dialog.appendChild(savingOverlay)\n\n const fieldsContainer = dom.createElement('div')\n fieldsContainer.className = 'social-pane__dialog-fields'\n form.appendChild(fieldsContainer)\n\n const errorMessage = dom.createElement('p')\n errorMessage.className = 'social-pane__dialog-error'\n\n const focusRow = (fieldKey: ProfileLinkField['key'], rowIndex: number) => {\n const nextField = fieldsContainer.querySelector<HTMLInputElement>(`input[data-profile-link-key=\"${fieldKey}\"][data-profile-link-index=\"${String(rowIndex)}\"]`)\n nextField?.focus()\n }\n\n const renderFields = (focusTarget?: { fieldKey: ProfileLinkField['key'], rowIndex: number }) => {\n fieldsContainer.replaceChildren()\n\n for (const field of profileLinkFields) {\n const fieldWrapper = dom.createElement('section')\n fieldWrapper.classList.add('social-pane__dialog-field', 'flex-column')\n\n const fieldHeader = dom.createElement('div')\n fieldHeader.className = 'social-pane__dialog-field-header'\n fieldWrapper.appendChild(fieldHeader)\n\n const fieldLabel = dom.createElement('h3')\n fieldLabel.className = 'social-pane__dialog-label'\n fieldLabel.textContent = field.label\n fieldHeader.appendChild(fieldLabel)\n\n const addButton = dom.createElement('solid-ui-button') as SolidUIButton\n addButton.type = 'button'\n addButton.className = 'social-pane__dialog-row-button--add'\n addButton.setAttribute('aria-label', `Add another ${field.label.toLowerCase()}`)\n addButton.variant = 'secondary'\n addButton.size = 'sm'\n const addButtonContent = dom.createElement('span')\n addButtonContent.className = 'social-pane__add-more-content'\n const addButtonInline = dom.createElement('span')\n addButtonInline.className = 'social-pane__add-more-inline'\n const addButtonIcon = dom.createElement('span')\n addButtonIcon.className = 'social-pane__add-more-icon'\n addButtonIcon.setAttribute('aria-hidden', 'true')\n addButtonIcon.innerHTML = plusIcon\n const addButtonText = dom.createElement('span')\n addButtonText.textContent = 'Add More'\n addButtonInline.appendChild(addButtonIcon)\n addButtonInline.appendChild(addButtonText)\n addButtonContent.appendChild(addButtonInline)\n addButton.appendChild(addButtonContent)\n addButton.addEventListener('click', () => {\n formState[field.key].push('')\n renderFields({ fieldKey: field.key, rowIndex: formState[field.key].length - 1 })\n })\n fieldHeader.appendChild(addButton)\n\n const rows = dom.createElement('div')\n rows.className = 'social-pane__dialog-row-list'\n fieldWrapper.appendChild(rows)\n\n const values = formState[field.key].length ? formState[field.key] : ['']\n values.forEach((value, index) => {\n const row = dom.createElement('div')\n row.className = 'social-pane__dialog-row'\n\n const input = dom.createElement('input')\n input.classList.add('social-pane__dialog-input', 'input')\n input.type = 'url'\n input.placeholder = field.placeholder\n input.value = value\n input.setAttribute('data-profile-link-key', field.key)\n input.setAttribute('data-profile-link-index', String(index))\n input.addEventListener('input', () => {\n formState[field.key][index] = input.value\n })\n row.appendChild(input)\n\n const removeButton = dom.createElement('solid-ui-button') as SolidUIButton\n removeButton.type = 'button'\n removeButton.className = 'social-pane__dialog-row-button--remove'\n removeButton.setAttribute('aria-label', `Remove ${field.label.toLowerCase()} ${index + 1}`)\n removeButton.setAttribute('title', 'Remove')\n removeButton.variant = 'icon'\n removeButton.size = 'md'\n const removeButtonIcon = dom.createElement('span')\n removeButtonIcon.className = 'social-pane__dialog-row-button-icon social-pane__dialog-row-button-icon--remove'\n removeButtonIcon.setAttribute('slot', 'icon')\n removeButtonIcon.setAttribute('aria-hidden', 'true')\n removeButtonIcon.innerHTML = trashIcon\n removeButton.appendChild(removeButtonIcon)\n removeButton.addEventListener('click', () => {\n if (formState[field.key].length === 1) {\n formState[field.key][0] = ''\n } else {\n formState[field.key].splice(index, 1)\n }\n renderFields()\n })\n row.appendChild(removeButton)\n\n rows.appendChild(row)\n })\n\n fieldsContainer.appendChild(fieldWrapper)\n }\n\n if (focusTarget) {\n focusRow(focusTarget.fieldKey, focusTarget.rowIndex)\n }\n }\n\n renderFields()\n\n form.appendChild(errorMessage)\n\n const actions = dom.createElement('div')\n actions.className = 'social-pane__dialog-actions'\n form.appendChild(actions)\n\n const closeButton = dom.createElement('solid-ui-button') as SolidUIButton\n closeButton.type = 'button'\n closeButton.className = 'social-pane__dialog-button--cancel'\n closeButton.setAttribute('aria-label', 'Close dialog')\n closeButton.label = 'Close'\n closeButton.variant = 'secondary'\n closeButton.size = 'md'\n actions.appendChild(closeButton)\n\n const saveButton = dom.createElement('solid-ui-button') as SolidUIButton\n saveButton.type = 'button'\n saveButton.className = 'social-pane__dialog-button--save'\n saveButton.label = 'Save Changes'\n saveButton.variant = 'primary'\n saveButton.size = 'md'\n actions.appendChild(saveButton)\n\n let isSaving = false\n\n const setSavingState = (nextSaving: boolean) => {\n isSaving = nextSaving\n dialog.classList.toggle('modal--saving', nextSaving)\n dialog.setAttribute('aria-busy', String(nextSaving))\n form.toggleAttribute('inert', nextSaving)\n saveButton.disabled = nextSaving\n saveButton.setAttribute('aria-busy', String(nextSaving))\n closeButton.disabled = nextSaving\n savingOverlay.hidden = !nextSaving\n\n if (nextSaving) {\n const activeElement = dialog.ownerDocument.activeElement as HTMLElement | null\n if (activeElement && dialog.contains(activeElement)) {\n activeElement.blur()\n }\n\n render(html`\n <div class=\"modal__saving-indicator inline-flex-row justify-center\" aria-live=\"polite\" aria-label=\"Saving changes\">\n ${createSpinner()}\n </div>\n `, savingOverlay)\n } else {\n render(html``, savingOverlay)\n }\n }\n\n const closeDialog = (force = false) => {\n if (isSaving && !force) return\n overlay.remove()\n }\n\n const requestCloseDialog = () => {\n closeDialog()\n }\n\n const handleSave = async () => {\n errorMessage.textContent = ''\n setSavingState(true)\n\n const nextValues = profileLinkFields.reduce((result, field) => {\n result[field.key] = [...formState[field.key]]\n return result\n }, createEmptyProfileLinkValues())\n\n try {\n await saveProfileLinkValues(store, subject, nextValues)\n setSavingState(false)\n closeDialog(true)\n onSaved()\n } catch (error) {\n errorMessage.textContent = error instanceof Error ? error.message : 'Unable to save profile links.'\n } finally {\n if (isSaving) {\n setSavingState(false)\n }\n }\n }\n\n overlay.addEventListener('click', (event) => {\n if (event.target === overlay) closeDialog()\n })\n closeButton.addEventListener('click', requestCloseDialog)\n\n saveButton.addEventListener('click', async (event) => {\n event.preventDefault()\n await handleSave()\n })\n\n overlay.addEventListener('keydown', (event) => {\n if (event.key === 'Escape') closeDialog()\n })\n\n form.addEventListener('submit', (event) => {\n event.preventDefault()\n })\n\n dom.body.appendChild(overlay)\n focusRow('homepage', 0)\n }\n\n button.addEventListener('click', openDialog)\n return button\n}\n"],"mappings":";;;;;;AA8Ce,EAAG,KAAK,UAAU,GAMlB,EAAG,KAAK,QAAQ,GAMhB,EAAG,KAAK,mBAAmB,GAM3B,EAAG,KAAK,gBAAgB;AAwGvC,SAAgB,EACd,GACA,GACA,GACA,GACM,CAGR"}
|
package/dist/social/icons.cjs.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
var e=String.raw,t=e`
|
|
2
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
|
3
|
-
width="64"
|
|
4
|
-
height="64"
|
|
5
|
-
viewBox="0 0 64 64"
|
|
6
|
-
fill="none"
|
|
7
|
-
aria-hidden="true"
|
|
8
|
-
focusable="false"
|
|
9
|
-
>
|
|
10
|
-
<path d="M32.0007 58.6666C46.7282 58.6666 58.6673 46.7275 58.6673 31.9999C58.6673 17.2723 46.7282 5.33325 32.0007 5.33325C17.2731 5.33325 5.33398 17.2723 5.33398 31.9999C5.33398 46.7275 17.2731 58.6666 32.0007 58.6666Z" stroke="#CBD5E1" stroke-width="5.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
11
|
-
<path d="M32 34.6667C36.4183 34.6667 40 31.085 40 26.6667C40 22.2485 36.4183 18.6667 32 18.6667C27.5817 18.6667 24 22.2485 24 26.6667C24 31.085 27.5817 34.6667 32 34.6667Z" stroke="#CBD5E1" stroke-width="5.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
12
|
-
<path d="M18.666 55.0986V50.6666C18.666 49.2521 19.2279 47.8955 20.2281 46.8954C21.2283 45.8952 22.5849 45.3333 23.9993 45.3333H39.9993C41.4138 45.3333 42.7704 45.8952 43.7706 46.8954C44.7708 47.8955 45.3327 49.2521 45.3327 50.6666V55.0986" stroke="#CBD5E1" stroke-width="5.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
13
|
-
</svg>
|
|
14
|
-
`;e`
|
|
15
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
|
16
|
-
width="14"
|
|
17
|
-
height="14"
|
|
18
|
-
viewBox="3 3 14 14"
|
|
19
|
-
fill="none"
|
|
20
|
-
aria-hidden="true"
|
|
21
|
-
focusable="false"
|
|
22
|
-
>
|
|
23
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.3063 3.34814C14.9271 3.34832 15.5236 3.59563 15.9625 4.03467C16.4012 4.47362 16.648 5.06935 16.6481 5.68994C16.648 6.31072 16.4004 6.90719 15.9615 7.34619L15.9606 7.34521L7.95373 15.355L7.95275 15.356C7.73845 15.5696 7.47464 15.7278 7.18517 15.8159H7.1842L4.57287 16.6079H4.57092C4.40678 16.6572 4.23224 16.6614 4.06603 16.6196C3.89974 16.5778 3.74793 16.4918 3.62658 16.3706C3.50526 16.2494 3.41865 16.0974 3.37658 15.9312C3.33472 15.7651 3.3383 15.5903 3.38732 15.4263L3.3883 15.4243L4.18127 12.813V12.811C4.27013 12.5215 4.42882 12.2574 4.64318 12.0435L12.651 4.03467V4.03369C13.09 3.59513 13.6857 3.34816 14.3063 3.34814ZM5.56213 12.9634C5.49841 13.0269 5.4509 13.1059 5.42443 13.1919L5.42345 13.1909L4.82189 15.1733L6.80627 14.5718C6.89221 14.5456 6.97114 14.4985 7.03478 14.4351L13.274 8.19482L11.8014 6.72217L5.56213 12.9634ZM14.3063 4.64893C14.0303 4.64894 13.7652 4.75864 13.5699 4.95361L12.7213 5.80225L14.194 7.2749L15.0426 6.42627L15.1119 6.3501C15.2635 6.16488 15.3473 5.93141 15.3473 5.68994C15.3472 5.41394 15.2377 5.14881 15.0426 4.95361C14.8474 4.75846 14.5823 4.64906 14.3063 4.64893Z" fill="#1E2939"/>
|
|
24
|
-
</svg>
|
|
25
|
-
`;var n=e`
|
|
26
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
|
27
|
-
width="16"
|
|
28
|
-
height="16"
|
|
29
|
-
viewBox="0 0 16 16"
|
|
30
|
-
fill="none"
|
|
31
|
-
aria-hidden="true"
|
|
32
|
-
focusable="false"
|
|
33
|
-
>
|
|
34
|
-
<path d="M13.3327 6.66659C13.3327 9.99525 9.64002 13.4619 8.40002 14.5326C8.2845 14.6194 8.14388 14.6664 7.99935 14.6664C7.85482 14.6664 7.7142 14.6194 7.59868 14.5326C6.35868 13.4619 2.66602 9.99525 2.66602 6.66659C2.66602 5.2521 3.22792 3.89554 4.22811 2.89535C5.22831 1.89516 6.58486 1.33325 7.99935 1.33325C9.41384 1.33325 10.7704 1.89516 11.7706 2.89535C12.7708 3.89554 13.3327 5.2521 13.3327 6.66659Z" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
35
|
-
<path d="M8 8.66675C9.10457 8.66675 10 7.77132 10 6.66675C10 5.56218 9.10457 4.66675 8 4.66675C6.89543 4.66675 6 5.56218 6 6.66675C6 7.77132 6.89543 8.66675 8 8.66675Z" stroke="#4A5565" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
36
|
-
</svg>
|
|
37
|
-
`;e`
|
|
38
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
|
39
|
-
width="12"
|
|
40
|
-
height="12"
|
|
41
|
-
viewBox="0 0 12 12"
|
|
42
|
-
fill="none"
|
|
43
|
-
aria-hidden="true"
|
|
44
|
-
focusable="false"
|
|
45
|
-
>
|
|
46
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.5301 0.244005C10.8555 -0.0813835 11.3834 -0.0812864 11.7088 0.244005C12.0338 0.569352 12.0338 1.09639 11.7088 1.42174L7.15416 5.97545L11.7088 10.5301C12.0341 10.8556 12.0342 11.3835 11.7088 11.7088C11.3835 12.0342 10.8556 12.0341 10.5301 11.7088L5.97545 7.15416L1.42174 11.7088C1.09639 12.0338 0.569351 12.0338 0.244004 11.7088C-0.0812866 11.3834 -0.0813828 10.8555 0.244004 10.5301L4.79772 5.97545L0.244004 1.42174C-0.0812866 1.09629 -0.0813828 0.569393 0.244004 0.244005C0.569393 -0.0813835 1.09629 -0.0812864 1.42174 0.244005L5.97545 4.79772L10.5301 0.244005Z" fill="#4A5565"/>
|
|
47
|
-
</svg>
|
|
48
|
-
`,e`
|
|
49
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
|
50
|
-
width="20"
|
|
51
|
-
height="20"
|
|
52
|
-
viewBox="0 0 20 20"
|
|
53
|
-
fill="none"
|
|
54
|
-
aria-hidden="true"
|
|
55
|
-
focusable="false"
|
|
56
|
-
>
|
|
57
|
-
<path d="M8.33301 9.16675V14.1667" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
|
|
58
|
-
<path d="M11.667 9.16675V14.1667" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
|
|
59
|
-
<path d="M15.8337 5V16.6667C15.8337 17.1087 15.6581 17.5326 15.3455 17.8452C15.0329 18.1577 14.609 18.3333 14.167 18.3333H5.83366C5.39163 18.3333 4.96771 18.1577 4.65515 17.8452C4.34259 17.5326 4.16699 17.1087 4.16699 16.6667V5" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
|
|
60
|
-
<path d="M2.5 5H17.5" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
|
|
61
|
-
<path d="M6.66699 5.00008V3.33341C6.66699 2.89139 6.84259 2.46746 7.15515 2.1549C7.46771 1.84234 7.89163 1.66675 8.33366 1.66675H11.667C12.109 1.66675 12.5329 1.84234 12.8455 2.1549C13.1581 2.46746 13.3337 2.89139 13.3337 3.33341V5.00008" stroke="#D1D5DC" stroke-width="1.45833" stroke-linecap="round" stroke-linejoin="round"/>
|
|
62
|
-
</svg>
|
|
63
|
-
`,e`
|
|
64
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
|
65
|
-
width="12"
|
|
66
|
-
height="12"
|
|
67
|
-
viewBox="0 0 12 12"
|
|
68
|
-
fill="none"
|
|
69
|
-
aria-hidden="true"
|
|
70
|
-
focusable="false"
|
|
71
|
-
>
|
|
72
|
-
<g clip-path="url(#clip0_3001_2564)">
|
|
73
|
-
<path d="M6.06055 0.10083C6.53372 0.101056 6.91793 0.485037 6.91797 0.958252V5.20532H11.165C11.6384 5.20532 12.0225 5.58936 12.0225 6.06274C12.0223 6.536 11.6383 6.92017 11.165 6.92017H6.91797V11.1663C6.91797 11.6395 6.53374 12.0235 6.06055 12.0237C5.58716 12.0237 5.20312 11.6396 5.20312 11.1663V6.92017H0.957031C0.483929 6.91994 0.0997601 6.53586 0.0996094 6.06274C0.0996094 5.5895 0.483837 5.20555 0.957031 5.20532H5.20312V0.958252C5.20316 0.484897 5.58718 0.10083 6.06055 0.10083Z" fill="#7C4DFF"/>
|
|
74
|
-
</g>
|
|
75
|
-
<defs>
|
|
76
|
-
<clipPath id="clip0_3001_2564">
|
|
77
|
-
<rect width="12" height="12" fill="white"/>
|
|
78
|
-
</clipPath>
|
|
79
|
-
</defs>
|
|
80
|
-
</svg>
|
|
81
|
-
`,exports.locationIcon=n,exports.personInCircleIcon=t;
|
|
82
|
-
//# sourceMappingURL=icons.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icons.cjs.js","names":[],"sources":["../../src/social/icons.ts"],"sourcesContent":["/* Simpliest solution for now since we are only using it for the symposium\nand then we will use icons from solid-assets */\nconst html = String.raw\n\nexport const personInCircleIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"64\" \n height=\"64\" \n viewBox=\"0 0 64 64\" \n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M32.0007 58.6666C46.7282 58.6666 58.6673 46.7275 58.6673 31.9999C58.6673 17.2723 46.7282 5.33325 32.0007 5.33325C17.2731 5.33325 5.33398 17.2723 5.33398 31.9999C5.33398 46.7275 17.2731 58.6666 32.0007 58.6666Z\" stroke=\"#CBD5E1\" stroke-width=\"5.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M32 34.6667C36.4183 34.6667 40 31.085 40 26.6667C40 22.2485 36.4183 18.6667 32 18.6667C27.5817 18.6667 24 22.2485 24 26.6667C24 31.085 27.5817 34.6667 32 34.6667Z\" stroke=\"#CBD5E1\" stroke-width=\"5.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18.666 55.0986V50.6666C18.666 49.2521 19.2279 47.8955 20.2281 46.8954C21.2283 45.8952 22.5849 45.3333 23.9993 45.3333H39.9993C41.4138 45.3333 42.7704 45.8952 43.7706 46.8954C44.7708 47.8955 45.3327 49.2521 45.3327 50.6666V55.0986\" stroke=\"#CBD5E1\" stroke-width=\"5.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n`\nexport const editIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"14\" \n height=\"14\" \n viewBox=\"3 3 14 14\" \n fill=\"none\"\n aria-hidden=\"true\" \n focusable=\"false\"\n >\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.3063 3.34814C14.9271 3.34832 15.5236 3.59563 15.9625 4.03467C16.4012 4.47362 16.648 5.06935 16.6481 5.68994C16.648 6.31072 16.4004 6.90719 15.9615 7.34619L15.9606 7.34521L7.95373 15.355L7.95275 15.356C7.73845 15.5696 7.47464 15.7278 7.18517 15.8159H7.1842L4.57287 16.6079H4.57092C4.40678 16.6572 4.23224 16.6614 4.06603 16.6196C3.89974 16.5778 3.74793 16.4918 3.62658 16.3706C3.50526 16.2494 3.41865 16.0974 3.37658 15.9312C3.33472 15.7651 3.3383 15.5903 3.38732 15.4263L3.3883 15.4243L4.18127 12.813V12.811C4.27013 12.5215 4.42882 12.2574 4.64318 12.0435L12.651 4.03467V4.03369C13.09 3.59513 13.6857 3.34816 14.3063 3.34814ZM5.56213 12.9634C5.49841 13.0269 5.4509 13.1059 5.42443 13.1919L5.42345 13.1909L4.82189 15.1733L6.80627 14.5718C6.89221 14.5456 6.97114 14.4985 7.03478 14.4351L13.274 8.19482L11.8014 6.72217L5.56213 12.9634ZM14.3063 4.64893C14.0303 4.64894 13.7652 4.75864 13.5699 4.95361L12.7213 5.80225L14.194 7.2749L15.0426 6.42627L15.1119 6.3501C15.2635 6.16488 15.3473 5.93141 15.3473 5.68994C15.3472 5.41394 15.2377 5.14881 15.0426 4.95361C14.8474 4.75846 14.5823 4.64906 14.3063 4.64893Z\" fill=\"#1E2939\"/>\n </svg>\n`\nexport const locationIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"16\" \n height=\"16\" \n viewBox=\"0 0 16 16\" \n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M13.3327 6.66659C13.3327 9.99525 9.64002 13.4619 8.40002 14.5326C8.2845 14.6194 8.14388 14.6664 7.99935 14.6664C7.85482 14.6664 7.7142 14.6194 7.59868 14.5326C6.35868 13.4619 2.66602 9.99525 2.66602 6.66659C2.66602 5.2521 3.22792 3.89554 4.22811 2.89535C5.22831 1.89516 6.58486 1.33325 7.99935 1.33325C9.41384 1.33325 10.7704 1.89516 11.7706 2.89535C12.7708 3.89554 13.3327 5.2521 13.3327 6.66659Z\" stroke=\"#4A5565\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 8.66675C9.10457 8.66675 10 7.77132 10 6.66675C10 5.56218 9.10457 4.66675 8 4.66675C6.89543 4.66675 6 5.56218 6 6.66675C6 7.77132 6.89543 8.66675 8 8.66675Z\" stroke=\"#4A5565\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n`\nexport const closeIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"12\" \n height=\"12\" \n viewBox=\"0 0 12 12\" \n fill=\"none\"\n aria-hidden=\"true\" \n focusable=\"false\"\n >\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10.5301 0.244005C10.8555 -0.0813835 11.3834 -0.0812864 11.7088 0.244005C12.0338 0.569352 12.0338 1.09639 11.7088 1.42174L7.15416 5.97545L11.7088 10.5301C12.0341 10.8556 12.0342 11.3835 11.7088 11.7088C11.3835 12.0342 10.8556 12.0341 10.5301 11.7088L5.97545 7.15416L1.42174 11.7088C1.09639 12.0338 0.569351 12.0338 0.244004 11.7088C-0.0812866 11.3834 -0.0813828 10.8555 0.244004 10.5301L4.79772 5.97545L0.244004 1.42174C-0.0812866 1.09629 -0.0813828 0.569393 0.244004 0.244005C0.569393 -0.0813835 1.09629 -0.0812864 1.42174 0.244005L5.97545 4.79772L10.5301 0.244005Z\" fill=\"#4A5565\"/>\n </svg>\n`\nexport const trashIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"20\" \n height=\"20\" \n viewBox=\"0 0 20 20\" \n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M8.33301 9.16675V14.1667\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M11.667 9.16675V14.1667\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M15.8337 5V16.6667C15.8337 17.1087 15.6581 17.5326 15.3455 17.8452C15.0329 18.1577 14.609 18.3333 14.167 18.3333H5.83366C5.39163 18.3333 4.96771 18.1577 4.65515 17.8452C4.34259 17.5326 4.16699 17.1087 4.16699 16.6667V5\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M2.5 5H17.5\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.66699 5.00008V3.33341C6.66699 2.89139 6.84259 2.46746 7.15515 2.1549C7.46771 1.84234 7.89163 1.66675 8.33366 1.66675H11.667C12.109 1.66675 12.5329 1.84234 12.8455 2.1549C13.1581 2.46746 13.3337 2.89139 13.3337 3.33341V5.00008\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n`\nexport const plusIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"12\" \n height=\"12\" \n viewBox=\"0 0 12 12\" \n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <g clip-path=\"url(#clip0_3001_2564)\">\n <path d=\"M6.06055 0.10083C6.53372 0.101056 6.91793 0.485037 6.91797 0.958252V5.20532H11.165C11.6384 5.20532 12.0225 5.58936 12.0225 6.06274C12.0223 6.536 11.6383 6.92017 11.165 6.92017H6.91797V11.1663C6.91797 11.6395 6.53374 12.0235 6.06055 12.0237C5.58716 12.0237 5.20312 11.6396 5.20312 11.1663V6.92017H0.957031C0.483929 6.91994 0.0997601 6.53586 0.0996094 6.06274C0.0996094 5.5895 0.483837 5.20555 0.957031 5.20532H5.20312V0.958252C5.20316 0.484897 5.58718 0.10083 6.06055 0.10083Z\" fill=\"#7C4DFF\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_3001_2564\">\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n`\n"],"mappings":"AAEA,IAAM,EAAO,OAAO,IAEP,EAAqB,CAAI;;;;;;;;;;;;;EAcd,CAAI;;;;;;;;;;;EAY5B,IAAa,EAAe,CAAI;;;;;;;;;;;;EAaP,CAAI;;;;;;;;;;;EAYJ,CAAI;;;;;;;;;;;;;;;EAgBL,CAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icons.esm.js","names":[],"sources":["../../src/social/icons.ts"],"sourcesContent":["/* Simpliest solution for now since we are only using it for the symposium\nand then we will use icons from solid-assets */\nconst html = String.raw\n\nexport const personInCircleIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"64\" \n height=\"64\" \n viewBox=\"0 0 64 64\" \n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M32.0007 58.6666C46.7282 58.6666 58.6673 46.7275 58.6673 31.9999C58.6673 17.2723 46.7282 5.33325 32.0007 5.33325C17.2731 5.33325 5.33398 17.2723 5.33398 31.9999C5.33398 46.7275 17.2731 58.6666 32.0007 58.6666Z\" stroke=\"#CBD5E1\" stroke-width=\"5.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M32 34.6667C36.4183 34.6667 40 31.085 40 26.6667C40 22.2485 36.4183 18.6667 32 18.6667C27.5817 18.6667 24 22.2485 24 26.6667C24 31.085 27.5817 34.6667 32 34.6667Z\" stroke=\"#CBD5E1\" stroke-width=\"5.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18.666 55.0986V50.6666C18.666 49.2521 19.2279 47.8955 20.2281 46.8954C21.2283 45.8952 22.5849 45.3333 23.9993 45.3333H39.9993C41.4138 45.3333 42.7704 45.8952 43.7706 46.8954C44.7708 47.8955 45.3327 49.2521 45.3327 50.6666V55.0986\" stroke=\"#CBD5E1\" stroke-width=\"5.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n`\nexport const editIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"14\" \n height=\"14\" \n viewBox=\"3 3 14 14\" \n fill=\"none\"\n aria-hidden=\"true\" \n focusable=\"false\"\n >\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.3063 3.34814C14.9271 3.34832 15.5236 3.59563 15.9625 4.03467C16.4012 4.47362 16.648 5.06935 16.6481 5.68994C16.648 6.31072 16.4004 6.90719 15.9615 7.34619L15.9606 7.34521L7.95373 15.355L7.95275 15.356C7.73845 15.5696 7.47464 15.7278 7.18517 15.8159H7.1842L4.57287 16.6079H4.57092C4.40678 16.6572 4.23224 16.6614 4.06603 16.6196C3.89974 16.5778 3.74793 16.4918 3.62658 16.3706C3.50526 16.2494 3.41865 16.0974 3.37658 15.9312C3.33472 15.7651 3.3383 15.5903 3.38732 15.4263L3.3883 15.4243L4.18127 12.813V12.811C4.27013 12.5215 4.42882 12.2574 4.64318 12.0435L12.651 4.03467V4.03369C13.09 3.59513 13.6857 3.34816 14.3063 3.34814ZM5.56213 12.9634C5.49841 13.0269 5.4509 13.1059 5.42443 13.1919L5.42345 13.1909L4.82189 15.1733L6.80627 14.5718C6.89221 14.5456 6.97114 14.4985 7.03478 14.4351L13.274 8.19482L11.8014 6.72217L5.56213 12.9634ZM14.3063 4.64893C14.0303 4.64894 13.7652 4.75864 13.5699 4.95361L12.7213 5.80225L14.194 7.2749L15.0426 6.42627L15.1119 6.3501C15.2635 6.16488 15.3473 5.93141 15.3473 5.68994C15.3472 5.41394 15.2377 5.14881 15.0426 4.95361C14.8474 4.75846 14.5823 4.64906 14.3063 4.64893Z\" fill=\"#1E2939\"/>\n </svg>\n`\nexport const locationIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"16\" \n height=\"16\" \n viewBox=\"0 0 16 16\" \n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M13.3327 6.66659C13.3327 9.99525 9.64002 13.4619 8.40002 14.5326C8.2845 14.6194 8.14388 14.6664 7.99935 14.6664C7.85482 14.6664 7.7142 14.6194 7.59868 14.5326C6.35868 13.4619 2.66602 9.99525 2.66602 6.66659C2.66602 5.2521 3.22792 3.89554 4.22811 2.89535C5.22831 1.89516 6.58486 1.33325 7.99935 1.33325C9.41384 1.33325 10.7704 1.89516 11.7706 2.89535C12.7708 3.89554 13.3327 5.2521 13.3327 6.66659Z\" stroke=\"#4A5565\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8 8.66675C9.10457 8.66675 10 7.77132 10 6.66675C10 5.56218 9.10457 4.66675 8 4.66675C6.89543 4.66675 6 5.56218 6 6.66675C6 7.77132 6.89543 8.66675 8 8.66675Z\" stroke=\"#4A5565\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n`\nexport const closeIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"12\" \n height=\"12\" \n viewBox=\"0 0 12 12\" \n fill=\"none\"\n aria-hidden=\"true\" \n focusable=\"false\"\n >\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10.5301 0.244005C10.8555 -0.0813835 11.3834 -0.0812864 11.7088 0.244005C12.0338 0.569352 12.0338 1.09639 11.7088 1.42174L7.15416 5.97545L11.7088 10.5301C12.0341 10.8556 12.0342 11.3835 11.7088 11.7088C11.3835 12.0342 10.8556 12.0341 10.5301 11.7088L5.97545 7.15416L1.42174 11.7088C1.09639 12.0338 0.569351 12.0338 0.244004 11.7088C-0.0812866 11.3834 -0.0813828 10.8555 0.244004 10.5301L4.79772 5.97545L0.244004 1.42174C-0.0812866 1.09629 -0.0813828 0.569393 0.244004 0.244005C0.569393 -0.0813835 1.09629 -0.0812864 1.42174 0.244005L5.97545 4.79772L10.5301 0.244005Z\" fill=\"#4A5565\"/>\n </svg>\n`\nexport const trashIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"20\" \n height=\"20\" \n viewBox=\"0 0 20 20\" \n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M8.33301 9.16675V14.1667\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M11.667 9.16675V14.1667\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M15.8337 5V16.6667C15.8337 17.1087 15.6581 17.5326 15.3455 17.8452C15.0329 18.1577 14.609 18.3333 14.167 18.3333H5.83366C5.39163 18.3333 4.96771 18.1577 4.65515 17.8452C4.34259 17.5326 4.16699 17.1087 4.16699 16.6667V5\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M2.5 5H17.5\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6.66699 5.00008V3.33341C6.66699 2.89139 6.84259 2.46746 7.15515 2.1549C7.46771 1.84234 7.89163 1.66675 8.33366 1.66675H11.667C12.109 1.66675 12.5329 1.84234 12.8455 2.1549C13.1581 2.46746 13.3337 2.89139 13.3337 3.33341V5.00008\" stroke=\"#D1D5DC\" stroke-width=\"1.45833\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n`\nexport const plusIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n width=\"12\" \n height=\"12\" \n viewBox=\"0 0 12 12\" \n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <g clip-path=\"url(#clip0_3001_2564)\">\n <path d=\"M6.06055 0.10083C6.53372 0.101056 6.91793 0.485037 6.91797 0.958252V5.20532H11.165C11.6384 5.20532 12.0225 5.58936 12.0225 6.06274C12.0223 6.536 11.6383 6.92017 11.165 6.92017H6.91797V11.1663C6.91797 11.6395 6.53374 12.0235 6.06055 12.0237C5.58716 12.0237 5.20312 11.6396 5.20312 11.1663V6.92017H0.957031C0.483929 6.91994 0.0997601 6.53586 0.0996094 6.06274C0.0996094 5.5895 0.483837 5.20555 0.957031 5.20532H5.20312V0.958252C5.20316 0.484897 5.58718 0.10083 6.06055 0.10083Z\" fill=\"#7C4DFF\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_3001_2564\">\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n`\n"],"mappings":";AAEA,IAAM,IAAO,OAAO,KAEP,IAAqB,CAAI;;;;;;;;;;;;;;AAcd,CAAI;;;;;;;;;;;;AAY5B,IAAa,IAAe,CAAI;;;;;;;;;;;;;AAaP,CAAI;;;;;;;;;;;GAYJ,CAAI;;;;;;;;;;;;;;;GAgBL,CAAI"}
|