@ratiosolver/coco 0.0.92 → 0.1.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/dist/coco.d.ts +122 -0
- package/dist/coco.js +180 -0
- package/dist/coco.js.map +1 -0
- package/dist/components/app.d.ts +3 -0
- package/dist/components/app.js +48 -0
- package/dist/components/app.js.map +1 -0
- package/dist/components/class.d.ts +5 -0
- package/dist/components/class.js +80 -0
- package/dist/components/class.js.map +1 -0
- package/dist/components/object.d.ts +5 -0
- package/dist/components/object.js +91 -0
- package/dist/components/object.js.map +1 -0
- package/dist/components/offcanvas.d.ts +3 -0
- package/dist/components/offcanvas.js +16 -0
- package/dist/components/offcanvas.js.map +1 -0
- package/dist/components/rule.d.ts +4 -0
- package/dist/components/rule.js +22 -0
- package/dist/components/rule.js.map +1 -0
- package/dist/favicon.ico +0 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +7 -14
- package/dist/index.js +7 -27
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +29 -20
- package/README.md +0 -3
- package/dist/coco/coco.d.ts +0 -303
- package/dist/coco/coco.js +0 -564
- package/dist/coco/coco.js.map +0 -1
- package/dist/coco/components/chart.d.ts +0 -31
- package/dist/coco/components/chart.js +0 -301
- package/dist/coco/components/chart.js.map +0 -1
- package/dist/coco/components/item.d.ts +0 -17
- package/dist/coco/components/item.js +0 -72
- package/dist/coco/components/item.js.map +0 -1
- package/dist/coco/components/item_chart.d.ts +0 -16
- package/dist/coco/components/item_chart.js +0 -92
- package/dist/coco/components/item_chart.js.map +0 -1
- package/dist/coco/components/item_properties.d.ts +0 -12
- package/dist/coco/components/item_properties.js +0 -65
- package/dist/coco/components/item_properties.js.map +0 -1
- package/dist/coco/components/item_publisher.d.ts +0 -16
- package/dist/coco/components/item_publisher.js +0 -159
- package/dist/coco/components/item_publisher.js.map +0 -1
- package/dist/coco/components/item_types.d.ts +0 -13
- package/dist/coco/components/item_types.js +0 -48
- package/dist/coco/components/item_types.js.map +0 -1
- package/dist/coco/components/items_table.d.ts +0 -17
- package/dist/coco/components/items_table.js +0 -98
- package/dist/coco/components/items_table.js.map +0 -1
- package/dist/coco/components/map.d.ts +0 -200
- package/dist/coco/components/map.js +0 -483
- package/dist/coco/components/map.js.map +0 -1
- package/dist/coco/components/offcanvas.d.ts +0 -6
- package/dist/coco/components/offcanvas.js +0 -42
- package/dist/coco/components/offcanvas.js.map +0 -1
- package/dist/coco/components/publisher.d.ts +0 -22
- package/dist/coco/components/publisher.js +0 -339
- package/dist/coco/components/publisher.js.map +0 -1
- package/dist/coco/components/taxonomy.d.ts +0 -25
- package/dist/coco/components/taxonomy.js +0 -184
- package/dist/coco/components/taxonomy.js.map +0 -1
- package/dist/coco/components/type.d.ts +0 -32
- package/dist/coco/components/type.js +0 -151
- package/dist/coco/components/type.js.map +0 -1
- package/dist/coco/rules.d.ts +0 -30
- package/dist/coco/rules.js +0 -36
- package/dist/coco/rules.js.map +0 -1
package/dist/coco.d.ts
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
export interface CoCoOptions {
|
|
2
|
+
url?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare namespace coco {
|
|
5
|
+
export class CoCo {
|
|
6
|
+
private readonly options;
|
|
7
|
+
private readonly classes;
|
|
8
|
+
private readonly objects;
|
|
9
|
+
private readonly rules;
|
|
10
|
+
private socket;
|
|
11
|
+
private readonly listeners;
|
|
12
|
+
constructor(options?: CoCoOptions);
|
|
13
|
+
connect(): void;
|
|
14
|
+
get_classes(): ReadonlyMap<string, CoCoClass>;
|
|
15
|
+
get_class(name: string): CoCoClass;
|
|
16
|
+
get_objects(): ReadonlyMap<string, CoCoObject>;
|
|
17
|
+
get_object(id: string): CoCoObject;
|
|
18
|
+
get_rules(): ReadonlyMap<string, CoCoRule>;
|
|
19
|
+
get_rule(name: string): CoCoRule;
|
|
20
|
+
add_listener(listener: CoCoListener): void;
|
|
21
|
+
remove_listener(listener: CoCoListener): void;
|
|
22
|
+
}
|
|
23
|
+
export class CoCoClass {
|
|
24
|
+
private readonly coco;
|
|
25
|
+
private readonly name;
|
|
26
|
+
private readonly parents;
|
|
27
|
+
private readonly static_properties;
|
|
28
|
+
private readonly dynamic_properties;
|
|
29
|
+
private readonly instances;
|
|
30
|
+
private readonly listeners;
|
|
31
|
+
constructor(coco: CoCo, name: string, parents?: Set<string>, static_properties?: Map<string, Property>, dynamic_properties?: Map<string, Property>);
|
|
32
|
+
get_coco(): CoCo;
|
|
33
|
+
get_name(): string;
|
|
34
|
+
get_parents(): ReadonlySet<string>;
|
|
35
|
+
get_static_properties(): ReadonlyMap<string, Property>;
|
|
36
|
+
get_dynamic_properties(): ReadonlyMap<string, Property>;
|
|
37
|
+
get_instances(): ReadonlySet<CoCoObject>;
|
|
38
|
+
_add_instance(obj: CoCoObject): void;
|
|
39
|
+
add_listener(listener: CoCoClassListener): void;
|
|
40
|
+
remove_listener(listener: CoCoClassListener): void;
|
|
41
|
+
}
|
|
42
|
+
export class CoCoObject {
|
|
43
|
+
private readonly coco;
|
|
44
|
+
private readonly id;
|
|
45
|
+
private readonly classes;
|
|
46
|
+
private readonly properties?;
|
|
47
|
+
private readonly values?;
|
|
48
|
+
private readonly listeners;
|
|
49
|
+
constructor(coco: CoCo, id: string, classes: Set<CoCoClass>, properties?: Record<string, Value>, values?: Record<string, TimeValue>);
|
|
50
|
+
get_coco(): CoCo;
|
|
51
|
+
get_id(): string;
|
|
52
|
+
get_classes(): ReadonlySet<CoCoClass>;
|
|
53
|
+
_add_class(cls: CoCoClass): void;
|
|
54
|
+
get_properties(): Record<string, Value> | undefined;
|
|
55
|
+
_set_properties(properties: Record<string, Value>): void;
|
|
56
|
+
get_values(): Record<string, TimeValue> | undefined;
|
|
57
|
+
_set_values(values: Record<string, Value>, date_time: string): void;
|
|
58
|
+
add_listener(listener: CoCoObjectListener): void;
|
|
59
|
+
remove_listener(listener: CoCoObjectListener): void;
|
|
60
|
+
}
|
|
61
|
+
export class CoCoRule {
|
|
62
|
+
private readonly coco;
|
|
63
|
+
private readonly name;
|
|
64
|
+
private readonly content;
|
|
65
|
+
constructor(coco: CoCo, name: string, content: string);
|
|
66
|
+
get_coco(): CoCo;
|
|
67
|
+
get_name(): string;
|
|
68
|
+
get_content(): string;
|
|
69
|
+
}
|
|
70
|
+
export interface CoCoListener {
|
|
71
|
+
connected(): void;
|
|
72
|
+
disconnected(): void;
|
|
73
|
+
connection_error(error: Event): void;
|
|
74
|
+
initialized(): void;
|
|
75
|
+
created_class(cls: CoCoClass): void;
|
|
76
|
+
created_object(obj: CoCoObject): void;
|
|
77
|
+
created_rule(rule: CoCoRule): void;
|
|
78
|
+
}
|
|
79
|
+
export interface CoCoClassListener {
|
|
80
|
+
instance_added(obj: CoCoObject): void;
|
|
81
|
+
}
|
|
82
|
+
export interface CoCoObjectListener {
|
|
83
|
+
class_added(cls: CoCoClass): void;
|
|
84
|
+
properties_updated(properties: Record<string, Value>): void;
|
|
85
|
+
values_added(values: Record<string, Value>, date_time: string): void;
|
|
86
|
+
}
|
|
87
|
+
export type Value = null | boolean | number | string;
|
|
88
|
+
type TimeValue = [Value, string];
|
|
89
|
+
export function value_to_string(value: Value): string;
|
|
90
|
+
type Property = {
|
|
91
|
+
type: 'bool';
|
|
92
|
+
nullable?: boolean;
|
|
93
|
+
default?: boolean;
|
|
94
|
+
} | {
|
|
95
|
+
type: 'int';
|
|
96
|
+
nullable?: boolean;
|
|
97
|
+
default?: number;
|
|
98
|
+
min?: number;
|
|
99
|
+
max?: number;
|
|
100
|
+
} | {
|
|
101
|
+
type: 'float';
|
|
102
|
+
nullable?: boolean;
|
|
103
|
+
default?: number;
|
|
104
|
+
min?: number;
|
|
105
|
+
max?: number;
|
|
106
|
+
} | {
|
|
107
|
+
type: 'string';
|
|
108
|
+
nullable?: boolean;
|
|
109
|
+
default?: string;
|
|
110
|
+
} | {
|
|
111
|
+
type: 'symbol';
|
|
112
|
+
nullable?: boolean;
|
|
113
|
+
default?: string;
|
|
114
|
+
allowed_values?: string[];
|
|
115
|
+
} | {
|
|
116
|
+
type: 'object';
|
|
117
|
+
nullable?: boolean;
|
|
118
|
+
default?: string;
|
|
119
|
+
class: string;
|
|
120
|
+
};
|
|
121
|
+
export {};
|
|
122
|
+
}
|
package/dist/coco.js
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
export var coco;
|
|
2
|
+
(function (coco_1) {
|
|
3
|
+
class CoCo {
|
|
4
|
+
constructor(options = {}) {
|
|
5
|
+
this.classes = new Map();
|
|
6
|
+
this.objects = new Map();
|
|
7
|
+
this.rules = new Map();
|
|
8
|
+
this.socket = null;
|
|
9
|
+
this.listeners = new Set();
|
|
10
|
+
this.options = Object.assign({ url: 'ws://' + window.location.host + '/ws' }, options);
|
|
11
|
+
}
|
|
12
|
+
connect() {
|
|
13
|
+
if (this.socket)
|
|
14
|
+
this.socket.close();
|
|
15
|
+
console.log('Connecting to CoCo at', this.options.url);
|
|
16
|
+
this.socket = new WebSocket(this.options.url);
|
|
17
|
+
this.socket.onopen = () => {
|
|
18
|
+
console.log('CoCo connected');
|
|
19
|
+
for (const listener of this.listeners)
|
|
20
|
+
listener.connected();
|
|
21
|
+
};
|
|
22
|
+
this.socket.onclose = () => {
|
|
23
|
+
console.log('CoCo disconnected');
|
|
24
|
+
for (const listener of this.listeners)
|
|
25
|
+
listener.disconnected();
|
|
26
|
+
};
|
|
27
|
+
this.socket.onerror = (error) => {
|
|
28
|
+
console.error('CoCo connection error', error);
|
|
29
|
+
for (const listener of this.listeners)
|
|
30
|
+
listener.connection_error(error);
|
|
31
|
+
};
|
|
32
|
+
this.socket.onmessage = (event) => {
|
|
33
|
+
console.trace('CoCo message received:', event.data);
|
|
34
|
+
const msg = JSON.parse(event.data);
|
|
35
|
+
switch (msg.msg_type) {
|
|
36
|
+
case 'coco': {
|
|
37
|
+
for (const [name, cls] of Object.entries(msg.classes))
|
|
38
|
+
this.classes.set(name, new CoCoClass(this, name, new Set(cls.parents || []), new Map(Object.entries(cls.static_properties || {})), new Map(Object.entries(cls.dynamic_properties || {}))));
|
|
39
|
+
if (msg.objects)
|
|
40
|
+
for (const [id, obj] of Object.entries(msg.objects))
|
|
41
|
+
this.objects.set(id, new CoCoObject(this, id, new Set(obj.classes.map(cls_name => this.get_class(cls_name))), obj.properties, obj.values));
|
|
42
|
+
for (const listener of this.listeners)
|
|
43
|
+
listener.initialized();
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
case 'class_created': {
|
|
47
|
+
const cls = new CoCoClass(this, msg.name, new Set(msg.parents || []), new Map(Object.entries(msg.static_properties || {})), new Map(Object.entries(msg.dynamic_properties || {})));
|
|
48
|
+
this.classes.set(cls.get_name(), cls);
|
|
49
|
+
for (const listener of this.listeners)
|
|
50
|
+
listener.created_class(cls);
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
case 'object_created': {
|
|
54
|
+
const obj = new CoCoObject(this, msg.id, new Set(msg.classes.map(cls_name => this.get_class(cls_name))), msg.properties, msg.values);
|
|
55
|
+
this.objects.set(obj.get_id(), obj);
|
|
56
|
+
for (const listener of this.listeners)
|
|
57
|
+
listener.created_object(obj);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case 'added_class': {
|
|
61
|
+
const obj = this.get_object(msg.object_id);
|
|
62
|
+
const cls = this.get_class(msg.class_name);
|
|
63
|
+
obj._add_class(cls);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case 'updated_properties': {
|
|
67
|
+
const obj = this.get_object(msg.object_id);
|
|
68
|
+
obj._set_properties(msg.properties);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case 'added_values': {
|
|
72
|
+
const obj = this.get_object(msg.object_id);
|
|
73
|
+
obj._set_values(msg.values, msg.date_time);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case 'rule_created': {
|
|
77
|
+
const rule = new CoCoRule(this, msg.name, msg.content);
|
|
78
|
+
this.rules.set(rule.get_name(), rule);
|
|
79
|
+
for (const listener of this.listeners)
|
|
80
|
+
listener.created_rule(rule);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
get_classes() { return this.classes; }
|
|
87
|
+
get_class(name) { return this.classes.get(name); }
|
|
88
|
+
get_objects() { return this.objects; }
|
|
89
|
+
get_object(id) { return this.objects.get(id); }
|
|
90
|
+
get_rules() { return this.rules; }
|
|
91
|
+
get_rule(name) { return this.rules.get(name); }
|
|
92
|
+
add_listener(listener) { this.listeners.add(listener); }
|
|
93
|
+
remove_listener(listener) { this.listeners.delete(listener); }
|
|
94
|
+
}
|
|
95
|
+
coco_1.CoCo = CoCo;
|
|
96
|
+
class CoCoClass {
|
|
97
|
+
constructor(coco, name, parents = new Set(), static_properties = new Map(), dynamic_properties = new Map()) {
|
|
98
|
+
this.instances = new Set();
|
|
99
|
+
this.listeners = new Set();
|
|
100
|
+
this.coco = coco;
|
|
101
|
+
this.name = name;
|
|
102
|
+
this.parents = parents;
|
|
103
|
+
this.static_properties = static_properties;
|
|
104
|
+
this.dynamic_properties = dynamic_properties;
|
|
105
|
+
}
|
|
106
|
+
get_coco() { return this.coco; }
|
|
107
|
+
get_name() { return this.name; }
|
|
108
|
+
get_parents() { return this.parents; }
|
|
109
|
+
get_static_properties() { return this.static_properties; }
|
|
110
|
+
get_dynamic_properties() { return this.dynamic_properties; }
|
|
111
|
+
get_instances() { return this.instances; }
|
|
112
|
+
_add_instance(obj) {
|
|
113
|
+
this.instances.add(obj);
|
|
114
|
+
for (const listener of this.listeners)
|
|
115
|
+
listener.instance_added(obj);
|
|
116
|
+
}
|
|
117
|
+
add_listener(listener) { this.listeners.add(listener); }
|
|
118
|
+
remove_listener(listener) { this.listeners.delete(listener); }
|
|
119
|
+
}
|
|
120
|
+
coco_1.CoCoClass = CoCoClass;
|
|
121
|
+
class CoCoObject {
|
|
122
|
+
constructor(coco, id, classes, properties, values) {
|
|
123
|
+
this.listeners = new Set();
|
|
124
|
+
this.coco = coco;
|
|
125
|
+
this.id = id;
|
|
126
|
+
this.classes = classes;
|
|
127
|
+
this.properties = properties;
|
|
128
|
+
this.values = values;
|
|
129
|
+
for (const cls of classes)
|
|
130
|
+
cls._add_instance(this);
|
|
131
|
+
}
|
|
132
|
+
get_coco() { return this.coco; }
|
|
133
|
+
get_id() { return this.id; }
|
|
134
|
+
get_classes() { return this.classes; }
|
|
135
|
+
_add_class(cls) {
|
|
136
|
+
this.classes.add(cls);
|
|
137
|
+
cls._add_instance(this);
|
|
138
|
+
for (const listener of this.listeners)
|
|
139
|
+
listener.class_added(cls);
|
|
140
|
+
}
|
|
141
|
+
get_properties() { return this.properties; }
|
|
142
|
+
_set_properties(properties) {
|
|
143
|
+
for (const [key, value] of Object.entries(properties))
|
|
144
|
+
this.properties[key] = value;
|
|
145
|
+
for (const listener of this.listeners)
|
|
146
|
+
listener.properties_updated(properties);
|
|
147
|
+
}
|
|
148
|
+
get_values() { return this.values; }
|
|
149
|
+
_set_values(values, date_time) {
|
|
150
|
+
for (const [key, value] of Object.entries(values))
|
|
151
|
+
this.values[key] = [value, date_time];
|
|
152
|
+
for (const listener of this.listeners)
|
|
153
|
+
listener.values_added(values, date_time);
|
|
154
|
+
}
|
|
155
|
+
add_listener(listener) { this.listeners.add(listener); }
|
|
156
|
+
remove_listener(listener) { this.listeners.delete(listener); }
|
|
157
|
+
}
|
|
158
|
+
coco_1.CoCoObject = CoCoObject;
|
|
159
|
+
class CoCoRule {
|
|
160
|
+
constructor(coco, name, content) {
|
|
161
|
+
this.coco = coco;
|
|
162
|
+
this.name = name;
|
|
163
|
+
this.content = content;
|
|
164
|
+
}
|
|
165
|
+
get_coco() { return this.coco; }
|
|
166
|
+
get_name() { return this.name; }
|
|
167
|
+
get_content() { return this.content; }
|
|
168
|
+
}
|
|
169
|
+
coco_1.CoCoRule = CoCoRule;
|
|
170
|
+
function value_to_string(value) {
|
|
171
|
+
switch (typeof value) {
|
|
172
|
+
case 'string': return value;
|
|
173
|
+
case 'number': return value.toString();
|
|
174
|
+
case 'boolean': return value ? 'true' : 'false';
|
|
175
|
+
default: return '';
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
coco_1.value_to_string = value_to_string;
|
|
179
|
+
})(coco || (coco = {}));
|
|
180
|
+
//# sourceMappingURL=coco.js.map
|
package/dist/coco.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coco.js","sourceRoot":"","sources":["../src/coco.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { h } from "snabbdom";
|
|
2
|
+
import { App, flick, Navbar, OffcanvasBrand } from "@ratiosolver/flick";
|
|
3
|
+
import { CoCoOffcanvas } from "./offcanvas";
|
|
4
|
+
const app_listener = {
|
|
5
|
+
initialized: () => flick.redraw(),
|
|
6
|
+
created_class: (_cls) => flick.redraw(),
|
|
7
|
+
created_object: (_obj) => flick.redraw(),
|
|
8
|
+
created_rule: (_rule) => flick.redraw(),
|
|
9
|
+
connection_error: (error) => console.error('CoCo connection error', error),
|
|
10
|
+
connected: () => { },
|
|
11
|
+
disconnected: () => { },
|
|
12
|
+
};
|
|
13
|
+
flick.ctx.current_page = h('div.container.mt-5', [
|
|
14
|
+
h('div.text-center.mb-5', [
|
|
15
|
+
h('h1.display-4', 'CoCo'),
|
|
16
|
+
h('p.lead', 'Combined Deduction and Abduction Reasoner'),
|
|
17
|
+
]),
|
|
18
|
+
h('div.row.justify-content-center', [
|
|
19
|
+
h('div.col-lg-8', [
|
|
20
|
+
h('p', 'CoCo is a dual-process inspired cognitive architecture built in Rust. It integrates a rule-based expert system and a timeline-based planner to invoke deductive and abductive reasoning in dynamic environments.'),
|
|
21
|
+
h('hr.my-4'),
|
|
22
|
+
h('h4', 'Features'),
|
|
23
|
+
h('ul.list-group.list-group-flush', [
|
|
24
|
+
h('li.list-group-item', [h('strong', 'Hybrid Reasoning'), ': Unites deductive logic with abductive inference.']),
|
|
25
|
+
h('li.list-group-item', [h('strong', 'Rust Core'), ': Designed for performance, memory safety, and concurrency.']),
|
|
26
|
+
h('li.list-group-item', [h('strong', 'CLIPS Integration'), ': Seamless binding with the C-based CLIPS expert system.']),
|
|
27
|
+
h('li.list-group-item', [h('strong', 'Web Interface'), ': Includes a web server (Axum) and visualization tools.']),
|
|
28
|
+
])
|
|
29
|
+
])
|
|
30
|
+
])
|
|
31
|
+
]);
|
|
32
|
+
export function CoCoApp(coco) {
|
|
33
|
+
const content = h('div', {
|
|
34
|
+
hook: {
|
|
35
|
+
insert: () => {
|
|
36
|
+
coco.add_listener(app_listener);
|
|
37
|
+
},
|
|
38
|
+
destroy: () => {
|
|
39
|
+
coco.remove_listener(app_listener);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}, [
|
|
43
|
+
flick.ctx.current_page(),
|
|
44
|
+
CoCoOffcanvas(coco)
|
|
45
|
+
]);
|
|
46
|
+
return App(Navbar(OffcanvasBrand('CoCo')), content);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/components/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,YAAY,GAAG;IACnB,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;IACjC,aAAa,EAAE,CAAC,IAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;IACvD,cAAc,EAAE,CAAC,IAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;IACzD,YAAY,EAAE,CAAC,KAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;IACtD,gBAAgB,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;IACjF,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;CACxB,CAAC;AAEF,KAAK,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,oBAAoB,EAAE;IAC/C,CAAC,CAAC,sBAAsB,EAAE;QACxB,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC;QACzB,CAAC,CAAC,QAAQ,EAAE,2CAA2C,CAAC;KACzD,CAAC;IACF,CAAC,CAAC,gCAAgC,EAAE;QAClC,CAAC,CAAC,cAAc,EAAE;YAChB,CAAC,CAAC,GAAG,EAAE,kNAAkN,CAAC;YAC1N,CAAC,CAAC,SAAS,CAAC;YACZ,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC;YACnB,CAAC,CAAC,gCAAgC,EAAE;gBAClC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,oDAAoD,CAAC,CAAC;gBAChH,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,6DAA6D,CAAC,CAAC;gBAClH,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,0DAA0D,CAAC,CAAC;gBACvH,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,yDAAyD,CAAC,CAAC;aACnH,CAAC;SACH,CAAC;KACH,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,UAAU,OAAO,CAAC,IAAe;IACrC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,EACrB;QACE,IAAI,EAAE;YACJ,MAAM,EAAE,GAAG,EAAE;gBACX,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC;SACF;KACF,EAAE;QACF,KAAK,CAAC,GAAG,CAAC,YAA4B,EAAE;QACzC,aAAa,CAAC,IAAI,CAAC;KACpB,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { VNode } from "snabbdom";
|
|
2
|
+
import { coco } from "../coco";
|
|
3
|
+
export declare function ClassesList(coco: coco.CoCo): VNode;
|
|
4
|
+
export declare function ObjectRow(cls: coco.CoCoClass, obj: coco.CoCoObject): VNode;
|
|
5
|
+
export declare function CoCoClass(cls: coco.CoCoClass): VNode;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { h } from "snabbdom";
|
|
2
|
+
import { coco } from "../coco";
|
|
3
|
+
import { flick, Header, ListGroup, ListGroupItem, Table } from "@ratiosolver/flick";
|
|
4
|
+
import { CoCoObject } from "./object";
|
|
5
|
+
export function ClassesList(coco) {
|
|
6
|
+
return ListGroup(Array.from(coco.get_classes().values().map(cls => ListGroupItem(cls.get_name(), () => {
|
|
7
|
+
flick.ctx.current_page = CoCoClass(cls);
|
|
8
|
+
flick.ctx.page_title = `Class: ${cls.get_name()}`;
|
|
9
|
+
flick.redraw();
|
|
10
|
+
}, flick.ctx.page_title === `Class: ${cls.get_name()}`))));
|
|
11
|
+
}
|
|
12
|
+
const cls_listener = {
|
|
13
|
+
instance_added: (_obj) => {
|
|
14
|
+
flick.redraw();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const obj_item_listener = {
|
|
18
|
+
class_added: (_cls) => { },
|
|
19
|
+
properties_updated: (_properties) => { flick.redraw(); },
|
|
20
|
+
values_added: (_values, _date_time) => { flick.redraw(); }
|
|
21
|
+
};
|
|
22
|
+
export function ObjectRow(cls, obj) {
|
|
23
|
+
const cells = [obj.get_id()];
|
|
24
|
+
for (const prop of cls.get_static_properties().keys().toArray().sort()) {
|
|
25
|
+
const props = obj.get_properties();
|
|
26
|
+
if (props && prop in props)
|
|
27
|
+
cells.push(coco.value_to_string(props[prop]));
|
|
28
|
+
else
|
|
29
|
+
cells.push('');
|
|
30
|
+
}
|
|
31
|
+
for (const prop of cls.get_dynamic_properties().keys().toArray().sort()) {
|
|
32
|
+
const props = obj.get_values();
|
|
33
|
+
if (props && prop in props)
|
|
34
|
+
cells.push(coco.value_to_string(props[prop][0]));
|
|
35
|
+
else
|
|
36
|
+
cells.push('');
|
|
37
|
+
}
|
|
38
|
+
return h('tr', {
|
|
39
|
+
hook: {
|
|
40
|
+
insert: () => {
|
|
41
|
+
obj.add_listener(obj_item_listener);
|
|
42
|
+
},
|
|
43
|
+
destroy: () => {
|
|
44
|
+
obj.remove_listener(obj_item_listener);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
style: { cursor: 'pointer' },
|
|
48
|
+
on: {
|
|
49
|
+
click: () => {
|
|
50
|
+
flick.ctx.current_page = CoCoObject(obj);
|
|
51
|
+
flick.ctx.page_title = `Object: ${obj.get_id()}`;
|
|
52
|
+
flick.redraw();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}, cells.map(cell => h('td', cell)));
|
|
56
|
+
}
|
|
57
|
+
export function CoCoClass(cls) {
|
|
58
|
+
const header = ["ID", ...cls.get_static_properties().keys().toArray().sort(), ...cls.get_dynamic_properties().keys().toArray().sort()];
|
|
59
|
+
const rows = cls.get_instances().values().map(obj => ObjectRow(cls, obj)).toArray();
|
|
60
|
+
return h('div.container.mt-2', {
|
|
61
|
+
hook: {
|
|
62
|
+
insert: () => {
|
|
63
|
+
cls.add_listener(cls_listener);
|
|
64
|
+
},
|
|
65
|
+
destroy: () => {
|
|
66
|
+
cls.remove_listener(cls_listener);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}, [
|
|
70
|
+
h('div.input-group', [
|
|
71
|
+
h('input.form-control', { attrs: { type: 'text', value: cls.get_name(), placeholder: 'Type name', disabled: true } }),
|
|
72
|
+
h('button.btn.btn-outline-secondary', {
|
|
73
|
+
attrs: { type: 'button', title: 'Copy type name to clipboard' },
|
|
74
|
+
on: { click: () => navigator.clipboard.writeText(cls.get_name()) }
|
|
75
|
+
}, h('i.fa-solid.fa-copy')),
|
|
76
|
+
]),
|
|
77
|
+
rows.length > 0 ? Table(Header(header), rows, 'Instances') : h('p.mt-2', 'No instances of this class yet.')
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/components/class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { h } from "snabbdom";
|
|
2
|
+
import { flick, ListGroup } from "@ratiosolver/flick";
|
|
3
|
+
import { CoCoClass } from "./class";
|
|
4
|
+
import * as echarts from 'echarts/core';
|
|
5
|
+
const obj_item_listener = {
|
|
6
|
+
class_added: (_cls) => { },
|
|
7
|
+
properties_updated: (_properties) => { flick.redraw(); },
|
|
8
|
+
values_added: (_values, _date_time) => { }
|
|
9
|
+
};
|
|
10
|
+
export function ObjectGroupItem(obj) {
|
|
11
|
+
const active = flick.ctx.page_title === `Object: ${obj.get_id()}`;
|
|
12
|
+
return h('button.list-group-item.list-group-item-action' + (active ? '.active.rounded' : ''), {
|
|
13
|
+
hook: {
|
|
14
|
+
insert: () => {
|
|
15
|
+
obj.add_listener(obj_item_listener);
|
|
16
|
+
},
|
|
17
|
+
destroy: () => {
|
|
18
|
+
obj.remove_listener(obj_item_listener);
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
props: { type: 'button' },
|
|
22
|
+
attrs: { 'aria-current': active ? 'true' : 'false' },
|
|
23
|
+
on: {
|
|
24
|
+
click: () => {
|
|
25
|
+
flick.ctx.current_page = CoCoObject(obj);
|
|
26
|
+
flick.ctx.page_title = `Object: ${obj.get_id()}`;
|
|
27
|
+
flick.redraw();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}, object_to_string(obj));
|
|
31
|
+
}
|
|
32
|
+
export function ObjectsList(coco) {
|
|
33
|
+
return ListGroup(Array.from(coco.get_objects().values().map(obj => ObjectGroupItem(obj))));
|
|
34
|
+
}
|
|
35
|
+
const obj_listener = {
|
|
36
|
+
class_added: (_cls) => { flick.redraw(); },
|
|
37
|
+
properties_updated: (_properties) => { flick.redraw(); },
|
|
38
|
+
values_added: (_values, _date_time) => { flick.redraw(); }
|
|
39
|
+
};
|
|
40
|
+
let chart = null;
|
|
41
|
+
export function CoCoObject(obj) {
|
|
42
|
+
const vals = obj.get_values();
|
|
43
|
+
const content = h('div.container.mt-2', {
|
|
44
|
+
hook: {
|
|
45
|
+
insert: () => {
|
|
46
|
+
obj.add_listener(obj_listener);
|
|
47
|
+
},
|
|
48
|
+
destroy: () => {
|
|
49
|
+
obj.remove_listener(obj_listener);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}, [
|
|
53
|
+
h('div.input-group', [
|
|
54
|
+
h('input.form-control', { attrs: { type: 'text', value: obj.get_id(), placeholder: 'Type name', disabled: true } }),
|
|
55
|
+
h('button.btn.btn-outline-secondary', {
|
|
56
|
+
attrs: { type: 'button', title: 'Copy type name to clipboard' },
|
|
57
|
+
on: { click: () => navigator.clipboard.writeText(obj.get_id()) }
|
|
58
|
+
}, h('i.fa-solid.fa-copy')),
|
|
59
|
+
]),
|
|
60
|
+
h('div.mt-2', Array.from(obj.get_classes()).map(cls => h('span.badge.bg-primary.me-1', {
|
|
61
|
+
style: { cursor: 'pointer' },
|
|
62
|
+
on: {
|
|
63
|
+
click: () => {
|
|
64
|
+
flick.ctx.current_page = CoCoClass(cls);
|
|
65
|
+
flick.ctx.page_title = `Class: ${cls.get_name()}`;
|
|
66
|
+
flick.redraw();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}, cls.get_name()))),
|
|
70
|
+
h('div.mt-2', {
|
|
71
|
+
style: { minHeight: `${vals ? Object.values(vals).length * 300 : 30}px` },
|
|
72
|
+
hook: {
|
|
73
|
+
insert: (vnode) => {
|
|
74
|
+
chart = echarts.init(vnode.elm);
|
|
75
|
+
},
|
|
76
|
+
destroy: () => {
|
|
77
|
+
if (chart) {
|
|
78
|
+
chart.dispose();
|
|
79
|
+
chart = null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, 'Loading history...')
|
|
84
|
+
]);
|
|
85
|
+
return content;
|
|
86
|
+
}
|
|
87
|
+
function object_to_string(obj) {
|
|
88
|
+
var _a;
|
|
89
|
+
return ((_a = obj.get_properties()) === null || _a === void 0 ? void 0 : _a.name) || obj.get_id();
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/components/object.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { h } from "snabbdom";
|
|
2
|
+
import { OffcanvasBody, Offcanvas as OffcanvasComponent } from "@ratiosolver/flick";
|
|
3
|
+
import { ClassesList } from "./class";
|
|
4
|
+
import { ObjectsList } from "./object";
|
|
5
|
+
import { RulesList } from "./rule";
|
|
6
|
+
export function CoCoOffcanvas(coco) {
|
|
7
|
+
return OffcanvasComponent(OffcanvasBody([
|
|
8
|
+
coco.get_classes().size > 0 ? h('label', 'Classes') : null,
|
|
9
|
+
ClassesList(coco),
|
|
10
|
+
coco.get_objects().size > 0 ? h('label', 'Objects') : null,
|
|
11
|
+
ObjectsList(coco),
|
|
12
|
+
coco.get_rules().size > 0 ? h('label', 'Rules') : null,
|
|
13
|
+
RulesList(coco),
|
|
14
|
+
]));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=offcanvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offcanvas.js","sourceRoot":"","sources":["../../src/components/offcanvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,UAAU,aAAa,CAAC,IAAe;IACzC,OAAO,kBAAkB,CACrB,aAAa,CAAC;QACV,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;QAC1D,WAAW,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;QAC1D,WAAW,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACtD,SAAS,CAAC,IAAI,CAAC;KAClB,CAAC,CACL,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { h } from "snabbdom";
|
|
2
|
+
import { flick, ListGroup, ListGroupItem } from "@ratiosolver/flick";
|
|
3
|
+
export function RulesList(coco) {
|
|
4
|
+
return ListGroup(Array.from(coco.get_rules().values().map(rule => ListGroupItem(rule.get_name(), () => {
|
|
5
|
+
flick.ctx.current_page = CoCoRule(rule);
|
|
6
|
+
flick.ctx.page_title = `Rule: ${rule.get_name()}`;
|
|
7
|
+
flick.redraw();
|
|
8
|
+
}, flick.ctx.page_title === `Rule: ${rule.get_name()}`))));
|
|
9
|
+
}
|
|
10
|
+
export function CoCoRule(rule) {
|
|
11
|
+
const content = h('div.container.mt-2', [
|
|
12
|
+
h('div.input-group', [
|
|
13
|
+
h('input.form-control', { attrs: { type: 'text', value: rule.get_name(), placeholder: 'Rule name', disabled: true } }),
|
|
14
|
+
h('button.btn.btn-outline-secondary', {
|
|
15
|
+
attrs: { type: 'button', title: 'Copy rule name to clipboard' },
|
|
16
|
+
on: { click: () => navigator.clipboard.writeText(rule.get_name()) }
|
|
17
|
+
}, h('i.fa-solid.fa-copy')),
|
|
18
|
+
]),
|
|
19
|
+
]);
|
|
20
|
+
return content;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/components/rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,UAAU,SAAS,CAAC,IAAe;IACvC,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE;QACpG,KAAK,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClD,KAAK,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAmB;IAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,oBAAoB,EAAE;QACtC,CAAC,CAAC,iBAAiB,EAAE;YACnB,CAAC,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;YACtH,CAAC,CAAC,kCAAkC,EAAE;gBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,6BAA6B,EAAE;gBAC/D,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;aACpE,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC;SAC5B,CAAC;KACH,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/favicon.ico
ADDED
|
Binary file
|