solid-panes 3.5.11 → 3.5.14-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/.github/workflows/ci.yml +1 -1
  2. package/README.md +4 -0
  3. package/lib/dashboard/basicPreferences.js +193 -264
  4. package/lib/dashboard/basicPreferences.js.map +1 -1
  5. package/lib/dashboard/dashboardPane.d.ts.map +1 -1
  6. package/lib/dashboard/dashboardPane.js +57 -75
  7. package/lib/dashboard/dashboardPane.js.map +1 -1
  8. package/lib/dashboard/homepage.js +98 -100
  9. package/lib/dashboard/homepage.js.map +1 -1
  10. package/lib/form/pane.js +1 -1
  11. package/lib/form/pane.js.map +1 -1
  12. package/lib/home/homePane.js +112 -103
  13. package/lib/home/homePane.js.map +1 -1
  14. package/lib/humanReadablePane.js +55 -23
  15. package/lib/humanReadablePane.js.map +1 -1
  16. package/lib/index.d.ts +2 -1
  17. package/lib/index.d.ts.map +1 -1
  18. package/lib/index.js +49 -89
  19. package/lib/index.js.map +1 -1
  20. package/lib/internal/internalPane.js +180 -200
  21. package/lib/internal/internalPane.js.map +1 -1
  22. package/lib/mainPage/footer.d.ts +3 -0
  23. package/lib/mainPage/footer.d.ts.map +1 -0
  24. package/lib/mainPage/footer.js +20 -0
  25. package/lib/mainPage/footer.js.map +1 -0
  26. package/lib/mainPage/header.d.ts +2 -0
  27. package/lib/mainPage/header.d.ts.map +1 -0
  28. package/lib/mainPage/header.js +142 -0
  29. package/lib/mainPage/header.js.map +1 -0
  30. package/lib/mainPage/index.d.ts +3 -0
  31. package/lib/mainPage/index.d.ts.map +1 -0
  32. package/lib/mainPage/index.js +63 -0
  33. package/lib/mainPage/index.js.map +1 -0
  34. package/lib/microblogPane/microblogPane.js +1 -1
  35. package/lib/outline/context.d.ts +2 -2
  36. package/lib/outline/context.d.ts.map +1 -1
  37. package/lib/outline/context.js +13 -17
  38. package/lib/outline/context.js.map +1 -1
  39. package/lib/outline/manager.js +178 -150
  40. package/lib/outline/manager.js.map +1 -1
  41. package/lib/outline/propertyViews.js +32 -46
  42. package/lib/outline/propertyViews.js.map +1 -1
  43. package/lib/outline/userInput.js +1 -1
  44. package/lib/outline/viewAsImage.js +22 -19
  45. package/lib/outline/viewAsImage.js.map +1 -1
  46. package/lib/outline/viewAsMbox.js +5 -15
  47. package/lib/outline/viewAsMbox.js.map +1 -1
  48. package/lib/pad/padPane.js +406 -451
  49. package/lib/pad/padPane.js.map +1 -1
  50. package/lib/profile/editProfile.view.js +101 -124
  51. package/lib/profile/editProfile.view.js.map +1 -1
  52. package/lib/profile/profile.dom.js +12 -17
  53. package/lib/profile/profile.dom.js.map +1 -1
  54. package/lib/registerPanes.js +1 -1
  55. package/lib/registerPanes.js.map +1 -1
  56. package/lib/sharing/sharingPane.js +33 -45
  57. package/lib/sharing/sharingPane.js.map +1 -1
  58. package/lib/tabbed/tabbedPane.js +87 -77
  59. package/lib/tabbed/tabbedPane.js.map +1 -1
  60. package/lib/trustedApplications/trustedApplications.dom.js +173 -182
  61. package/lib/trustedApplications/trustedApplications.dom.js.map +1 -1
  62. package/lib/trustedApplications/trustedApplications.test.js +1 -1
  63. package/lib/trustedApplications/trustedApplications.utils.js +30 -36
  64. package/lib/trustedApplications/trustedApplications.utils.js.map +1 -1
  65. package/lib/trustedApplications/trustedApplications.view.js +91 -99
  66. package/lib/trustedApplications/trustedApplications.view.js.map +1 -1
  67. package/lib/types.js +1 -4
  68. package/lib/types.js.map +1 -1
  69. package/lib/versionInfo.d.ts +0 -1
  70. package/lib/versionInfo.d.ts.map +1 -1
  71. package/lib/versionInfo.js +23 -29
  72. package/lib/versionInfo.js.map +1 -1
  73. package/package.json +22 -21
  74. package/src/dashboard/dashboardPane.ts +5 -3
  75. package/src/form/pane.js +1 -1
  76. package/src/humanReadablePane.js +38 -14
  77. package/src/index.ts +4 -3
  78. package/src/mainPage/footer.ts +19 -0
  79. package/src/mainPage/header.ts +75 -0
  80. package/src/mainPage/index.ts +20 -0
  81. package/src/outline/context.ts +2 -2
  82. package/src/outline/manager.js +26 -16
  83. package/src/registerPanes.js +2 -2
  84. package/src/versionInfo.ts +18 -19
  85. package/webpack.config.js +1 -1
@@ -1,106 +1,98 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
-
8
- var _solidUi = require("solid-ui");
9
-
10
- var _trustedApplications = require("./trustedApplications.dom");
11
-
12
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
13
-
14
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
15
-
16
- var thisColor = '#418d99';
17
- var trustedApplicationView = {
18
- global: true,
19
- icon: "".concat(_solidUi.icons.iconBase, "noun_15177.svg"),
20
- name: 'trustedApplications',
21
- label: function label() {
22
- return null;
23
- },
24
- render: function render(subject, context) {
25
- var dom = context.dom;
26
- var div = dom.createElement('div');
27
- div.classList.add('trusted-applications-pane');
28
- div.setAttribute('style', 'border: 0.3em solid ' + thisColor + '; border-radius: 0.5em; padding: 0.7em; margin-top:0.7em;');
29
- var table = div.appendChild(dom.createElement('table'));
30
- var main = table.appendChild(dom.createElement('tr'));
31
- var bottom = table.appendChild(dom.createElement('tr'));
32
- var statusArea = bottom.appendChild(dom.createElement('div'));
33
- statusArea.setAttribute('style', 'padding: 0.7em;');
34
-
35
- _render(dom, main, statusArea)["catch"](function (err) {
36
- return statusArea.appendChild(_solidUi.widgets.errorMessageBlock(dom, err));
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
37
9
  });
38
-
39
- return div;
40
- }
41
10
  };
42
-
43
- function _render(_x, _x2, _x3) {
44
- return _render2.apply(this, arguments);
45
- }
46
-
47
- function _render2() {
48
- _render2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dom, main, statusArea) {
49
- var authContext, subject, profile, editable, applicationsTable;
50
- return regeneratorRuntime.wrap(function _callee$(_context) {
51
- while (1) {
52
- switch (_context.prev = _context.next) {
53
- case 0:
54
- _context.next = 2;
55
- return _solidUi.authn.logInLoadProfile({
56
- dom: dom,
57
- div: main,
58
- statusArea: statusArea,
59
- me: null
60
- });
61
-
62
- case 2:
63
- authContext = _context.sent;
64
- subject = authContext.me;
65
- profile = subject.doc();
66
-
67
- if (_solidUi.store.updater) {
68
- _context.next = 7;
69
- break;
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
70
32
  }
71
-
72
- throw new Error('Store has no updater');
73
-
74
- case 7:
75
- editable = _solidUi.store.updater.editable(profile.uri, _solidUi.store);
76
- main.appendChild((0, _trustedApplications.createText)('h3', 'Manage your trusted applications'));
77
-
78
- if (editable) {
79
- _context.next = 12;
80
- break;
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var solid_ui_1 = require("solid-ui");
40
+ var trustedApplications_dom_1 = require("./trustedApplications.dom");
41
+ var thisColor = '#418d99';
42
+ var trustedApplicationView = {
43
+ global: true,
44
+ icon: "".concat(solid_ui_1.icons.iconBase, "noun_15177.svg"),
45
+ name: 'trustedApplications',
46
+ label: function () { return null; },
47
+ render: function (subject, context) {
48
+ var dom = context.dom;
49
+ var div = dom.createElement('div');
50
+ div.classList.add('trusted-applications-pane');
51
+ div.setAttribute('style', 'border: 0.3em solid ' +
52
+ thisColor +
53
+ '; border-radius: 0.5em; padding: 0.7em; margin-top:0.7em;');
54
+ var table = div.appendChild(dom.createElement('table'));
55
+ var main = table.appendChild(dom.createElement('tr'));
56
+ var bottom = table.appendChild(dom.createElement('tr'));
57
+ var statusArea = bottom.appendChild(dom.createElement('div'));
58
+ statusArea.setAttribute('style', 'padding: 0.7em;');
59
+ render(dom, main, statusArea).catch(function (err) { return statusArea.appendChild(solid_ui_1.widgets.errorMessageBlock(dom, err)); });
60
+ return div;
61
+ }
62
+ };
63
+ function render(dom, main, statusArea) {
64
+ return __awaiter(this, void 0, void 0, function () {
65
+ var authContext, subject, profile, editable, applicationsTable;
66
+ return __generator(this, function (_a) {
67
+ switch (_a.label) {
68
+ case 0: return [4 /*yield*/, solid_ui_1.authn.logInLoadProfile({ dom: dom, div: main, statusArea: statusArea, me: null })];
69
+ case 1:
70
+ authContext = _a.sent();
71
+ subject = authContext.me;
72
+ profile = subject.doc();
73
+ if (!solid_ui_1.store.updater) {
74
+ throw new Error('Store has no updater');
75
+ }
76
+ editable = solid_ui_1.store.updater.editable(profile.uri, solid_ui_1.store);
77
+ main.appendChild((0, trustedApplications_dom_1.createText)('h3', 'Manage your trusted applications'));
78
+ if (!editable) {
79
+ main.appendChild(solid_ui_1.widgets.errorMessageBlock(dom, "Your profile ".concat(subject.doc().uri, " is not editable, so we cannot do much here.")));
80
+ return [2 /*return*/];
81
+ }
82
+ main.appendChild((0, trustedApplications_dom_1.createText)('p', 'Here you can manage the applications you trust.'));
83
+ applicationsTable = (0, trustedApplications_dom_1.createApplicationTable)(subject);
84
+ main.appendChild(applicationsTable);
85
+ main.appendChild((0, trustedApplications_dom_1.createText)('h4', 'Notes'));
86
+ main.appendChild((0, trustedApplications_dom_1.createContainer)('ol', [
87
+ main.appendChild((0, trustedApplications_dom_1.createText)('li', 'Trusted applications will get access to all resources that you have access to.')),
88
+ main.appendChild((0, trustedApplications_dom_1.createText)('li', 'You can limit which modes they have by default.')),
89
+ main.appendChild((0, trustedApplications_dom_1.createText)('li', 'They will not gain more access than you have.'))
90
+ ]));
91
+ main.appendChild((0, trustedApplications_dom_1.createText)('p', 'Application URLs must be valid URL. Examples are http://localhost:3000, https://trusted.app, and https://sub.trusted.app.'));
92
+ return [2 /*return*/];
81
93
  }
82
-
83
- main.appendChild(_solidUi.widgets.errorMessageBlock(dom, "Your profile ".concat(subject.doc().uri, " is not editable, so we cannot do much here.")));
84
- return _context.abrupt("return");
85
-
86
- case 12:
87
- main.appendChild((0, _trustedApplications.createText)('p', 'Here you can manage the applications you trust.'));
88
- applicationsTable = (0, _trustedApplications.createApplicationTable)(subject);
89
- main.appendChild(applicationsTable);
90
- main.appendChild((0, _trustedApplications.createText)('h4', 'Notes'));
91
- main.appendChild((0, _trustedApplications.createContainer)('ol', [main.appendChild((0, _trustedApplications.createText)('li', 'Trusted applications will get access to all resources that you have access to.')), main.appendChild((0, _trustedApplications.createText)('li', 'You can limit which modes they have by default.')), main.appendChild((0, _trustedApplications.createText)('li', 'They will not gain more access than you have.'))]));
92
- main.appendChild((0, _trustedApplications.createText)('p', 'Application URLs must be valid URL. Examples are http://localhost:3000, https://trusted.app, and https://sub.trusted.app.'));
93
-
94
- case 18:
95
- case "end":
96
- return _context.stop();
97
- }
98
- }
99
- }, _callee);
100
- }));
101
- return _render2.apply(this, arguments);
94
+ });
95
+ });
102
96
  }
103
-
104
- var _default = trustedApplicationView;
105
- exports["default"] = _default;
97
+ exports.default = trustedApplicationView;
106
98
  //# sourceMappingURL=trustedApplications.view.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/trustedApplications/trustedApplications.view.ts"],"names":["thisColor","trustedApplicationView","global","icon","icons","iconBase","name","label","render","subject","context","dom","div","createElement","classList","add","setAttribute","table","appendChild","main","bottom","statusArea","err","widgets","errorMessageBlock","authn","logInLoadProfile","me","authContext","profile","doc","store","updater","Error","editable","uri","applicationsTable"],"mappings":"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","sourcesContent":["import { authn, icons, store, widgets } from 'solid-ui'\nimport { NamedNode } from 'rdflib'\n\nimport { PaneDefinition } from 'pane-registry'\nimport { createApplicationTable, createContainer, createText } from './trustedApplications.dom'\n\nconst thisColor = '#418d99'\n\nconst trustedApplicationView: PaneDefinition = {\n global: true,\n icon: `${icons.iconBase}noun_15177.svg`,\n name: 'trustedApplications',\n label: () => null,\n render: (subject, context) => {\n const dom = context.dom\n const div = dom.createElement('div')\n div.classList.add('trusted-applications-pane')\n div.setAttribute(\n 'style',\n 'border: 0.3em solid ' +\n thisColor +\n '; border-radius: 0.5em; padding: 0.7em; margin-top:0.7em;'\n )\n const table = div.appendChild(dom.createElement('table'))\n const main = table.appendChild(dom.createElement('tr'))\n const bottom = table.appendChild(dom.createElement('tr'))\n const statusArea = bottom.appendChild(dom.createElement('div'))\n statusArea.setAttribute('style', 'padding: 0.7em;')\n render(dom, main, statusArea).catch(err => statusArea.appendChild(widgets.errorMessageBlock(dom, err)))\n return div\n }\n}\n\nasync function render (dom, main, statusArea): Promise<void> {\n const authContext = await authn.logInLoadProfile({ dom: dom, div: main, statusArea: statusArea, me: null })\n const subject = authContext.me as NamedNode\n\n const profile = subject.doc()\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n const editable = store.updater.editable(profile.uri, store)\n\n main.appendChild(createText('h3', 'Manage your trusted applications'))\n\n if (!editable) {\n main.appendChild(\n widgets.errorMessageBlock(dom, `Your profile ${subject.doc().uri} is not editable, so we cannot do much here.`)\n )\n return\n }\n\n main.appendChild(createText('p', 'Here you can manage the applications you trust.'))\n\n const applicationsTable = createApplicationTable(subject)\n main.appendChild(applicationsTable)\n\n main.appendChild(createText('h4', 'Notes'))\n main.appendChild(\n createContainer('ol', [\n main.appendChild(\n createText(\n 'li',\n 'Trusted applications will get access to all resources that you have access to.'\n )\n ),\n main.appendChild(\n createText('li', 'You can limit which modes they have by default.')\n ),\n main.appendChild(\n createText('li', 'They will not gain more access than you have.')\n )\n ])\n )\n main.appendChild(\n createText('p', 'Application URLs must be valid URL. Examples are http://localhost:3000, https://trusted.app, and https://sub.trusted.app.')\n )\n}\n\nexport default trustedApplicationView\n"],"file":"trustedApplications.view.js"}
1
+ {"version":3,"file":"trustedApplications.view.js","sourceRoot":"","sources":["../../src/trustedApplications/trustedApplications.view.ts"],"names":[],"mappings":"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"}
package/lib/types.js CHANGED
@@ -1,6 +1,3 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
6
3
  //# sourceMappingURL=types.js.map
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -7,7 +7,6 @@ declare const _default: {
7
7
  ares: string;
8
8
  brotli: string;
9
9
  cldr: string;
10
- http_parser: string;
11
10
  icu: string;
12
11
  llhttp: string;
13
12
  modules: string;
@@ -1 +1 @@
1
- {"version":3,"file":"versionInfo.d.ts","sourceRoot":"","sources":["../src/versionInfo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAwBC"}
1
+ {"version":3,"file":"versionInfo.d.ts","sourceRoot":"","sources":["../src/versionInfo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAuBC"}
@@ -1,32 +1,26 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
- var _default = {
8
- buildTime: '2021-11-09T21:16:26Z',
9
- commit: '354975d41e78769bf91d72a0c115bb9dc3bad510',
10
- npmInfo: {
11
- 'solid-panes': '3.5.10',
12
- npm: '6.10.0',
13
- ares: '1.15.0',
14
- brotli: '1.0.7',
15
- cldr: '35.1',
16
- http_parser: '2.8.0',
17
- icu: '64.2',
18
- llhttp: '1.1.4',
19
- modules: '72',
20
- napi: '4',
21
- nghttp2: '1.39.1',
22
- node: '12.7.0',
23
- openssl: '1.1.1c',
24
- tz: '2019a',
25
- unicode: '12.1',
26
- uv: '1.30.1',
27
- v8: '7.5.288.22-node.16',
28
- zlib: '1.2.11'
29
- }
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ buildTime: '2022-01-18T23:23:17Z',
5
+ commit: '36b208831217a00e6be5f0fb39a379468f906c2b',
6
+ npmInfo: {
7
+ 'solid-panes': '3.5.14',
8
+ npm: '6.14.13',
9
+ ares: '1.17.1',
10
+ brotli: '1.0.9',
11
+ cldr: '39.0',
12
+ icu: '69.1',
13
+ llhttp: '2.1.3',
14
+ modules: '83',
15
+ napi: '8',
16
+ nghttp2: '1.42.0',
17
+ node: '14.17.3',
18
+ openssl: '1.1.1k',
19
+ tz: '2021a',
20
+ unicode: '13.0',
21
+ uv: '1.41.0',
22
+ v8: '8.4.371.23-node.67',
23
+ zlib: '1.2.11'
24
+ }
30
25
  };
31
- exports["default"] = _default;
32
26
  //# sourceMappingURL=versionInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/versionInfo.ts"],"names":["buildTime","commit","npmInfo","npm","ares","brotli","cldr","http_parser","icu","llhttp","modules","napi","nghttp2","node","openssl","tz","unicode","uv","v8","zlib"],"mappings":";;;;;;eAAe;AACbA,EAAAA,SAAS,EAAE,sBADE;AAEbC,EAAAA,MAAM,EAAE,0CAFK;AAGbC,EAAAA,OAAO,EACT;AACE,mBAAe,QADjB;AAEEC,IAAAA,GAAG,EAAE,QAFP;AAGEC,IAAAA,IAAI,EAAE,QAHR;AAIEC,IAAAA,MAAM,EAAE,OAJV;AAKEC,IAAAA,IAAI,EAAE,MALR;AAMEC,IAAAA,WAAW,EAAE,OANf;AAOEC,IAAAA,GAAG,EAAE,MAPP;AAQEC,IAAAA,MAAM,EAAE,OARV;AASEC,IAAAA,OAAO,EAAE,IATX;AAUEC,IAAAA,IAAI,EAAE,GAVR;AAWEC,IAAAA,OAAO,EAAE,QAXX;AAYEC,IAAAA,IAAI,EAAE,QAZR;AAaEC,IAAAA,OAAO,EAAE,QAbX;AAcEC,IAAAA,EAAE,EAAE,OAdN;AAeEC,IAAAA,OAAO,EAAE,MAfX;AAgBEC,IAAAA,EAAE,EAAE,QAhBN;AAiBEC,IAAAA,EAAE,EAAE,oBAjBN;AAkBEC,IAAAA,IAAI,EAAE;AAlBR;AAJe,C","sourcesContent":["export default {\n buildTime: '2021-11-09T21:16:26Z',\n commit: '354975d41e78769bf91d72a0c115bb9dc3bad510',\n npmInfo:\n{\n 'solid-panes': '3.5.10',\n npm: '6.10.0',\n ares: '1.15.0',\n brotli: '1.0.7',\n cldr: '35.1',\n http_parser: '2.8.0',\n icu: '64.2',\n llhttp: '1.1.4',\n modules: '72',\n napi: '4',\n nghttp2: '1.39.1',\n node: '12.7.0',\n openssl: '1.1.1c',\n tz: '2019a',\n unicode: '12.1',\n uv: '1.30.1',\n v8: '7.5.288.22-node.16',\n zlib: '1.2.11'\n}\n}\n"],"file":"versionInfo.js"}
1
+ {"version":3,"file":"versionInfo.js","sourceRoot":"","sources":["../src/versionInfo.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb,SAAS,EAAE,sBAAsB;IACjC,MAAM,EAAE,0CAA0C;IAClD,OAAO,EACT;QACE,aAAa,EAAE,QAAQ;QACvB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,MAAM;QACX,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,QAAQ;QACjB,EAAE,EAAE,OAAO;QACX,OAAO,EAAE,MAAM;QACf,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,QAAQ;KACf;CACA,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-panes",
3
- "version": "3.5.11",
3
+ "version": "3.5.14-alpha",
4
4
  "description": "Solid-compatible Panes: applets and views for the mashlib and databrowser",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -45,7 +45,7 @@
45
45
  "homepage": "https://github.com/solid/solid-panes",
46
46
  "dependencies": {
47
47
  "@babel/polyfill": "^7.12.1",
48
- "@inrupt/solid-client-authn-browser": "^1.11.2",
48
+ "@inrupt/solid-client-authn-browser": "^1.11.3",
49
49
  "@solid/better-simple-slideshow": "^0.1.0",
50
50
  "activitystreams-pane": "^0.6.2",
51
51
  "babel-preset-env": "^1.7.0",
@@ -54,47 +54,48 @@
54
54
  "contacts-pane": "^2.5.6",
55
55
  "folder-pane": "^2.4.10",
56
56
  "issue-pane": "^2.4.8",
57
- "markdown-pane": "^0.2.1",
57
+ "marked": "^4.0.8",
58
58
  "meeting-pane": "^2.3.7",
59
59
  "mime-types": "^2.1.34",
60
- "pane-registry": "^2.4.3",
60
+ "pane-registry": "^2.4.5-alpha",
61
61
  "path-browserify": "^1.0.1",
62
62
  "profile-pane": "^1.0.4",
63
- "rdflib": "^2.2.10",
63
+ "rdflib": "^2.2.15",
64
64
  "react": "^17.0.2",
65
65
  "react-dom": "^17.0.2",
66
+ "solid-logic": "^1.3.12",
66
67
  "solid-namespace": "^0.5.2",
67
- "solid-ui": "^2.4.11",
68
+ "solid-ui": "^2.4.14-alpha",
68
69
  "source-pane": "^2.2.13"
69
70
  },
70
71
  "devDependencies": {
71
72
  "@babel/cli": "^7.16.0",
72
- "@babel/core": "^7.16.0",
73
- "@babel/preset-env": "^7.16.0",
74
- "@babel/preset-typescript": "^7.16.0",
75
- "@testing-library/dom": "^8.11.0",
76
- "@testing-library/jest-dom": "^5.15.0",
77
- "@types/jest": "^27.0.2",
73
+ "@babel/core": "^7.16.5",
74
+ "@babel/preset-env": "^7.16.5",
75
+ "@babel/preset-typescript": "^7.16.5",
76
+ "@testing-library/dom": "^8.11.1",
77
+ "@testing-library/jest-dom": "^5.16.1",
78
+ "@types/jest": "^27.0.3",
78
79
  "@types/webpack-env": "^1.16.3",
79
- "@typescript-eslint/eslint-plugin": "^5.3.1",
80
- "@typescript-eslint/parser": "^5.3.1",
80
+ "@typescript-eslint/eslint-plugin": "^5.8.0",
81
+ "@typescript-eslint/parser": "^5.8.0",
81
82
  "babel-loader": "^8.2.3",
82
83
  "babel-plugin-inline-import": "^3.0.0",
83
84
  "eslint": "^7.32.0",
84
- "fork-ts-checker-webpack-plugin": "^6.4.0",
85
+ "fork-ts-checker-webpack-plugin": "^6.5.0",
85
86
  "html-webpack-plugin": "^5.5.0",
86
87
  "husky": "^7.0.4",
87
- "jest": "^27.3.1",
88
+ "jest": "^27.4.5",
88
89
  "jest-fetch-mock": "^3.0.3",
89
- "lint-staged": "^11.2.6",
90
+ "lint-staged": "^12.1.4",
90
91
  "raw-loader": "^4.0.2",
91
92
  "standard": "^16.0.4",
92
- "ts-jest": "^27.0.7",
93
+ "ts-jest": "^27.1.2",
93
94
  "ts-loader": "^9.2.6",
94
- "typescript": "^4.4.4",
95
- "webpack": "^5.63.0",
95
+ "typescript": "^4.5.4",
96
+ "webpack": "^5.65.0",
96
97
  "webpack-cli": "^4.9.1",
97
- "webpack-dev-server": "^4.4.0"
98
+ "webpack-dev-server": "^4.7.1"
98
99
  },
99
100
  "husky": {
100
101
  "hooks": {
@@ -1,5 +1,5 @@
1
1
  import { authn, icons, store } from 'solid-ui'
2
- import { Fetcher, NamedNode, sym } from 'rdflib'
2
+ import { Fetcher, NamedNode } from 'rdflib'
3
3
  import { generateHomepage } from './homepage'
4
4
  import { DataBrowserContext, PaneDefinition } from 'pane-registry'
5
5
 
@@ -7,6 +7,7 @@ export const dashboardPane: PaneDefinition = {
7
7
  icon: icons.iconBase + 'noun_547570.svg',
8
8
  name: 'dashboard',
9
9
  label: subject => {
10
+ console.log()
10
11
  if (subject.uri === subject.site().uri) {
11
12
  return 'Dashboard'
12
13
  }
@@ -47,8 +48,9 @@ function buildPage (
47
48
  context: DataBrowserContext,
48
49
  subject: NamedNode
49
50
  ) {
50
- // console.log('build page')
51
- if (webId && webId.site().uri === subject.site().uri) {
51
+ // if uri then SolidOS is a browse.html web app
52
+ const uri = (new URL(window.location.href)).searchParams.get('uri')
53
+ if (webId && (uri || webId.site().uri === subject.site().uri)) {
52
54
  return buildDashboard(container, context)
53
55
  }
54
56
  return buildHomePage(container, subject)
package/src/form/pane.js CHANGED
@@ -90,7 +90,7 @@ module.exports = {
90
90
  const heading = dom.createElement('h4')
91
91
  box.appendChild(heading)
92
92
  if (form.uri) {
93
- const formStore = $rdf.Util.uri.document(form)
93
+ const formStore = $rdf.Util.uri.document(form.uri)
94
94
  if (formStore.uri !== form.uri) {
95
95
  // The form is a hash-type URI
96
96
  const e = box.appendChild(
@@ -3,23 +3,24 @@
3
3
  ** This outline pane contains the document contents for an HTML document
4
4
  ** This is for peeking at a page, because the user might not want to leave the data browser.
5
5
  */
6
- const UI = require('solid-ui')
7
- const $rdf = require('rdflib')
6
+ import { icons, ns } from 'solid-ui'
7
+ import { Util } from 'rdflib'
8
+ import { marked } from 'marked'
8
9
 
9
- module.exports = {
10
- icon: UI.icons.originalIconBase + 'tango/22-text-x-generic.png',
10
+ const humanReadablePane = {
11
+ icon: icons.originalIconBase + 'tango/22-text-x-generic.png',
11
12
 
12
13
  name: 'humanReadable',
13
14
 
14
15
  label: function (subject, context) {
15
16
  const kb = context.session.store
16
- const ns = UI.ns
17
17
 
18
18
  // See also the source pane, which has lower precedence.
19
19
 
20
20
  const allowed = [
21
21
  'text/plain',
22
22
  'text/html',
23
+ 'text/markdown',
23
24
  'application/xhtml+xml',
24
25
  'image/png',
25
26
  'image/jpeg',
@@ -45,7 +46,7 @@ module.exports = {
45
46
  const hasContentTypeIn2 = function (kb, x, displayables) {
46
47
  const t = kb.findTypeURIs(subject)
47
48
  for (let k = 0; k < displayables.length; k++) {
48
- if ($rdf.Util.mediaTypeClass(displayables[k]).uri in t) {
49
+ if (Util.mediaTypeClass(displayables[k]).uri in t) {
49
50
  return true
50
51
  }
51
52
  }
@@ -72,12 +73,6 @@ module.exports = {
72
73
  const div = myDocument.createElement('div')
73
74
  const kb = context.session.store
74
75
 
75
- // @@ When we can, use CSP to turn off scripts within the iframe
76
- div.setAttribute('class', 'docView')
77
- const iframe = myDocument.createElement('IFRAME')
78
- iframe.setAttribute('src', subject.uri) // allow-same-origin
79
- iframe.setAttribute('class', 'doc')
80
-
81
76
  const cts = kb.fetcher.getHeader(subject.doc(), 'content-type')
82
77
  const ct = cts ? cts[0] : null
83
78
  if (ct) {
@@ -86,6 +81,34 @@ module.exports = {
86
81
  console.log('humanReadablePane: unknown content-type?')
87
82
  }
88
83
 
84
+ // @@ When we can, use CSP to turn off scripts within the iframe
85
+ div.setAttribute('class', 'docView')
86
+ const element = ct === 'text/markdown' ? 'DIV' : 'IFRAME'
87
+ const frame = myDocument.createElement(element)
88
+ // let dataUri
89
+
90
+ // render markdown to html
91
+ const markdownHtml = function () {
92
+ kb.fetcher.webOperation('GET', subject.uri).then(response => {
93
+ const markdownText = response.responseText
94
+ const lines = Math.min(30, markdownText.split(/\n/).length + 5)
95
+ const res = marked.parse(markdownText)
96
+ // dataUri = 'data:text/html;charset=utf-8,' + encodeURIComponent(res)
97
+ // iframe.setAttribute('src', dataUri)
98
+ frame.innerHTML = res
99
+ frame.setAttribute('class', 'doc')
100
+ frame.setAttribute('style', `border: 1px solid; padding: 1em; height: ${lines}em; width: 800px; resize: both; overflow: auto;`)
101
+ })
102
+ }
103
+
104
+ if (ct === 'text/markdown') {
105
+ markdownHtml()
106
+ } else {
107
+ frame.setAttribute('src', subject.uri) // allow-same-origin
108
+ frame.setAttribute('class', 'doc')
109
+ frame.setAttribute('style', 'resize = both; height:120em; width:80em;')
110
+ }
111
+
89
112
  // @@ Note below - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF.
90
113
  // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
91
114
  // You can;'t have any sandbox and allow plugins.
@@ -94,13 +117,14 @@ module.exports = {
94
117
 
95
118
  // iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static
96
119
 
97
- iframe.setAttribute('style', 'resize = both; height: 120em; width:80em;')
98
120
  // iframe.setAttribute('height', '480')
99
121
  // iframe.setAttribute('width', '640')
100
122
  const tr = myDocument.createElement('TR')
101
- tr.appendChild(iframe)
123
+ tr.appendChild(frame)
102
124
  div.appendChild(tr)
103
125
  return div
104
126
  }
105
127
  }
128
+
129
+ export default humanReadablePane
106
130
  // ends
package/src/index.ts CHANGED
@@ -14,6 +14,7 @@
14
14
  // var UI = require('solid-ui') // Note we will add the panes register to this.
15
15
  import versionInfo from './versionInfo'
16
16
  import * as UI from 'solid-ui'
17
+ import { LiveStore } from 'solid-logic'
17
18
  import OutlineManager from './outline/manager.js'
18
19
  import registerPanes from './registerPanes.js'
19
20
  import {
@@ -21,10 +22,10 @@ import {
21
22
  paneForIcon,
22
23
  paneForPredicate,
23
24
  register,
24
- byName,
25
- LiveStore
25
+ byName
26
26
  } from 'pane-registry'
27
27
  import { createContext } from './outline/context'
28
+ import initMainPage from './mainPage'
28
29
 
29
30
  export function getOutliner (dom) {
30
31
  if (!dom.outlineManager) {
@@ -61,4 +62,4 @@ export {
61
62
  // where there are many occurrences of window and of window.document
62
63
  // But each DOM should have just one outline manager.
63
64
 
64
- export { OutlineManager, UI, versionInfo }
65
+ export { OutlineManager, UI, versionInfo, initMainPage }
@@ -0,0 +1,19 @@
1
+ import { IndexedFormula } from 'rdflib'
2
+ import { initFooter } from 'solid-ui'
3
+
4
+ /**
5
+ * links in the footer
6
+ */
7
+ const SOLID_PROJECT_URL = 'https://solidproject.org'
8
+ const SOLID_PROJECT_NAME = 'solidproject.org'
9
+
10
+ export function createFooter (store: IndexedFormula) {
11
+ initFooter(store, setFooterOptions())
12
+ }
13
+
14
+ function setFooterOptions () {
15
+ return {
16
+ solidProjectUrl: SOLID_PROJECT_URL,
17
+ solidProjectName: SOLID_PROJECT_NAME
18
+ }
19
+ }