@json-render/svelte 0.6.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/LICENSE +201 -0
- package/dist/CatalogRenderer.svelte +55 -0
- package/dist/CatalogRenderer.svelte.d.ts +20 -0
- package/dist/CatalogRenderer.svelte.d.ts.map +1 -0
- package/dist/ConfirmDialog.svelte +98 -0
- package/dist/ConfirmDialog.svelte.d.ts +10 -0
- package/dist/ConfirmDialog.svelte.d.ts.map +1 -0
- package/dist/ConfirmDialogManager.svelte +15 -0
- package/dist/ConfirmDialogManager.svelte.d.ts +4 -0
- package/dist/ConfirmDialogManager.svelte.d.ts.map +1 -0
- package/dist/ElementRenderer.svelte +147 -0
- package/dist/ElementRenderer.svelte.d.ts +13 -0
- package/dist/ElementRenderer.svelte.d.ts.map +1 -0
- package/dist/JsonUIProvider.svelte +68 -0
- package/dist/JsonUIProvider.svelte.d.ts +37 -0
- package/dist/JsonUIProvider.svelte.d.ts.map +1 -0
- package/dist/Renderer.svelte +34 -0
- package/dist/Renderer.svelte.d.ts +19 -0
- package/dist/Renderer.svelte.d.ts.map +1 -0
- package/dist/RendererWithProvider.test.svelte +37 -0
- package/dist/RendererWithProvider.test.svelte.d.ts +14 -0
- package/dist/RendererWithProvider.test.svelte.d.ts.map +1 -0
- package/dist/RepeatChildren.svelte +50 -0
- package/dist/RepeatChildren.svelte.d.ts +13 -0
- package/dist/RepeatChildren.svelte.d.ts.map +1 -0
- package/dist/TestButton.svelte +11 -0
- package/dist/TestButton.svelte.d.ts +9 -0
- package/dist/TestButton.svelte.d.ts.map +1 -0
- package/dist/TestContainer.svelte +19 -0
- package/dist/TestContainer.svelte.d.ts +11 -0
- package/dist/TestContainer.svelte.d.ts.map +1 -0
- package/dist/TestText.svelte +9 -0
- package/dist/TestText.svelte.d.ts +9 -0
- package/dist/TestText.svelte.d.ts.map +1 -0
- package/dist/catalog-types.d.ts +63 -0
- package/dist/catalog-types.d.ts.map +1 -0
- package/dist/catalog-types.js +1 -0
- package/dist/contexts/ActionProvider.svelte +344 -0
- package/dist/contexts/ActionProvider.svelte.d.ts +62 -0
- package/dist/contexts/ActionProvider.svelte.d.ts.map +1 -0
- package/dist/contexts/FunctionsContextProvider.svelte +44 -0
- package/dist/contexts/FunctionsContextProvider.svelte.d.ts +21 -0
- package/dist/contexts/FunctionsContextProvider.svelte.d.ts.map +1 -0
- package/dist/contexts/RepeatScopeProvider.svelte +49 -0
- package/dist/contexts/RepeatScopeProvider.svelte.d.ts +26 -0
- package/dist/contexts/RepeatScopeProvider.svelte.d.ts.map +1 -0
- package/dist/contexts/StateProvider.svelte +182 -0
- package/dist/contexts/StateProvider.svelte.d.ts +47 -0
- package/dist/contexts/StateProvider.svelte.d.ts.map +1 -0
- package/dist/contexts/ValidationProvider.svelte +198 -0
- package/dist/contexts/ValidationProvider.svelte.d.ts +57 -0
- package/dist/contexts/ValidationProvider.svelte.d.ts.map +1 -0
- package/dist/contexts/VisibilityProvider.svelte +82 -0
- package/dist/contexts/VisibilityProvider.svelte.d.ts +29 -0
- package/dist/contexts/VisibilityProvider.svelte.d.ts.map +1 -0
- package/dist/contexts/actions.test.js +156 -0
- package/dist/contexts/state.test.js +118 -0
- package/dist/contexts/visibility.test.js +71 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/renderer.d.ts +128 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +124 -0
- package/dist/renderer.test.js +168 -0
- package/dist/schema.d.ts +57 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +81 -0
- package/dist/streaming.svelte.d.ts +75 -0
- package/dist/streaming.svelte.d.ts.map +1 -0
- package/dist/streaming.svelte.js +404 -0
- package/dist/utils.svelte.d.ts +26 -0
- package/dist/utils.svelte.d.ts.map +1 -0
- package/dist/utils.svelte.js +92 -0
- package/dist/utils.test.js +307 -0
- package/package.json +70 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ComputedFunction } from "@json-render/core";
|
|
2
|
+
/**
|
|
3
|
+
* Props for JSONUIProvider
|
|
4
|
+
*/
|
|
5
|
+
export interface JSONUIProviderProps {
|
|
6
|
+
/** Component registry */
|
|
7
|
+
registry: ComponentRegistry;
|
|
8
|
+
/**
|
|
9
|
+
* External store (controlled mode). When provided, `initialState` and
|
|
10
|
+
* `onStateChange` are ignored.
|
|
11
|
+
*/
|
|
12
|
+
store?: StateStore;
|
|
13
|
+
/** Initial state model */
|
|
14
|
+
initialState?: Record<string, unknown>;
|
|
15
|
+
/** Action handlers */
|
|
16
|
+
handlers?: Record<string, ActionHandler>;
|
|
17
|
+
/** Navigation function */
|
|
18
|
+
navigate?: (path: string) => void;
|
|
19
|
+
/** Custom validation functions */
|
|
20
|
+
validationFunctions?: Record<string, (value: unknown, args?: Record<string, unknown>) => boolean>;
|
|
21
|
+
/** Named functions for `$computed` expressions in props */
|
|
22
|
+
functions?: Record<string, ComputedFunction>;
|
|
23
|
+
/** Callback when state changes (uncontrolled mode) */
|
|
24
|
+
onStateChange?: (changes: Array<{
|
|
25
|
+
path: string;
|
|
26
|
+
value: unknown;
|
|
27
|
+
}>) => void;
|
|
28
|
+
/** Children snippet */
|
|
29
|
+
children: Snippet;
|
|
30
|
+
}
|
|
31
|
+
import type { Snippet } from "svelte";
|
|
32
|
+
import type { ActionHandler, StateStore } from "@json-render/core";
|
|
33
|
+
import type { ComponentRegistry } from "./renderer.js";
|
|
34
|
+
declare const JsonUIProvider: import("svelte").Component<JSONUIProviderProps, {}, "">;
|
|
35
|
+
type JsonUIProvider = ReturnType<typeof JsonUIProvider>;
|
|
36
|
+
export default JsonUIProvider;
|
|
37
|
+
//# sourceMappingURL=JsonUIProvider.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonUIProvider.svelte.d.ts","sourceRoot":"","sources":["../src/JsonUIProvider.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yBAAyB;IACzB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kCAAkC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAC1B,MAAM,EACN,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAC5D,CAAC;IACF,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,sDAAsD;IACtD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IAC3E,uBAAuB;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA0CvD,QAAA,MAAM,cAAc,yDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Spec } from "@json-render/core";
|
|
3
|
+
import ElementRenderer from "./ElementRenderer.svelte";
|
|
4
|
+
import type { ComponentRegistry, ComponentRenderer } from "./renderer.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Props for the Renderer component
|
|
8
|
+
*/
|
|
9
|
+
export interface RendererProps {
|
|
10
|
+
/** The UI spec to render */
|
|
11
|
+
spec: Spec | null;
|
|
12
|
+
/** Component registry */
|
|
13
|
+
registry: ComponentRegistry;
|
|
14
|
+
/** Whether the spec is currently loading/streaming */
|
|
15
|
+
loading?: boolean;
|
|
16
|
+
/** Fallback component for unknown types */
|
|
17
|
+
fallback?: ComponentRenderer;
|
|
18
|
+
}
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<script lang="ts">
|
|
22
|
+
let { spec, registry, loading = false, fallback }: RendererProps = $props();
|
|
23
|
+
|
|
24
|
+
let rootElement = $derived(spec?.root ? spec.elements[spec.root] : undefined);
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
{#if spec && rootElement}
|
|
28
|
+
<ElementRenderer
|
|
29
|
+
element={rootElement}
|
|
30
|
+
{spec}
|
|
31
|
+
{registry}
|
|
32
|
+
{loading}
|
|
33
|
+
{fallback} />
|
|
34
|
+
{/if}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Spec } from "@json-render/core";
|
|
2
|
+
import type { ComponentRegistry, ComponentRenderer } from "./renderer.js";
|
|
3
|
+
/**
|
|
4
|
+
* Props for the Renderer component
|
|
5
|
+
*/
|
|
6
|
+
export interface RendererProps {
|
|
7
|
+
/** The UI spec to render */
|
|
8
|
+
spec: Spec | null;
|
|
9
|
+
/** Component registry */
|
|
10
|
+
registry: ComponentRegistry;
|
|
11
|
+
/** Whether the spec is currently loading/streaming */
|
|
12
|
+
loading?: boolean;
|
|
13
|
+
/** Fallback component for unknown types */
|
|
14
|
+
fallback?: ComponentRenderer;
|
|
15
|
+
}
|
|
16
|
+
declare const Renderer: import("svelte").Component<RendererProps, {}, "">;
|
|
17
|
+
type Renderer = ReturnType<typeof Renderer>;
|
|
18
|
+
export default Renderer;
|
|
19
|
+
//# sourceMappingURL=Renderer.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Renderer.svelte.d.ts","sourceRoot":"","sources":["../src/Renderer.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,yBAAyB;IACzB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAgBH,QAAA,MAAM,QAAQ,mDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Spec, ActionHandler } from "@json-render/core";
|
|
3
|
+
import type { ComponentRegistry, ComponentRenderer } from "./renderer.js";
|
|
4
|
+
import StateProvider from "./contexts/StateProvider.svelte";
|
|
5
|
+
import VisibilityProvider from "./contexts/VisibilityProvider.svelte";
|
|
6
|
+
import ValidationProvider from "./contexts/ValidationProvider.svelte";
|
|
7
|
+
import ActionProvider from "./contexts/ActionProvider.svelte";
|
|
8
|
+
import Renderer from "./Renderer.svelte";
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
spec: Spec | null;
|
|
12
|
+
registry: ComponentRegistry;
|
|
13
|
+
loading?: boolean;
|
|
14
|
+
fallback?: ComponentRenderer;
|
|
15
|
+
initialState?: Record<string, unknown>;
|
|
16
|
+
handlers?: Record<string, ActionHandler>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
let {
|
|
20
|
+
spec,
|
|
21
|
+
registry,
|
|
22
|
+
loading = false,
|
|
23
|
+
fallback,
|
|
24
|
+
initialState = {},
|
|
25
|
+
handlers = {},
|
|
26
|
+
}: Props = $props();
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<StateProvider {initialState}>
|
|
30
|
+
<VisibilityProvider>
|
|
31
|
+
<ValidationProvider>
|
|
32
|
+
<ActionProvider {handlers}>
|
|
33
|
+
<Renderer {spec} {registry} {loading} {fallback} />
|
|
34
|
+
</ActionProvider>
|
|
35
|
+
</ValidationProvider>
|
|
36
|
+
</VisibilityProvider>
|
|
37
|
+
</StateProvider>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Spec, ActionHandler } from "@json-render/core";
|
|
2
|
+
import type { ComponentRegistry, ComponentRenderer } from "./renderer.js";
|
|
3
|
+
interface Props {
|
|
4
|
+
spec: Spec | null;
|
|
5
|
+
registry: ComponentRegistry;
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
fallback?: ComponentRenderer;
|
|
8
|
+
initialState?: Record<string, unknown>;
|
|
9
|
+
handlers?: Record<string, ActionHandler>;
|
|
10
|
+
}
|
|
11
|
+
declare const RendererWithProvider: import("svelte").Component<Props, {}, "">;
|
|
12
|
+
type RendererWithProvider = ReturnType<typeof RendererWithProvider>;
|
|
13
|
+
export default RendererWithProvider;
|
|
14
|
+
//# sourceMappingURL=RendererWithProvider.test.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RendererWithProvider.test.svelte.d.ts","sourceRoot":"","sources":["../src/RendererWithProvider.test.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAQxE,UAAU,KAAK;IACb,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC1C;AAiCH,QAAA,MAAM,oBAAoB,2CAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Spec, UIElement } from "@json-render/core";
|
|
3
|
+
import { getByPath } from "@json-render/core";
|
|
4
|
+
import type { ComponentRegistry, ComponentRenderer } from "./renderer.js";
|
|
5
|
+
import { getStateContext } from "./contexts/StateProvider.svelte";
|
|
6
|
+
import RepeatScopeProvider from "./contexts/RepeatScopeProvider.svelte";
|
|
7
|
+
import ElementRenderer from "./ElementRenderer.svelte";
|
|
8
|
+
|
|
9
|
+
interface Props {
|
|
10
|
+
element: UIElement;
|
|
11
|
+
spec: Spec;
|
|
12
|
+
registry: ComponentRegistry;
|
|
13
|
+
loading?: boolean;
|
|
14
|
+
fallback?: ComponentRenderer;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
let { element, spec, registry, loading = false, fallback }: Props = $props();
|
|
18
|
+
|
|
19
|
+
const stateCtx = getStateContext();
|
|
20
|
+
|
|
21
|
+
// Get items from state
|
|
22
|
+
let items = $derived(
|
|
23
|
+
(getByPath(stateCtx.state, element.repeat!.statePath) as
|
|
24
|
+
| unknown[]
|
|
25
|
+
| undefined) ?? [],
|
|
26
|
+
);
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
{#each items as itemValue, index (element.repeat?.key && typeof itemValue === "object" && itemValue !== null ? String((itemValue as any)[element.repeat.key] ?? index) : String(index))}
|
|
30
|
+
{@const basePath = `${element.repeat!.statePath}/${index}`}
|
|
31
|
+
|
|
32
|
+
{#if element.children}
|
|
33
|
+
<RepeatScopeProvider item={itemValue} {index} {basePath}>
|
|
34
|
+
{#each element.children as childKey (childKey)}
|
|
35
|
+
{#if spec.elements[childKey]}
|
|
36
|
+
<ElementRenderer
|
|
37
|
+
element={spec.elements[childKey]}
|
|
38
|
+
{spec}
|
|
39
|
+
{registry}
|
|
40
|
+
{loading}
|
|
41
|
+
{fallback} />
|
|
42
|
+
{:else if !loading}
|
|
43
|
+
{console.warn(
|
|
44
|
+
`[json-render] Missing element "${childKey}" referenced as child of "${element.type}". This element will not render.`,
|
|
45
|
+
)}
|
|
46
|
+
{/if}
|
|
47
|
+
{/each}
|
|
48
|
+
</RepeatScopeProvider>
|
|
49
|
+
{/if}
|
|
50
|
+
{/each}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Spec, UIElement } from "@json-render/core";
|
|
2
|
+
import type { ComponentRegistry, ComponentRenderer } from "./renderer.js";
|
|
3
|
+
interface Props {
|
|
4
|
+
element: UIElement;
|
|
5
|
+
spec: Spec;
|
|
6
|
+
registry: ComponentRegistry;
|
|
7
|
+
loading?: boolean;
|
|
8
|
+
fallback?: ComponentRenderer;
|
|
9
|
+
}
|
|
10
|
+
declare const RepeatChildren: import("svelte").Component<Props, {}, "">;
|
|
11
|
+
type RepeatChildren = ReturnType<typeof RepeatChildren>;
|
|
12
|
+
export default RepeatChildren;
|
|
13
|
+
//# sourceMappingURL=RepeatChildren.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepeatChildren.svelte.d.ts","sourceRoot":"","sources":["../src/RepeatChildren.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMxE,UAAU,KAAK;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AA0CH,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { BaseComponentProps } from "./catalog-types.js";
|
|
3
|
+
|
|
4
|
+
interface Props extends BaseComponentProps<{ label?: string }> {}
|
|
5
|
+
|
|
6
|
+
let { props, emit, bindings, loading }: Props = $props();
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<button class="test-button" onclick={() => emit("press")}>
|
|
10
|
+
{props.label ?? "Button"}
|
|
11
|
+
</button>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BaseComponentProps } from "./catalog-types.js";
|
|
2
|
+
interface Props extends BaseComponentProps<{
|
|
3
|
+
label?: string;
|
|
4
|
+
}> {
|
|
5
|
+
}
|
|
6
|
+
declare const TestButton: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type TestButton = ReturnType<typeof TestButton>;
|
|
8
|
+
export default TestButton;
|
|
9
|
+
//# sourceMappingURL=TestButton.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestButton.svelte.d.ts","sourceRoot":"","sources":["../src/TestButton.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,UAAU,KAAM,SAAQ,kBAAkB,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;CAAG;AAcnE,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
import type { BaseComponentProps } from "./catalog-types.js";
|
|
4
|
+
|
|
5
|
+
interface Props extends BaseComponentProps<{ title?: string }> {
|
|
6
|
+
children?: Snippet;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let { props, children, emit, bindings, loading }: Props = $props();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<div class="test-container" data-loading={loading}>
|
|
13
|
+
{#if props.title}
|
|
14
|
+
<h2>{props.title}</h2>
|
|
15
|
+
{/if}
|
|
16
|
+
{#if children}
|
|
17
|
+
{@render children()}
|
|
18
|
+
{/if}
|
|
19
|
+
</div>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Snippet } from "svelte";
|
|
2
|
+
import type { BaseComponentProps } from "./catalog-types.js";
|
|
3
|
+
interface Props extends BaseComponentProps<{
|
|
4
|
+
title?: string;
|
|
5
|
+
}> {
|
|
6
|
+
children?: Snippet;
|
|
7
|
+
}
|
|
8
|
+
declare const TestContainer: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type TestContainer = ReturnType<typeof TestContainer>;
|
|
10
|
+
export default TestContainer;
|
|
11
|
+
//# sourceMappingURL=TestContainer.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestContainer.svelte.d.ts","sourceRoot":"","sources":["../src/TestContainer.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,UAAU,KAAM,SAAQ,kBAAkB,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAoBH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { BaseComponentProps } from "./catalog-types.js";
|
|
3
|
+
|
|
4
|
+
interface Props extends BaseComponentProps<{ text?: string }> {}
|
|
5
|
+
|
|
6
|
+
let { props, emit, bindings, loading }: Props = $props();
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<span class="test-text">{props.text ?? ""}</span>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BaseComponentProps } from "./catalog-types.js";
|
|
2
|
+
interface Props extends BaseComponentProps<{
|
|
3
|
+
text?: string;
|
|
4
|
+
}> {
|
|
5
|
+
}
|
|
6
|
+
declare const TestText: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type TestText = ReturnType<typeof TestText>;
|
|
8
|
+
export default TestText;
|
|
9
|
+
//# sourceMappingURL=TestText.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestText.svelte.d.ts","sourceRoot":"","sources":["../src/TestText.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,UAAU,KAAM,SAAQ,kBAAkB,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;CAAG;AAYlE,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Component, Snippet } from "svelte";
|
|
2
|
+
import type { Catalog, InferCatalogComponents, InferCatalogActions, InferComponentProps, InferActionParams, StateModel } from "@json-render/core";
|
|
3
|
+
export type { StateModel };
|
|
4
|
+
/**
|
|
5
|
+
* State setter function for updating application state
|
|
6
|
+
*/
|
|
7
|
+
export type SetState = (updater: (prev: Record<string, unknown>) => Record<string, unknown>) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Handle returned by the `on()` function for a specific event.
|
|
10
|
+
* Provides metadata about the event binding and a method to fire it.
|
|
11
|
+
*/
|
|
12
|
+
export interface EventHandle {
|
|
13
|
+
/** Fire the event (resolve action bindings) */
|
|
14
|
+
emit: () => void;
|
|
15
|
+
/** Whether any binding requested preventDefault */
|
|
16
|
+
shouldPreventDefault: boolean;
|
|
17
|
+
/** Whether any handler is bound to this event */
|
|
18
|
+
bound: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Catalog-agnostic base type for component render function arguments.
|
|
22
|
+
* Use this when building reusable component libraries.
|
|
23
|
+
*/
|
|
24
|
+
export interface BaseComponentProps<P = Record<string, unknown>> {
|
|
25
|
+
props: P;
|
|
26
|
+
children?: Snippet;
|
|
27
|
+
/** Simple event emitter (shorthand). Fires the event and returns void. */
|
|
28
|
+
emit: (event: string) => void;
|
|
29
|
+
/** Get an event handle with metadata. Use when you need shouldPreventDefault or bound checks. */
|
|
30
|
+
on: (event: string) => EventHandle;
|
|
31
|
+
/**
|
|
32
|
+
* Two-way binding paths resolved from `$bindState` / `$bindItem` expressions.
|
|
33
|
+
* Maps prop name → absolute state path for write-back.
|
|
34
|
+
*/
|
|
35
|
+
bindings?: Record<string, string>;
|
|
36
|
+
loading?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Context passed to component render functions
|
|
40
|
+
*/
|
|
41
|
+
export interface ComponentContext<C extends Catalog, K extends keyof InferCatalogComponents<C>> extends BaseComponentProps<InferComponentProps<C, K>> {
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Component render function type for Svelte
|
|
45
|
+
*/
|
|
46
|
+
export type ComponentFn<C extends Catalog, K extends keyof InferCatalogComponents<C>> = Component<BaseComponentProps<InferComponentProps<C, K>>>;
|
|
47
|
+
/**
|
|
48
|
+
* Registry of Svelte component constructors for a catalog
|
|
49
|
+
*/
|
|
50
|
+
export type Components<C extends Catalog> = {
|
|
51
|
+
[K in keyof InferCatalogComponents<C>]: ComponentFn<C, K>;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Action handler function type
|
|
55
|
+
*/
|
|
56
|
+
export type ActionFn<C extends Catalog, K extends keyof InferCatalogActions<C>> = (params: InferActionParams<C, K> | undefined, setState: SetState, state: StateModel) => Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Registry of all action handlers for a catalog
|
|
59
|
+
*/
|
|
60
|
+
export type Actions<C extends Catalog> = {
|
|
61
|
+
[K in keyof InferCatalogActions<C>]: ActionFn<C, K>;
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=catalog-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-types.d.ts","sourceRoot":"","sources":["../src/catalog-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,KAAK,EACV,OAAO,EACP,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,UAAU,EAAE,CAAC;AAM3B;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CACrB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChE,IAAI,CAAC;AAMV;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,mDAAmD;IACnD,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iDAAiD;IACjD,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,iGAAiG;IACjG,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,MAAM,sBAAsB,CAAC,CAAC,CAAC,CACzC,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAAG;AAE1D;;GAEG;AACH,MAAM,MAAM,WAAW,CACrB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,MAAM,sBAAsB,CAAC,CAAC,CAAC,IACvC,SAAS,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,OAAO,IAAI;KACzC,CAAC,IAAI,MAAM,sBAAsB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1D,CAAC;AAMF;;GAEG;AACH,MAAM,MAAM,QAAQ,CAClB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,MAAM,mBAAmB,CAAC,CAAC,CAAC,IACpC,CACF,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,EAC3C,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,UAAU,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,OAAO,IAAI;KACtC,CAAC,IAAI,MAAM,mBAAmB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;CACpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|