@nil-/xit 0.4.4 → 0.4.6

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.
@@ -2,7 +2,7 @@
2
2
  </script>
3
3
 
4
4
  <div>
5
- {@render children()}
5
+ {@render children?.()}
6
6
  </div>
7
7
 
8
8
  <style>
@@ -1,6 +1,5 @@
1
1
  <script lang="ts">import Container from "./Container.svelte";
2
2
  import DividerOverlay from "../utilities/DividerOverlay.svelte";
3
- import {} from "svelte";
4
3
  import { create } from "../utilities/draggable.js";
5
4
  let {
6
5
  min = 2,
@@ -1,4 +1,4 @@
1
- import { type Snippet } from "svelte";
1
+ import type { Snippet } from "svelte";
2
2
  type Props = {
3
3
  min?: number;
4
4
  side_a: Snippet;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nil-/xit",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "peerDependencies": {
5
5
  "svelte": "^5.7.1"
6
6
  },
@@ -19,6 +19,10 @@
19
19
  "types": "./test/Main.svelte.d.ts",
20
20
  "svelte": "./test/Main.svelte"
21
21
  },
22
+ "./test/ReadOnlyValueLoader.svelte": {
23
+ "types": "./test/ReadOnlyValueLoader.svelte.d.ts",
24
+ "svelte": "./test/ReadOnlyValueLoader.svelte"
25
+ },
22
26
  "./components/layouts/Container.svelte": {
23
27
  "types": "./components/layouts/Container.svelte.d.ts",
24
28
  "svelte": "./components/layouts/Container.svelte"
package/test/Main.svelte CHANGED
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">import TestFrame from "./Frame.svelte";
2
2
  import Split from "../components/layouts/Split.svelte";
3
3
  import Scrollable from "../components/layouts/Scrollable.svelte";
4
- import { codec } from "$xit/codec.js";
4
+ import { config } from "$xit/config.js";
5
5
  let selected = $state(-1);
6
6
  </script>
7
7
 
@@ -25,7 +25,7 @@ let selected = $state(-1);
25
25
  </Scrollable>
26
26
  {/snippet}
27
27
 
28
- <TestFrame decoder={codec.decode} {selected}>
28
+ <TestFrame decoder={config.codec.decode} {selected}>
29
29
  {#snippet load({ tags, inputs, outputs })}
30
30
  <Scrollable>
31
31
  <Split vertical offset={200}>
@@ -0,0 +1,42 @@
1
+ <script lang="ts">import { onDestroy } from "svelte";
2
+ import { xit } from "..";
3
+ const {
4
+ loaded_data,
5
+ frames
6
+ } = $props();
7
+ const { load_frame_data } = xit();
8
+ let unmounted = false;
9
+ const unsubs = [];
10
+ let data = $state(frames.map((v) => null));
11
+ const load = async (frame, index) => {
12
+ const frame_data = await load_frame_data(frame.id, frame.tag);
13
+ if (unmounted) {
14
+ frame_data.unsub();
15
+ } else {
16
+ unsubs.push(frame_data.unsub);
17
+ if (frame.type == "boolean") {
18
+ data[index] = frame_data.values.boolean(frame.key, false);
19
+ } else if (frame.type == "double") {
20
+ data[index] = frame_data.values.double(frame.key, 0);
21
+ } else if (frame.type == "number") {
22
+ data[index] = frame_data.values.number(frame.key, 0);
23
+ } else if (frame.type == "string") {
24
+ data[index] = frame_data.values.string(frame.key, "");
25
+ } else if (frame.type == "buffer") {
26
+ data[index] = frame_data.values.buffer(frame.key, new Uint8Array());
27
+ } else if (frame.type == "json") {
28
+ data[index] = frame_data.values.json(frame.key, null, frame.codec);
29
+ }
30
+ }
31
+ };
32
+ onDestroy(() => {
33
+ unmounted = true;
34
+ unsubs.forEach((c) => c());
35
+ });
36
+ </script>
37
+
38
+ {#if loaded_data != null}
39
+ {#await Promise.all(frames.map(load)) then _}
40
+ {@render loaded_data(data)}
41
+ {/await}
42
+ {/if}
@@ -0,0 +1,21 @@
1
+ import type { Snippet } from "svelte";
2
+ import { type CoDec } from "..";
3
+ type FrameDetails = {
4
+ id: string;
5
+ key: string;
6
+ tag?: string;
7
+ type: "boolean" | "double" | "number" | "string" | "buffer";
8
+ } | {
9
+ id: string;
10
+ key: string;
11
+ tag?: string;
12
+ type: "json";
13
+ codec: CoDec<any>;
14
+ };
15
+ type $$ComponentProps = {
16
+ loaded_data?: Snippet<[any[]]>;
17
+ frames: FrameDetails[];
18
+ };
19
+ declare const ReactiveValueLoader: import("svelte").Component<$$ComponentProps, {}, "">;
20
+ type ReactiveValueLoader = ReturnType<typeof ReactiveValueLoader>;
21
+ export default ReactiveValueLoader;
@@ -0,0 +1,42 @@
1
+ <script lang="ts">import { onDestroy } from "svelte";
2
+ import { xit } from "..";
3
+ const {
4
+ loaded_data,
5
+ frames
6
+ } = $props();
7
+ const { load_frame_data } = xit();
8
+ let unmounted = false;
9
+ const unsubs = [];
10
+ let data = $state(frames.map((v) => null));
11
+ const load = async (frame, index) => {
12
+ const frame_data = await load_frame_data(frame.id, frame.tag);
13
+ if (unmounted) {
14
+ frame_data.unsub();
15
+ } else {
16
+ unsubs.push(frame_data.unsub);
17
+ if (frame.type == "boolean") {
18
+ unsubs.push(frame_data.values.boolean(frame.key, false).subscribe((v) => data[index] = v));
19
+ } else if (frame.type == "double") {
20
+ unsubs.push(frame_data.values.double(frame.key, 0).subscribe((v) => data[index] = v));
21
+ } else if (frame.type == "number") {
22
+ unsubs.push(frame_data.values.number(frame.key, 0).subscribe((v) => data[index] = v));
23
+ } else if (frame.type == "string") {
24
+ unsubs.push(frame_data.values.string(frame.key, "").subscribe((v) => data[index] = v));
25
+ } else if (frame.type == "buffer") {
26
+ unsubs.push(frame_data.values.buffer(frame.key, new Uint8Array()).subscribe((v) => data[index] = v));
27
+ } else if (frame.type == "json") {
28
+ unsubs.push(frame_data.values.json(frame.key, null, frame.codec).subscribe((v) => data[index] = v));
29
+ }
30
+ }
31
+ };
32
+ onDestroy(() => {
33
+ unmounted = true;
34
+ unsubs.forEach((c) => c());
35
+ });
36
+ </script>
37
+
38
+ {#if loaded_data != null}
39
+ {#await Promise.all(frames.map(load)) then _}
40
+ {@render loaded_data(data)}
41
+ {/await}
42
+ {/if}
@@ -0,0 +1,21 @@
1
+ import type { Snippet } from "svelte";
2
+ import { type CoDec } from "..";
3
+ type FrameDetails = {
4
+ id: string;
5
+ key: string;
6
+ tag?: string;
7
+ type: "boolean" | "double" | "number" | "string" | "buffer";
8
+ } | {
9
+ id: string;
10
+ key: string;
11
+ tag?: string;
12
+ type: "json";
13
+ codec: CoDec<any>;
14
+ };
15
+ type $$ComponentProps = {
16
+ loaded_data?: Snippet<[any[]]>;
17
+ frames: FrameDetails[];
18
+ };
19
+ declare const ReadOnlyValueLoader: import("svelte").Component<$$ComponentProps, {}, "">;
20
+ type ReadOnlyValueLoader = ReturnType<typeof ReadOnlyValueLoader>;
21
+ export default ReadOnlyValueLoader;