@dxos/app-graph 0.8.4-main.406dc2a → 0.8.4-main.548089c

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.
@@ -1,5 +1,5 @@
1
1
  // src/graph.ts
2
- import { Registry, Rx } from "@effect-rx/rx-react";
2
+ import { Atom, Registry } from "@effect-atom/atom-react";
3
3
  import * as Function from "effect/Function";
4
4
  import * as Option from "effect/Option";
5
5
  import * as Record from "effect/Record";
@@ -8,26 +8,13 @@ import { todo } from "@dxos/debug";
8
8
  import { invariant } from "@dxos/invariant";
9
9
  import { log } from "@dxos/log";
10
10
  import { isNonNullable } from "@dxos/util";
11
- function _define_property(obj, key, value) {
12
- if (key in obj) {
13
- Object.defineProperty(obj, key, {
14
- value,
15
- enumerable: true,
16
- configurable: true,
17
- writable: true
18
- });
19
- } else {
20
- obj[key] = value;
21
- }
22
- return obj;
23
- }
24
11
  var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-graph/src/graph.ts";
25
12
  var graphSymbol = Symbol("graph");
26
13
  var getGraph = (node) => {
27
14
  const graph = node[graphSymbol];
28
15
  invariant(graph, "Node is not associated with a graph.", {
29
16
  F: __dxlog_file,
30
- L: 27,
17
+ L: 29,
31
18
  S: void 0,
32
19
  A: [
33
20
  "graph",
@@ -41,6 +28,108 @@ var ROOT_TYPE = "dxos.org/type/GraphRoot";
41
28
  var ACTION_TYPE = "dxos.org/type/GraphAction";
42
29
  var ACTION_GROUP_TYPE = "dxos.org/type/GraphActionGroup";
43
30
  var Graph = class {
31
+ onNodeChanged = new Event();
32
+ _onExpand;
33
+ _onInitialize;
34
+ _onRemoveNode;
35
+ _registry;
36
+ _expanded = Record.empty();
37
+ _initialized = Record.empty();
38
+ _initialEdges = Record.empty();
39
+ _initialNodes = Record.fromEntries([
40
+ [
41
+ ROOT_ID,
42
+ this._constructNode({
43
+ id: ROOT_ID,
44
+ type: ROOT_TYPE,
45
+ data: null,
46
+ properties: {}
47
+ })
48
+ ]
49
+ ]);
50
+ /** @internal */
51
+ _node = Atom.family((id) => {
52
+ const initial = Option.flatten(Record.get(this._initialNodes, id));
53
+ return Atom.make(initial).pipe(Atom.keepAlive, Atom.withLabel(`graph:node:${id}`));
54
+ });
55
+ _nodeOrThrow = Atom.family((id) => {
56
+ return Atom.make((get2) => {
57
+ const node = get2(this._node(id));
58
+ invariant(Option.isSome(node), `Node not available: ${id}`, {
59
+ F: __dxlog_file,
60
+ L: 267,
61
+ S: this,
62
+ A: [
63
+ "Option.isSome(node)",
64
+ "`Node not available: ${id}`"
65
+ ]
66
+ });
67
+ return node.value;
68
+ });
69
+ });
70
+ _edges = Atom.family((id) => {
71
+ const initial = Record.get(this._initialEdges, id).pipe(Option.getOrElse(() => ({
72
+ inbound: [],
73
+ outbound: []
74
+ })));
75
+ return Atom.make(initial).pipe(Atom.keepAlive, Atom.withLabel(`graph:edges:${id}`));
76
+ });
77
+ // NOTE: Currently the argument to the family needs to be referentially stable for the atom to be referentially stable.
78
+ // TODO(wittjosiah): Atom feature request, support for something akin to `ComplexMap` to allow for complex arguments.
79
+ _connections = Atom.family((key) => {
80
+ return Atom.make((get2) => {
81
+ const [id, relation] = key.split("$");
82
+ const edges = get2(this._edges(id));
83
+ return edges[relation].map((id2) => get2(this._node(id2))).filter(Option.isSome).map((o) => o.value);
84
+ }).pipe(Atom.withLabel(`graph:connections:${key}`));
85
+ });
86
+ _actions = Atom.family((id) => {
87
+ return Atom.make((get2) => {
88
+ return get2(this._connections(`${id}$outbound`)).filter((node) => node.type === ACTION_TYPE || node.type === ACTION_GROUP_TYPE);
89
+ }).pipe(Atom.withLabel(`graph:actions:${id}`));
90
+ });
91
+ _json = Atom.family((id) => {
92
+ return Atom.make((get2) => {
93
+ const toJSON = (node, seen = []) => {
94
+ const nodes = get2(this.connections(node.id));
95
+ const obj = {
96
+ id: node.id,
97
+ type: node.type
98
+ };
99
+ if (node.properties.label) {
100
+ obj.label = node.properties.label;
101
+ }
102
+ if (nodes.length) {
103
+ obj.nodes = nodes.map((n) => {
104
+ const nextSeen = [
105
+ ...seen,
106
+ node.id
107
+ ];
108
+ return nextSeen.includes(n.id) ? void 0 : toJSON(n, nextSeen);
109
+ }).filter(isNonNullable);
110
+ }
111
+ return obj;
112
+ };
113
+ const root = get2(this.nodeOrThrow(id));
114
+ return toJSON(root);
115
+ }).pipe(Atom.withLabel(`graph:json:${id}`));
116
+ });
117
+ constructor({ registry, nodes, edges, onInitialize, onExpand, onRemoveNode } = {}) {
118
+ this._registry = registry ?? Registry.make();
119
+ this._onInitialize = onInitialize;
120
+ this._onExpand = onExpand;
121
+ this._onRemoveNode = onRemoveNode;
122
+ if (nodes) {
123
+ nodes.forEach((node) => {
124
+ Record.set(this._initialNodes, node.id, this._constructNode(node));
125
+ });
126
+ }
127
+ if (edges) {
128
+ Object.entries(edges).forEach(([source, edges2]) => {
129
+ Record.set(this._initialEdges, source, edges2);
130
+ });
131
+ }
132
+ }
44
133
  toJSON(id = ROOT_ID) {
45
134
  return this._registry.get(this._json(id));
46
135
  }
@@ -87,7 +176,7 @@ var Graph = class {
87
176
  initialized
88
177
  }, {
89
178
  F: __dxlog_file,
90
- L: 386,
179
+ L: 399,
91
180
  S: this,
92
181
  C: (f, a) => f(...a)
93
182
  });
@@ -104,7 +193,7 @@ var Graph = class {
104
193
  expanded
105
194
  }, {
106
195
  F: __dxlog_file,
107
- L: 396,
196
+ L: 409,
108
197
  S: this,
109
198
  C: (f, a) => f(...a)
110
199
  });
@@ -114,7 +203,7 @@ var Graph = class {
114
203
  }
115
204
  }
116
205
  addNodes(nodes) {
117
- Rx.batch(() => {
206
+ Atom.batch(() => {
118
207
  nodes.map((node) => this.addNode(node));
119
208
  });
120
209
  }
@@ -134,7 +223,7 @@ var Graph = class {
134
223
  propertiesChanged
135
224
  }, {
136
225
  F: __dxlog_file,
137
- L: 418,
226
+ L: 431,
138
227
  S: this,
139
228
  C: (f, a) => f(...a)
140
229
  });
@@ -146,7 +235,7 @@ var Graph = class {
146
235
  properties
147
236
  }, {
148
237
  F: __dxlog_file,
149
- L: 420,
238
+ L: 438,
150
239
  S: this,
151
240
  C: (f, a) => f(...a)
152
241
  });
@@ -174,7 +263,7 @@ var Graph = class {
174
263
  properties
175
264
  }, {
176
265
  F: __dxlog_file,
177
- L: 427,
266
+ L: 450,
178
267
  S: this,
179
268
  C: (f, a) => f(...a)
180
269
  });
@@ -204,7 +293,7 @@ var Graph = class {
204
293
  }
205
294
  }
206
295
  removeNodes(ids, edges = false) {
207
- Rx.batch(() => {
296
+ Atom.batch(() => {
208
297
  ids.map((id) => this.removeNode(id, edges));
209
298
  });
210
299
  }
@@ -232,7 +321,7 @@ var Graph = class {
232
321
  this._onRemoveNode?.(id);
233
322
  }
234
323
  addEdges(edges) {
235
- Rx.batch(() => {
324
+ Atom.batch(() => {
236
325
  edges.map((edge) => this.addEdge(edge));
237
326
  });
238
327
  }
@@ -245,7 +334,7 @@ var Graph = class {
245
334
  target: edgeArg.target
246
335
  }, {
247
336
  F: __dxlog_file,
248
- L: 482,
337
+ L: 505,
249
338
  S: this,
250
339
  C: (f, a) => f(...a)
251
340
  });
@@ -265,7 +354,7 @@ var Graph = class {
265
354
  target: edgeArg.target
266
355
  }, {
267
356
  F: __dxlog_file,
268
- L: 489,
357
+ L: 518,
269
358
  S: this,
270
359
  C: (f, a) => f(...a)
271
360
  });
@@ -279,7 +368,7 @@ var Graph = class {
279
368
  }
280
369
  }
281
370
  removeEdges(edges, removeOrphans = false) {
282
- Rx.batch(() => {
371
+ Atom.batch(() => {
283
372
  edges.map((edge) => this.removeEdge(edge, removeOrphans));
284
373
  });
285
374
  }
@@ -389,109 +478,10 @@ var Graph = class {
389
478
  ...node
390
479
  });
391
480
  }
392
- constructor({ registry, nodes, edges, onInitialize, onExpand, onRemoveNode } = {}) {
393
- _define_property(this, "onNodeChanged", new Event());
394
- _define_property(this, "_onExpand", void 0);
395
- _define_property(this, "_onInitialize", void 0);
396
- _define_property(this, "_onRemoveNode", void 0);
397
- _define_property(this, "_registry", void 0);
398
- _define_property(this, "_expanded", Record.empty());
399
- _define_property(this, "_initialized", Record.empty());
400
- _define_property(this, "_initialEdges", Record.empty());
401
- _define_property(this, "_initialNodes", Record.fromEntries([
402
- [
403
- ROOT_ID,
404
- this._constructNode({
405
- id: ROOT_ID,
406
- type: ROOT_TYPE,
407
- data: null,
408
- properties: {}
409
- })
410
- ]
411
- ]));
412
- _define_property(this, "_node", Rx.family((id) => {
413
- const initial = Option.flatten(Record.get(this._initialNodes, id));
414
- return Rx.make(initial).pipe(Rx.keepAlive, Rx.withLabel(`graph:node:${id}`));
415
- }));
416
- _define_property(this, "_nodeOrThrow", Rx.family((id) => {
417
- return Rx.make((get2) => {
418
- const node = get2(this._node(id));
419
- invariant(Option.isSome(node), `Node not available: ${id}`, {
420
- F: __dxlog_file,
421
- L: 254,
422
- S: this,
423
- A: [
424
- "Option.isSome(node)",
425
- "`Node not available: ${id}`"
426
- ]
427
- });
428
- return node.value;
429
- });
430
- }));
431
- _define_property(this, "_edges", Rx.family((id) => {
432
- const initial = Record.get(this._initialEdges, id).pipe(Option.getOrElse(() => ({
433
- inbound: [],
434
- outbound: []
435
- })));
436
- return Rx.make(initial).pipe(Rx.keepAlive, Rx.withLabel(`graph:edges:${id}`));
437
- }));
438
- _define_property(this, "_connections", Rx.family((key) => {
439
- return Rx.make((get2) => {
440
- const [id, relation] = key.split("$");
441
- const edges2 = get2(this._edges(id));
442
- return edges2[relation].map((id2) => get2(this._node(id2))).filter(Option.isSome).map((o) => o.value);
443
- }).pipe(Rx.withLabel(`graph:connections:${key}`));
444
- }));
445
- _define_property(this, "_actions", Rx.family((id) => {
446
- return Rx.make((get2) => {
447
- return get2(this._connections(`${id}$outbound`)).filter((node) => node.type === ACTION_TYPE || node.type === ACTION_GROUP_TYPE);
448
- }).pipe(Rx.withLabel(`graph:actions:${id}`));
449
- }));
450
- _define_property(this, "_json", Rx.family((id) => {
451
- return Rx.make((get2) => {
452
- const toJSON = (node, seen = []) => {
453
- const nodes2 = get2(this.connections(node.id));
454
- const obj = {
455
- id: node.id,
456
- type: node.type
457
- };
458
- if (node.properties.label) {
459
- obj.label = node.properties.label;
460
- }
461
- if (nodes2.length) {
462
- obj.nodes = nodes2.map((n) => {
463
- const nextSeen = [
464
- ...seen,
465
- node.id
466
- ];
467
- return nextSeen.includes(n.id) ? void 0 : toJSON(n, nextSeen);
468
- }).filter(isNonNullable);
469
- }
470
- return obj;
471
- };
472
- const root = get2(this.nodeOrThrow(id));
473
- return toJSON(root);
474
- }).pipe(Rx.withLabel(`graph:json:${id}`));
475
- }));
476
- this._registry = registry ?? Registry.make();
477
- this._onInitialize = onInitialize;
478
- this._onExpand = onExpand;
479
- this._onRemoveNode = onRemoveNode;
480
- if (nodes) {
481
- nodes.forEach((node) => {
482
- Record.set(this._initialNodes, node.id, this._constructNode(node));
483
- });
484
- }
485
- if (edges) {
486
- Object.entries(edges).forEach(([source, edges2]) => {
487
- Record.set(this._initialEdges, source, edges2);
488
- });
489
- }
490
- }
491
481
  };
492
482
 
493
483
  // src/graph-builder.ts
494
- import { Registry as Registry2, Rx as Rx2 } from "@effect-rx/rx-react";
484
+ import { Atom as Atom2, Registry as Registry2 } from "@effect-atom/atom-react";
495
485
  import { effect } from "@preact/signals-core";
496
486
  import * as Array from "effect/Array";
497
487
  import * as Function2 from "effect/Function";
@@ -508,27 +498,14 @@ var isActionGroup = (data) => isGraphNode(data) ? data.data === actionGroupSymbo
508
498
  var isActionLike = (data) => isAction(data) || isActionGroup(data);
509
499
 
510
500
  // src/graph-builder.ts
511
- function _define_property2(obj, key, value) {
512
- if (key in obj) {
513
- Object.defineProperty(obj, key, {
514
- value,
515
- enumerable: true,
516
- configurable: true,
517
- writable: true
518
- });
519
- } else {
520
- obj[key] = value;
521
- }
522
- return obj;
523
- }
524
501
  var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/app-graph/src/graph-builder.ts";
525
502
  var createExtension = (extension) => {
526
503
  const { id, position = "static", relation = "outbound", resolver: _resolver, connector: _connector, actions: _actions, actionGroups: _actionGroups } = extension;
527
504
  const getId = (key) => `${id}/${key}`;
528
- const resolver = _resolver && Rx2.family((id2) => _resolver(id2).pipe(Rx2.withLabel(`graph-builder:_resolver:${id2}`)));
529
- const connector = _connector && Rx2.family((node) => _connector(node).pipe(Rx2.withLabel(`graph-builder:_connector:${id}`)));
530
- const actionGroups = _actionGroups && Rx2.family((node) => _actionGroups(node).pipe(Rx2.withLabel(`graph-builder:_actionGroups:${id}`)));
531
- const actions = _actions && Rx2.family((node) => _actions(node).pipe(Rx2.withLabel(`graph-builder:_actions:${id}`)));
505
+ const resolver = _resolver && Atom2.family((id2) => _resolver(id2).pipe(Atom2.withLabel(`graph-builder:_resolver:${id2}`)));
506
+ const connector = _connector && Atom2.family((node) => _connector(node).pipe(Atom2.withLabel(`graph-builder:_connector:${id}`)));
507
+ const actionGroups = _actionGroups && Atom2.family((node) => _actionGroups(node).pipe(Atom2.withLabel(`graph-builder:_actionGroups:${id}`)));
508
+ const actions = _actions && Atom2.family((node) => _actions(node).pipe(Atom2.withLabel(`graph-builder:_actions:${id}`)));
532
509
  return [
533
510
  resolver ? {
534
511
  id: getId("resolver"),
@@ -539,7 +516,7 @@ var createExtension = (extension) => {
539
516
  id: getId("connector"),
540
517
  position,
541
518
  relation,
542
- connector: Rx2.family((node) => Rx2.make((get2) => {
519
+ connector: Atom2.family((node) => Atom2.make((get2) => {
543
520
  try {
544
521
  return get2(connector(node));
545
522
  } catch {
@@ -548,19 +525,19 @@ var createExtension = (extension) => {
548
525
  node
549
526
  }, {
550
527
  F: __dxlog_file2,
551
- L: 112,
528
+ L: 114,
552
529
  S: void 0,
553
530
  C: (f, a) => f(...a)
554
531
  });
555
532
  return [];
556
533
  }
557
- }).pipe(Rx2.withLabel(`graph-builder:connector:${id}`)))
534
+ }).pipe(Atom2.withLabel(`graph-builder:connector:${id}`)))
558
535
  } : void 0,
559
536
  actionGroups ? {
560
537
  id: getId("actionGroups"),
561
538
  position,
562
539
  relation: "outbound",
563
- connector: Rx2.family((node) => Rx2.make((get2) => {
540
+ connector: Atom2.family((node) => Atom2.make((get2) => {
564
541
  try {
565
542
  return get2(actionGroups(node)).map((arg) => ({
566
543
  ...arg,
@@ -573,19 +550,19 @@ var createExtension = (extension) => {
573
550
  node
574
551
  }, {
575
552
  F: __dxlog_file2,
576
- L: 133,
553
+ L: 135,
577
554
  S: void 0,
578
555
  C: (f, a) => f(...a)
579
556
  });
580
557
  return [];
581
558
  }
582
- }).pipe(Rx2.withLabel(`graph-builder:connector:actionGroups:${id}`)))
559
+ }).pipe(Atom2.withLabel(`graph-builder:connector:actionGroups:${id}`)))
583
560
  } : void 0,
584
561
  actions ? {
585
562
  id: getId("actions"),
586
563
  position,
587
564
  relation: "outbound",
588
- connector: Rx2.family((node) => Rx2.make((get2) => {
565
+ connector: Atom2.family((node) => Atom2.make((get2) => {
589
566
  try {
590
567
  return get2(actions(node)).map((arg) => ({
591
568
  ...arg,
@@ -597,13 +574,13 @@ var createExtension = (extension) => {
597
574
  node
598
575
  }, {
599
576
  F: __dxlog_file2,
600
- L: 150,
577
+ L: 152,
601
578
  S: void 0,
602
579
  C: (f, a) => f(...a)
603
580
  });
604
581
  return [];
605
582
  }
606
- }).pipe(Rx2.withLabel(`graph-builder:connector:actions:${id}`)))
583
+ }).pipe(Atom2.withLabel(`graph-builder:connector:actions:${id}`)))
607
584
  } : void 0
608
585
  ].filter(isNonNullable2);
609
586
  };
@@ -621,6 +598,22 @@ var flattenExtensions = (extension, acc = []) => {
621
598
  }
622
599
  };
623
600
  var GraphBuilder = class _GraphBuilder {
601
+ // TODO(wittjosiah): Use Context.
602
+ _subscriptions = /* @__PURE__ */ new Map();
603
+ _extensions = Atom2.make(Record2.empty()).pipe(Atom2.keepAlive, Atom2.withLabel("graph-builder:extensions"));
604
+ _initialized = {};
605
+ _registry;
606
+ _graph;
607
+ constructor({ registry, ...params } = {}) {
608
+ this._registry = registry ?? Registry2.make();
609
+ this._graph = new Graph({
610
+ ...params,
611
+ registry: this._registry,
612
+ onExpand: (id, relation) => this._onExpand(id, relation),
613
+ onInitialize: (id) => this._onInitialize(id),
614
+ onRemoveNode: (id) => this._onRemoveNode(id)
615
+ });
616
+ }
624
617
  static from(pickle, registry) {
625
618
  if (!pickle) {
626
619
  return new _GraphBuilder({
@@ -690,6 +683,27 @@ var GraphBuilder = class _GraphBuilder {
690
683
  this._subscriptions.forEach((unsubscribe) => unsubscribe());
691
684
  this._subscriptions.clear();
692
685
  }
686
+ _resolvers = Atom2.family((id) => {
687
+ return Atom2.make((get2) => {
688
+ return Function2.pipe(get2(this._extensions), Record2.values, Array.sortBy(byPosition), Array.map(({ resolver }) => resolver), Array.filter(isNonNullable2), Array.map((resolver) => get2(resolver(id))), Array.filter(isNonNullable2), Array.head);
689
+ });
690
+ });
691
+ _connectors = Atom2.family((key) => {
692
+ return Atom2.make((get2) => {
693
+ const [id, relation] = key.split("+");
694
+ const node = this._graph.node(id);
695
+ return Function2.pipe(
696
+ get2(this._extensions),
697
+ Record2.values,
698
+ // TODO(wittjosiah): Sort on write rather than read.
699
+ Array.sortBy(byPosition),
700
+ Array.filter(({ relation: _relation = "outbound" }) => _relation === relation),
701
+ Array.map(({ connector }) => connector?.(node)),
702
+ Array.filter(isNonNullable2),
703
+ Array.flatMap((result) => get2(result))
704
+ );
705
+ }).pipe(Atom2.withLabel(`graph-builder:connectors:${key}`));
706
+ });
693
707
  _onExpand(id, relation) {
694
708
  log2("onExpand", {
695
709
  id,
@@ -697,7 +711,7 @@ var GraphBuilder = class _GraphBuilder {
697
711
  registry: getDebugName(this._registry)
698
712
  }, {
699
713
  F: __dxlog_file2,
700
- L: 327,
714
+ L: 329,
701
715
  S: this,
702
716
  C: (f, a) => f(...a)
703
717
  });
@@ -714,12 +728,12 @@ var GraphBuilder = class _GraphBuilder {
714
728
  removed
715
729
  }, {
716
730
  F: __dxlog_file2,
717
- L: 338,
731
+ L: 340,
718
732
  S: this,
719
733
  C: (f, a) => f(...a)
720
734
  });
721
735
  const update = () => {
722
- Rx2.batch(() => {
736
+ Atom2.batch(() => {
723
737
  this._graph.removeEdges(removed.map((target) => ({
724
738
  source: id,
725
739
  target
@@ -751,7 +765,7 @@ var GraphBuilder = class _GraphBuilder {
751
765
  id
752
766
  }, {
753
767
  F: __dxlog_file2,
754
- L: 375,
768
+ L: 377,
755
769
  S: this,
756
770
  C: (f, a) => f(...a)
757
771
  });
@@ -781,45 +795,9 @@ var GraphBuilder = class _GraphBuilder {
781
795
  this._subscriptions.get(id)?.();
782
796
  this._subscriptions.delete(id);
783
797
  }
784
- constructor({ registry, ...params } = {}) {
785
- _define_property2(this, "_subscriptions", /* @__PURE__ */ new Map());
786
- _define_property2(this, "_extensions", Rx2.make(Record2.empty()).pipe(Rx2.keepAlive, Rx2.withLabel("graph-builder:extensions")));
787
- _define_property2(this, "_initialized", {});
788
- _define_property2(this, "_registry", void 0);
789
- _define_property2(this, "_graph", void 0);
790
- _define_property2(this, "_resolvers", Rx2.family((id) => {
791
- return Rx2.make((get2) => {
792
- return Function2.pipe(get2(this._extensions), Record2.values, Array.sortBy(byPosition), Array.map(({ resolver }) => resolver), Array.filter(isNonNullable2), Array.map((resolver) => get2(resolver(id))), Array.filter(isNonNullable2), Array.head);
793
- });
794
- }));
795
- _define_property2(this, "_connectors", Rx2.family((key) => {
796
- return Rx2.make((get2) => {
797
- const [id, relation] = key.split("+");
798
- const node = this._graph.node(id);
799
- return Function2.pipe(
800
- get2(this._extensions),
801
- Record2.values,
802
- // TODO(wittjosiah): Sort on write rather than read.
803
- Array.sortBy(byPosition),
804
- Array.filter(({ relation: _relation = "outbound" }) => _relation === relation),
805
- Array.map(({ connector }) => connector?.(node)),
806
- Array.filter(isNonNullable2),
807
- Array.flatMap((result) => get2(result))
808
- );
809
- }).pipe(Rx2.withLabel(`graph-builder:connectors:${key}`));
810
- }));
811
- this._registry = registry ?? Registry2.make();
812
- this._graph = new Graph({
813
- ...params,
814
- registry: this._registry,
815
- onExpand: (id, relation) => this._onExpand(id, relation),
816
- onInitialize: (id) => this._onInitialize(id),
817
- onRemoveNode: (id) => this._onRemoveNode(id)
818
- });
819
- }
820
798
  };
821
799
  var rxFromSignal = (cb) => {
822
- return Rx2.make((get2) => {
800
+ return Atom2.make((get2) => {
823
801
  const dispose = effect(() => {
824
802
  get2.setSelf(cb());
825
803
  });
@@ -827,8 +805,8 @@ var rxFromSignal = (cb) => {
827
805
  return cb();
828
806
  });
829
807
  };
830
- var observableFamily = Rx2.family((observable) => {
831
- return Rx2.make((get2) => {
808
+ var observableFamily = Atom2.family((observable) => {
809
+ return Atom2.make((get2) => {
832
810
  const subscription = observable.subscribe((value) => get2.setSelf(value));
833
811
  get2.addFinalizer(() => subscription.unsubscribe());
834
812
  return observable.get();