@norskvideo/norsk-studio 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/README.md +58 -0
  2. package/bin/info.ts.template +23 -0
  3. package/bin/studio-bundle +23 -0
  4. package/bin/studio-editor +3 -0
  5. package/bin/studio-runner +3 -0
  6. package/bin/studio-wrap-infos +44 -0
  7. package/lib/client/comms.d.ts +26 -0
  8. package/lib/client/comms.js +114 -0
  9. package/lib/client/comms.js.map +1 -0
  10. package/lib/client/componentevents.d.ts +12 -0
  11. package/lib/client/componentevents.js +41 -0
  12. package/lib/client/componentevents.js.map +1 -0
  13. package/lib/client/console.d.ts +19 -0
  14. package/lib/client/console.js +42 -0
  15. package/lib/client/console.js.map +1 -0
  16. package/lib/client/controls.d.ts +23 -0
  17. package/lib/client/controls.js +80 -0
  18. package/lib/client/controls.js.map +1 -0
  19. package/lib/client/creator.d.ts +45 -0
  20. package/lib/client/creator.js +276 -0
  21. package/lib/client/creator.js.map +1 -0
  22. package/lib/client/jsx/connection-editor.d.ts +11 -0
  23. package/lib/client/jsx/connection-editor.js +198 -0
  24. package/lib/client/jsx/connection-editor.js.map +1 -0
  25. package/lib/client/jsx/connection.d.ts +7 -0
  26. package/lib/client/jsx/connection.js +33 -0
  27. package/lib/client/jsx/connection.js.map +1 -0
  28. package/lib/client/jsx/console-log.d.ts +11 -0
  29. package/lib/client/jsx/console-log.js +17 -0
  30. package/lib/client/jsx/console-log.js.map +1 -0
  31. package/lib/client/jsx/console.d.ts +20 -0
  32. package/lib/client/jsx/console.js +30 -0
  33. package/lib/client/jsx/console.js.map +1 -0
  34. package/lib/client/jsx/node-editor.d.ts +23 -0
  35. package/lib/client/jsx/node-editor.js +442 -0
  36. package/lib/client/jsx/node-editor.js.map +1 -0
  37. package/lib/client/jsx/node.d.ts +25 -0
  38. package/lib/client/jsx/node.js +244 -0
  39. package/lib/client/jsx/node.js.map +1 -0
  40. package/lib/client/jsx/selected-connection.d.ts +21 -0
  41. package/lib/client/jsx/selected-connection.js +110 -0
  42. package/lib/client/jsx/selected-connection.js.map +1 -0
  43. package/lib/client/jsx/selected-node.d.ts +24 -0
  44. package/lib/client/jsx/selected-node.js +75 -0
  45. package/lib/client/jsx/selected-node.js.map +1 -0
  46. package/lib/client/jsx/selected.d.ts +24 -0
  47. package/lib/client/jsx/selected.js +15 -0
  48. package/lib/client/jsx/selected.js.map +1 -0
  49. package/lib/client/jsx/selectfilename.d.ts +7 -0
  50. package/lib/client/jsx/selectfilename.js +17 -0
  51. package/lib/client/jsx/selectfilename.js.map +1 -0
  52. package/lib/client/jsx/toolbox.d.ts +14 -0
  53. package/lib/client/jsx/toolbox.js +45 -0
  54. package/lib/client/jsx/toolbox.js.map +1 -0
  55. package/lib/client/library.d.ts +12 -0
  56. package/lib/client/library.js +53 -0
  57. package/lib/client/library.js.map +1 -0
  58. package/lib/client/modal.d.ts +21 -0
  59. package/lib/client/modal.js +34 -0
  60. package/lib/client/modal.js.map +1 -0
  61. package/lib/client/rete/connection.d.ts +20 -0
  62. package/lib/client/rete/connection.js +27 -0
  63. package/lib/client/rete/connection.js.map +1 -0
  64. package/lib/client/rete/node.d.ts +28 -0
  65. package/lib/client/rete/node.js +78 -0
  66. package/lib/client/rete/node.js.map +1 -0
  67. package/lib/client/rete/selector.d.ts +10 -0
  68. package/lib/client/rete/selector.js +22 -0
  69. package/lib/client/rete/selector.js.map +1 -0
  70. package/lib/client/rete.d.ts +81 -0
  71. package/lib/client/rete.js +384 -0
  72. package/lib/client/rete.js.map +1 -0
  73. package/lib/client/session-view.d.ts +7 -0
  74. package/lib/client/session-view.js +132 -0
  75. package/lib/client/session-view.js.map +1 -0
  76. package/lib/client/session.d.ts +70 -0
  77. package/lib/client/session.js +185 -0
  78. package/lib/client/session.js.map +1 -0
  79. package/lib/client/tools.d.ts +22 -0
  80. package/lib/client/tools.js +311 -0
  81. package/lib/client/tools.js.map +1 -0
  82. package/lib/extension/base-nodes.d.ts +55 -0
  83. package/lib/extension/base-nodes.js +120 -0
  84. package/lib/extension/base-nodes.js.map +1 -0
  85. package/lib/extension/built-ins.d.ts +4 -0
  86. package/lib/extension/built-ins.js +52 -0
  87. package/lib/extension/built-ins.js.map +1 -0
  88. package/lib/extension/client-system.d.ts +5 -0
  89. package/lib/extension/client-system.js +3 -0
  90. package/lib/extension/client-system.js.map +1 -0
  91. package/lib/extension/client-types.d.ts +245 -0
  92. package/lib/extension/client-types.js +87 -0
  93. package/lib/extension/client-types.js.map +1 -0
  94. package/lib/extension/common.d.ts +34 -0
  95. package/lib/extension/common.js +45 -0
  96. package/lib/extension/common.js.map +1 -0
  97. package/lib/extension/registration.d.ts +7 -0
  98. package/lib/extension/registration.js +62 -0
  99. package/lib/extension/registration.js.map +1 -0
  100. package/lib/extension/runtime-system.d.ts +9 -0
  101. package/lib/extension/runtime-system.js +3 -0
  102. package/lib/extension/runtime-system.js.map +1 -0
  103. package/lib/extension/runtime-types.d.ts +91 -0
  104. package/lib/extension/runtime-types.js +318 -0
  105. package/lib/extension/runtime-types.js.map +1 -0
  106. package/lib/extension/validation.d.ts +16 -0
  107. package/lib/extension/validation.js +50 -0
  108. package/lib/extension/validation.js.map +1 -0
  109. package/lib/library/test.d.ts +2 -0
  110. package/lib/library/test.js +11 -0
  111. package/lib/library/test.js.map +1 -0
  112. package/lib/runtime/document.d.ts +62 -0
  113. package/lib/runtime/document.js +322 -0
  114. package/lib/runtime/document.js.map +1 -0
  115. package/lib/runtime/execution.d.ts +48 -0
  116. package/lib/runtime/execution.js +327 -0
  117. package/lib/runtime/execution.js.map +1 -0
  118. package/lib/runtime/norsk-comms.d.ts +24 -0
  119. package/lib/runtime/norsk-comms.js +71 -0
  120. package/lib/runtime/norsk-comms.js.map +1 -0
  121. package/lib/runtime/system.d.ts +30 -0
  122. package/lib/runtime/system.js +83 -0
  123. package/lib/runtime/system.js.map +1 -0
  124. package/lib/server/config.d.ts +19 -0
  125. package/lib/server/config.js +26 -0
  126. package/lib/server/config.js.map +1 -0
  127. package/lib/server/index.d.ts +1 -0
  128. package/lib/server/index.js +310 -0
  129. package/lib/server/index.js.map +1 -0
  130. package/lib/server/logging.d.ts +6 -0
  131. package/lib/server/logging.js +96 -0
  132. package/lib/server/logging.js.map +1 -0
  133. package/lib/server/medialive.d.ts +1 -0
  134. package/lib/server/medialive.js +34 -0
  135. package/lib/server/medialive.js.map +1 -0
  136. package/lib/server/runner.d.ts +1 -0
  137. package/lib/server/runner.js +137 -0
  138. package/lib/server/runner.js.map +1 -0
  139. package/lib/server/session-registration.d.ts +5 -0
  140. package/lib/server/session-registration.js +18 -0
  141. package/lib/server/session-registration.js.map +1 -0
  142. package/lib/server/session.d.ts +117 -0
  143. package/lib/server/session.js +364 -0
  144. package/lib/server/session.js.map +1 -0
  145. package/lib/shared/client-msg.d.ts +13 -0
  146. package/lib/shared/client-msg.js +3 -0
  147. package/lib/shared/client-msg.js.map +1 -0
  148. package/lib/shared/config.d.ts +7 -0
  149. package/lib/shared/config.js +60 -0
  150. package/lib/shared/config.js.map +1 -0
  151. package/lib/shared/document.d.ts +164 -0
  152. package/lib/shared/document.js +496 -0
  153. package/lib/shared/document.js.map +1 -0
  154. package/lib/shared/names.d.ts +3 -0
  155. package/lib/shared/names.js +8 -0
  156. package/lib/shared/names.js.map +1 -0
  157. package/lib/shared/norsk.d.ts +21 -0
  158. package/lib/shared/norsk.js +3 -0
  159. package/lib/shared/norsk.js.map +1 -0
  160. package/lib/shared/server-msg.d.ts +69 -0
  161. package/lib/shared/server-msg.js +3 -0
  162. package/lib/shared/server-msg.js.map +1 -0
  163. package/lib/shared/util.d.ts +7 -0
  164. package/lib/shared/util.js +63 -0
  165. package/lib/shared/util.js.map +1 -0
  166. package/lib/test/_util/builder.d.ts +46 -0
  167. package/lib/test/_util/builder.js +200 -0
  168. package/lib/test/_util/builder.js.map +1 -0
  169. package/lib/test/_util/callback_app.d.ts +13 -0
  170. package/lib/test/_util/callback_app.js +25 -0
  171. package/lib/test/_util/callback_app.js.map +1 -0
  172. package/lib/test/_util/driver.d.ts +16 -0
  173. package/lib/test/_util/driver.js +89 -0
  174. package/lib/test/_util/driver.js.map +1 -0
  175. package/lib/test/_util/fake-norsk.d.ts +14 -0
  176. package/lib/test/_util/fake-norsk.js +19 -0
  177. package/lib/test/_util/fake-norsk.js.map +1 -0
  178. package/lib/test/_util/ffmpeg.d.ts +80 -0
  179. package/lib/test/_util/ffmpeg.js +266 -0
  180. package/lib/test/_util/ffmpeg.js.map +1 -0
  181. package/lib/test/_util/manual-driver.d.ts +42 -0
  182. package/lib/test/_util/manual-driver.js +206 -0
  183. package/lib/test/_util/manual-driver.js.map +1 -0
  184. package/lib/test/_util/runtime.d.ts +81 -0
  185. package/lib/test/_util/runtime.js +194 -0
  186. package/lib/test/_util/runtime.js.map +1 -0
  187. package/lib/test/_util/server.d.ts +8 -0
  188. package/lib/test/_util/server.js +33 -0
  189. package/lib/test/_util/server.js.map +1 -0
  190. package/lib/test/_util/sinks.d.ts +35 -0
  191. package/lib/test/_util/sinks.js +200 -0
  192. package/lib/test/_util/sinks.js.map +1 -0
  193. package/lib/test/_util/sources.d.ts +18 -0
  194. package/lib/test/_util/sources.js +113 -0
  195. package/lib/test/_util/sources.js.map +1 -0
  196. package/lib/test/_util/test-infos-views.d.ts +9 -0
  197. package/lib/test/_util/test-infos-views.js +46 -0
  198. package/lib/test/_util/test-infos-views.js.map +1 -0
  199. package/lib/test/_util/test-infos.d.ts +44 -0
  200. package/lib/test/_util/test-infos.js +202 -0
  201. package/lib/test/_util/test-infos.js.map +1 -0
  202. package/lib/test/client-designview.d.ts +1 -0
  203. package/lib/test/client-designview.js +258 -0
  204. package/lib/test/client-designview.js.map +1 -0
  205. package/lib/test/client-liveview.d.ts +1 -0
  206. package/lib/test/client-liveview.js +413 -0
  207. package/lib/test/client-liveview.js.map +1 -0
  208. package/lib/test/client-session.d.ts +1 -0
  209. package/lib/test/client-session.js +205 -0
  210. package/lib/test/client-session.js.map +1 -0
  211. package/lib/test/client-ui.d.ts +1 -0
  212. package/lib/test/client-ui.js +74 -0
  213. package/lib/test/client-ui.js.map +1 -0
  214. package/lib/test/document-execution.d.ts +1 -0
  215. package/lib/test/document-execution.js +162 -0
  216. package/lib/test/document-execution.js.map +1 -0
  217. package/lib/test/document-loading.d.ts +1 -0
  218. package/lib/test/document-loading.js +420 -0
  219. package/lib/test/document-loading.js.map +1 -0
  220. package/lib/test/runtime-comms.d.ts +1 -0
  221. package/lib/test/runtime-comms.js +321 -0
  222. package/lib/test/runtime-comms.js.map +1 -0
  223. package/lib/test/subscriptions.d.ts +1 -0
  224. package/lib/test/subscriptions.js +334 -0
  225. package/lib/test/subscriptions.js.map +1 -0
  226. package/package.json +112 -0
  227. package/static/98_slides.html +61 -0
  228. package/static/Norsk-Favicon-150x150.png +0 -0
  229. package/static/Norsk-Favicon.png +0 -0
  230. package/static/Norsk-Logo-Dark-Background.png +0 -0
  231. package/static/Norsk.png +0 -0
  232. package/static/ShortStack.woff2 +0 -0
  233. package/static/bonnie-green.png +0 -0
  234. package/static/button.svg +67 -0
  235. package/static/doodle.css +174 -0
  236. package/static/flowbite.min.css +1 -0
  237. package/static/flowbite.min.js +2 -0
  238. package/static/font.css +20 -0
  239. package/static/jese-leos.png +0 -0
  240. package/static/joseph-mcfall.png +0 -0
  241. package/static/michael-gough.png +0 -0
  242. package/static/news-embedded.html +106 -0
  243. package/static/overlay-score.html +210 -0
  244. package/static/overlay-ui.html +918 -0
  245. package/static/react-dom.development.js +29869 -0
  246. package/static/react.development.js +3342 -0
  247. package/static/robert-brown.png +0 -0
  248. package/static/roberta-casas.png +0 -0
  249. package/static/style-dark.css +2467 -0
  250. package/static/style.css +7252 -0
  251. package/static/tailwind.css +31 -0
  252. package/static/team1.png +0 -0
  253. package/static/team2.png +0 -0
  254. package/static/videoFrame.html +73 -0
  255. package/static/webrtc.js +430 -0
  256. package/tailwind-theme.js +66 -0
  257. package/tailwind.config.js +11 -0
  258. package/ui/bypass-esbuild.js +24 -0
  259. package/ui/index.html +189 -0
  260. package/ui/index.js +229180 -0
  261. package/ui/studio.css +31 -0
  262. package/ui/test.html +95 -0
  263. package/ui/view.html +23 -0
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AllReteThen = exports.NotifyingSelector = exports.Connection = exports.Node = void 0;
7
+ const rete_area_plugin_1 = require("rete-area-plugin");
8
+ const client_1 = require("react-dom/client");
9
+ const rete_react_plugin_1 = require("rete-react-plugin");
10
+ const rete_1 = require("rete");
11
+ const rete_connection_plugin_1 = require("rete-connection-plugin");
12
+ const rete_auto_arrange_plugin_1 = require("rete-auto-arrange-plugin");
13
+ const node_1 = __importDefault(require("./jsx/node"));
14
+ const connection_1 = __importDefault(require("./jsx/connection"));
15
+ const node_2 = __importDefault(require("./rete/node"));
16
+ const connection_2 = __importDefault(require("./rete/connection"));
17
+ const selector_1 = __importDefault(require("./rete/selector"));
18
+ var node_3 = require("./rete/node");
19
+ Object.defineProperty(exports, "Node", { enumerable: true, get: function () { return node_3.Node; } });
20
+ var connection_3 = require("./rete/connection");
21
+ Object.defineProperty(exports, "Connection", { enumerable: true, get: function () { return connection_3.Connection; } });
22
+ var selector_2 = require("./rete/selector");
23
+ Object.defineProperty(exports, "NotifyingSelector", { enumerable: true, get: function () { return selector_2.NotifyingSelector; } });
24
+ class AllReteThen {
25
+ socket;
26
+ selector;
27
+ editor;
28
+ arrange;
29
+ area;
30
+ render;
31
+ elementsByNodeId;
32
+ areaTransform;
33
+ mode;
34
+ session;
35
+ accumulating;
36
+ onSelectionChanged;
37
+ selectableNodes;
38
+ pendingCreation;
39
+ onInfo(_x) {
40
+ }
41
+ constructor(container, session) {
42
+ const connection = new rete_connection_plugin_1.ConnectionPlugin();
43
+ this.session = session;
44
+ this.arrange = new rete_auto_arrange_plugin_1.AutoArrangePlugin();
45
+ this.editor = new rete_1.NodeEditor();
46
+ this.onSelectionChanged = () => { };
47
+ this.elementsByNodeId = {};
48
+ this.socket = new rete_1.ClassicPreset.Socket("socket");
49
+ this.area = new rete_area_plugin_1.AreaPlugin(container);
50
+ this.area.addPipe((context) => {
51
+ switch (context.type) {
52
+ case 'zoom':
53
+ case 'translate':
54
+ this.areaTransform = context.data.previous;
55
+ break;
56
+ }
57
+ return context;
58
+ });
59
+ this.areaTransform = { x: 0, y: 0, k: 1 };
60
+ this.render = new rete_react_plugin_1.ReactPlugin({ createRoot: client_1.createRoot });
61
+ this.render.addPreset(rete_react_plugin_1.Presets.classic.setup({
62
+ customize: {
63
+ node: (_) => {
64
+ return node_1.default;
65
+ },
66
+ connection: (_context) => {
67
+ return connection_1.default;
68
+ }
69
+ }
70
+ }));
71
+ this.arrange.addPreset(rete_auto_arrange_plugin_1.Presets.classic.setup());
72
+ this.editor.use(this.area);
73
+ this.area.use(connection);
74
+ this.area.use(this.render);
75
+ this.area.use(this.arrange);
76
+ connection.addPreset(() => new rete_connection_plugin_1.BidirectFlow({
77
+ makeConnection: (from, to, context) => {
78
+ const [source, target] = (0, rete_connection_plugin_1.getSourceTarget)(from, to) || [null, null];
79
+ const { editor } = context;
80
+ if (source && target) {
81
+ const sourceNode = editor.getNode(source.nodeId);
82
+ const destNode = editor.getNode(target.nodeId);
83
+ const existing = destNode.node.subscriptions.find((s) => s.source === sourceNode.node.id);
84
+ if (existing) {
85
+ console.log("Subscription already exists, selecting existing");
86
+ void this.selectSubscription(sourceNode.node, destNode.node);
87
+ }
88
+ else {
89
+ void this.session.addSubscription(sourceNode.node, destNode.node);
90
+ }
91
+ return false;
92
+ }
93
+ }
94
+ }));
95
+ this.selector = new selector_1.default(this);
96
+ this.accumulating = rete_area_plugin_1.AreaExtensions.accumulateOnCtrl();
97
+ this.selectableNodes = rete_area_plugin_1.AreaExtensions.selectableNodes(this.area, this.selector, { accumulating: this.accumulating });
98
+ rete_area_plugin_1.AreaExtensions.snapGrid(this.area, { dynamic: true, size: 16 });
99
+ this.mode = 'editing';
100
+ this.hookSessionEvents();
101
+ }
102
+ async layout() {
103
+ await this.arrange.layout({
104
+ options: {
105
+ 'elk.algorithm': 'layered',
106
+ 'elk.direction': 'RIGHT',
107
+ 'elk.layered.spacing.nodeNodeBetweenLayers': '10'
108
+ }
109
+ });
110
+ await this.centre();
111
+ }
112
+ async centre() {
113
+ await rete_area_plugin_1.AreaExtensions.zoomAt(this.area, this.editor.getNodes());
114
+ }
115
+ async reset(session) {
116
+ await this.editor.clear();
117
+ this.elementsByNodeId = {};
118
+ this.selector.release();
119
+ this.selector = new selector_1.default(this);
120
+ this.accumulating = rete_area_plugin_1.AreaExtensions.accumulateOnCtrl();
121
+ this.selectableNodes = rete_area_plugin_1.AreaExtensions.selectableNodes(this.area, this.selector, { accumulating: this.accumulating });
122
+ if (this.session != session) {
123
+ this.session = session;
124
+ this.hookSessionEvents();
125
+ }
126
+ }
127
+ hookSessionEvents() {
128
+ this.session.description.onNodeUpdated(this.onNodeUpdated.bind(this));
129
+ this.session.description.onNodeRemoved(this.onNodeRemoved.bind(this));
130
+ this.session.description.onNodeAdded(this.onNodeAdded.bind(this));
131
+ this.session.description.onSubscriptionAdded(this.onSubscriptionAdded.bind(this));
132
+ this.session.description.onSubscriptionRemoved(this.onSubscriptionRemoved.bind(this));
133
+ this.session.onLiveStatusChanged(this.onLiveStatusChanged.bind(this));
134
+ }
135
+ async onNodeUpdated(e) {
136
+ await this.updateNode(e.id, e.node);
137
+ await this.clearSelection();
138
+ }
139
+ async onNodeRemoved(e) {
140
+ await this.removeNode(e.id);
141
+ }
142
+ setPendingCreation(pending) {
143
+ this.pendingCreation = {
144
+ x: (pending.x - this.areaTransform.x) / this.areaTransform.k,
145
+ y: (pending.y - this.areaTransform.y) / this.areaTransform.k,
146
+ };
147
+ }
148
+ async onNodeAdded(e) {
149
+ await this.addNode(e.node, this.pendingCreation ?? { x: 0.0, y: 0.0 });
150
+ await this.selectNodes([e.id]);
151
+ this.pendingCreation = undefined;
152
+ }
153
+ async onSubscriptionAdded(e) {
154
+ await this.addSubscription(e.source, e.destination);
155
+ }
156
+ async onSubscriptionRemoved(e) {
157
+ await this.removeSubscription(e.source, e.destination);
158
+ }
159
+ async onLiveStatusChanged(e) {
160
+ const element = this.elementsByNodeId[e.id];
161
+ if (!element) {
162
+ console.warn("Couldn't find node with id", e.id);
163
+ return;
164
+ }
165
+ element.updateLiveInfo(e.node);
166
+ void this.area.update('node', element.id);
167
+ }
168
+ async redraw() {
169
+ for (const node of Object.values(this.session.description.nodes)) {
170
+ const destinationElement = this.elementsByNodeId[node.id];
171
+ if (!destinationElement)
172
+ continue;
173
+ const warnings = this.session.description.warnings.filter((w) => w.context.nodeId == node.id);
174
+ const errors = this.session.description.errors.filter((w) => w.context.nodeId == node.id);
175
+ destinationElement.errors = errors;
176
+ destinationElement.warnings = warnings;
177
+ await this.area.update("node", destinationElement.id);
178
+ }
179
+ for (const connection of this.editor.getConnections()) {
180
+ await this.area.update("connection", connection.id);
181
+ }
182
+ }
183
+ async replace(session) {
184
+ await this.reset(session);
185
+ this.elementsByNodeId = {};
186
+ const compiled = session.description;
187
+ for (const node of Object.values(compiled.nodes)) {
188
+ const warnings = compiled.warnings.filter((w) => w.context.nodeId == node.id);
189
+ const errors = compiled.errors.filter((w) => w.context.nodeId == node.id);
190
+ const element = await this.createElementForNode(node, warnings, errors);
191
+ if (this.session.description.layout?.[node.id]) {
192
+ const layout = this.session.description.layout?.[node.id];
193
+ await this.area.translate(element.id, { x: layout.x, y: layout.y });
194
+ }
195
+ }
196
+ for (const node of Object.values(compiled.nodes)) {
197
+ const destinationElement = this.elementsByNodeId[node.id];
198
+ for (const subscription of node.subscriptions) {
199
+ const sourceElement = this.elementsByNodeId[subscription.source];
200
+ await this.editor.addConnection(new connection_2.default(this, {
201
+ sourceNode: sourceElement.node,
202
+ destinationNode: destinationElement.node,
203
+ subscription
204
+ }, sourceElement, "output", destinationElement, "input"));
205
+ }
206
+ }
207
+ }
208
+ async addSubscription(source, destination) {
209
+ const sourceElement = this.elementsByNodeId[source.id];
210
+ const destinationElement = this.elementsByNodeId[destination.id];
211
+ const subscription = destinationElement.node.subscriptions.find((x) => x.source == sourceElement.node.id);
212
+ if (!subscription) {
213
+ console.log("No subscription exists for these nodes", source, destination);
214
+ return;
215
+ }
216
+ const existing = this.editor.getConnections().find((c) => c.info.sourceNode.id == source.id && c.info.destinationNode.id == destination.id);
217
+ if (!existing) {
218
+ await this.editor.addConnection(new connection_2.default(this, { sourceNode: sourceElement.node, destinationNode: destinationElement.node, subscription }, sourceElement, "output", destinationElement, "input"));
219
+ }
220
+ else {
221
+ console.log("Subscription already exists, selecting existing");
222
+ }
223
+ await this.selectSubscription(source, destination);
224
+ }
225
+ async removeSubscription(source, destination) {
226
+ const existing = this.editor.getConnections().find((c) => c.info.sourceNode.id == source.id && c.info.destinationNode.id == destination.id);
227
+ if (!existing) {
228
+ console.error("Couldn't find connection to remove it", { source: source.id, destination: destination.id });
229
+ return;
230
+ }
231
+ await this.editor.removeConnection(existing.id);
232
+ }
233
+ async unhighlightSubscription(id, source) {
234
+ const sourceElement = this.elementsByNodeId[source];
235
+ const destinationElement = this.elementsByNodeId[id];
236
+ if (sourceElement && destinationElement) {
237
+ const connection = this.editor.getConnections().find((n) => n.source == sourceElement.id && n.target == destinationElement.id);
238
+ if (!connection) {
239
+ console.log("Couldn't find connection to highlight", source, id);
240
+ return;
241
+ }
242
+ connection.highlight = false;
243
+ await this.area.update("connection", connection.id);
244
+ }
245
+ }
246
+ async highlightSubscription(id, source) {
247
+ const sourceElement = this.elementsByNodeId[source];
248
+ const destinationElement = this.elementsByNodeId[id];
249
+ if (sourceElement && destinationElement) {
250
+ const connection = this.editor.getConnections().find((n) => n.source == sourceElement.id && n.target == destinationElement.id);
251
+ if (!connection) {
252
+ console.log("Couldn't find connection to highlight", source, id);
253
+ return;
254
+ }
255
+ connection.highlight = true;
256
+ await this.area.update("connection", connection.id);
257
+ }
258
+ }
259
+ async selectSubscription(source, destination) {
260
+ const sourceElement = this.elementsByNodeId[source.id];
261
+ const destinationElement = this.elementsByNodeId[destination.id];
262
+ const selector = this.selector;
263
+ if (sourceElement && destinationElement) {
264
+ const connection = this.editor.getConnections().find((n) => n.source == sourceElement.id && n.target == destinationElement.id);
265
+ if (!connection) {
266
+ console.log("Couldn't find connection to select", source, destination);
267
+ return;
268
+ }
269
+ connection.selected = true;
270
+ const area = this.area;
271
+ await area.update("connection", connection.id);
272
+ const entity = {
273
+ id: connection.id,
274
+ label: "connection",
275
+ translate() { },
276
+ unselect: async () => {
277
+ connection.selected = false;
278
+ await area.update("connection", connection.id);
279
+ selector.remove(entity);
280
+ }
281
+ };
282
+ this.selector.add(entity, false);
283
+ }
284
+ }
285
+ async createElementForNode(node, warnings, errors) {
286
+ const element = new node_2.default(this, node.id, node, warnings, errors);
287
+ if (node.info.subscription.produces)
288
+ element.addOutput("output", new rete_1.ClassicPreset.Output(this.socket));
289
+ if (node.info.subscription.accepts)
290
+ element.addInput("input", new rete_1.ClassicPreset.Input(this.socket));
291
+ await this.editor.addNode(element);
292
+ this.elementsByNodeId[node.id] = element;
293
+ return element;
294
+ }
295
+ notifySelectionChanged() {
296
+ this.onSelectionChanged();
297
+ }
298
+ async selectNodes(selectedNodeIds) {
299
+ selectedNodeIds.forEach((id) => {
300
+ const element = this.elementsByNodeId[id];
301
+ if (element) {
302
+ this.selectableNodes.select(element.id, true);
303
+ }
304
+ else {
305
+ console.log("Element doesn't exist");
306
+ }
307
+ });
308
+ }
309
+ async clearSelection() {
310
+ this.selector.unselectAll();
311
+ }
312
+ selectedConnections() {
313
+ const selected = this.selector.entities;
314
+ const result = [];
315
+ for (const v of selected.values()) {
316
+ const connection = this.editor.getConnection(v.id);
317
+ if (!connection) {
318
+ continue;
319
+ }
320
+ result.push(connection);
321
+ }
322
+ return result;
323
+ }
324
+ selectedNodes() {
325
+ const selected = this.selector.entities;
326
+ const result = [];
327
+ for (const v of selected.values()) {
328
+ const node = this.editor.getNode(v.id);
329
+ if (!node) {
330
+ continue;
331
+ }
332
+ result.push(node);
333
+ }
334
+ return result;
335
+ }
336
+ async switch(mode) {
337
+ this.mode = mode;
338
+ for (const [_nodeId, v] of Object.entries(this.elementsByNodeId)) {
339
+ v.switch(mode);
340
+ await this.area.update('node', v.id);
341
+ }
342
+ await this.clearSelection();
343
+ }
344
+ async updateNode(id, node) {
345
+ const existing = this.elementsByNodeId[id];
346
+ if (!existing) {
347
+ console.warn("Couldn't find node with id", id);
348
+ return;
349
+ }
350
+ if (id !== node.id) {
351
+ delete this.elementsByNodeId[id];
352
+ this.elementsByNodeId[node.id] = existing;
353
+ }
354
+ existing.update(node);
355
+ await this.area.update('node', existing.id);
356
+ }
357
+ async removeNode(id) {
358
+ const existing = this.elementsByNodeId[id];
359
+ if (!existing) {
360
+ console.warn("Couldn't find node with id", id);
361
+ return;
362
+ }
363
+ await this.editor.removeNode(existing.id);
364
+ delete this.elementsByNodeId[id];
365
+ const connections = this.editor.getConnections().filter((c) => c.info.sourceNode.id == id || c.info.destinationNode.id == id);
366
+ connections.forEach(async (c) => this.editor.removeConnection(c.id));
367
+ }
368
+ async addNode(node, position) {
369
+ const element = await this.createElementForNode(node, [], []);
370
+ await this.area.translate(element.id, position);
371
+ return element;
372
+ }
373
+ async translateNode(id, x, y) {
374
+ const element = this.elementsByNodeId[id];
375
+ if (!element) {
376
+ console.log("Node didn't exist", id);
377
+ return;
378
+ }
379
+ await this.area.translate(element.id, { x, y });
380
+ }
381
+ }
382
+ exports.AllReteThen = AllReteThen;
383
+ exports.default = AllReteThen;
384
+ //# sourceMappingURL=rete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rete.js","sourceRoot":"","sources":["../../src/client/rete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import Library from "./library";
2
+ import { Root } from "react-dom/client";
3
+ export default class SessionView {
4
+ root: Root;
5
+ latestRuntimeState?: object;
6
+ constructor(library: Library, view: string, session: string, nodeId: string, element: HTMLDivElement);
7
+ }
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
8
+ const client_1 = require("react-dom/client");
9
+ const react_1 = require("react");
10
+ const util_1 = require("../shared/util");
11
+ class SessionView {
12
+ root;
13
+ latestRuntimeState;
14
+ constructor(library, view, session, nodeId, element) {
15
+ this.root = (0, client_1.createRoot)(element);
16
+ this.root.render((0, jsx_runtime_1.jsx)(Main, { library: library, view: view, session: session, nodeId: nodeId, onRuntimeStateChange: (s) => this.latestRuntimeState = s }));
17
+ }
18
+ }
19
+ exports.default = SessionView;
20
+ function Main(props) {
21
+ const [info, setInfo] = (0, react_1.useState)();
22
+ const [config, setConfig] = (0, react_1.useState)();
23
+ const [runtimeState, setRuntimeState_] = (0, react_1.useState)();
24
+ const [ws, setWs] = (0, react_1.useState)();
25
+ const setRuntimeState = (s) => {
26
+ setRuntimeState_(s);
27
+ props.onRuntimeStateChange(s);
28
+ };
29
+ (0, react_1.useEffect)(() => {
30
+ if (!ws)
31
+ return;
32
+ ws.onmessage = (async function (e) {
33
+ const msg = JSON.parse(e.data.toString());
34
+ handleMsg(msg);
35
+ });
36
+ }, [info, config, runtimeState, ws]);
37
+ (0, react_1.useEffect)(() => {
38
+ const baseUri = new URL(document.baseURI);
39
+ baseUri.hash = "";
40
+ const rootUrl = `${baseUri.href}`.replace('https', 'wss').replace('http', 'ws');
41
+ const ws = createSocket(`${rootUrl}live/${encodeURIComponent(props.session)}/${props.nodeId}/comms`);
42
+ setWs(ws);
43
+ }, []);
44
+ function createSocket(url) {
45
+ return new isomorphic_ws_1.default(`${url}`);
46
+ }
47
+ function handleMsg(msg) {
48
+ const msgType = msg.type;
49
+ switch (msgType) {
50
+ case "init": {
51
+ if (msg.document) {
52
+ const node = msg.document.nodes?.find((n) => n.config?.id == props.nodeId);
53
+ const latestInfo = node?.type ? props.library.find(node?.type) : undefined;
54
+ setInfo(latestInfo);
55
+ setConfig(node?.config);
56
+ }
57
+ break;
58
+ }
59
+ case "runtime-node-state":
60
+ setRuntimeState(msg.state);
61
+ break;
62
+ case "runtime-event":
63
+ {
64
+ const handler = info?.runtime?.handleEvent;
65
+ if (!handler) {
66
+ console.error("Missing event handler for this node??");
67
+ return;
68
+ }
69
+ if (!runtimeState) {
70
+ console.error("Received event before runtime state");
71
+ return;
72
+ }
73
+ const updated = handler(msg.event, runtimeState);
74
+ setRuntimeState({ ...updated });
75
+ break;
76
+ }
77
+ case "runtime-state":
78
+ break;
79
+ case "output":
80
+ break;
81
+ case "error":
82
+ break;
83
+ case "running":
84
+ break;
85
+ case "started":
86
+ break;
87
+ case "stopped":
88
+ break;
89
+ default:
90
+ (0, util_1.assertUnreachable)(msgType);
91
+ }
92
+ }
93
+ function sendCommand(command) {
94
+ sendMsg({
95
+ type: "node-command", command, id: props.nodeId
96
+ });
97
+ }
98
+ function sendMsg(msg) {
99
+ ws?.send(JSON.stringify(msg));
100
+ }
101
+ if (config && config.id && config.displayName && runtimeState && info) {
102
+ return (0, jsx_runtime_1.jsx)(RenderIt, { view: props.view, config: config, state: runtimeState, info: info, sendCommand: (c) => sendCommand(c) });
103
+ }
104
+ else {
105
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
106
+ }
107
+ }
108
+ function RenderIt(props) {
109
+ switch (props.view) {
110
+ case 'fullscreen':
111
+ return (0, jsx_runtime_1.jsx)(react_1.Suspense, { children: props.info.runtime?.fullscreen ?
112
+ (0, jsx_runtime_1.jsx)(props.info.runtime.fullscreen, { state: props.state, config: props.config, sendCommand: props.sendCommand })
113
+ : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Missing view" }) });
114
+ case 'summary':
115
+ return (0, jsx_runtime_1.jsx)(react_1.Suspense, { children: props.info.runtime?.summary ?
116
+ (0, jsx_runtime_1.jsx)(props.info.runtime.summary, { state: props.state, config: props.config, sendCommand: props.sendCommand })
117
+ : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Missing view" }) });
118
+ case 'inline':
119
+ return (0, jsx_runtime_1.jsx)(react_1.Suspense, { children: props.info.runtime?.inline ?
120
+ (0, jsx_runtime_1.jsx)(props.info.runtime.inline, { state: props.state, config: props.config, sendCommand: props.sendCommand })
121
+ : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Missing view" }) });
122
+ case 'helpPopup':
123
+ return (0, jsx_runtime_1.jsx)(react_1.Suspense, { children: props.info.runtime?.helpPopup?.jsx
124
+ ? (0, jsx_runtime_1.jsx)(props.info.runtime.helpPopup.jsx, { state: props.state, config: props.config, sendCommand: props.sendCommand })
125
+ : props.info.runtime?.helpPopup?.simple
126
+ ? (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: props.info.runtime.helpPopup.simple.title }), props.info.runtime.helpPopup.simple.content.map((c) => (0, jsx_runtime_1.jsx)("p", { children: c }))] })
127
+ : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Missing view" }) });
128
+ default:
129
+ throw new Error(`Unknown view type: '${props.view}'`);
130
+ }
131
+ }
132
+ //# sourceMappingURL=session-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-view.js","sourceRoot":"","sources":["../../src/client/session-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { BaseConfig } from "../extension/client-types";
2
+ import { NodeDescription, DocumentDescription, SubscriptionConfiguration, CompileWarning, CompileError } from "../shared/document";
3
+ import EventHandler from 'eventhandler';
4
+ import { ConnectionInfo } from "./rete";
5
+ import ComponentEvents from "./componentevents";
6
+ import Library from './library';
7
+ import { RunningNodeInfo, RunningState } from "../shared/server-msg";
8
+ export type LiveStatusEvent = {
9
+ id: string;
10
+ node: LiveInfo;
11
+ };
12
+ export type CommandSentEvent = {
13
+ nodeId: string;
14
+ command: object;
15
+ };
16
+ export type LiveStatusEventHandler = (e: LiveStatusEvent) => void;
17
+ export type CommandSentHandler = (e: CommandSentEvent) => void;
18
+ export type NodeStatus = {
19
+ type: 'unknown';
20
+ } | {
21
+ type: 'running';
22
+ info: LiveInfo;
23
+ };
24
+ export type NodeInput = {
25
+ sourceNodeId: string;
26
+ destPin: string;
27
+ };
28
+ export type LiveInfo = RunningNodeInfo & {
29
+ inputs: NodeInput[];
30
+ runtimeState?: object;
31
+ };
32
+ declare class Session {
33
+ description: DocumentDescription;
34
+ events: EventHandler;
35
+ componentEvents: ComponentEvents;
36
+ library: Library;
37
+ active: {
38
+ [id: string]: LiveInfo;
39
+ };
40
+ sessionKey?: string;
41
+ get live(): boolean;
42
+ constructor(library: Library, description: DocumentDescription);
43
+ onLiveStatusChanged(h: LiveStatusEventHandler): void;
44
+ onLiveSessionStarted(h: () => void): void;
45
+ onLiveSessionEnded(h: () => void): void;
46
+ onCommandSent(h: CommandSentHandler): void;
47
+ onValidated(h: () => void): void;
48
+ sendCommand(nodeId: string, command: object): void;
49
+ startLiveSession(sessionKey: string): void;
50
+ endLiveSession(): void;
51
+ finishEditingConnection(info: ConnectionInfo, update?: SubscriptionConfiguration): void;
52
+ addNode(type: string): NodeDescription<BaseConfig>;
53
+ removeNode(id: string): void;
54
+ finishEditingNode(id: string, update?: {
55
+ config?: unknown;
56
+ }): void;
57
+ removeSubscription(sourceId: string, destinationId: string): void;
58
+ addSubscription<SC extends BaseConfig, DC extends BaseConfig>(source: NodeDescription<SC>, destination: NodeDescription<DC>): void;
59
+ validate(): void;
60
+ addWarning(w: CompileWarning): void;
61
+ addError(w: CompileError): void;
62
+ updateLiveInfo(summary: RunningState): void;
63
+ updateRuntimeState(state: {
64
+ [id: string]: object;
65
+ }): void;
66
+ updateNodeRuntimeState(id: string, state: object): void;
67
+ runNodeStateEvent(id: string, event: object): void;
68
+ defaultLiveInfo(id: string): LiveInfo;
69
+ }
70
+ export default Session;