@reactpy/client 0.3.1 → 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 (58) hide show
  1. package/dist/client.d.ts +29 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +60 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/components.d.ts +3 -4
  6. package/dist/components.d.ts.map +1 -1
  7. package/dist/components.js +40 -38
  8. package/dist/components.js.map +1 -1
  9. package/dist/index.d.ts +6 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +6 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/logger.d.ts +1 -0
  14. package/dist/logger.d.ts.map +1 -1
  15. package/dist/logger.js +1 -0
  16. package/dist/logger.js.map +1 -1
  17. package/dist/mount.d.ts +2 -2
  18. package/dist/mount.d.ts.map +1 -1
  19. package/dist/mount.js +29 -4
  20. package/dist/mount.js.map +1 -1
  21. package/dist/types.d.ts +126 -0
  22. package/dist/types.d.ts.map +1 -0
  23. package/dist/types.js +1 -0
  24. package/dist/types.js.map +1 -0
  25. package/dist/vdom.d.ts +8 -0
  26. package/dist/vdom.d.ts.map +1 -0
  27. package/dist/vdom.js +168 -0
  28. package/dist/vdom.js.map +1 -0
  29. package/dist/websocket.d.ts +6 -0
  30. package/dist/websocket.d.ts.map +1 -0
  31. package/dist/websocket.js +57 -0
  32. package/dist/websocket.js.map +1 -0
  33. package/package.json +23 -22
  34. package/src/client.ts +83 -0
  35. package/src/components.tsx +44 -50
  36. package/src/index.ts +6 -3
  37. package/src/logger.ts +1 -0
  38. package/src/mount.tsx +37 -5
  39. package/src/types.ts +152 -0
  40. package/src/vdom.tsx +250 -0
  41. package/src/websocket.ts +75 -0
  42. package/tsconfig.json +3 -3
  43. package/tsconfig.tsbuildinfo +1 -0
  44. package/dist/messages.d.ts +0 -15
  45. package/dist/messages.d.ts.map +0 -1
  46. package/dist/messages.js +0 -2
  47. package/dist/messages.js.map +0 -1
  48. package/dist/reactpy-client.d.ts +0 -94
  49. package/dist/reactpy-client.d.ts.map +0 -1
  50. package/dist/reactpy-client.js +0 -128
  51. package/dist/reactpy-client.js.map +0 -1
  52. package/dist/reactpy-vdom.d.ts +0 -54
  53. package/dist/reactpy-vdom.d.ts.map +0 -1
  54. package/dist/reactpy-vdom.js +0 -141
  55. package/dist/reactpy-vdom.js.map +0 -1
  56. package/src/messages.ts +0 -17
  57. package/src/reactpy-client.ts +0 -264
  58. package/src/reactpy-vdom.tsx +0 -261
@@ -0,0 +1,29 @@
1
+ import type { ReactPyClientInterface, ReactPyModule, GenericReactPyClientProps, ReactPyUrls } from "./types";
2
+ export declare abstract class BaseReactPyClient implements ReactPyClientInterface {
3
+ private readonly handlers;
4
+ protected readonly ready: Promise<void>;
5
+ private resolveReady;
6
+ constructor();
7
+ onMessage(type: string, handler: (message: any) => void): () => void;
8
+ abstract sendMessage(message: any): void;
9
+ abstract loadModule(moduleName: string): Promise<ReactPyModule>;
10
+ /**
11
+ * Handle an incoming message.
12
+ *
13
+ * This should be called by subclasses when a message is received.
14
+ *
15
+ * @param message The message to handle. The message must have a `type` property.
16
+ */
17
+ protected handleIncoming(message: any): void;
18
+ }
19
+ export declare class ReactPyClient extends BaseReactPyClient implements ReactPyClientInterface {
20
+ urls: ReactPyUrls;
21
+ socket: {
22
+ current?: WebSocket;
23
+ };
24
+ mountElement: HTMLElement;
25
+ constructor(props: GenericReactPyClientProps);
26
+ sendMessage(message: any): void;
27
+ loadModule(moduleName: string): Promise<ReactPyModule>;
28
+ }
29
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,yBAAyB,EACzB,WAAW,EACZ,MAAM,SAAS,CAAC;AAGjB,8BAAsB,iBAAkB,YAAW,sBAAsB;IACvE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqD;IAC9E,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,YAAY,CAA6B;;IAOjD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAQpE,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IACxC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAE/D;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;CAe7C;AAED,qBAAa,aACX,SAAQ,iBACR,YAAW,sBAAsB;IAEjC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IAChC,YAAY,EAAE,WAAW,CAAC;gBAEd,KAAK,EAAE,yBAAyB;IAa5C,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAI/B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAGvD"}
package/dist/client.js ADDED
@@ -0,0 +1,60 @@
1
+ import logger from "./logger";
2
+ import { createReconnectingWebSocket } from "./websocket";
3
+ export class BaseReactPyClient {
4
+ handlers = {};
5
+ ready;
6
+ resolveReady;
7
+ constructor() {
8
+ this.resolveReady = () => { };
9
+ this.ready = new Promise((resolve) => (this.resolveReady = resolve));
10
+ }
11
+ onMessage(type, handler) {
12
+ (this.handlers[type] || (this.handlers[type] = [])).push(handler);
13
+ this.resolveReady(undefined);
14
+ return () => {
15
+ this.handlers[type] = this.handlers[type].filter((h) => h !== handler);
16
+ };
17
+ }
18
+ /**
19
+ * Handle an incoming message.
20
+ *
21
+ * This should be called by subclasses when a message is received.
22
+ *
23
+ * @param message The message to handle. The message must have a `type` property.
24
+ */
25
+ handleIncoming(message) {
26
+ if (!message.type) {
27
+ logger.warn("Received message without type", message);
28
+ return;
29
+ }
30
+ const messageHandlers = this.handlers[message.type];
31
+ if (!messageHandlers) {
32
+ logger.warn("Received message without handler", message);
33
+ return;
34
+ }
35
+ messageHandlers.forEach((h) => h(message));
36
+ }
37
+ }
38
+ export class ReactPyClient extends BaseReactPyClient {
39
+ urls;
40
+ socket;
41
+ mountElement;
42
+ constructor(props) {
43
+ super();
44
+ this.urls = props.urls;
45
+ this.mountElement = props.mountElement;
46
+ this.socket = createReconnectingWebSocket({
47
+ url: this.urls.componentUrl,
48
+ readyPromise: this.ready,
49
+ ...props.reconnectOptions,
50
+ onMessage: (event) => this.handleIncoming(JSON.parse(event.data)),
51
+ });
52
+ }
53
+ sendMessage(message) {
54
+ this.socket.current?.send(JSON.stringify(message));
55
+ }
56
+ loadModule(moduleName) {
57
+ return import(`${this.urls.jsModulesPath}${moduleName}`);
58
+ }
59
+ }
60
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAO9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,OAAgB,iBAAiB;IACpB,QAAQ,GAAkD,EAAE,CAAC;IAC3D,KAAK,CAAgB;IAChC,YAAY,CAA6B;IAEjD;QACE,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAA+B;QACrD,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;QACzE,CAAC,CAAC;IACJ,CAAC;IAKD;;;;;;OAMG;IACO,cAAc,CAAC,OAAY;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,OAAO,aACX,SAAQ,iBAAiB;IAGzB,IAAI,CAAc;IAClB,MAAM,CAA0B;IAChC,YAAY,CAAc;IAE1B,YAAY,KAAgC;QAC1C,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,2BAA2B,CAAC;YACxC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;YAC3B,YAAY,EAAE,IAAI,CAAC,KAAK;YACxB,GAAG,KAAK,CAAC,gBAAgB;YACzB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,OAAY;QACtB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,UAAkB;QAC3B,OAAO,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -1,8 +1,7 @@
1
- /// <reference types="react" />
2
- import { ReactPyVdom } from "./reactpy-vdom";
3
- import { ReactPyClient } from "./reactpy-client";
1
+ import { type JSX } from "preact";
2
+ import type { ReactPyVdom, ReactPyClientInterface } from "./types";
4
3
  export declare function Layout(props: {
5
- client: ReactPyClient;
4
+ client: ReactPyClientInterface;
6
5
  }): JSX.Element;
7
6
  export declare function Element({ model }: {
8
7
  model: ReactPyVdom;
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":";AAaA,OAAO,EACL,WAAW,EAMZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAsBpE;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAoB7E"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA0C,KAAK,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE1E,OAAO,KAAK,EAGV,WAAW,EACX,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAKjB,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAsB7E;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAoB7E"}
@@ -1,7 +1,8 @@
1
- import React, { createElement, createContext, useState, useRef, useContext, useEffect, Fragment, } from "react";
2
- // @ts-ignore
1
+ import { jsx as _jsx } from "preact/jsx-runtime";
3
2
  import { set as setJsonPointer } from "json-pointer";
4
- import { createChildren, createAttributes, loadImportSource, } from "./reactpy-vdom";
3
+ import { createContext, createElement, Fragment } from "preact";
4
+ import { useContext, useEffect, useRef, useState } from "preact/hooks";
5
+ import { createAttributes, createChildren, loadImportSource } from "./vdom";
5
6
  const ClientContext = createContext(null);
6
7
  export function Layout(props) {
7
8
  const currentModel = useState({ tagName: "" })[0];
@@ -15,13 +16,12 @@ export function Layout(props) {
15
16
  }
16
17
  forceUpdate();
17
18
  }), [currentModel, props.client]);
18
- return (React.createElement(ClientContext.Provider, { value: props.client },
19
- React.createElement(Element, { model: currentModel })));
19
+ return (_jsx(ClientContext.Provider, { value: props.client, children: _jsx(Element, { model: currentModel }) }));
20
20
  }
21
21
  export function Element({ model }) {
22
22
  if (model.error !== undefined) {
23
23
  if (model.error) {
24
- return React.createElement("pre", null, model.error);
24
+ return _jsx("pre", { children: model.error });
25
25
  }
26
26
  else {
27
27
  return null;
@@ -38,28 +38,30 @@ export function Element({ model }) {
38
38
  else {
39
39
  SpecializedElement = StandardElement;
40
40
  }
41
- return React.createElement(SpecializedElement, { model: model });
41
+ return _jsx(SpecializedElement, { model: model });
42
42
  }
43
43
  function StandardElement({ model }) {
44
- const client = React.useContext(ClientContext);
44
+ const client = useContext(ClientContext);
45
45
  // Use createElement here to avoid warning about variable numbers of children not
46
46
  // having keys. Warning about this must now be the responsibility of the client
47
47
  // providing the models instead of the client rendering them.
48
48
  return createElement(model.tagName === "" ? Fragment : model.tagName, createAttributes(model, client), ...createChildren(model, (child) => {
49
- return React.createElement(Element, { model: child, key: child.key });
49
+ return _jsx(Element, { model: child }, child.key);
50
50
  }));
51
51
  }
52
52
  function UserInputElement({ model }) {
53
53
  const client = useContext(ClientContext);
54
54
  const props = createAttributes(model, client);
55
- const [value, setValue] = React.useState(props.value);
55
+ const [value, setValue] = useState(props.value);
56
56
  // honor changes to value from the client via props
57
- React.useEffect(() => setValue(props.value), [props.value]);
57
+ useEffect(() => setValue(props.value), [props.value]);
58
58
  const givenOnChange = props.onChange;
59
59
  if (typeof givenOnChange === "function") {
60
60
  props.onChange = (event) => {
61
61
  // immediately update the value to give the user feedback
62
- setValue(event.target.value);
62
+ if (event.target) {
63
+ setValue(event.target.value);
64
+ }
63
65
  // allow the client to respond (and possibly change the value)
64
66
  givenOnChange(event);
65
67
  };
@@ -69,34 +71,33 @@ function UserInputElement({ model }) {
69
71
  // providing the models instead of the client rendering them.
70
72
  return createElement(model.tagName,
71
73
  // overwrite
72
- { ...props, value }, ...createChildren(model, (child) => (React.createElement(Element, { model: child, key: child.key }))));
74
+ { ...props, value }, ...createChildren(model, (child) => (_jsx(Element, { model: child }, child.key))));
73
75
  }
74
76
  function ScriptElement({ model }) {
75
77
  const ref = useRef(null);
76
- React.useEffect(() => {
78
+ useEffect(() => {
79
+ // Don't run if the parent element is missing
77
80
  if (!ref.current) {
78
81
  return;
79
82
  }
80
- const scriptContent = model?.children?.filter((value) => typeof value == "string")[0];
81
- let scriptElement;
82
- if (model.attributes) {
83
- scriptElement = document.createElement("script");
84
- for (const [k, v] of Object.entries(model.attributes)) {
85
- scriptElement.setAttribute(k, v);
86
- }
87
- if (scriptContent) {
88
- scriptElement.appendChild(document.createTextNode(scriptContent));
89
- }
90
- ref.current.appendChild(scriptElement);
83
+ // Create the script element
84
+ const scriptElement = document.createElement("script");
85
+ for (const [k, v] of Object.entries(model.attributes || {})) {
86
+ scriptElement.setAttribute(k, v);
91
87
  }
92
- else if (scriptContent) {
93
- const scriptResult = eval(scriptContent);
94
- if (typeof scriptResult == "function") {
95
- return scriptResult();
96
- }
88
+ // Add the script content as text
89
+ const scriptContent = model?.children?.filter((value) => typeof value == "string")[0];
90
+ if (scriptContent) {
91
+ scriptElement.appendChild(document.createTextNode(scriptContent));
97
92
  }
98
- }, [model.key, ref.current]);
99
- return React.createElement("div", { ref: ref });
93
+ // Append the script element to the parent element
94
+ ref.current.appendChild(scriptElement);
95
+ // Remove the script element when the component is unmounted
96
+ return () => {
97
+ ref.current?.removeChild(scriptElement);
98
+ };
99
+ }, [model.key]);
100
+ return _jsx("div", { ref: ref });
100
101
  }
101
102
  function ImportedElement({ model }) {
102
103
  const importSourceVdom = model.importSource;
@@ -111,14 +112,14 @@ function ImportedElement({ model }) {
111
112
  return null;
112
113
  }
113
114
  else if (typeof importSourceFallback === "string") {
114
- return React.createElement("div", null, importSourceFallback);
115
+ return _jsx("span", { children: importSourceFallback });
115
116
  }
116
117
  else {
117
- return React.createElement(StandardElement, { model: importSourceFallback });
118
+ return _jsx(StandardElement, { model: importSourceFallback });
118
119
  }
119
120
  }
120
121
  else {
121
- return React.createElement("div", { ref: importSourceRef });
122
+ return _jsx("span", { ref: importSourceRef });
122
123
  }
123
124
  }
124
125
  function useForceUpdate() {
@@ -127,10 +128,11 @@ function useForceUpdate() {
127
128
  }
128
129
  function useImportSource(model) {
129
130
  const vdomImportSource = model.importSource;
131
+ const vdomImportSourceJsonString = JSON.stringify(vdomImportSource);
130
132
  const mountPoint = useRef(null);
131
- const client = React.useContext(ClientContext);
133
+ const client = useContext(ClientContext);
132
134
  const [binding, setBinding] = useState(null);
133
- React.useEffect(() => {
135
+ useEffect(() => {
134
136
  let unmounted = false;
135
137
  if (vdomImportSource) {
136
138
  loadImportSource(vdomImportSource, client).then((bind) => {
@@ -147,7 +149,7 @@ function useImportSource(model) {
147
149
  binding.unmount();
148
150
  }
149
151
  };
150
- }, [client, vdomImportSource, setBinding, mountPoint.current]);
152
+ }, [client, vdomImportSourceJsonString, setBinding, mountPoint.current]);
151
153
  // this effect must run every time in case the model has changed
152
154
  useEffect(() => {
153
155
  if (!(binding && vdomImportSource)) {
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,9 @@
1
+ export * from "./client";
1
2
  export * from "./components";
2
- export * from "./messages";
3
3
  export * from "./mount";
4
- export * from "./reactpy-client";
5
- export * from "./reactpy-vdom";
4
+ export * from "./types";
5
+ export * from "./vdom";
6
+ export * from "./websocket";
7
+ export { default as React } from "preact/compat";
8
+ export { default as ReactDOM } from "preact/compat";
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,9 @@
1
+ export * from "./client";
1
2
  export * from "./components";
2
- export * from "./messages";
3
3
  export * from "./mount";
4
- export * from "./reactpy-client";
5
- export * from "./reactpy-vdom";
4
+ export * from "./types";
5
+ export * from "./vdom";
6
+ export * from "./websocket";
7
+ export { default as React } from "preact/compat";
8
+ export { default as ReactDOM } from "preact/compat";
6
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC"}
package/dist/logger.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  declare const _default: {
2
2
  log: (...args: any[]) => void;
3
+ info: (...args: any[]) => void;
3
4
  warn: (...args: any[]) => void;
4
5
  error: (...args: any[]) => void;
5
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";mBACiB,GAAG,EAAE,KAAG,IAAI;oBACX,GAAG,EAAE,KAAG,IAAI;qBACX,GAAG,EAAE,KAAG,IAAI;;AAH/B,wBAIE"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";mBACiB,GAAG,EAAE,KAAG,IAAI;oBACX,GAAG,EAAE,KAAG,IAAI;oBACZ,GAAG,EAAE,KAAG,IAAI;qBACX,GAAG,EAAE,KAAG,IAAI;;AAJ/B,wBAKE"}
package/dist/logger.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export default {
2
2
  log: (...args) => console.log("[ReactPy]", ...args),
3
+ info: (...args) => console.info("[ReactPy]", ...args),
3
4
  warn: (...args) => console.warn("[ReactPy]", ...args),
4
5
  error: (...args) => console.error("[ReactPy]", ...args),
5
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,GAAG,EAAE,CAAC,GAAG,IAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;IAChE,IAAI,EAAE,CAAC,GAAG,IAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;IAClE,KAAK,EAAE,CAAC,GAAG,IAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;CACrE,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,GAAG,EAAE,CAAC,GAAG,IAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;IAChE,IAAI,EAAE,CAAC,GAAG,IAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;IAClE,IAAI,EAAE,CAAC,GAAG,IAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;IAClE,KAAK,EAAE,CAAC,GAAG,IAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;CACrE,CAAC"}
package/dist/mount.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { ReactPyClient } from "./reactpy-client";
2
- export declare function mount(element: HTMLElement, client: ReactPyClient): void;
1
+ import type { MountProps } from "./types";
2
+ export declare function mountReactPy(props: MountProps): void;
3
3
  //# sourceMappingURL=mount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAEvE"}
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,QAkC7C"}
package/dist/mount.js CHANGED
@@ -1,7 +1,32 @@
1
- import React from "react";
2
- import { render } from "react-dom";
1
+ import { jsx as _jsx } from "preact/jsx-runtime";
2
+ import { render } from "preact";
3
+ import { ReactPyClient } from "./client";
3
4
  import { Layout } from "./components";
4
- export function mount(element, client) {
5
- render(React.createElement(Layout, { client: client }), element);
5
+ export function mountReactPy(props) {
6
+ // WebSocket route for component rendering
7
+ const wsProtocol = `ws${window.location.protocol === "https:" ? "s" : ""}:`;
8
+ const wsOrigin = `${wsProtocol}//${window.location.host}`;
9
+ const componentUrl = new URL(`${wsOrigin}${props.pathPrefix}${props.componentPath || ""}`);
10
+ // Embed the initial HTTP path into the WebSocket URL
11
+ componentUrl.searchParams.append("http_pathname", window.location.pathname);
12
+ if (window.location.search) {
13
+ componentUrl.searchParams.append("http_query_string", window.location.search);
14
+ }
15
+ // Configure a new ReactPy client
16
+ const client = new ReactPyClient({
17
+ urls: {
18
+ componentUrl: componentUrl,
19
+ jsModulesPath: `${window.location.origin}${props.pathPrefix}modules/`,
20
+ },
21
+ reconnectOptions: {
22
+ interval: props.reconnectInterval || 750,
23
+ maxInterval: props.reconnectMaxInterval || 60000,
24
+ maxRetries: props.reconnectMaxRetries || 150,
25
+ backoffMultiplier: props.reconnectBackoffMultiplier || 1.25,
26
+ },
27
+ mountElement: props.mountElement,
28
+ });
29
+ // Start rendering the component
30
+ render(_jsx(Layout, { client: client }), props.mountElement);
6
31
  }
7
32
  //# sourceMappingURL=mount.js.map
package/dist/mount.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,MAAM,UAAU,KAAK,CAAC,OAAoB,EAAE,MAAqB;IAC/D,MAAM,CAAC,oBAAC,MAAM,IAAC,MAAM,EAAE,MAAM,GAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,0CAA0C;IAC1C,MAAM,UAAU,GAAG,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5E,MAAM,QAAQ,GAAG,GAAG,UAAU,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,GAAG,QAAQ,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,CAC7D,CAAC;IAEF,qDAAqD;IACrD,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,YAAY,CAAC,YAAY,CAAC,MAAM,CAC9B,mBAAmB,EACnB,MAAM,CAAC,QAAQ,CAAC,MAAM,CACvB,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;QAC/B,IAAI,EAAE;YACJ,YAAY,EAAE,YAAY;YAC1B,aAAa,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,UAAU;SACtE;QACD,gBAAgB,EAAE;YAChB,QAAQ,EAAE,KAAK,CAAC,iBAAiB,IAAI,GAAG;YACxC,WAAW,EAAE,KAAK,CAAC,oBAAoB,IAAI,KAAK;YAChD,UAAU,EAAE,KAAK,CAAC,mBAAmB,IAAI,GAAG;YAC5C,iBAAiB,EAAE,KAAK,CAAC,0BAA0B,IAAI,IAAI;SAC5D;QACD,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAC,CAAC;IAEH,gCAAgC;IAChC,MAAM,CAAC,KAAC,MAAM,IAAC,MAAM,EAAE,MAAM,GAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,126 @@
1
+ import type { ComponentType } from "preact";
2
+ export type ReconnectOptions = {
3
+ interval: number;
4
+ maxInterval: number;
5
+ maxRetries: number;
6
+ backoffMultiplier: number;
7
+ };
8
+ export type CreateReconnectingWebSocketProps = {
9
+ url: URL;
10
+ readyPromise: Promise<void>;
11
+ onMessage: (message: MessageEvent<any>) => void;
12
+ onOpen?: () => void;
13
+ onClose?: () => void;
14
+ interval: number;
15
+ maxInterval: number;
16
+ maxRetries: number;
17
+ backoffMultiplier: number;
18
+ };
19
+ export type ReactPyUrls = {
20
+ componentUrl: URL;
21
+ jsModulesPath: string;
22
+ };
23
+ export type GenericReactPyClientProps = {
24
+ urls: ReactPyUrls;
25
+ reconnectOptions: ReconnectOptions;
26
+ mountElement: HTMLElement;
27
+ };
28
+ export type MountProps = {
29
+ mountElement: HTMLElement;
30
+ pathPrefix: string;
31
+ componentPath?: string;
32
+ reconnectInterval?: number;
33
+ reconnectMaxInterval?: number;
34
+ reconnectMaxRetries?: number;
35
+ reconnectBackoffMultiplier?: number;
36
+ };
37
+ export type ReactPyComponent = ComponentType<{
38
+ model: ReactPyVdom;
39
+ }>;
40
+ export type ReactPyVdom = {
41
+ tagName: string;
42
+ key?: string;
43
+ attributes?: {
44
+ [key: string]: string;
45
+ };
46
+ children?: (ReactPyVdom | string)[];
47
+ error?: string;
48
+ eventHandlers?: {
49
+ [key: string]: ReactPyVdomEventHandler;
50
+ };
51
+ inlineJavaScript?: {
52
+ [key: string]: string;
53
+ };
54
+ importSource?: ReactPyVdomImportSource;
55
+ };
56
+ export type ReactPyVdomEventHandler = {
57
+ target: string;
58
+ preventDefault?: boolean;
59
+ stopPropagation?: boolean;
60
+ };
61
+ export type ReactPyVdomImportSource = {
62
+ source: string;
63
+ sourceType?: "URL" | "NAME";
64
+ fallback?: string | ReactPyVdom;
65
+ unmountBeforeUpdate?: boolean;
66
+ };
67
+ export type ReactPyModule = {
68
+ bind: (node: HTMLElement, context: ReactPyModuleBindingContext) => ReactPyModuleBinding;
69
+ } & {
70
+ [key: string]: any;
71
+ };
72
+ export type ReactPyModuleBindingContext = {
73
+ sendMessage: ReactPyClientInterface["sendMessage"];
74
+ onMessage: ReactPyClientInterface["onMessage"];
75
+ };
76
+ export type ReactPyModuleBinding = {
77
+ create: (type: any, props?: any, children?: (any | string | ReactPyVdom)[]) => any;
78
+ render: (element: any) => void;
79
+ unmount: () => void;
80
+ };
81
+ export type BindImportSource = (node: HTMLElement) => ImportSourceBinding | null;
82
+ export type ImportSourceBinding = {
83
+ render: (model: ReactPyVdom) => void;
84
+ unmount: () => void;
85
+ };
86
+ export type LayoutUpdateMessage = {
87
+ type: "layout-update";
88
+ path: string;
89
+ model: ReactPyVdom;
90
+ };
91
+ export type LayoutEventMessage = {
92
+ type: "layout-event";
93
+ target: string;
94
+ data: any;
95
+ };
96
+ export type IncomingMessage = LayoutUpdateMessage;
97
+ export type OutgoingMessage = LayoutEventMessage;
98
+ export type Message = IncomingMessage | OutgoingMessage;
99
+ /**
100
+ * A client for communicating with a ReactPy server.
101
+ */
102
+ export interface ReactPyClientInterface {
103
+ /**
104
+ * Register a handler for a message type.
105
+ *
106
+ * The first time this is called, the client will be considered ready.
107
+ *
108
+ * @param type The type of message to handle.
109
+ * @param handler The handler to call when a message of the given type is received.
110
+ * @returns A function to unregister the handler.
111
+ */
112
+ onMessage(type: string, handler: (message: any) => void): () => void;
113
+ /**
114
+ * Send a message to the server.
115
+ *
116
+ * @param message The message to send. Messages must have a `type` property.
117
+ */
118
+ sendMessage(message: any): void;
119
+ /**
120
+ * Load a module from the server.
121
+ * @param moduleName The name of the module to load.
122
+ * @returns A promise that resolves to the module.
123
+ */
124
+ loadModule(moduleName: string): Promise<ReactPyModule>;
125
+ }
126
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/vdom.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import type { ReactPyClientInterface } from "./types";
2
+ import type { ReactPyVdom, ReactPyVdomImportSource, BindImportSource } from "./types";
3
+ export declare function loadImportSource(vdomImportSource: ReactPyVdomImportSource, client: ReactPyClientInterface): Promise<BindImportSource>;
4
+ export declare function createChildren<Child>(model: ReactPyVdom, createChild: (child: ReactPyVdom) => Child): (Child | string)[];
5
+ export declare function createAttributes(model: ReactPyVdom, client: ReactPyClientInterface): {
6
+ [key: string]: any;
7
+ };
8
+ //# sourceMappingURL=vdom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vdom.d.ts","sourceRoot":"","sources":["../src/vdom.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAGvB,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAGjB,wBAAsB,gBAAgB,CACpC,gBAAgB,EAAE,uBAAuB,EACzC,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CA2C3B;AAoGD,wBAAgB,cAAc,CAAC,KAAK,EAClC,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,KAAK,GACzC,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAapB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,sBAAsB,GAC7B;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAmBxB"}