pulse-ui-client 0.0.13 → 0.0.14

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.
@@ -4,6 +4,8 @@ export interface ServerInitMessage {
4
4
  type: "vdom_init";
5
5
  path: string;
6
6
  vdom: VDOM;
7
+ callbacks: string[];
8
+ render_props: string[];
7
9
  }
8
10
  export interface ServerUpdateMessage {
9
11
  type: "vdom_update";
package/dist/pulse.d.ts CHANGED
@@ -4,12 +4,17 @@ import type { VDOM, ComponentRegistry } from "./vdom";
4
4
  export interface PulseConfig {
5
5
  serverAddress: string;
6
6
  }
7
+ export type PulsePrerenderView = {
8
+ vdom: VDOM;
9
+ callbacks: string[];
10
+ render_props: string[];
11
+ };
7
12
  export type PulsePrerender = {
8
13
  renderId: string;
9
- views: Record<string, VDOM>;
14
+ views: Record<string, PulsePrerenderView>;
10
15
  };
11
16
  export declare const usePulseClient: () => PulseSocketIOClient;
12
- export declare const usePulsePrerender: (path: string) => string | number | true | import("./vdom").VDOMElement;
17
+ export declare const usePulsePrerender: (path: string) => PulsePrerenderView;
13
18
  export interface PulseProviderProps {
14
19
  children: React.ReactNode;
15
20
  config: PulseConfig;
@@ -6,9 +6,27 @@ export declare class VDOMRenderer {
6
6
  private path;
7
7
  private components;
8
8
  private callbackCache;
9
- constructor(client: PulseSocketIOClient, path: string, components: ComponentRegistry);
10
- getCallback(key: string): (...args: any[]) => void;
11
- renderNode(node: VDOMNode): React.ReactNode;
9
+ private callbackProps;
10
+ private renderPropKeys;
11
+ constructor(client: PulseSocketIOClient, path: string, components: ComponentRegistry, initialCallbacks?: string[], initialRenderProps?: string[]);
12
+ setCallbacks(keys: string[]): void;
13
+ applyCallbackDelta(delta: {
14
+ add?: string[];
15
+ remove?: string[];
16
+ }, tree: React.ReactNode): React.ReactNode;
17
+ setRenderProps(keys: string[]): void;
18
+ applyRenderPropsDelta(delta: {
19
+ add?: string[];
20
+ remove?: string[];
21
+ }): void;
22
+ getCallback(path: string, prop: string): (...args: any[]) => void;
23
+ renderNode(node: VDOMNode, currentPath?: string): React.ReactNode;
24
+ private splitPropPath;
25
+ private propPath;
26
+ private getCallbackNames;
27
+ transformValue(path: string, key: string, value: any): any;
28
+ private updateCallbacksOnTree;
29
+ private setsEqual;
12
30
  }
13
31
  export declare function applyUpdates(initialTree: React.ReactNode, updates: VDOMUpdate[], renderer: VDOMRenderer): React.ReactNode;
14
32
  export declare function RenderLazy(component: () => Promise<{
package/dist/vdom.d.ts CHANGED
@@ -13,7 +13,7 @@ export interface VDOMElement {
13
13
  export type PrimitiveNode = string | number | boolean;
14
14
  export type VDOMNode = PrimitiveNode | VDOMElement;
15
15
  export type VDOM = VDOMNode;
16
- export type UpdateType = "insert" | "remove" | "replace" | "update_props" | "move";
16
+ export type UpdateType = "insert" | "remove" | "replace" | "update_props" | "move" | "update_callbacks" | "update_render_props";
17
17
  export interface VDOMUpdateBase {
18
18
  type: UpdateType;
19
19
  path: string;
@@ -46,7 +46,21 @@ export interface MoveUpdate extends VDOMUpdateBase {
46
46
  to_index: number;
47
47
  };
48
48
  }
49
- export type VDOMUpdate = InsertUpdate | RemoveUpdate | ReplaceUpdate | UpdatePropsUpdate | MoveUpdate;
49
+ export interface UpdateCallbacksUpdate extends VDOMUpdateBase {
50
+ type: "update_callbacks";
51
+ data: {
52
+ add?: string[];
53
+ remove?: string[];
54
+ };
55
+ }
56
+ export interface UpdateRenderPropsUpdate extends VDOMUpdateBase {
57
+ type: "update_render_props";
58
+ data: {
59
+ add?: string[];
60
+ remove?: string[];
61
+ };
62
+ }
63
+ export type VDOMUpdate = InsertUpdate | RemoveUpdate | ReplaceUpdate | UpdatePropsUpdate | MoveUpdate | UpdateCallbacksUpdate | UpdateRenderPropsUpdate;
50
64
  export declare function isElementNode(node: VDOMNode): node is VDOMElement;
51
65
  export declare function isMountPointNode(node: VDOMNode): node is VDOMElement;
52
66
  export declare function isTextNode(node: VDOMNode): node is string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pulse-ui-client",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,