graphwise-reactodia 0.0.1-TR1 → 0.0.1-TR10
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 +115 -1
- package/dist/cjs/graphwise-reactodia.cjs.entry.js +27276 -41135
- package/dist/cjs/graphwise-reactodia.cjs.js +1 -1
- package/dist/cjs/index.cjs.js +7 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/graphwise-reactodia/graphwise-reactodia.js +69 -34
- package/dist/collection/components/graphwise-reactodia/i18n/language-key.js +5 -0
- package/dist/collection/components/graphwise-reactodia/i18n/translations.js +3 -1
- package/dist/collection/components/graphwise-reactodia/models/clear-diagram-storage-event.js +5 -0
- package/dist/collection/components/graphwise-reactodia/models/reactodia-config.js +1 -0
- package/dist/collection/components/graphwise-reactodia/models/subscription-list.js +35 -0
- package/dist/collection/components/graphwise-reactodia/models/subscription.js +1 -0
- package/dist/collection/components/graphwise-reactodia/models/triple.js +1 -0
- package/dist/collection/components/graphwise-reactodia/providers/service/service-inject.js +15 -0
- package/dist/collection/components/graphwise-reactodia/providers/service/service.js +19 -0
- package/dist/collection/components/graphwise-reactodia/providers/service/service.provider.js +20 -0
- package/dist/collection/components/graphwise-reactodia/reactodia-app.js +107 -17
- package/dist/collection/components/graphwise-reactodia/services/diagram/diagram.service.js +54 -0
- package/dist/collection/components/graphwise-reactodia/services/diagram-storage/diagram-storage.service.js +55 -0
- package/dist/collection/components/graphwise-reactodia/services/event/event.service.js +35 -0
- package/dist/collection/components/graphwise-reactodia/services/window/window.service.js +24 -0
- package/dist/collection/components/graphwise-reactodia/styles/type-style.resolver.js +53 -0
- package/dist/collection/components/graphwise-reactodia/testing/storage.mock.js +35 -0
- package/dist/collection/index.js +1 -1
- package/dist/collection/pages/graphwise-reactodia/main.js +50 -0
- package/dist/esm/graphwise-reactodia.entry.js +27273 -41132
- package/dist/esm/graphwise-reactodia.js +1 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/loader.js +1 -1
- package/dist/graphwise-reactodia/graphwise-reactodia.esm.js +1 -1
- package/dist/graphwise-reactodia/index.esm.js +1 -0
- package/dist/graphwise-reactodia/p-b56c58a0.entry.js +1 -0
- package/dist/types/components/graphwise-reactodia/graphwise-reactodia.d.ts +25 -12
- package/dist/types/components/graphwise-reactodia/i18n/language-key.d.ts +4 -0
- package/dist/types/components/graphwise-reactodia/i18n/translations.d.ts +2 -343
- package/dist/types/components/graphwise-reactodia/models/clear-diagram-storage-event.d.ts +5 -0
- package/dist/types/components/graphwise-reactodia/models/reactodia-app-props.d.ts +15 -14
- package/dist/types/components/graphwise-reactodia/models/reactodia-config.d.ts +31 -0
- package/dist/types/components/graphwise-reactodia/models/subscription-list.d.ts +26 -0
- package/dist/types/components/graphwise-reactodia/models/subscription.d.ts +4 -0
- package/dist/types/components/graphwise-reactodia/models/triple.d.ts +19 -0
- package/dist/types/components/graphwise-reactodia/providers/service/service-inject.d.ts +13 -0
- package/dist/types/components/graphwise-reactodia/providers/service/service.d.ts +28 -0
- package/dist/types/components/graphwise-reactodia/providers/service/service.provider.d.ts +16 -0
- package/dist/types/components/graphwise-reactodia/services/diagram/diagram.service.d.ts +26 -0
- package/dist/types/components/graphwise-reactodia/services/diagram-storage/diagram-storage.service.d.ts +26 -0
- package/dist/types/components/graphwise-reactodia/services/event/event.service.d.ts +14 -0
- package/dist/types/components/graphwise-reactodia/services/window/window.service.d.ts +7 -0
- package/dist/types/components/graphwise-reactodia/styles/type-style.resolver.d.ts +11 -0
- package/dist/types/components/graphwise-reactodia/testing/storage.mock.d.ts +18 -0
- package/dist/types/components.d.ts +37 -25
- package/dist/types/index.d.ts +1 -1
- package/package.json +31 -8
- package/dist/graphwise-reactodia/p-bafd6be5.entry.js +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
import { Service } from "../../providers/service/service";
|
|
12
|
+
import { CLEAR_DIAGRAM_STORAGE_EVENT } from "../../models/clear-diagram-storage-event";
|
|
13
|
+
import { service } from "../../providers/service/service-inject";
|
|
14
|
+
import { WindowService } from "../window/window.service";
|
|
15
|
+
/**
|
|
16
|
+
* Service for event based operations
|
|
17
|
+
*/
|
|
18
|
+
let EventService = class EventService {
|
|
19
|
+
/**
|
|
20
|
+
* Subscribes to the host's "clear persisted diagram" command.
|
|
21
|
+
*
|
|
22
|
+
* @param onClear Called whenever the event fires.
|
|
23
|
+
* @returns A {@link Subscription} that, when called, removes the listener.
|
|
24
|
+
*/
|
|
25
|
+
subscribeToClearDiagramStorage(onClear) {
|
|
26
|
+
const target = service(WindowService).getWindow();
|
|
27
|
+
target.addEventListener(CLEAR_DIAGRAM_STORAGE_EVENT, onClear);
|
|
28
|
+
return () => target.removeEventListener(CLEAR_DIAGRAM_STORAGE_EVENT, onClear);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
EventService.ID = 'EventService';
|
|
32
|
+
EventService = __decorate([
|
|
33
|
+
Service
|
|
34
|
+
], EventService);
|
|
35
|
+
export { EventService };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
import { Service } from "../../providers/service/service";
|
|
12
|
+
/**
|
|
13
|
+
* Service that provides access to browser window-related functionality.
|
|
14
|
+
*/
|
|
15
|
+
let WindowService = class WindowService {
|
|
16
|
+
getWindow() {
|
|
17
|
+
return window;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
WindowService.ID = 'WindowService';
|
|
21
|
+
WindowService = __decorate([
|
|
22
|
+
Service
|
|
23
|
+
], WindowService);
|
|
24
|
+
export { WindowService };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
const NODE_COLOR_VARIABLES = [
|
|
2
|
+
'--gw-foreground-visual-diagram-categorical-01',
|
|
3
|
+
'--gw-foreground-visual-diagram-categorical-02',
|
|
4
|
+
'--gw-foreground-visual-diagram-categorical-03',
|
|
5
|
+
'--gw-foreground-visual-diagram-categorical-04',
|
|
6
|
+
'--gw-foreground-visual-diagram-categorical-05',
|
|
7
|
+
'--gw-foreground-visual-diagram-categorical-06',
|
|
8
|
+
'--gw-foreground-visual-diagram-categorical-07',
|
|
9
|
+
'--gw-foreground-visual-diagram-categorical-08',
|
|
10
|
+
'--gw-foreground-visual-diagram-categorical-09',
|
|
11
|
+
'--gw-foreground-visual-diagram-categorical-10',
|
|
12
|
+
'--gw-foreground-visual-diagram-categorical-11',
|
|
13
|
+
'--gw-foreground-visual-diagram-categorical-12',
|
|
14
|
+
'--gw-foreground-visual-diagram-categorical-13',
|
|
15
|
+
'--gw-foreground-visual-diagram-categorical-14',
|
|
16
|
+
'--gw-foreground-visual-diagram-categorical-15',
|
|
17
|
+
'--gw-foreground-visual-diagram-categorical-16',
|
|
18
|
+
'--gw-foreground-visual-diagram-categorical-17',
|
|
19
|
+
'--gw-foreground-visual-diagram-categorical-18',
|
|
20
|
+
'--gw-foreground-visual-diagram-categorical-19',
|
|
21
|
+
'--gw-foreground-visual-diagram-categorical-20'
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Color slot assigned to each type, in the order the types are first seen.
|
|
25
|
+
*/
|
|
26
|
+
const typeToIndex = new Map();
|
|
27
|
+
function getColor(variable) {
|
|
28
|
+
return getComputedStyle(document.documentElement).getPropertyValue(variable).trim();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Colors an element by its type: each type takes the next color from the palette, which wraps
|
|
32
|
+
* around once it runs out
|
|
33
|
+
*
|
|
34
|
+
* Returns `undefined` for elements without a type (placeholders and other non-entity elements) and
|
|
35
|
+
* when the host does not define the palette, leaving Reactodia to fall back to its own hash-based
|
|
36
|
+
* colors.
|
|
37
|
+
*/
|
|
38
|
+
export const resolveTypeStyle = (types) => {
|
|
39
|
+
const type = types[0];
|
|
40
|
+
if (!type) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
let index = typeToIndex.get(type);
|
|
44
|
+
if (index === undefined) {
|
|
45
|
+
index = typeToIndex.size;
|
|
46
|
+
typeToIndex.set(type, index);
|
|
47
|
+
}
|
|
48
|
+
const color = getColor(NODE_COLOR_VARIABLES[index % NODE_COLOR_VARIABLES.length]);
|
|
49
|
+
return color ? { color } : undefined;
|
|
50
|
+
};
|
|
51
|
+
export const resetColors = () => {
|
|
52
|
+
typeToIndex.clear();
|
|
53
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal in-memory {@link Storage}, so services that read `localStorage` can be exercised
|
|
3
|
+
* without a real browser store and asserted against directly. Shared across test suites.
|
|
4
|
+
*/
|
|
5
|
+
export class StorageMock {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.store = new Map();
|
|
8
|
+
}
|
|
9
|
+
get length() {
|
|
10
|
+
return this.store.size;
|
|
11
|
+
}
|
|
12
|
+
clear() {
|
|
13
|
+
this.store.clear();
|
|
14
|
+
}
|
|
15
|
+
getItem(key) {
|
|
16
|
+
return this.store.has(key) ? this.store.get(key) : null;
|
|
17
|
+
}
|
|
18
|
+
key(index) {
|
|
19
|
+
var _a;
|
|
20
|
+
return (_a = Array.from(this.store.keys())[index]) !== null && _a !== void 0 ? _a : null;
|
|
21
|
+
}
|
|
22
|
+
removeItem(key) {
|
|
23
|
+
this.store.delete(key);
|
|
24
|
+
}
|
|
25
|
+
setItem(key, value) {
|
|
26
|
+
this.store.set(key, value);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a fresh {@link StorageMock}. Suites install the returned instance as the global
|
|
31
|
+
* `localStorage` themselves.
|
|
32
|
+
*/
|
|
33
|
+
export function createStorageMock() {
|
|
34
|
+
return new StorageMock();
|
|
35
|
+
}
|
package/dist/collection/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { CLEAR_DIAGRAM_STORAGE_EVENT } from './components/graphwise-reactodia/models/clear-diagram-storage-event';
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// There is no SPARQL endpoint behind the dev server, so every query is answered with an empty
|
|
2
|
+
// result. The shape has to match what the provider asks for: SELECT/ASK queries are parsed with
|
|
3
|
+
// `response.json()` and would blow up on an empty body, CONSTRUCT/DESCRIBE queries are parsed as
|
|
4
|
+
// turtle, where an empty body is a valid (empty) graph.
|
|
5
|
+
async function stubQueryFunction(params) {
|
|
6
|
+
const accept = params.headers?.['Accept'] ?? '';
|
|
7
|
+
if (accept.includes('sparql-results+json')) {
|
|
8
|
+
const body = JSON.stringify({head: {vars: []}, results: {bindings: []}, boolean: false});
|
|
9
|
+
return new Response(body, {headers: {'Content-Type': 'application/sparql-results+json'}});
|
|
10
|
+
}
|
|
11
|
+
return new Response('', {headers: {'Content-Type': 'text/turtle'}});
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const SEED_NODES = ['http://example.com/alice', 'http://example.com/bob'];
|
|
15
|
+
|
|
16
|
+
const SEED_GRAPH = [
|
|
17
|
+
{
|
|
18
|
+
source: 'http://example.com/alice',
|
|
19
|
+
target: 'http://example.com/bob',
|
|
20
|
+
rawPredicates: ['http://example.com/knows'],
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const reactodia = document.querySelector('graphwise-reactodia');
|
|
25
|
+
|
|
26
|
+
function setQueryFunction() {
|
|
27
|
+
reactodia.config = {...reactodia.config, queryFunction: stubQueryFunction};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function setSeed() {
|
|
31
|
+
reactodia.config = {...reactodia.config, seedIris: SEED_NODES};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function setSeedGraph() {
|
|
35
|
+
reactodia.config = {...reactodia.config, seedGraph: SEED_GRAPH};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function setRepository(repository) {
|
|
39
|
+
reactodia.currentRepository = repository;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function setLanguage(language) {
|
|
43
|
+
reactodia.language = language;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// The host asks the component to drop its persisted diagram by dispatching a namespaced window
|
|
47
|
+
// event, rather than holding an element reference and calling a method on it.
|
|
48
|
+
function clearDiagramStorage() {
|
|
49
|
+
window.dispatchEvent(new Event('graphwise-reactodia:clear-diagram-storage'));
|
|
50
|
+
}
|