solid-panes 3.7.3-18da570b → 3.7.3-322e9b27
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/Documentation/VisualLanguage.html +538 -0
- package/Documentation/conventions.md +333 -0
- package/coverage/clover.xml +152 -0
- package/coverage/coverage-final.json +6 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +131 -0
- package/coverage/lcov-report/outline/index.html +161 -0
- package/coverage/lcov-report/outline/outlineIcons.js.html +565 -0
- package/coverage/lcov-report/outline/propertyViews.ts.html +196 -0
- package/coverage/lcov-report/outline/viewAsImage.ts.html +121 -0
- package/coverage/lcov-report/outline/viewAsMbox.ts.html +127 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov-report/trustedApplications/index.html +116 -0
- package/coverage/lcov-report/trustedApplications/trustedApplications.utils.ts.html +238 -0
- package/coverage/lcov.info +204 -0
- package/dev/index.html +28 -0
- package/dev/loader.ts +91 -0
- package/dev/pane/index.ts +10 -0
- package/doc/images/panes-for-classes.epgz +0 -0
- package/doc/images/panes-for-classes.svg +609 -0
- package/eslint.config.mjs +34 -0
- package/jest.config.js +27 -0
- package/jest.setup.ts +4 -0
- package/lib/RDFXMLPane.js +59 -0
- package/lib/RDFXMLPane.js.map +1 -0
- package/{dist → lib}/argument/argumentPane.js +15 -14
- package/lib/argument/argumentPane.js.map +1 -0
- package/{dist → lib}/attach/attachPane.js +93 -83
- package/lib/attach/attachPane.js.map +1 -0
- package/{dist → lib}/audio/audioPane.js +50 -49
- package/lib/audio/audioPane.js.map +1 -0
- package/{dist → lib}/classInstancePane.js +24 -23
- package/lib/classInstancePane.js.map +1 -0
- package/lib/dashboard/basicPreferences.js +229 -0
- package/lib/dashboard/basicPreferences.js.map +1 -0
- package/{dist → lib}/dashboard/dashboardPane.js +21 -17
- package/lib/dashboard/dashboardPane.js.map +1 -0
- package/lib/dashboard/homepage.js +86 -0
- package/lib/dashboard/homepage.js.map +1 -0
- package/{dist → lib}/dataContentPane.js +63 -63
- package/lib/dataContentPane.js.map +1 -0
- package/{dist → lib}/defaultPane.js +15 -14
- package/lib/defaultPane.js.map +1 -0
- package/{dist → lib}/dokieli/dokieliPane.js +53 -49
- package/lib/dokieli/dokieliPane.js.map +1 -0
- package/lib/dokieli/new.js +9 -0
- package/lib/dokieli/new.js.map +1 -0
- package/{dist → lib}/form/pane.js +45 -44
- package/lib/form/pane.js.map +1 -0
- package/lib/home/homePane.js +91 -0
- package/lib/home/homePane.js.map +1 -0
- package/lib/humanReadablePane.js +138 -0
- package/lib/humanReadablePane.js.map +1 -0
- package/lib/imagePane.js +71 -0
- package/lib/imagePane.js.map +1 -0
- package/{dist → lib}/index.js +20 -17
- package/lib/index.js.map +1 -0
- package/{dist → lib}/internal/internalPane.js +41 -41
- package/lib/internal/internalPane.js.map +1 -0
- package/{dist → lib}/mainPage/footer.js +2 -2
- package/{dist → lib}/mainPage/footer.js.map +1 -1
- package/lib/mainPage/header.js +152 -0
- package/lib/mainPage/header.js.map +1 -0
- package/{dist → lib}/mainPage/index.d.ts.map +1 -1
- package/lib/mainPage/index.js +42 -0
- package/lib/mainPage/index.js.map +1 -0
- package/{dist → lib}/microblogPane/microblogPane.js +262 -261
- package/lib/microblogPane/microblogPane.js.map +1 -0
- package/lib/n3Pane.js +57 -0
- package/lib/n3Pane.js.map +1 -0
- package/{dist → lib}/outline/context.js +4 -4
- package/{dist → lib}/outline/context.js.map +1 -1
- package/lib/outline/manager.js +2264 -0
- package/lib/outline/manager.js.map +1 -0
- package/lib/outline/manager.test.d.ts +2 -0
- package/lib/outline/manager.test.d.ts.map +1 -0
- package/lib/outline/manager.test.js +210 -0
- package/lib/outline/manager.test.js.map +1 -0
- package/{dist → lib}/outline/outlineIcons.js +3 -2
- package/lib/outline/outlineIcons.js.map +1 -0
- package/{dist → lib}/outline/propertyViews.js +4 -4
- package/lib/outline/propertyViews.js.map +1 -0
- package/lib/outline/propertyViews.test.d.ts +2 -0
- package/lib/outline/propertyViews.test.d.ts.map +1 -0
- package/lib/outline/propertyViews.test.js +27 -0
- package/lib/outline/propertyViews.test.js.map +1 -0
- package/{dist → lib}/outline/queryByExample.js +31 -30
- package/lib/outline/queryByExample.js.map +1 -0
- package/{dist → lib}/outline/userInput.js +260 -262
- package/lib/outline/userInput.js.map +1 -0
- package/lib/outline/viewAsImage.js +17 -0
- package/lib/outline/viewAsImage.js.map +1 -0
- package/lib/outline/viewAsMbox.js +23 -0
- package/lib/outline/viewAsMbox.js.map +1 -0
- package/{dist → lib}/pad/padPane.js +96 -90
- package/lib/pad/padPane.js.map +1 -0
- package/{dist → lib}/playlist/playlistPane.js +37 -36
- package/lib/playlist/playlistPane.js.map +1 -0
- package/{dist → lib}/registerPanes.js +29 -29
- package/lib/registerPanes.js.map +1 -0
- package/lib/schedule/formsForSchedule.js +8 -0
- package/lib/schedule/formsForSchedule.js.map +1 -0
- package/{dist → lib}/schedule/schedulePane.js +178 -171
- package/lib/schedule/schedulePane.js.map +1 -0
- package/{dist → lib}/sharing/sharingPane.js +12 -12
- package/lib/sharing/sharingPane.js.map +1 -0
- package/lib/slideshow/slideshowPane.js +84 -0
- package/lib/slideshow/slideshowPane.js.map +1 -0
- package/{dist → lib}/socialPane.js +142 -141
- package/lib/socialPane.js.map +1 -0
- package/lib/tabbed/tabbedPane.js +72 -0
- package/lib/tabbed/tabbedPane.js.map +1 -0
- package/{dist → lib}/tableViewPane.js +9 -8
- package/lib/tableViewPane.js.map +1 -0
- package/lib/test-import-export/common.js +12 -0
- package/lib/test-import-export/common.js.map +1 -0
- package/lib/test-import-export/edit-importer.js +25 -0
- package/lib/test-import-export/edit-importer.js.map +1 -0
- package/lib/test-import-export/testImportExport.js +2 -0
- package/lib/test-import-export/testImportExport.js.map +1 -0
- package/{dist → lib}/transaction/pane.js +118 -117
- package/lib/transaction/pane.js.map +1 -0
- package/{dist → lib}/transaction/period.js +83 -82
- package/lib/transaction/period.js.map +1 -0
- package/{dist → lib}/trip/tripPane.js +48 -47
- package/lib/trip/tripPane.js.map +1 -0
- package/lib/trustedApplications/trustedApplications.dom.js +177 -0
- package/lib/trustedApplications/trustedApplications.dom.js.map +1 -0
- package/lib/trustedApplications/trustedApplications.test.d.ts +2 -0
- package/lib/trustedApplications/trustedApplications.test.d.ts.map +1 -0
- package/lib/trustedApplications/trustedApplications.test.js +64 -0
- package/lib/trustedApplications/trustedApplications.test.js.map +1 -0
- package/lib/trustedApplications/trustedApplications.utils.js +34 -0
- package/lib/trustedApplications/trustedApplications.utils.js.map +1 -0
- package/lib/trustedApplications/trustedApplications.view.js +87 -0
- package/lib/trustedApplications/trustedApplications.view.js.map +1 -0
- package/lib/types.js.map +1 -0
- package/{dist → lib}/ui/pane.js +31 -30
- package/lib/ui/pane.js.map +1 -0
- package/lib/versionInfo.d.ts +32 -0
- package/lib/versionInfo.d.ts.map +1 -0
- package/lib/versionInfo.js +37 -0
- package/lib/versionInfo.js.map +1 -0
- package/lib/video/videoPane.js +44 -0
- package/lib/video/videoPane.js.map +1 -0
- package/package.json +14 -27
- package/src/RDFXMLPane.js +60 -0
- package/src/argument/argumentPane.js +65 -0
- package/src/argument/argument_icon_v04.jpg +0 -0
- package/src/argument/icon_argument.png +0 -0
- package/src/argument/transparentyingyang.png +0 -0
- package/src/attach/attachPane.js +508 -0
- package/src/attach/tbl-paperclip-128.png +0 -0
- package/src/attach/tbl-paperclip-22.png +0 -0
- package/src/attach/tbl-paperclip-22a.png +0 -0
- package/src/audio/audioPane.js +197 -0
- package/src/chatPreferencesForm.ttl +12 -0
- package/src/classInstancePane.js +110 -0
- package/src/dashboard/basicPreferences.ts +201 -0
- package/src/dashboard/dashboardPane.ts +83 -0
- package/src/dashboard/homepage.ts +72 -0
- package/src/dashboard/languages/codes.html +8611 -0
- package/src/dashboard/languages/codes.xml +3563 -0
- package/src/dashboard/languages/codes2.txt +170 -0
- package/src/dashboard/languages/foo +70 -0
- package/src/dashboard/languages/foo.ttl +0 -0
- package/src/dashboard/languages/get-language-names.sh +12 -0
- package/src/dashboard/ontologyData.ttl +35 -0
- package/src/dashboard/preferencesFormText.ttl +18 -0
- package/src/dataContentPane.js +290 -0
- package/src/defaultPane.js +102 -0
- package/src/dokieli/Makefile +6 -0
- package/src/dokieli/dokieliPane.js +190 -0
- package/src/dokieli/new.html +30 -0
- package/{dist → src}/dokieli/new.js +3 -9
- package/src/form/form-22.png +0 -0
- package/src/form/form-b-22.png +0 -0
- package/src/form/form.graffle +0 -0
- package/src/form/form.png +0 -0
- package/src/form/pane.js +217 -0
- package/src/form/psuedocode-notes.txt +57 -0
- package/src/global.d.ts +4 -0
- package/src/home/homePane.ts +72 -0
- package/src/humanReadablePane.js +150 -0
- package/src/imagePane.js +75 -0
- package/src/index.ts +71 -0
- package/src/internal/internalPane.ts +263 -0
- package/src/mainPage/footer.ts +19 -0
- package/src/mainPage/header.ts +79 -0
- package/src/mainPage/index.ts +20 -0
- package/src/meeting/Makefile +3 -0
- package/src/meeting/test/meeting1/Actions/actions.ttl +14 -0
- package/src/meeting/test/meeting1/Actions/config.ttl +16 -0
- package/src/meeting/test/meeting1/Actions/state.ttl +30 -0
- package/src/meeting/test/meeting1/Schedule/details.ttl +34 -0
- package/src/meeting/test/meeting1/Schedule/details.ttl.acl +20 -0
- package/src/meeting/test/meeting1/Schedule/forms.ttl +75 -0
- package/src/meeting/test/meeting1/Schedule/forms.ttl.acl +20 -0
- package/src/meeting/test/meeting1/Schedule/index.html +72 -0
- package/src/meeting/test/meeting1/Schedule/index.html.acl +20 -0
- package/src/meeting/test/meeting1/Schedule/results.ttl +15 -0
- package/src/meeting/test/meeting1/Schedule/results.ttl.acl +20 -0
- package/src/meeting/test/meeting1/SharedNotes/pad.ttl +23 -0
- package/src/meeting/test/meeting1/chat/chat.ttl +1 -0
- package/src/meeting/test/meeting1/details.ttl +35 -0
- package/src/meeting/test/meeting1/pad/pad.ttl +16 -0
- package/src/microblogPane/mbStyle.css +267 -0
- package/src/microblogPane/microblogPane.js +1412 -0
- package/src/n3Pane.js +56 -0
- package/src/outline/context.ts +21 -0
- package/src/outline/manager.js +2384 -0
- package/src/outline/manager.test.ts +189 -0
- package/src/outline/outlineIcons.js +160 -0
- package/src/outline/propertyViews.test.ts +36 -0
- package/src/outline/propertyViews.ts +37 -0
- package/src/outline/queryByExample.js +296 -0
- package/src/outline/userInput.js +2373 -0
- package/src/outline/viewAsImage.ts +12 -0
- package/src/outline/viewAsMbox.ts +14 -0
- package/src/pad/images/ColourOff.ai +873 -1
- package/src/pad/images/ColourOff.png +0 -0
- package/src/pad/images/ColourOn.ai +934 -2
- package/src/pad/images/ColourOn.png +0 -0
- package/src/pad/padPane.ts +559 -0
- package/src/playlist/playlistPane.js +161 -0
- package/src/registerPanes.js +147 -0
- package/src/schedule/Makefile +6 -0
- package/src/schedule/formsForSchedule.js +117 -0
- package/src/schedule/formsForSchedule.ttl +115 -0
- package/src/schedule/schedulePane.js +1201 -0
- package/src/sharing/sharingPane.ts +49 -0
- package/src/slideshow/slideshowPane.js +80 -0
- package/src/socialPane.js +523 -0
- package/src/style/tabbedtab.css +1347 -0
- package/src/tabbed/tabbedPane.ts +60 -0
- package/src/tableViewPane.js +51 -0
- package/src/test-import-export/common.js +6 -0
- package/src/test-import-export/edit-importer.js +20 -0
- package/src/test-import-export/testImportExport.js +0 -0
- package/src/transaction/068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
- package/src/transaction/075988-3d-transparent-glass-icon-business-currency-british-pound-sc35.png +0 -0
- package/src/transaction/22-pixel-068010-3d-transparent-glass-icon-alphanumeric-dollar-sign.png +0 -0
- package/src/transaction/pane.js +629 -0
- package/src/transaction/period.js +374 -0
- package/src/transaction/thumbs_075987-3d-transparent-glass-icon-business-creditcard2.png +0 -0
- package/src/transaction/thumbs_075989-3d-transparent-glass-icon-business-currency-cent-sc35.png +0 -0
- package/src/trip/tripPane.js +176 -0
- package/src/trustedApplications/__snapshots__/trustedApplications.test.ts.snap +176 -0
- package/src/trustedApplications/trustedApplications.dom.ts +276 -0
- package/src/trustedApplications/trustedApplications.test.ts +82 -0
- package/src/trustedApplications/trustedApplications.utils.ts +51 -0
- package/src/trustedApplications/trustedApplications.view.ts +80 -0
- package/src/types.ts +34 -0
- package/src/ui/22-builder.png +0 -0
- package/src/ui/builder.graffle +0 -0
- package/src/ui/builder.png +0 -0
- package/src/ui/builder2.png +0 -0
- package/src/ui/pane.js +226 -0
- package/src/versionInfo.ts +30 -0
- package/src/video/videoPane.js +44 -0
- package/timestamp.sh +13 -0
- package/travis/bumpversion.js +29 -0
- package/tsconfig.json +78 -0
- package/typings/raw-loader.d.ts +4 -0
- package/typings/solid-namespace/index.d.ts +9 -0
- package/webpack.config.js +41 -0
- package/dist/RDFXMLPane.js +0 -58
- package/dist/RDFXMLPane.js.map +0 -1
- package/dist/argument/argumentPane.js.map +0 -1
- package/dist/attach/attachPane.js.map +0 -1
- package/dist/audio/audioPane.js.map +0 -1
- package/dist/classInstancePane.js.map +0 -1
- package/dist/dashboard/basicPreferences.js +0 -147
- package/dist/dashboard/basicPreferences.js.map +0 -1
- package/dist/dashboard/dashboardPane.js.map +0 -1
- package/dist/dashboard/homepage.js +0 -54
- package/dist/dashboard/homepage.js.map +0 -1
- package/dist/dataContentPane.js.map +0 -1
- package/dist/defaultPane.js.map +0 -1
- package/dist/dokieli/dokieliPane.js.map +0 -1
- package/dist/dokieli/new.js.map +0 -1
- package/dist/form/pane.js.map +0 -1
- package/dist/home/homePane.js +0 -73
- package/dist/home/homePane.js.map +0 -1
- package/dist/humanReadablePane.js +0 -135
- package/dist/humanReadablePane.js.map +0 -1
- package/dist/imagePane.js +0 -70
- package/dist/imagePane.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/internalPane.js.map +0 -1
- package/dist/mainPage/header.js +0 -85
- package/dist/mainPage/header.js.map +0 -1
- package/dist/mainPage/index.js +0 -25
- package/dist/mainPage/index.js.map +0 -1
- package/dist/microblogPane/microblogPane.js.map +0 -1
- package/dist/n3Pane.js +0 -56
- package/dist/n3Pane.js.map +0 -1
- package/dist/outline/manager.js +0 -1997
- package/dist/outline/manager.js.map +0 -1
- package/dist/outline/outlineIcons.js.map +0 -1
- package/dist/outline/propertyViews.js.map +0 -1
- package/dist/outline/queryByExample.js.map +0 -1
- package/dist/outline/userInput.js.map +0 -1
- package/dist/outline/viewAsImage.js +0 -15
- package/dist/outline/viewAsImage.js.map +0 -1
- package/dist/outline/viewAsMbox.js +0 -22
- package/dist/outline/viewAsMbox.js.map +0 -1
- package/dist/pad/padPane.js.map +0 -1
- package/dist/playlist/playlistPane.js.map +0 -1
- package/dist/registerPanes.js.map +0 -1
- package/dist/schedule/schedulePane.js.map +0 -1
- package/dist/sharing/sharingPane.js.map +0 -1
- package/dist/slideshow/slideshowPane.js +0 -80
- package/dist/slideshow/slideshowPane.js.map +0 -1
- package/dist/socialPane.js.map +0 -1
- package/dist/tabbed/tabbedPane.js +0 -58
- package/dist/tabbed/tabbedPane.js.map +0 -1
- package/dist/tableViewPane.js.map +0 -1
- package/dist/transaction/pane.js.map +0 -1
- package/dist/transaction/period.js.map +0 -1
- package/dist/trip/tripPane.js.map +0 -1
- package/dist/trustedApplications/trustedApplications.dom.js +0 -146
- package/dist/trustedApplications/trustedApplications.dom.js.map +0 -1
- package/dist/trustedApplications/trustedApplications.utils.js +0 -24
- package/dist/trustedApplications/trustedApplications.utils.js.map +0 -1
- package/dist/trustedApplications/trustedApplications.view.js +0 -56
- package/dist/trustedApplications/trustedApplications.view.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/ui/pane.js.map +0 -1
- package/dist/versionInfo.js +0 -37
- package/dist/versionInfo.js.map +0 -1
- package/dist/video/videoPane.js +0 -43
- package/dist/video/videoPane.js.map +0 -1
- /package/{dist → lib}/dashboard/basicPreferences.d.ts +0 -0
- /package/{dist → lib}/dashboard/basicPreferences.d.ts.map +0 -0
- /package/{dist → lib}/dashboard/dashboardPane.d.ts +0 -0
- /package/{dist → lib}/dashboard/dashboardPane.d.ts.map +0 -0
- /package/{dist → lib}/dashboard/homepage.d.ts +0 -0
- /package/{dist → lib}/dashboard/homepage.d.ts.map +0 -0
- /package/{dist → lib}/global.d.js +0 -0
- /package/{dist → lib}/global.d.js.map +0 -0
- /package/{dist → lib}/home/homePane.d.ts +0 -0
- /package/{dist → lib}/home/homePane.d.ts.map +0 -0
- /package/{dist → lib}/index.d.ts +0 -0
- /package/{dist → lib}/index.d.ts.map +0 -0
- /package/{dist → lib}/internal/internalPane.d.ts +0 -0
- /package/{dist → lib}/internal/internalPane.d.ts.map +0 -0
- /package/{dist → lib}/mainPage/footer.d.ts +0 -0
- /package/{dist → lib}/mainPage/footer.d.ts.map +0 -0
- /package/{dist → lib}/mainPage/header.d.ts +0 -0
- /package/{dist → lib}/mainPage/header.d.ts.map +0 -0
- /package/{dist → lib}/mainPage/index.d.ts +0 -0
- /package/{dist → lib}/outline/context.d.ts +0 -0
- /package/{dist → lib}/outline/context.d.ts.map +0 -0
- /package/{dist → lib}/outline/propertyViews.d.ts +0 -0
- /package/{dist → lib}/outline/propertyViews.d.ts.map +0 -0
- /package/{dist → lib}/outline/viewAsImage.d.ts +0 -0
- /package/{dist → lib}/outline/viewAsImage.d.ts.map +0 -0
- /package/{dist → lib}/outline/viewAsMbox.d.ts +0 -0
- /package/{dist → lib}/outline/viewAsMbox.d.ts.map +0 -0
- /package/{dist → lib}/pad/padPane.d.ts +0 -0
- /package/{dist → lib}/pad/padPane.d.ts.map +0 -0
- /package/{dist → lib}/sharing/sharingPane.d.ts +0 -0
- /package/{dist → lib}/sharing/sharingPane.d.ts.map +0 -0
- /package/{dist → lib}/tabbed/tabbedPane.d.ts +0 -0
- /package/{dist → lib}/tabbed/tabbedPane.d.ts.map +0 -0
- /package/{dist → lib}/trustedApplications/trustedApplications.dom.d.ts +0 -0
- /package/{dist → lib}/trustedApplications/trustedApplications.dom.d.ts.map +0 -0
- /package/{dist → lib}/trustedApplications/trustedApplications.utils.d.ts +0 -0
- /package/{dist → lib}/trustedApplications/trustedApplications.utils.d.ts.map +0 -0
- /package/{dist → lib}/trustedApplications/trustedApplications.view.d.ts +0 -0
- /package/{dist → lib}/trustedApplications/trustedApplications.view.d.ts.map +0 -0
- /package/{dist → lib}/types.d.ts +0 -0
- /package/{dist → lib}/types.d.ts.map +0 -0
- /package/{dist → lib}/types.js +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
exports["default"] = void 0;
|
|
7
7
|
var _solidUi = require("solid-ui");
|
|
8
8
|
var _solidLogic = require("solid-logic");
|
|
9
9
|
var _rdflib = require("rdflib");
|
|
@@ -11,29 +11,29 @@ var _rdflib = require("rdflib");
|
|
|
11
11
|
**
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
var paneDef = {
|
|
15
15
|
// icon: (module.__dirname || __dirname) + 'images/ColourOn.png',
|
|
16
16
|
icon: _solidUi.icons.iconBase + 'noun_79217.svg',
|
|
17
17
|
name: 'pad',
|
|
18
18
|
audience: [_solidUi.ns.solid('PowerUser')],
|
|
19
19
|
// Does the subject deserve an pad pane?
|
|
20
|
-
label: function (subject, context) {
|
|
21
|
-
|
|
20
|
+
label: function label(subject, context) {
|
|
21
|
+
var t = context.session.store.findTypeURIs(subject);
|
|
22
22
|
if (t['http://www.w3.org/ns/pim/pad#Notepad']) {
|
|
23
23
|
return 'pad';
|
|
24
24
|
}
|
|
25
25
|
return null; // No under other circumstances
|
|
26
26
|
},
|
|
27
27
|
mintClass: _solidUi.ns.pad('Notepad'),
|
|
28
|
-
mintNew: function (context, newPaneOptions) {
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
mintNew: function mintNew(context, newPaneOptions) {
|
|
29
|
+
var store = context.session.store;
|
|
30
|
+
var updater = store.updater;
|
|
31
31
|
if (newPaneOptions.me && !newPaneOptions.me.uri) {
|
|
32
32
|
throw new Error('notepad mintNew: Invalid userid');
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
var newInstance = newPaneOptions.newInstance = newPaneOptions.newInstance || store.sym(newPaneOptions.newBase + 'index.ttl#this');
|
|
35
35
|
// const newInstance = kb.sym(newBase + 'pad.ttl#thisPad');
|
|
36
|
-
|
|
36
|
+
var newPadDoc = newInstance.doc();
|
|
37
37
|
store.add(newInstance, _solidUi.ns.rdf('type'), _solidUi.ns.pad('Notepad'), newPadDoc);
|
|
38
38
|
store.add(newInstance, _solidUi.ns.dc('title'), 'Shared Notes', newPadDoc);
|
|
39
39
|
store.add(newInstance, _solidUi.ns.dc('created'), new Date(), newPadDoc); // @@ TODO Remove casting
|
|
@@ -42,7 +42,7 @@ const paneDef = {
|
|
|
42
42
|
}
|
|
43
43
|
// kb.add(newInstance, ns.pad('next'), newInstance, newPadDoc);
|
|
44
44
|
// linked list empty @@
|
|
45
|
-
|
|
45
|
+
var chunk = store.sym(newInstance.uri + '_line0');
|
|
46
46
|
store.add(newInstance, _solidUi.ns.pad('next'), chunk, newPadDoc); // Linked list has one entry
|
|
47
47
|
store.add(chunk, _solidUi.ns.pad('next'), newInstance, newPadDoc);
|
|
48
48
|
store.add(chunk, _solidUi.ns.dc('author'), newPaneOptions.me, newPadDoc);
|
|
@@ -63,16 +63,16 @@ const paneDef = {
|
|
|
63
63
|
},
|
|
64
64
|
// and follow instructions there
|
|
65
65
|
// @@ TODO Set better type for paneOptions
|
|
66
|
-
render: function (subject, context, paneOptions) {
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
render: function render(subject, context, paneOptions) {
|
|
67
|
+
var dom = context.dom;
|
|
68
|
+
var store = context.session.store;
|
|
69
69
|
// Utility functions
|
|
70
|
-
|
|
70
|
+
var complainIfBad = function complainIfBad(ok, message) {
|
|
71
71
|
if (!ok) {
|
|
72
72
|
div.appendChild(_solidUi.widgets.errorMessageBlock(dom, message, 'pink'));
|
|
73
73
|
}
|
|
74
74
|
};
|
|
75
|
-
|
|
75
|
+
var clearElement = function clearElement(ele) {
|
|
76
76
|
while (ele.firstChild) {
|
|
77
77
|
ele.removeChild(ele.firstChild);
|
|
78
78
|
}
|
|
@@ -83,12 +83,12 @@ const paneDef = {
|
|
|
83
83
|
|
|
84
84
|
// Two constiations of ACL for this app, public read and public read/write
|
|
85
85
|
// In all cases owner has read write control
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
var genACLtext = function genACLtext(docURI, aclURI, allWrite) {
|
|
87
|
+
var g = (0, _rdflib.graph)();
|
|
88
|
+
var auth = (0, _rdflib.Namespace)('http://www.w3.org/ns/auth/acl#');
|
|
89
|
+
var a = g.sym(aclURI + '#a1');
|
|
90
|
+
var acl = g.sym(aclURI);
|
|
91
|
+
var doc = g.sym(docURI);
|
|
92
92
|
g.add(a, _solidUi.ns.rdf('type'), auth('Authorization'), acl);
|
|
93
93
|
g.add(a, auth('accessTo'), doc, acl);
|
|
94
94
|
g.add(a, auth('agent'), me, acl);
|
|
@@ -114,35 +114,39 @@ const paneDef = {
|
|
|
114
114
|
*
|
|
115
115
|
* @returns {Promise<Response>}
|
|
116
116
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
var setACL = function setACL(docURI, allWrite, callbackFunction) {
|
|
118
|
+
var aclDoc = store.any((0, _rdflib.sym)(docURI), (0, _rdflib.sym)('http://www.iana.org/assignments/link-relations/acl')); // @@ check that this get set by web.js
|
|
119
119
|
if (!fetcher) {
|
|
120
120
|
throw new Error('Have no fetcher');
|
|
121
121
|
}
|
|
122
122
|
if (aclDoc) {
|
|
123
123
|
// Great we already know where it is
|
|
124
|
-
|
|
124
|
+
var aclText = genACLtext(docURI, aclDoc.uri, allWrite);
|
|
125
125
|
return fetcher.webOperation('PUT', aclDoc.uri, {
|
|
126
126
|
data: aclText,
|
|
127
127
|
contentType: 'text/turtle'
|
|
128
|
-
}).then(
|
|
128
|
+
}).then(function () {
|
|
129
|
+
return callbackFunction(true);
|
|
130
|
+
})["catch"](function (err) {
|
|
129
131
|
callbackFunction(false, err.message);
|
|
130
132
|
});
|
|
131
133
|
} else {
|
|
132
|
-
return fetcher.load(docURI)
|
|
134
|
+
return fetcher.load(docURI)["catch"](function (err) {
|
|
133
135
|
callbackFunction(false, 'Getting headers for ACL: ' + err);
|
|
134
|
-
}).then(()
|
|
135
|
-
|
|
136
|
+
}).then(function () {
|
|
137
|
+
var aclDoc = store.any((0, _rdflib.sym)(docURI), (0, _rdflib.sym)('http://www.iana.org/assignments/link-relations/acl'));
|
|
136
138
|
if (!aclDoc) {
|
|
137
139
|
// complainIfBad(false, "No Link rel=ACL header for " + docURI);
|
|
138
140
|
throw new Error('No Link rel=ACL header for ' + docURI);
|
|
139
141
|
}
|
|
140
|
-
|
|
142
|
+
var aclText = genACLtext(docURI, aclDoc.uri, allWrite);
|
|
141
143
|
return fetcher.webOperation('PUT', aclDoc.uri, {
|
|
142
144
|
data: aclText,
|
|
143
145
|
contentType: 'text/turtle'
|
|
144
146
|
});
|
|
145
|
-
}).then(
|
|
147
|
+
}).then(function () {
|
|
148
|
+
return callbackFunction(true);
|
|
149
|
+
})["catch"](function (err) {
|
|
146
150
|
callbackFunction(false, err.message);
|
|
147
151
|
});
|
|
148
152
|
}
|
|
@@ -151,8 +155,8 @@ const paneDef = {
|
|
|
151
155
|
// Reproduction: spawn a new instance
|
|
152
156
|
//
|
|
153
157
|
// Viral growth path: user of app decides to make another instance
|
|
154
|
-
|
|
155
|
-
|
|
158
|
+
var newInstanceButton = function newInstanceButton() {
|
|
159
|
+
var button = div.appendChild(dom.createElement('button'));
|
|
156
160
|
button.textContent = 'Start another pad';
|
|
157
161
|
button.addEventListener('click', function () {
|
|
158
162
|
return showBootstrap(subject, spawnArea, 'pad');
|
|
@@ -161,21 +165,21 @@ const paneDef = {
|
|
|
161
165
|
};
|
|
162
166
|
|
|
163
167
|
// Option of either using the workspace system or just typing in a URI
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
168
|
+
var showBootstrap = function showBootstrap(thisInstance, container, noun) {
|
|
169
|
+
var div = clearElement(container);
|
|
170
|
+
var appDetails = {
|
|
167
171
|
noun: 'notepad'
|
|
168
172
|
};
|
|
169
|
-
div.appendChild(_solidUi.login.newAppInstance(dom, appDetails, (workspace, newBase)
|
|
173
|
+
div.appendChild(_solidUi.login.newAppInstance(dom, appDetails, function (workspace, newBase) {
|
|
170
174
|
// FIXME: not sure if this will work at all, just
|
|
171
175
|
// trying to get the types to match - Michiel.
|
|
172
176
|
return initializeNewInstanceInWorkspace(new _rdflib.NamedNode(workspace || newBase));
|
|
173
177
|
}));
|
|
174
178
|
div.appendChild(dom.createElement('hr')); // @@
|
|
175
179
|
|
|
176
|
-
|
|
180
|
+
var p = div.appendChild(dom.createElement('p'));
|
|
177
181
|
p.textContent = 'Where would you like to store the data for the ' + noun + '? ' + 'Give the URL of the directory where you would like the data stored.';
|
|
178
|
-
|
|
182
|
+
var baseField = div.appendChild(dom.createElement('input'));
|
|
179
183
|
baseField.setAttribute('type', 'text');
|
|
180
184
|
baseField.size = 80 // really a string
|
|
181
185
|
;
|
|
@@ -183,10 +187,10 @@ const paneDef = {
|
|
|
183
187
|
baseField.autocomplete = 'on';
|
|
184
188
|
div.appendChild(dom.createElement('br')); // @@
|
|
185
189
|
|
|
186
|
-
|
|
190
|
+
var button = div.appendChild(dom.createElement('button'));
|
|
187
191
|
button.textContent = 'Start new ' + noun + ' at this URI';
|
|
188
192
|
button.addEventListener('click', function (_e) {
|
|
189
|
-
|
|
193
|
+
var newBase = baseField.value;
|
|
190
194
|
if (newBase.slice(-1) !== '/') {
|
|
191
195
|
newBase += '/';
|
|
192
196
|
}
|
|
@@ -195,9 +199,9 @@ const paneDef = {
|
|
|
195
199
|
};
|
|
196
200
|
|
|
197
201
|
// Create new document files for new instance of app
|
|
198
|
-
|
|
202
|
+
var initializeNewInstanceInWorkspace = function initializeNewInstanceInWorkspace(ws) {
|
|
199
203
|
// @@ TODO Clean up type for newBase
|
|
200
|
-
|
|
204
|
+
var newBase = store.any(ws, _solidUi.ns.space('uriPrefix'));
|
|
201
205
|
if (!newBase) {
|
|
202
206
|
newBase = ws.uri.split('#')[0];
|
|
203
207
|
} else {
|
|
@@ -207,34 +211,34 @@ const paneDef = {
|
|
|
207
211
|
_rdflib.log.error(appPathSegment + ': No / at end of uriPrefix ' + newBase); // @@ paramater?
|
|
208
212
|
newBase = newBase + '/';
|
|
209
213
|
}
|
|
210
|
-
|
|
214
|
+
var now = new Date();
|
|
211
215
|
newBase += appPathSegment + '/id' + now.getTime() + '/'; // unique id
|
|
212
216
|
|
|
213
217
|
initializeNewInstanceAtBase(thisInstance, newBase);
|
|
214
218
|
};
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
219
|
+
var initializeNewInstanceAtBase = function initializeNewInstanceAtBase(thisInstance, newBase) {
|
|
220
|
+
var here = (0, _rdflib.sym)(thisInstance.uri.split('#')[0]);
|
|
221
|
+
var base = here; // @@ ???
|
|
218
222
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
223
|
+
var newPadDoc = store.sym(newBase + 'pad.ttl');
|
|
224
|
+
var newIndexDoc = store.sym(newBase + 'index.html');
|
|
225
|
+
var toBeCopied = [{
|
|
222
226
|
local: 'index.html',
|
|
223
227
|
contentType: 'text/html'
|
|
224
228
|
}];
|
|
225
|
-
|
|
229
|
+
var newInstance = store.sym(newPadDoc.uri + '#thisPad');
|
|
226
230
|
|
|
227
231
|
// log.debug("\n Ready to put " + kb.statementsMatching(undefined, undefined, undefined, there)); //@@
|
|
228
232
|
|
|
229
|
-
|
|
230
|
-
|
|
233
|
+
var agenda = [];
|
|
234
|
+
var f; // @@ This needs some form of visible progress bar
|
|
231
235
|
for (f = 0; f < toBeCopied.length; f++) {
|
|
232
|
-
|
|
233
|
-
|
|
236
|
+
var item = toBeCopied[f];
|
|
237
|
+
var fun = function copyItem(item) {
|
|
234
238
|
agenda.push(function () {
|
|
235
|
-
|
|
239
|
+
var newURI = newBase + item.local;
|
|
236
240
|
console.log('Copying ' + base + item.local + ' to ' + newURI);
|
|
237
|
-
|
|
241
|
+
var setThatACL = function setThatACL() {
|
|
238
242
|
setACL(newURI, false, function (ok, message) {
|
|
239
243
|
if (!ok) {
|
|
240
244
|
complainIfBad(ok, 'FAILED to set ACL ' + newURI + ' : ' + message);
|
|
@@ -247,10 +251,12 @@ const paneDef = {
|
|
|
247
251
|
if (!store.fetcher) {
|
|
248
252
|
throw new Error('Store has no fetcher');
|
|
249
253
|
}
|
|
250
|
-
store.fetcher.webCopy(base + item.local, newBase + item.local, item.contentType).then(
|
|
254
|
+
store.fetcher.webCopy(base + item.local, newBase + item.local, item.contentType).then(function () {
|
|
255
|
+
return _solidLogic.authn.checkUser();
|
|
256
|
+
}).then(function (webId) {
|
|
251
257
|
me = webId;
|
|
252
258
|
setThatACL();
|
|
253
|
-
})
|
|
259
|
+
})["catch"](function (err) {
|
|
254
260
|
console.log('FAILED to copy ' + base + item.local + ' : ' + err.message);
|
|
255
261
|
complainIfBad(false, 'FAILED to copy ' + base + item.local + ' : ' + err.message);
|
|
256
262
|
});
|
|
@@ -294,29 +300,29 @@ const paneDef = {
|
|
|
294
300
|
agenda.push(function () {
|
|
295
301
|
// give the user links to the new app
|
|
296
302
|
|
|
297
|
-
|
|
303
|
+
var p = div.appendChild(dom.createElement('p'));
|
|
298
304
|
p.setAttribute('style', 'font-size: 140%;');
|
|
299
|
-
p.innerHTML =
|
|
305
|
+
p.innerHTML = "Your <a href='" + newIndexDoc.uri + "'><b>new notepad</b></a> is ready. " + "<br/><br/><a href='" + newIndexDoc.uri + "'>Go to new pad</a>";
|
|
300
306
|
});
|
|
301
307
|
agenda.shift()();
|
|
302
308
|
// Created new data files.
|
|
303
309
|
};
|
|
304
310
|
|
|
305
311
|
// Update on incoming changes
|
|
306
|
-
|
|
312
|
+
var showResults = function showResults(exists) {
|
|
307
313
|
console.log('showResults()');
|
|
308
314
|
me = _solidLogic.authn.currentUser();
|
|
309
|
-
_solidLogic.authn.checkUser().then(webId
|
|
315
|
+
_solidLogic.authn.checkUser().then(function (webId) {
|
|
310
316
|
me = webId;
|
|
311
317
|
});
|
|
312
|
-
|
|
318
|
+
var title = store.any(subject, _solidUi.ns.dc('title')) || store.any(subject, _solidUi.ns.vcard('fn'));
|
|
313
319
|
if (paneOptions.solo && typeof window !== 'undefined' && title) {
|
|
314
320
|
window.document.title = title.value;
|
|
315
321
|
}
|
|
316
322
|
options.exists = exists;
|
|
317
323
|
padEle = _solidUi.pad.notepad(dom, padDoc, subject, me, options);
|
|
318
324
|
naviMain.appendChild(padEle);
|
|
319
|
-
|
|
325
|
+
var partipationTarget = store.any(subject, _solidUi.ns.meeting('parentMeeting')) || subject;
|
|
320
326
|
_solidUi.pad.manageParticipation(dom, naviMiddle2, padDoc, partipationTarget, me, options);
|
|
321
327
|
if (!store.updater) {
|
|
322
328
|
throw new Error('Store has no updater');
|
|
@@ -325,7 +331,7 @@ const paneDef = {
|
|
|
325
331
|
};
|
|
326
332
|
|
|
327
333
|
// Read or create empty data file
|
|
328
|
-
|
|
334
|
+
var loadPadData = function loadPadData() {
|
|
329
335
|
if (!fetcher) {
|
|
330
336
|
throw new Error('Have no fetcher');
|
|
331
337
|
}
|
|
@@ -363,43 +369,43 @@ const paneDef = {
|
|
|
363
369
|
};
|
|
364
370
|
|
|
365
371
|
// Body of Pane
|
|
366
|
-
|
|
372
|
+
var appPathSegment = 'app-pad.timbl.com'; // how to allocate this string and connect to
|
|
367
373
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
374
|
+
var fetcher = store.fetcher;
|
|
375
|
+
var updater = store.updater;
|
|
376
|
+
var me;
|
|
377
|
+
var PAD = (0, _rdflib.Namespace)('http://www.w3.org/ns/pim/pad#');
|
|
378
|
+
var thisInstance = subject;
|
|
379
|
+
var padDoc = subject.doc();
|
|
380
|
+
var padEle;
|
|
381
|
+
var div = dom.createElement('div');
|
|
376
382
|
|
|
377
383
|
// Build the DOM
|
|
378
|
-
|
|
384
|
+
var structure = div.appendChild(dom.createElement('table')); // @@ make responsive style
|
|
379
385
|
structure.setAttribute('style', 'background-color: white; min-width: 94%; margin-right:3% margin-left: 3%; min-height: 13em;');
|
|
380
|
-
|
|
386
|
+
var naviLoginoutTR = structure.appendChild(dom.createElement('tr'));
|
|
381
387
|
naviLoginoutTR.appendChild(dom.createElement('td')); // naviLoginout1
|
|
382
388
|
naviLoginoutTR.appendChild(dom.createElement('td'));
|
|
383
389
|
naviLoginoutTR.appendChild(dom.createElement('td'));
|
|
384
|
-
|
|
385
|
-
|
|
390
|
+
var naviTop = structure.appendChild(dom.createElement('tr')); // stuff
|
|
391
|
+
var naviMain = naviTop.appendChild(dom.createElement('td'));
|
|
386
392
|
naviMain.setAttribute('colspan', '3');
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
393
|
+
var naviMiddle = structure.appendChild(dom.createElement('tr')); // controls
|
|
394
|
+
var naviMiddle1 = naviMiddle.appendChild(dom.createElement('td'));
|
|
395
|
+
var naviMiddle2 = naviMiddle.appendChild(dom.createElement('td'));
|
|
396
|
+
var naviMiddle3 = naviMiddle.appendChild(dom.createElement('td'));
|
|
397
|
+
var naviStatus = structure.appendChild(dom.createElement('tr')); // status etc
|
|
398
|
+
var statusArea = naviStatus.appendChild(dom.createElement('div'));
|
|
399
|
+
var naviSpawn = structure.appendChild(dom.createElement('tr')); // create new
|
|
400
|
+
var spawnArea = naviSpawn.appendChild(dom.createElement('div'));
|
|
401
|
+
var naviMenu = structure.appendChild(dom.createElement('tr'));
|
|
396
402
|
naviMenu.setAttribute('class', 'naviMenu');
|
|
397
403
|
// naviMenu.setAttribute('style', 'margin-top: 3em;');
|
|
398
404
|
naviMenu.appendChild(dom.createElement('td')); // naviLeft
|
|
399
405
|
naviMenu.appendChild(dom.createElement('td'));
|
|
400
406
|
naviMenu.appendChild(dom.createElement('td'));
|
|
401
|
-
|
|
402
|
-
statusArea,
|
|
407
|
+
var options = {
|
|
408
|
+
statusArea: statusArea,
|
|
403
409
|
timingArea: naviMiddle1
|
|
404
410
|
};
|
|
405
411
|
loadPadData();
|
|
@@ -407,5 +413,5 @@ const paneDef = {
|
|
|
407
413
|
}
|
|
408
414
|
};
|
|
409
415
|
// ends
|
|
410
|
-
var _default = exports
|
|
416
|
+
var _default = exports["default"] = paneDef;
|
|
411
417
|
//# sourceMappingURL=padPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"padPane.js","names":["_solidUi","require","_solidLogic","_rdflib","paneDef","icon","icons","iconBase","name","audience","ns","solid","label","subject","context","t","session","store","findTypeURIs","mintClass","pad","mintNew","newPaneOptions","updater","me","uri","Error","newInstance","sym","newBase","newPadDoc","doc","add","rdf","dc","Date","chunk","sioc","Promise","resolve","reject","put","statementsMatching","undefined","uri2","ok","message","render","paneOptions","dom","complainIfBad","div","appendChild","widgets","errorMessageBlock","clearElement","ele","firstChild","removeChild","genACLtext","docURI","aclURI","allWrite","g","graph","auth","Namespace","a","acl","foaf","serialize","setACL","callbackFunction","aclDoc","any","fetcher","aclText","webOperation","data","contentType","then","err","load","newInstanceButton","button","createElement","textContent","addEventListener","showBootstrap","spawnArea","thisInstance","container","noun","appDetails","login","newAppInstance","workspace","initializeNewInstanceInWorkspace","NamedNode","p","baseField","setAttribute","size","autocomplete","_e","value","slice","initializeNewInstanceAtBase","ws","space","split","log","error","appPathSegment","now","getTime","here","base","newIndexDoc","toBeCopied","local","agenda","f","length","item","fun","copyItem","push","newURI","console","setThatACL","shift","webCopy","authn","checkUser","webId","createNewPadDataFile","PAD","padDoc","_uri2","body","innerHTML","showResults","exists","currentUser","title","vcard","solo","window","document","options","padEle","notepad","naviMain","partipationTarget","meeting","manageParticipation","naviMiddle2","setRefreshHandler","reloadAndSync","loadPadData","nowOrWhenFetched","response","status","holds","wf","naviMiddle3","structure","naviLoginoutTR","naviTop","naviMiddle","naviMiddle1","naviStatus","statusArea","naviSpawn","naviMenu","timingArea","_default","exports"],"sources":["../../src/pad/padPane.ts"],"sourcesContent":["import { icons, ns, pad, widgets, login } from 'solid-ui'\nimport { authn, AppDetails } from 'solid-logic'\nimport { graph, log, NamedNode, Namespace, sym, serialize, Store } from 'rdflib'\nimport { PaneDefinition } from 'pane-registry'\n/* pad Pane\n **\n */\n\nconst paneDef: PaneDefinition = {\n // icon: (module.__dirname || __dirname) + 'images/ColourOn.png',\n icon: icons.iconBase + 'noun_79217.svg',\n\n name: 'pad',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve an pad pane?\n label: function (subject, context) {\n const t = (context.session.store as Store).findTypeURIs(subject)\n if (t['http://www.w3.org/ns/pim/pad#Notepad']) {\n return 'pad'\n }\n return null // No under other circumstances\n },\n\n mintClass: ns.pad('Notepad'),\n\n mintNew: function (context, newPaneOptions: any) {\n const store = context.session.store as Store\n const updater = store.updater\n if (newPaneOptions.me && !newPaneOptions.me.uri) {\n throw new Error('notepad mintNew: Invalid userid')\n }\n\n const newInstance = (newPaneOptions.newInstance =\n newPaneOptions.newInstance ||\n store.sym(newPaneOptions.newBase + 'index.ttl#this'))\n // const newInstance = kb.sym(newBase + 'pad.ttl#thisPad');\n const newPadDoc = newInstance.doc()\n\n store.add(newInstance, ns.rdf('type'), ns.pad('Notepad'), newPadDoc)\n store.add(newInstance, ns.dc('title'), 'Shared Notes', newPadDoc)\n store.add(newInstance, ns.dc('created'), new Date() as any, newPadDoc) // @@ TODO Remove casting\n if (newPaneOptions.me) {\n store.add(newInstance, ns.dc('author'), newPaneOptions.me, newPadDoc)\n }\n // kb.add(newInstance, ns.pad('next'), newInstance, newPadDoc);\n // linked list empty @@\n const chunk = store.sym(newInstance.uri + '_line0')\n store.add(newInstance, ns.pad('next'), chunk, newPadDoc) // Linked list has one entry\n store.add(chunk, ns.pad('next'), newInstance, newPadDoc)\n store.add(chunk, ns.dc('author'), newPaneOptions.me, newPadDoc)\n store.add(chunk, ns.sioc('content'), '', newPadDoc)\n\n return new Promise(function (resolve, reject) {\n if (!updater) {\n reject(new Error('Have no updater'))\n return\n }\n updater.put(\n newPadDoc,\n store.statementsMatching(undefined, undefined, undefined, newPadDoc),\n 'text/turtle',\n function (uri2, ok, message) {\n if (ok) {\n resolve(newPaneOptions)\n } else {\n reject(\n new Error('FAILED to save new tool at: ' + uri2 + ' : ' + message)\n )\n }\n }\n )\n })\n },\n // and follow instructions there\n // @@ TODO Set better type for paneOptions\n render: function (subject, context, paneOptions: any) {\n const dom = context.dom\n const store = context.session.store as Store\n // Utility functions\n const complainIfBad = function (ok: boolean, message: string) {\n if (!ok) {\n div.appendChild(widgets.errorMessageBlock(dom, message, 'pink'))\n }\n }\n\n const clearElement = function (ele: HTMLElement) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild)\n }\n return ele\n }\n\n // Access 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 const genACLtext = function (\n docURI: string,\n aclURI: string,\n allWrite: boolean\n ) {\n const g = graph()\n const auth = 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, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agent'), me, 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, 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 // TODO: Figure out why `serialize` isn't on the type definition according to TypeScript:\n return serialize(acl, g, aclURI, 'text/turtle')\n }\n\n /**\n * @param docURI\n * @param allWrite\n * @param callbackFunction\n *\n * @returns {Promise<Response>}\n */\n const setACL = function setACL (\n docURI: string,\n allWrite: boolean,\n callbackFunction: Function\n ) {\n const aclDoc = store.any(\n sym(docURI),\n sym('http://www.iana.org/assignments/link-relations/acl')\n ) as NamedNode // @@ check that this get set by web.js\n if (!fetcher) {\n throw new Error('Have no fetcher')\n }\n if (aclDoc) {\n // Great we already know where it is\n const aclText = genACLtext(docURI, aclDoc.uri, allWrite)\n return fetcher\n .webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then(() => callbackFunction(true))\n .catch(err => {\n callbackFunction(false, err.message)\n })\n } else {\n return fetcher\n .load(docURI)\n .catch((err: Error) => {\n callbackFunction(false, 'Getting headers for ACL: ' + err)\n })\n .then(() => {\n const aclDoc = store.any(\n sym(docURI),\n sym('http://www.iana.org/assignments/link-relations/acl')\n ) as NamedNode\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(() => callbackFunction(true))\n .catch(err => {\n callbackFunction(false, err.message)\n })\n }\n }\n\n // Reproduction: spawn a new instance\n //\n // Viral growth path: user of app decides to make another instance\n const newInstanceButton = function () {\n const button = div.appendChild(dom.createElement('button'))\n button.textContent = 'Start another pad'\n button.addEventListener('click', function () {\n return showBootstrap(subject, spawnArea, 'pad')\n })\n return button\n }\n\n // Option of either using the workspace system or just typing in a URI\n const showBootstrap = function showBootstrap (\n thisInstance: any,\n container: HTMLElement,\n noun: string\n ) {\n const div = clearElement(container)\n const appDetails = { noun: 'notepad' } as AppDetails\n div.appendChild(\n login.newAppInstance(dom, appDetails, (workspace: string | null, newBase) => {\n // FIXME: not sure if this will work at all, just\n // trying to get the types to match - Michiel.\n return initializeNewInstanceInWorkspace(new NamedNode(workspace || newBase))\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 ' +\n noun +\n '? ' +\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 as any).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.textContent = 'Start new ' + noun + ' 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 // Create new document files for new instance of app\n const initializeNewInstanceInWorkspace = function (ws: NamedNode) {\n // @@ TODO Clean up type for newBase\n let newBase: any = store.any(ws, ns.space('uriPrefix'))\n if (!newBase) {\n newBase = ws.uri.split('#')[0]\n } else {\n newBase = newBase.value\n }\n if (newBase.slice(-1) !== '/') {\n 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 (\n thisInstance: any,\n newBase: string\n ) {\n const here = sym(thisInstance.uri.split('#')[0])\n const base = here // @@ ???\n\n const newPadDoc = store.sym(newBase + 'pad.ttl')\n const newIndexDoc = store.sym(newBase + 'index.html')\n\n const toBeCopied = [{ local: 'index.html', contentType: 'text/html' }]\n\n const newInstance = store.sym(newPadDoc.uri + '#thisPad')\n\n // log.debug(\"\\n Ready to put \" + kb.statementsMatching(undefined, undefined, undefined, there)); //@@\n\n const agenda: Function[] = []\n\n let f // @@ This needs some form of visible progress bar\n for (f = 0; f < toBeCopied.length; f++) {\n const item = toBeCopied[f]\n const fun = function copyItem (item: any) {\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 setACL(newURI, false, function (ok: boolean, message: string) {\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 agenda.shift()!() // beware too much nesting\n }\n })\n }\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n store.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\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 createNewPadDataFile () {\n store.add(newInstance, ns.rdf('type'), PAD('Notepad'), newPadDoc)\n\n // TODO @@ Remove casting of add\n store.add(\n newInstance,\n ns.dc('created'),\n new Date() as any, // @@ TODO Remove casting\n newPadDoc\n )\n if (me) {\n store.add(newInstance, ns.dc('author'), me, newPadDoc)\n }\n store.add(newInstance, PAD('next'), newInstance, newPadDoc) // linked list empty\n\n // Keep a paper trail @@ Revisit when we have non-public ones @@ Privacy\n store.add(newInstance, ns.space('inspiration'), thisInstance, padDoc)\n store.add(newInstance, ns.space('inspiration'), thisInstance, newPadDoc)\n if (!updater) {\n throw new Error('Have no updater')\n }\n updater.put(\n newPadDoc,\n store.statementsMatching(undefined, undefined, undefined, newPadDoc),\n 'text/turtle',\n function (_uri2, ok, message) {\n if (ok) {\n agenda.shift()!()\n } else {\n complainIfBad(\n ok,\n 'FAILED to save new notepad at: ' +\n newPadDoc.uri +\n ' : ' +\n message\n )\n console.log(\n 'FAILED to save new notepad at: ' +\n newPadDoc.uri +\n ' : ' +\n message\n )\n }\n }\n )\n })\n\n agenda.push(function () {\n setACL(newPadDoc.uri, true, function (ok: boolean, body: string) {\n complainIfBad(\n ok,\n 'Failed to set Read-Write ACL on pad data file: ' + body\n )\n if (ok) agenda.shift()!()\n })\n })\n\n agenda.push(function () {\n // give the user links to the new app\n\n const p = div.appendChild(dom.createElement('p'))\n p.setAttribute('style', 'font-size: 140%;')\n p.innerHTML =\n \"Your <a href='\" +\n newIndexDoc.uri +\n \"'><b>new notepad</b></a> is ready. \" +\n \"<br/><br/><a href='\" +\n newIndexDoc.uri +\n \"'>Go to new pad</a>\"\n })\n\n agenda.shift()!()\n // Created new data files.\n }\n\n // Update on incoming changes\n const showResults = function (exists: boolean) {\n console.log('showResults()')\n\n me = authn.currentUser()\n\n authn.checkUser().then((webId: unknown) => {\n me = webId as string\n })\n\n const title =\n store.any(subject, ns.dc('title')) || store.any(subject, ns.vcard('fn'))\n if (paneOptions.solo && typeof window !== 'undefined' && title) {\n window.document.title = title.value\n }\n options.exists = exists\n padEle = pad.notepad(dom, padDoc, subject, me, options)\n naviMain.appendChild(padEle)\n\n const partipationTarget =\n store.any(subject, ns.meeting('parentMeeting')) || subject\n pad.manageParticipation(\n dom,\n naviMiddle2,\n padDoc,\n partipationTarget as any,\n me,\n options\n )\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n\n store.updater.setRefreshHandler(padDoc, padEle.reloadAndSync) // initiated =\n }\n\n // Read or create empty data file\n const loadPadData = function () {\n if (!fetcher) {\n throw new Error('Have no fetcher')\n }\n fetcher.nowOrWhenFetched(padDoc.uri, undefined, function (\n ok: boolean,\n body: string,\n response: any\n ) {\n if (!ok) {\n if (response.status === 404) {\n // / Check explicitly for 404 error\n console.log('Initializing results file ' + padDoc)\n if (!updater) {\n throw new Error('Have no updater')\n }\n updater.put(padDoc, [], 'text/turtle', function (\n _uri2,\n ok,\n message\n ) {\n if (ok) {\n clearElement(naviMain)\n showResults(false)\n } else {\n complainIfBad(\n ok,\n 'FAILED to create results file at: ' +\n padDoc.uri +\n ' : ' +\n message\n )\n console.log(\n 'FAILED to craete results file at: ' +\n padDoc.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 if (store.holds(subject, ns.rdf('type'), ns.wf('TemplateInstance'))) {\n showBootstrap(subject, naviMain, 'pad')\n }\n showResults(true)\n naviMiddle3.appendChild(newInstanceButton())\n }\n })\n }\n\n // Body of Pane\n const appPathSegment = 'app-pad.timbl.com' // how to allocate this string and connect to\n\n const fetcher = store.fetcher\n const updater = store.updater\n let me: any\n\n const PAD = Namespace('http://www.w3.org/ns/pim/pad#')\n\n const thisInstance = subject\n const padDoc = subject.doc()\n\n let padEle\n\n const div = dom.createElement('div')\n\n // Build the DOM\n const structure = div.appendChild(dom.createElement('table')) // @@ make responsive style\n structure.setAttribute(\n 'style',\n 'background-color: white; min-width: 94%; margin-right:3% margin-left: 3%; min-height: 13em;'\n )\n\n const naviLoginoutTR = structure.appendChild(dom.createElement('tr'))\n naviLoginoutTR.appendChild(dom.createElement('td')) // naviLoginout1\n naviLoginoutTR.appendChild(dom.createElement('td'))\n naviLoginoutTR.appendChild(dom.createElement('td'))\n\n const naviTop = structure.appendChild(dom.createElement('tr')) // stuff\n const naviMain = naviTop.appendChild(dom.createElement('td'))\n naviMain.setAttribute('colspan', '3')\n\n const naviMiddle = structure.appendChild(dom.createElement('tr')) // controls\n const naviMiddle1 = naviMiddle.appendChild(dom.createElement('td'))\n const naviMiddle2 = naviMiddle.appendChild(dom.createElement('td'))\n const naviMiddle3 = naviMiddle.appendChild(dom.createElement('td'))\n\n const naviStatus = structure.appendChild(dom.createElement('tr')) // status etc\n const statusArea = naviStatus.appendChild(dom.createElement('div'))\n\n const naviSpawn = structure.appendChild(dom.createElement('tr')) // create new\n const spawnArea = naviSpawn.appendChild(dom.createElement('div'))\n\n const naviMenu = structure.appendChild(dom.createElement('tr'))\n naviMenu.setAttribute('class', 'naviMenu')\n // naviMenu.setAttribute('style', 'margin-top: 3em;');\n naviMenu.appendChild(dom.createElement('td')) // naviLeft\n naviMenu.appendChild(dom.createElement('td'))\n naviMenu.appendChild(dom.createElement('td'))\n\n const options: any = { statusArea: statusArea, timingArea: naviMiddle1 }\n\n loadPadData()\n\n return div\n }\n}\n// ends\n\nexport default paneDef\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,78 +1,79 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
|
-
exports
|
|
7
|
+
exports["default"] = void 0;
|
|
7
8
|
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
8
9
|
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
9
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" !=
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
10
11
|
/* Playlist Pane
|
|
11
12
|
**
|
|
12
13
|
** This pane allows playlists and playlists slots to be viewed
|
|
13
14
|
** seeAlso: http://smiy.sourceforge.net/pbo/spec/playbackontology.html
|
|
14
15
|
*/
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
var _default = exports
|
|
17
|
+
var ns = UI.ns;
|
|
18
|
+
var _default = exports["default"] = {
|
|
18
19
|
icon: UI.icons.iconBase + 'noun_1619.svg',
|
|
19
20
|
name: 'playlistSlot',
|
|
20
21
|
audience: [ns.solid('PowerUser')],
|
|
21
|
-
label: function (subject, context) {
|
|
22
|
-
|
|
22
|
+
label: function label(subject, context) {
|
|
23
|
+
var kb = context.session.store;
|
|
23
24
|
if (!kb.anyStatementMatching(subject, UI.ns.rdf('type'), kb.sym('http://purl.org/ontology/pbo/core#PlaylistSlot'))) {
|
|
24
25
|
return null;
|
|
25
26
|
}
|
|
26
27
|
return 'playlist slot';
|
|
27
28
|
},
|
|
28
|
-
render: function (subject, context) {
|
|
29
|
-
|
|
29
|
+
render: function render(subject, context) {
|
|
30
|
+
var myDocument = context.dom;
|
|
30
31
|
function isVideo(src, _index) {
|
|
31
32
|
if (!src) {
|
|
32
33
|
return {
|
|
33
34
|
html5: true
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-_%]+)/i);
|
|
38
|
+
var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i);
|
|
39
|
+
var dailymotion = src.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i);
|
|
40
|
+
var vk = src.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);
|
|
40
41
|
if (youtube) {
|
|
41
42
|
return {
|
|
42
|
-
youtube
|
|
43
|
+
youtube: youtube
|
|
43
44
|
};
|
|
44
45
|
} else if (vimeo) {
|
|
45
46
|
return {
|
|
46
|
-
vimeo
|
|
47
|
+
vimeo: vimeo
|
|
47
48
|
};
|
|
48
49
|
} else if (dailymotion) {
|
|
49
50
|
return {
|
|
50
|
-
dailymotion
|
|
51
|
+
dailymotion: dailymotion
|
|
51
52
|
};
|
|
52
53
|
} else if (vk) {
|
|
53
54
|
return {
|
|
54
|
-
vk
|
|
55
|
+
vk: vk
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
+
var link = function link(contents, uri) {
|
|
59
60
|
if (!uri) return contents;
|
|
60
|
-
|
|
61
|
+
var a = myDocument.createElement('a');
|
|
61
62
|
a.setAttribute('href', uri);
|
|
62
63
|
a.appendChild(contents);
|
|
63
64
|
a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true);
|
|
64
65
|
return a;
|
|
65
66
|
};
|
|
66
|
-
|
|
67
|
+
var text = function text(str) {
|
|
67
68
|
return myDocument.createTextNode(str);
|
|
68
69
|
};
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
var kb = context.session.store;
|
|
71
|
+
var obj = kb.any(subject, $rdf.sym('http://purl.org/ontology/pbo/core#playlist_item'));
|
|
72
|
+
var index = kb.any(subject, $rdf.sym('http://purl.org/ontology/olo/core#index'));
|
|
73
|
+
var uri = obj.uri;
|
|
74
|
+
var video = isVideo(uri);
|
|
75
|
+
var div = myDocument.createElement('div');
|
|
76
|
+
var img;
|
|
76
77
|
if (video && video.youtube) {
|
|
77
78
|
uri = uri.replace('watch?v=', 'embed/');
|
|
78
79
|
div.setAttribute('class', 'imageView');
|
|
@@ -91,28 +92,28 @@ var _default = exports.default = {
|
|
|
91
92
|
img.setAttribute('height', 315);
|
|
92
93
|
img.setAttribute('style', 'max-width: 560; max-height: 315;');
|
|
93
94
|
}
|
|
94
|
-
|
|
95
|
+
var descDiv;
|
|
95
96
|
if (index) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
for (
|
|
97
|
+
var sl = kb.statementsMatching(null, $rdf.sym('http://purl.org/ontology/olo/core#index'));
|
|
98
|
+
var slots = [];
|
|
99
|
+
for (var i = 0; i < sl.length; i++) {
|
|
99
100
|
if (sl[i]) {
|
|
100
101
|
slots.push(parseInt(sl[i].object.value, 10));
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
index = parseInt(index.value, 10);
|
|
104
105
|
descDiv = myDocument.createElement('div');
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
var pIndex = slots[(slots.indexOf(index) - 1 + slots.length) % slots.length];
|
|
107
|
+
var nIndex = slots[(slots.indexOf(index) + 1 + slots.length) % slots.length];
|
|
108
|
+
var prev = link(text('<<'), subject.uri.split('#')[0] + '#' + pIndex);
|
|
108
109
|
descDiv.appendChild(prev);
|
|
109
|
-
|
|
110
|
+
var indexDiv = myDocument.createElement('span');
|
|
110
111
|
indexDiv.innerHTML = ' Playlist slot : ' + index + ' ';
|
|
111
112
|
descDiv.appendChild(indexDiv);
|
|
112
|
-
|
|
113
|
+
var next = link(text('>>'), subject.uri.split('#')[0] + '#' + nIndex);
|
|
113
114
|
descDiv.appendChild(next);
|
|
114
115
|
}
|
|
115
|
-
|
|
116
|
+
var tr = myDocument.createElement('TR'); // why need tr?
|
|
116
117
|
tr.appendChild(img);
|
|
117
118
|
if (descDiv) {
|
|
118
119
|
tr.appendChild(descDiv);
|