solid-panes 4.4.0 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/RDFXMLPane.css +70 -0
- package/dist/RDFXMLPane.d.ts +13 -0
- package/dist/RDFXMLPane.d.ts.map +1 -0
- package/dist/RDFXMLPane.js +46 -5
- package/dist/dataContentPane.css +271 -0
- package/dist/dataContentPane.d.ts +14 -0
- package/dist/dataContentPane.d.ts.map +1 -0
- package/dist/dataContentPane.js +68 -101
- package/dist/defaultPane.css +97 -0
- package/dist/defaultPane.d.ts +14 -0
- package/dist/defaultPane.d.ts.map +1 -0
- package/dist/defaultPane.js +9 -2
- package/dist/form/formPane.css +120 -0
- package/dist/form/pane.d.ts +4 -0
- package/dist/form/pane.d.ts.map +1 -0
- package/dist/form/pane.js +120 -54
- package/dist/humanReadablePane.css +129 -0
- package/dist/humanReadablePane.d.ts +13 -0
- package/dist/humanReadablePane.d.ts.map +1 -0
- package/dist/humanReadablePane.js +29 -18
- package/dist/icons/signUp.svg +9 -0
- package/dist/imagePane.css +4 -0
- package/dist/imagePane.d.ts +12 -0
- package/dist/imagePane.d.ts.map +1 -0
- package/dist/imagePane.js +19 -21
- package/dist/internal/internalPane.css +14 -0
- package/dist/internal/internalPane.d.ts +1 -0
- package/dist/internal/internalPane.d.ts.map +1 -1
- package/dist/internal/internalPane.js +5 -6
- package/dist/mainPage/header.js +2 -2
- package/dist/mainPage/index.d.ts +2 -1
- package/dist/mainPage/index.d.ts.map +1 -1
- package/dist/mainPage/index.js +23 -0
- package/dist/mainPage/menu.d.ts.map +1 -1
- package/dist/mainPage/menu.js +29 -2
- package/dist/n3Pane.css +49 -0
- package/dist/n3Pane.d.ts +13 -0
- package/dist/n3Pane.d.ts.map +1 -0
- package/dist/n3Pane.js +36 -5
- package/dist/outline/manager.js +20 -1
- package/dist/pad/padPane.css +6 -2
- package/dist/pad/padPane.js +1 -1
- package/dist/registerPanes.js +8 -8
- package/dist/schedule/schedulePane.css +294 -0
- package/dist/schedule/schedulePane.d.ts +23 -0
- package/dist/schedule/schedulePane.d.ts.map +1 -0
- package/dist/schedule/schedulePane.js +161 -61
- package/dist/social/editProfileDetails.d.ts +3 -3
- package/dist/social/editProfileDetails.d.ts.map +1 -1
- package/dist/social/editProfileDetails.js +222 -127
- package/dist/social/icons.d.ts +2 -0
- package/dist/social/icons.d.ts.map +1 -1
- package/dist/social/icons.js +39 -4
- package/dist/social/socialPane.css +838 -178
- package/dist/social/socialPane.d.ts.map +1 -1
- package/dist/social/socialPane.js +136 -43
- package/dist/social/socialSections.d.ts +11 -0
- package/dist/social/socialSections.d.ts.map +1 -1
- package/dist/social/socialSections.js +138 -62
- package/dist/social/spinner.d.ts +3 -0
- package/dist/social/spinner.d.ts.map +1 -0
- package/dist/social/spinner.js +13 -0
- package/dist/social/triage.d.ts +17 -0
- package/dist/social/triage.d.ts.map +1 -0
- package/dist/social/triage.js +79 -0
- package/dist/solid-panes.js +25772 -9576
- package/dist/solid-panes.js.map +1 -1
- package/dist/solid-panes.min.js +2583 -927
- package/dist/solid-panes.min.js.map +1 -1
- package/dist/{style → styles}/tabbedtab.css +0 -157
- package/dist/styles/utilities.css +5 -0
- package/dist/versionInfo.js +14 -14
- package/package.json +26 -25
- package/dist/icons/signup.png +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalPane.d.ts","sourceRoot":"","sources":["../../src/internal/internalPane.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"internalPane.d.ts","sourceRoot":"","sources":["../../src/internal/internalPane.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,oBAAoB,CAAA;AAE3B,QAAA,MAAM,IAAI,EAAE,cAqOX,CAAA;AAiBD,eAAe,IAAI,CAAA"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _solidUi = require("solid-ui");
|
|
8
8
|
var _rdflib = require("rdflib");
|
|
9
|
+
require("./internalPane.css");
|
|
9
10
|
/* Internal Pane
|
|
10
11
|
**
|
|
11
12
|
** This outline pane contains the properties which are
|
|
@@ -31,8 +32,7 @@ const pane = {
|
|
|
31
32
|
return view && view.predicates && !!(typeof view.predicates[pred.uri] !== 'undefined');
|
|
32
33
|
}
|
|
33
34
|
const div = dom.createElement('div');
|
|
34
|
-
div.
|
|
35
|
-
div.setAttribute('style', 'background-color: #ddddff; padding: 0.5em; border-radius: 1em;');
|
|
35
|
+
div.classList.add('internalPane', 'internalPaneContent');
|
|
36
36
|
function deleteRecursive(kb, folder) {
|
|
37
37
|
const fetcher = kb.fetcher;
|
|
38
38
|
if (!fetcher) {
|
|
@@ -70,8 +70,7 @@ const pane = {
|
|
|
70
70
|
const isDocument = subject.uri && !subject.uri.includes('#');
|
|
71
71
|
if (isDocument) {
|
|
72
72
|
const controls = div.appendChild(dom.createElement('table'));
|
|
73
|
-
controls.
|
|
74
|
-
controls.style.margin = '1em';
|
|
73
|
+
controls.classList.add('internalPaneControls');
|
|
75
74
|
const controlRow = controls.appendChild(dom.createElement('tr'));
|
|
76
75
|
const deleteCell = controlRow.appendChild(dom.createElement('td'));
|
|
77
76
|
const isFolder = subject.uri && subject.uri.endsWith('/') || store.holds(subject, _solidUi.ns.rdf('type'), _solidUi.ns.ldp('Container'));
|
|
@@ -96,8 +95,8 @@ const pane = {
|
|
|
96
95
|
alert(str);
|
|
97
96
|
});
|
|
98
97
|
});
|
|
99
|
-
deleteButton.
|
|
100
|
-
deleteButton.
|
|
98
|
+
deleteButton.removeAttribute('class'); // Remove hover hide
|
|
99
|
+
deleteButton.classList.add('internalPaneDeleteButton');
|
|
101
100
|
deleteCell.appendChild(deleteButton);
|
|
102
101
|
}
|
|
103
102
|
const refreshCell = controlRow.appendChild(dom.createElement('td'));
|
package/dist/mainPage/header.js
CHANGED
|
@@ -14,7 +14,7 @@ var _person = _interopRequireDefault(require("../icons/person.svg?raw"));
|
|
|
14
14
|
var _signOut = _interopRequireDefault(require("../icons/signOut.svg?raw"));
|
|
15
15
|
var _personInCircle = _interopRequireDefault(require("../icons/personInCircle.svg?raw"));
|
|
16
16
|
var _downArrow = _interopRequireDefault(require("../icons/downArrow.svg?raw"));
|
|
17
|
-
var
|
|
17
|
+
var _signUp = _interopRequireDefault(require("../icons/signUp.svg?raw"));
|
|
18
18
|
var _iconHelper = require("../icons/iconHelper");
|
|
19
19
|
var _menu = require("./menu");
|
|
20
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -23,7 +23,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
23
23
|
*/
|
|
24
24
|
const HELP_MENU_ICON = (0, _iconHelper.createUiIcon)(_help.default, 'Help Icon', '#ffffff');
|
|
25
25
|
const LOGIN_ICON = (0, _iconHelper.createUiIcon)(_person.default, 'LogIn Icon', '#ffffff');
|
|
26
|
-
const SIGNUP_ICON =
|
|
26
|
+
const SIGNUP_ICON = (0, _iconHelper.createUiIcon)(_signUp.default, 'SignUp Icon', '#ffffff');
|
|
27
27
|
const LOGOUT_ICON = (0, _iconHelper.createUiIcon)(_signOut.default, 'LogOut Icon', '#000000');
|
|
28
28
|
const DEFAULT_AVATAR_ICON = (0, _iconHelper.createUiIcon)(_personInCircle.default, 'Default Avatar Icon', '#6A7282');
|
|
29
29
|
const DOWN_ARROW_ICON = (0, _iconHelper.createUiIcon)(_downArrow.default, 'Down Arrow Icon', '#ffffff');
|
package/dist/mainPage/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { LiveStore, NamedNode } from 'rdflib';
|
|
2
|
+
import type { RenderEnvironment } from 'pane-registry';
|
|
2
3
|
import { OutlineManager } from '../index';
|
|
3
4
|
export { refreshMenu as updateMenuLayout } from './menu';
|
|
4
5
|
export { refreshHeader } from './header';
|
|
5
|
-
export declare function initMainPage(store: LiveStore, uri?: string | NamedNode | null, environment?:
|
|
6
|
+
export declare function initMainPage(store: LiveStore, uri?: string | NamedNode | null, environment?: RenderEnvironment): Promise<[import("solid-ui/components/header").Header & {
|
|
6
7
|
__solidPanesListenersAttached?: boolean;
|
|
7
8
|
__solidPanesOutliner?: OutlineManager;
|
|
8
9
|
}, void, HTMLElement & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mainPage/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAe,cAAc,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mainPage/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAe,cAAc,EAAE,MAAM,UAAU,CAAA;AActD,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAexC,wBAAsB,YAAY,CAChC,KAAK,EAAE,SAAS,EAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAC/B,WAAW,CAAC,EAAE,iBAAiB;;;;;;;;;;IAahC;AAED,wBAAsB,SAAS,CAAE,QAAQ,EAAE,cAAc,iBAoBxD"}
|
package/dist/mainPage/index.js
CHANGED
|
@@ -26,6 +26,13 @@ var _menu = require("./menu");
|
|
|
26
26
|
** This code is called in mashlib and renders the header and footer of the Databrowser.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
+
// Symbol used to stash the last render-relevant env snapshot on the outliner
|
|
30
|
+
// so refreshUI can skip a full GotoSubject re-render when nothing changed.
|
|
31
|
+
const LAST_RENDER_ENV_KEY = '__lastRenderEnvSignature';
|
|
32
|
+
function renderEnvSignature(env) {
|
|
33
|
+
if (!env) return '';
|
|
34
|
+
return [env.layout, env.theme, env.inputMode].join('|');
|
|
35
|
+
}
|
|
29
36
|
function ensureMainContent() {
|
|
30
37
|
let main = document.getElementById('MainContent');
|
|
31
38
|
if (!main) {
|
|
@@ -41,6 +48,7 @@ function ensureMainContent() {
|
|
|
41
48
|
async function initMainPage(store, uri, environment) {
|
|
42
49
|
ensureMainContent();
|
|
43
50
|
const outliner = (0, _index.getOutliner)(document, environment);
|
|
51
|
+
outliner[LAST_RENDER_ENV_KEY] = renderEnvSignature(environment);
|
|
44
52
|
uri = uri || window.location.href;
|
|
45
53
|
const subject = typeof uri === 'string' ? store.sym(uri) : uri;
|
|
46
54
|
outliner.GotoSubject(subject, true, undefined, true, undefined);
|
|
@@ -50,6 +58,21 @@ async function initMainPage(store, uri, environment) {
|
|
|
50
58
|
return Promise.all([header, menu, footer]);
|
|
51
59
|
}
|
|
52
60
|
async function refreshUI(outliner) {
|
|
61
|
+
const store = outliner?.context?.session?.store;
|
|
62
|
+
const paneRegistry = outliner?.context?.session?.paneRegistry;
|
|
63
|
+
const subjectUri = window.document.location.href;
|
|
64
|
+
const paneName = window.history.state?.paneName;
|
|
65
|
+
const pane = paneName ? paneRegistry?.byName?.(paneName) : undefined;
|
|
66
|
+
|
|
67
|
+
// Only re-run GotoSubject (full pane re-render) when render-relevant
|
|
68
|
+
// environment fields actually changed since the last render.
|
|
69
|
+
const currentSignature = renderEnvSignature(outliner?.context?.environment);
|
|
70
|
+
const previousSignature = outliner?.[LAST_RENDER_ENV_KEY] ?? '';
|
|
71
|
+
const envChanged = currentSignature !== previousSignature;
|
|
72
|
+
if (envChanged && store && typeof outliner?.GotoSubject === 'function') {
|
|
73
|
+
outliner.GotoSubject(store.sym(subjectUri), true, pane, true, undefined);
|
|
74
|
+
outliner[LAST_RENDER_ENV_KEY] = currentSignature;
|
|
75
|
+
}
|
|
53
76
|
await (0, _header.refreshHeader)(outliner);
|
|
54
77
|
(0, _menu.refreshMenu)(outliner.context.environment?.layout === 'mobile' ? 'mobile' : 'desktop');
|
|
55
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/mainPage/menu.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAO,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/mainPage/menu.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAO,MAAM,QAAQ,CAAA;AAkQvC,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,KAAG,IAIrD,CAAA;AAqBD,eAAO,MAAM,WAAW,GAAI,QAAQ,QAAQ,GAAG,SAAS,SAmDvD,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,SAAS,SAAS,EAAE,UAAU,cAAc,kBA2IpF,CAAA"}
|
package/dist/mainPage/menu.js
CHANGED
|
@@ -50,6 +50,15 @@ const applyMenuCollapsedState = navMenu => {
|
|
|
50
50
|
updateCollapseButtonPosition(navMenu, collapseBtn);
|
|
51
51
|
};
|
|
52
52
|
const isLoggedIn = () => Boolean(_solidLogic.authSession?.info?.isLoggedIn);
|
|
53
|
+
const setFooterVisibility = loggedIn => {
|
|
54
|
+
const footer = document.querySelector('solid-ui-footer');
|
|
55
|
+
if (!footer) return;
|
|
56
|
+
footer.style.display = loggedIn ? 'none' : '';
|
|
57
|
+
};
|
|
58
|
+
const isViewingOwnProfile = subject => {
|
|
59
|
+
const currentUser = _solidLogic.authn.currentUser();
|
|
60
|
+
return Boolean(currentUser && subject && currentUser.sameTerm(subject));
|
|
61
|
+
};
|
|
53
62
|
const ensureMenuSkeleton = () => {
|
|
54
63
|
menuCollapsed = loadMenuCollapsedState();
|
|
55
64
|
const root = document.querySelector('[role="main"]') || document.body;
|
|
@@ -60,7 +69,6 @@ const ensureMenuSkeleton = () => {
|
|
|
60
69
|
navMenu.className = 'app-nav';
|
|
61
70
|
navMenu.setAttribute('aria-label', 'App navigation');
|
|
62
71
|
navMenu.hidden = true;
|
|
63
|
-
navMenu.style.display = 'none';
|
|
64
72
|
const headerEl = document.createElement('div');
|
|
65
73
|
headerEl.className = 'menu-header';
|
|
66
74
|
const closeBtn = document.createElement('button');
|
|
@@ -226,7 +234,11 @@ const updateToggleLabel = activeItem => {
|
|
|
226
234
|
const renderMenuItems = async (subject, outliner, container) => {
|
|
227
235
|
const menuItems = await getMenuItems(subject, outliner);
|
|
228
236
|
container.replaceChildren(...menuItems.map(createMenuButton));
|
|
229
|
-
|
|
237
|
+
// If the user is logged in and viewing their own profile, select "Your profile"
|
|
238
|
+
// by default. This also surfaces "Your profile" at the top of the mobile view
|
|
239
|
+
// via the menu toggle label, which mirrors the active menu item.
|
|
240
|
+
const activePane = isViewingOwnProfile(subject) ? 'profile' : container.dataset.activePaneName;
|
|
241
|
+
setActiveMenuItem(container, activePane);
|
|
230
242
|
};
|
|
231
243
|
const refreshMenu = layout => {
|
|
232
244
|
const navMenu = document.getElementById('NavMenu');
|
|
@@ -244,23 +256,33 @@ const refreshMenu = layout => {
|
|
|
244
256
|
collapseBtn.style.display = 'none';
|
|
245
257
|
overlay.hidden = true;
|
|
246
258
|
overlay.style.display = 'none';
|
|
259
|
+
setFooterVisibility(false);
|
|
247
260
|
return;
|
|
248
261
|
}
|
|
262
|
+
setFooterVisibility(true);
|
|
249
263
|
if (layout === 'mobile') {
|
|
250
264
|
navMenu.classList.add('mobile-hidden');
|
|
251
265
|
navMenu.classList.remove('mobile-visible');
|
|
252
266
|
toggle.hidden = false;
|
|
267
|
+
toggle.style.display = '';
|
|
253
268
|
collapseBtn.hidden = true;
|
|
269
|
+
collapseBtn.style.display = 'none';
|
|
254
270
|
overlay.hidden = true;
|
|
271
|
+
overlay.style.display = 'none';
|
|
255
272
|
navMenu.hidden = false;
|
|
273
|
+
navMenu.style.display = '';
|
|
256
274
|
navMenu.classList.remove('collapsed');
|
|
257
275
|
toggle.setAttribute('aria-expanded', 'false');
|
|
258
276
|
} else {
|
|
259
277
|
navMenu.classList.remove('mobile-hidden', 'mobile-visible');
|
|
260
278
|
toggle.hidden = true;
|
|
279
|
+
toggle.style.display = 'none';
|
|
261
280
|
collapseBtn.hidden = false;
|
|
281
|
+
collapseBtn.style.display = '';
|
|
262
282
|
overlay.hidden = true;
|
|
283
|
+
overlay.style.display = 'none';
|
|
263
284
|
navMenu.hidden = false;
|
|
285
|
+
navMenu.style.display = '';
|
|
264
286
|
applyMenuCollapsedState(navMenu);
|
|
265
287
|
updateCollapseButtonPosition(navMenu, collapseBtn);
|
|
266
288
|
toggle.setAttribute('aria-expanded', 'false');
|
|
@@ -277,15 +299,19 @@ const createLeftSideMenu = async (subject, outliner) => {
|
|
|
277
299
|
if (!navMenu || !menuToggle || !menuOverlay) return;
|
|
278
300
|
navMenu.classList.remove('mobile-visible');
|
|
279
301
|
navMenu.classList.add('mobile-hidden');
|
|
302
|
+
navMenu.style.display = '';
|
|
280
303
|
menuToggle.setAttribute('aria-expanded', 'false');
|
|
281
304
|
menuOverlay.hidden = true;
|
|
305
|
+
menuOverlay.style.display = 'none';
|
|
282
306
|
};
|
|
283
307
|
const openMobileMenu = () => {
|
|
284
308
|
if (!navMenu || !menuToggle || !menuOverlay) return;
|
|
285
309
|
navMenu.classList.remove('mobile-hidden');
|
|
286
310
|
navMenu.classList.add('mobile-visible');
|
|
311
|
+
navMenu.style.display = '';
|
|
287
312
|
menuToggle.setAttribute('aria-expanded', 'true');
|
|
288
313
|
menuOverlay.hidden = false;
|
|
314
|
+
menuOverlay.style.display = '';
|
|
289
315
|
};
|
|
290
316
|
const collapseBtn = document.getElementById('MenuCollapseBtn');
|
|
291
317
|
const expandDesktopMenu = () => {
|
|
@@ -338,6 +364,7 @@ const createLeftSideMenu = async (subject, outliner) => {
|
|
|
338
364
|
menuOverlay.hidden = !loggedIn;
|
|
339
365
|
menuOverlay.style.display = loggedIn ? '' : 'none';
|
|
340
366
|
}
|
|
367
|
+
setFooterVisibility(loggedIn);
|
|
341
368
|
};
|
|
342
369
|
updateMenuVisibility();
|
|
343
370
|
if (menuOverlay) {
|
package/dist/n3Pane.css
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
.n3-pane {
|
|
2
|
+
padding: 1rem;
|
|
3
|
+
border-top: solid 1px var(--color-data-pane-border-top, black);
|
|
4
|
+
border-left: solid 1px var(--color-data-pane-border-top, black);
|
|
5
|
+
border-bottom: solid 1px var(--color-data-pane-border-side, #777);
|
|
6
|
+
border-right: solid 1px var(--color-data-pane-border-side, #777);
|
|
7
|
+
color: var(--color-text-blue, #004);
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.n3-pane__source {
|
|
12
|
+
overflow-x: auto;
|
|
13
|
+
max-width: 100%;
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
font-family: monospace;
|
|
16
|
+
font-size: 120%;
|
|
17
|
+
margin: 0;
|
|
18
|
+
white-space: pre;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.n3-pane__line {
|
|
22
|
+
white-space: pre;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.n3-pane[data-layout='mobile'] .n3-pane__source {
|
|
26
|
+
overflow-wrap: anywhere;
|
|
27
|
+
word-break: break-word;
|
|
28
|
+
white-space: normal;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.n3-pane[data-layout='mobile'] .n3-pane__line {
|
|
32
|
+
white-space: pre-wrap;
|
|
33
|
+
padding-left: var(--n3-indent, 0);
|
|
34
|
+
text-indent: calc(-1 * var(--n3-indent, 0));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@media (max-width: 576px) {
|
|
38
|
+
.n3-pane__source {
|
|
39
|
+
overflow-wrap: anywhere;
|
|
40
|
+
word-break: break-word;
|
|
41
|
+
white-space: normal;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.n3-pane__line {
|
|
45
|
+
white-space: pre-wrap;
|
|
46
|
+
padding-left: var(--n3-indent, 0);
|
|
47
|
+
text-indent: calc(-1 * var(--n3-indent, 0));
|
|
48
|
+
}
|
|
49
|
+
}
|
package/dist/n3Pane.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DataBrowserContext } from 'pane-registry';
|
|
2
|
+
import type { NamedNode } from 'rdflib';
|
|
3
|
+
import './n3Pane.css';
|
|
4
|
+
type N3PaneLike = {
|
|
5
|
+
icon: string;
|
|
6
|
+
name: string;
|
|
7
|
+
audience: NamedNode[];
|
|
8
|
+
label: (subject: NamedNode, context: DataBrowserContext) => string | null;
|
|
9
|
+
render: (subject: NamedNode, context: DataBrowserContext) => HTMLDivElement;
|
|
10
|
+
};
|
|
11
|
+
export declare const n3Pane: N3PaneLike;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=n3Pane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"n3Pane.d.ts","sourceRoot":"","sources":["../src/n3Pane.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,eAAe,CAAA;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,QAAQ,CAAA;AAClD,OAAO,cAAc,CAAA;AAIrB,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,KAAK,MAAM,GAAG,IAAI,CAAA;IACzE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,KAAK,cAAc,CAAA;CAC5E,CAAA;AAsBD,eAAO,MAAM,MAAM,EAAE,UAuEpB,CAAA"}
|
package/dist/n3Pane.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.n3Pane = void 0;
|
|
7
7
|
var UI = _interopRequireWildcard(require("solid-ui"));
|
|
8
8
|
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
9
|
+
require("./n3Pane.css");
|
|
9
10
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
11
|
/* Notation3 content Pane
|
|
11
12
|
**
|
|
@@ -15,6 +16,24 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
15
16
|
*/
|
|
16
17
|
|
|
17
18
|
const ns = UI.ns;
|
|
19
|
+
function leadingIndentWidth(line) {
|
|
20
|
+
if (line.trim().length === 0) {
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
let width = 0;
|
|
24
|
+
for (const character of line) {
|
|
25
|
+
if (character === ' ') {
|
|
26
|
+
width += 1;
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (character === '\t') {
|
|
30
|
+
width += 2;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
return Math.max(width, 2);
|
|
36
|
+
}
|
|
18
37
|
const n3Pane = exports.n3Pane = {
|
|
19
38
|
icon: UI.icons.originalIconBase + 'w3c/n3_smaller.png',
|
|
20
39
|
name: 'n3',
|
|
@@ -31,8 +50,13 @@ const n3Pane = exports.n3Pane = {
|
|
|
31
50
|
render: function (subject, context) {
|
|
32
51
|
const myDocument = context.dom;
|
|
33
52
|
const kb = context.session.store;
|
|
53
|
+
function applyEnvironmentAttributes(element) {
|
|
54
|
+
const environment = context.environment ?? {};
|
|
55
|
+
element.dataset.layout = environment.layout ?? 'desktop';
|
|
56
|
+
}
|
|
34
57
|
const div = myDocument.createElement('div');
|
|
35
|
-
div.setAttribute('class', '
|
|
58
|
+
div.setAttribute('class', 'n3-pane');
|
|
59
|
+
applyEnvironmentAttributes(div);
|
|
36
60
|
// Because of smushing etc, this will not be a copy of the original source
|
|
37
61
|
// We could instead either fetch and re-parse the source,
|
|
38
62
|
// or we could keep all the pre-smushed triples.
|
|
@@ -48,10 +72,17 @@ const n3Pane = exports.n3Pane = {
|
|
|
48
72
|
sz.suggestNamespaces(kb.namespaces);
|
|
49
73
|
sz.setBase(subject.uri);
|
|
50
74
|
const str = sz.statementsToN3(sts);
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
75
|
+
const source = myDocument.createElement('div');
|
|
76
|
+
source.classList.add('n3-pane__source');
|
|
77
|
+
str.split('\n').forEach(line => {
|
|
78
|
+
const lineElement = myDocument.createElement('div');
|
|
79
|
+
const indentWidth = leadingIndentWidth(line);
|
|
80
|
+
lineElement.classList.add('n3-pane__line');
|
|
81
|
+
lineElement.style.setProperty('--n3-indent', `${indentWidth}ch`);
|
|
82
|
+
lineElement.textContent = line.length > 0 ? line : ' ';
|
|
83
|
+
source.appendChild(lineElement);
|
|
84
|
+
});
|
|
85
|
+
div.appendChild(source);
|
|
55
86
|
return div;
|
|
56
87
|
}
|
|
57
88
|
};
|
package/dist/outline/manager.js
CHANGED
|
@@ -1819,12 +1819,31 @@ function _default(context) {
|
|
|
1819
1819
|
}
|
|
1820
1820
|
if (subject.uri && !immediate && !UI.widgets.isAudio(subject) && !UI.widgets.isVideo(subject)) {
|
|
1821
1821
|
const docUri = subject.doc() && subject.doc().uri ? subject.doc().uri : '' + subject.doc();
|
|
1822
|
+
/* handle auth errors more gracefully. For now just display a friendlier message
|
|
1823
|
+
perhaps we can have a different page that gets shown in the future */
|
|
1824
|
+
const outlineAuthMessage = function (statusCode) {
|
|
1825
|
+
const isRootResource = !!(subject && subject.uri && subject.site && subject.site().uri === subject.uri);
|
|
1826
|
+
if (statusCode === 403) {
|
|
1827
|
+
return isRootResource ? 'This root resource is not accessible with your current permissions. Try logging in with an authorized account or opening a public profile document.' : 'This resource is not accessible with your current permissions.';
|
|
1828
|
+
}
|
|
1829
|
+
return isRootResource ? 'This root resource is not publicly readable. Try logging in or opening a profile document.' : 'This resource is not publicly readable. Try logging in or opening a different public resource.';
|
|
1830
|
+
};
|
|
1831
|
+
const authErrorStatus = function (detail, errObj) {
|
|
1832
|
+
const detailText = typeof detail === 'string' ? detail : String(detail || '');
|
|
1833
|
+
const statusCode = errObj?.status || errObj?.response?.status;
|
|
1834
|
+
if (statusCode === 401 || statusCode === 403) return statusCode;
|
|
1835
|
+
if (detailText.includes('status: 403') || detailText.includes('status 403')) return 403;
|
|
1836
|
+
if (detailText.includes('status: 401') || detailText.includes('status 401')) return 401;
|
|
1837
|
+
return null;
|
|
1838
|
+
};
|
|
1822
1839
|
const appendOutlineError = function (detail, errObj) {
|
|
1823
1840
|
if (p.querySelector && docUri) {
|
|
1824
1841
|
const existing = p.querySelector('[data-outline-error-for="' + docUri + '"]');
|
|
1825
1842
|
if (existing) return;
|
|
1826
1843
|
}
|
|
1827
|
-
const
|
|
1844
|
+
const statusCode = authErrorStatus(detail, errObj);
|
|
1845
|
+
const friendlyDetail = statusCode ? outlineAuthMessage(statusCode) : detail;
|
|
1846
|
+
const message = UI.widgets.errorMessageBlock(dom, friendlyDetail, '#fee', errObj instanceof Error ? errObj : undefined);
|
|
1828
1847
|
if (docUri) message.setAttribute('data-outline-error-for', docUri);
|
|
1829
1848
|
p.appendChild(message);
|
|
1830
1849
|
};
|
package/dist/pad/padPane.css
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
min-width: 94%;
|
|
4
4
|
margin-right: 3%;
|
|
5
5
|
margin-left: 3%;
|
|
6
|
-
min-height:
|
|
6
|
+
min-height: 13rem;
|
|
7
7
|
display: flex;
|
|
8
8
|
flex-direction: column;
|
|
9
9
|
box-sizing: border-box;
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.pad-controls {
|
|
24
|
-
gap: 0.
|
|
24
|
+
gap: 0.5rem;
|
|
25
25
|
align-items: center;
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
flex: 1 1 auto;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
.pad-new-instance-message {
|
|
33
|
+
font-size: 140%;
|
|
34
|
+
}
|
|
35
|
+
|
|
32
36
|
@media (max-width: 600px) {
|
|
33
37
|
.pad-controls .pad-cell {
|
|
34
38
|
flex: 1 1 100%;
|
package/dist/pad/padPane.js
CHANGED
|
@@ -299,7 +299,7 @@ const paneDef = {
|
|
|
299
299
|
// give the user links to the new app
|
|
300
300
|
|
|
301
301
|
const p = div.appendChild(dom.createElement('p'));
|
|
302
|
-
p.
|
|
302
|
+
p.classList.add('pad-new-instance-message');
|
|
303
303
|
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>';
|
|
304
304
|
});
|
|
305
305
|
agenda.shift()();
|
package/dist/registerPanes.js
CHANGED
|
@@ -17,9 +17,9 @@ var _period = _interopRequireDefault(require("./transaction/period.js"));
|
|
|
17
17
|
var _meetingPane = _interopRequireDefault(require("meeting-pane"));
|
|
18
18
|
var _tabbedPane = _interopRequireDefault(require("./tabbed/tabbedPane"));
|
|
19
19
|
var _chatPane = require("chat-pane");
|
|
20
|
-
var _schedulePane = require("./schedule/schedulePane
|
|
20
|
+
var _schedulePane = require("./schedule/schedulePane");
|
|
21
21
|
var _tripPane = _interopRequireDefault(require("./trip/tripPane.js"));
|
|
22
|
-
var _imagePane = require("./imagePane
|
|
22
|
+
var _imagePane = require("./imagePane");
|
|
23
23
|
var _playlistPane = _interopRequireDefault(require("./playlist/playlistPane.js"));
|
|
24
24
|
var _videoPane = _interopRequireDefault(require("./video/videoPane.js"));
|
|
25
25
|
var _audioPane = _interopRequireDefault(require("./audio/audioPane.js"));
|
|
@@ -28,14 +28,14 @@ var _folderPane = _interopRequireDefault(require("folder-pane"));
|
|
|
28
28
|
var _classInstancePane = require("./classInstancePane.js");
|
|
29
29
|
var _slideshowPane = require("./slideshow/slideshowPane.js");
|
|
30
30
|
var _socialPane = require("./social/socialPane");
|
|
31
|
-
var _humanReadablePane = _interopRequireDefault(require("./humanReadablePane
|
|
32
|
-
var _dataContentPane = require("./dataContentPane
|
|
31
|
+
var _humanReadablePane = _interopRequireDefault(require("./humanReadablePane"));
|
|
32
|
+
var _dataContentPane = require("./dataContentPane");
|
|
33
33
|
var _sourcePane = _interopRequireDefault(require("source-pane"));
|
|
34
|
-
var _n3Pane = require("./n3Pane
|
|
35
|
-
var _RDFXMLPane = require("./RDFXMLPane
|
|
36
|
-
var _pane2 = require("./form/pane
|
|
34
|
+
var _n3Pane = require("./n3Pane");
|
|
35
|
+
var _RDFXMLPane = require("./RDFXMLPane");
|
|
36
|
+
var _pane2 = require("./form/pane");
|
|
37
37
|
var _tableViewPane = require("./tableViewPane.js");
|
|
38
|
-
var _defaultPane = require("./defaultPane
|
|
38
|
+
var _defaultPane = require("./defaultPane");
|
|
39
39
|
var _pane3 = _interopRequireDefault(require("./ui/pane.js"));
|
|
40
40
|
var _sharingPane = _interopRequireDefault(require("./sharing/sharingPane"));
|
|
41
41
|
var _internalPane = _interopRequireDefault(require("./internal/internalPane"));
|