reactpy 2.0.0b7__py3-none-any.whl → 2.0.0b8__py3-none-any.whl
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.
- reactpy/__init__.py +1 -1
- reactpy/core/hooks.py +23 -18
- reactpy/reactjs/__init__.py +3 -3
- reactpy/reactjs/module.py +8 -8
- reactpy/static/index.js +2 -2
- reactpy/static/index.js.map +4 -4
- {reactpy-2.0.0b7.dist-info → reactpy-2.0.0b8.dist-info}/METADATA +1 -1
- {reactpy-2.0.0b7.dist-info → reactpy-2.0.0b8.dist-info}/RECORD +11 -11
- {reactpy-2.0.0b7.dist-info → reactpy-2.0.0b8.dist-info}/WHEEL +0 -0
- {reactpy-2.0.0b7.dist-info → reactpy-2.0.0b8.dist-info}/entry_points.txt +0 -0
- {reactpy-2.0.0b7.dist-info → reactpy-2.0.0b8.dist-info}/licenses/LICENSE +0 -0
reactpy/__init__.py
CHANGED
|
@@ -23,7 +23,7 @@ from reactpy.executors.pyscript.components import pyscript_component
|
|
|
23
23
|
from reactpy.utils import Ref, reactpy_to_string, string_to_reactpy
|
|
24
24
|
|
|
25
25
|
__author__ = "The Reactive Python Team"
|
|
26
|
-
__version__ = "2.0.
|
|
26
|
+
__version__ = "2.0.0b8"
|
|
27
27
|
|
|
28
28
|
__all__ = [
|
|
29
29
|
"Ref",
|
reactpy/core/hooks.py
CHANGED
|
@@ -182,7 +182,6 @@ def use_effect(
|
|
|
182
182
|
def use_async_effect(
|
|
183
183
|
function: None = None,
|
|
184
184
|
dependencies: Sequence[Any] | ellipsis | None = ...,
|
|
185
|
-
shutdown_timeout: float = 0.1,
|
|
186
185
|
) -> Callable[[_EffectApplyFunc], None]: ...
|
|
187
186
|
|
|
188
187
|
|
|
@@ -190,14 +189,12 @@ def use_async_effect(
|
|
|
190
189
|
def use_async_effect(
|
|
191
190
|
function: _AsyncEffectFunc,
|
|
192
191
|
dependencies: Sequence[Any] | ellipsis | None = ...,
|
|
193
|
-
shutdown_timeout: float = 0.1,
|
|
194
192
|
) -> None: ...
|
|
195
193
|
|
|
196
194
|
|
|
197
195
|
def use_async_effect(
|
|
198
196
|
function: _AsyncEffectFunc | None = None,
|
|
199
197
|
dependencies: Sequence[Any] | ellipsis | None = ...,
|
|
200
|
-
shutdown_timeout: float = 0.1,
|
|
201
198
|
) -> Callable[[_AsyncEffectFunc], None] | None:
|
|
202
199
|
"""
|
|
203
200
|
A hook that manages an asynchronous side effect in a React-like component.
|
|
@@ -214,9 +211,6 @@ def use_async_effect(
|
|
|
214
211
|
of any value in the given sequence changes (i.e. their :func:`id` is
|
|
215
212
|
different). By default these are inferred based on local variables that are
|
|
216
213
|
referenced by the given function.
|
|
217
|
-
shutdown_timeout:
|
|
218
|
-
The amount of time (in seconds) to wait for the effect to complete before
|
|
219
|
-
forcing a shutdown.
|
|
220
214
|
|
|
221
215
|
Returns:
|
|
222
216
|
If not function is provided, a decorator. Otherwise ``None``.
|
|
@@ -232,26 +226,37 @@ def use_async_effect(
|
|
|
232
226
|
# always clean up the previous effect's resources
|
|
233
227
|
run_effect_cleanup(cleanup_func)
|
|
234
228
|
|
|
235
|
-
# Execute the effect
|
|
229
|
+
# Execute the effect and store the clean-up function.
|
|
230
|
+
# We run this in a task so it can be cancelled if the stop signal
|
|
231
|
+
# is set before the effect completes.
|
|
236
232
|
task = asyncio.create_task(func())
|
|
237
233
|
|
|
238
|
-
# Wait
|
|
239
|
-
|
|
234
|
+
# Wait for either the effect to complete or the stop signal
|
|
235
|
+
stop_task = asyncio.create_task(stop.wait())
|
|
236
|
+
done, _ = await asyncio.wait(
|
|
237
|
+
[task, stop_task],
|
|
238
|
+
return_when=asyncio.FIRST_COMPLETED,
|
|
239
|
+
)
|
|
240
240
|
|
|
241
|
-
# If
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
241
|
+
# If the effect completed first, store the cleanup function
|
|
242
|
+
if task in done:
|
|
243
|
+
cleanup_func.current = task.result()
|
|
244
|
+
# Cancel the stop task since we don't need it anymore
|
|
245
|
+
stop_task.cancel()
|
|
246
|
+
with contextlib.suppress(asyncio.CancelledError):
|
|
247
|
+
await stop_task
|
|
248
|
+
# Now wait for the stop signal to run cleanup
|
|
249
|
+
await stop.wait()
|
|
250
|
+
else:
|
|
251
|
+
# Stop signal came first - cancel the effect task
|
|
252
|
+
task.cancel()
|
|
253
|
+
with contextlib.suppress(asyncio.CancelledError):
|
|
254
|
+
await task
|
|
247
255
|
|
|
248
256
|
# Run the clean-up function when the effect is stopped,
|
|
249
257
|
# if it hasn't been run already by a new effect
|
|
250
258
|
run_effect_cleanup(cleanup_func)
|
|
251
259
|
|
|
252
|
-
# Cancel the task if it's still running
|
|
253
|
-
task.cancel()
|
|
254
|
-
|
|
255
260
|
return memoize(lambda: hook.add_effect(effect))
|
|
256
261
|
|
|
257
262
|
# Handle decorator usage
|
reactpy/reactjs/__init__.py
CHANGED
|
@@ -110,7 +110,7 @@ def component_from_npm(
|
|
|
110
110
|
resolve_imports: bool = ...,
|
|
111
111
|
resolve_imports_depth: int = ...,
|
|
112
112
|
version: str = "latest",
|
|
113
|
-
cdn: str = "https://esm.sh",
|
|
113
|
+
cdn: str = "https://esm.sh/v135",
|
|
114
114
|
fallback: Any | None = ...,
|
|
115
115
|
unmount_before_update: bool = ...,
|
|
116
116
|
allow_children: bool = ...,
|
|
@@ -124,7 +124,7 @@ def component_from_npm(
|
|
|
124
124
|
resolve_imports: bool = ...,
|
|
125
125
|
resolve_imports_depth: int = ...,
|
|
126
126
|
version: str = "latest",
|
|
127
|
-
cdn: str = "https://esm.sh",
|
|
127
|
+
cdn: str = "https://esm.sh/v135",
|
|
128
128
|
fallback: Any | None = ...,
|
|
129
129
|
unmount_before_update: bool = ...,
|
|
130
130
|
allow_children: bool = ...,
|
|
@@ -137,7 +137,7 @@ def component_from_npm(
|
|
|
137
137
|
resolve_imports: bool = False,
|
|
138
138
|
resolve_imports_depth: int = 5,
|
|
139
139
|
version: str = "latest",
|
|
140
|
-
cdn: str = "https://esm.sh",
|
|
140
|
+
cdn: str = "https://esm.sh/v135",
|
|
141
141
|
fallback: Any | None = None,
|
|
142
142
|
unmount_before_update: bool = False,
|
|
143
143
|
allow_children: bool = True,
|
reactpy/reactjs/module.py
CHANGED
|
@@ -228,10 +228,10 @@ def import_reactjs(
|
|
|
228
228
|
{"type": "importmap", "id": "reactpy-importmap"},
|
|
229
229
|
f"""{{
|
|
230
230
|
"imports": {{
|
|
231
|
-
"react": "https://esm.sh/react@{version}{postfix}",
|
|
232
|
-
"react-dom": "https://esm.sh/react-dom@{version}{postfix}",
|
|
233
|
-
"react-dom/client": "https://esm.sh/react-dom@{version}/client{postfix}",
|
|
234
|
-
"react/jsx-runtime": "https://esm.sh/react@{version}/jsx-runtime{postfix}"
|
|
231
|
+
"react": "https://esm.sh/v135/react@{version}{postfix}",
|
|
232
|
+
"react-dom": "https://esm.sh/v135/react-dom@{version}{postfix}",
|
|
233
|
+
"react-dom/client": "https://esm.sh/v135/react-dom@{version}/client{postfix}",
|
|
234
|
+
"react/jsx-runtime": "https://esm.sh/v135/react@{version}/jsx-runtime{postfix}"
|
|
235
235
|
}}
|
|
236
236
|
}}""".replace("\n", "").replace(" ", ""),
|
|
237
237
|
)
|
|
@@ -244,10 +244,10 @@ def import_reactjs(
|
|
|
244
244
|
{"type": "importmap", "id": "reactpy-importmap"},
|
|
245
245
|
f"""{{
|
|
246
246
|
"imports": {{
|
|
247
|
-
"react": "https://esm.sh/preact@{version}/compat{postfix}",
|
|
248
|
-
"react-dom": "https://esm.sh/preact@{version}/compat{postfix}",
|
|
249
|
-
"react-dom/client": "https://esm.sh/preact@{version}/compat/client{postfix}",
|
|
250
|
-
"react/jsx-runtime": "https://esm.sh/preact@{version}/compat/jsx-runtime{postfix}"
|
|
247
|
+
"react": "https://esm.sh/v135/preact@{version}/compat{postfix}",
|
|
248
|
+
"react-dom": "https://esm.sh/v135/preact@{version}/compat{postfix}",
|
|
249
|
+
"react-dom/client": "https://esm.sh/v135/preact@{version}/compat/client{postfix}",
|
|
250
|
+
"react/jsx-runtime": "https://esm.sh/v135/preact@{version}/compat/jsx-runtime{postfix}"
|
|
251
251
|
}}
|
|
252
252
|
}}""".replace("\n", "").replace(" ", ""),
|
|
253
253
|
)
|
reactpy/static/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as J}from"./index-64wy0fss.js";import{e as I,f as v,g as d,i as M,k as g,m as U,n as p,o as _,q as L,s as T,w as E}from"./index-beq660xy.js";var k=v((T0,x)=>{var G0=Object.prototype.hasOwnProperty,K0=Object.prototype.toString;x.exports=function(K,Q,X){if(K0.call(Q)!=="[object Function]")throw TypeError("iterator must be a function");var Y=K.length;if(Y===+Y)for(var Z=0;Z<Y;Z++)Q.call(X,K[Z],Z,K);else for(var W in K)if(G0.call(K,W))Q.call(X,K[W],W,K)}});var c=v((E0,u)=>{var Q0=k();u.exports=z;function z(G,K,Q){if(arguments.length===3)return z.set(G,K,Q);if(arguments.length===2)return z.get(G,K);var X=z.bind(z,G);for(var Y in z)if(z.hasOwnProperty(Y))X[Y]=z[Y].bind(X,G);return X}z.get=function(K,Q){var X=Array.isArray(Q)?Q:z.parse(Q);for(var Y=0;Y<X.length;++Y){var Z=X[Y];if(!(typeof K=="object"&&(Z in K)))throw Error("Invalid reference token: "+Z);K=K[Z]}return K};z.set=function(K,Q,X){var Y=Array.isArray(Q)?Q:z.parse(Q),Z=Y[0];if(Y.length===0)throw Error("Can not set the root object");for(var W=0;W<Y.length-1;++W){var $=Y[W];if(typeof $!=="string"&&typeof $!=="number")$=String($);if($==="__proto__"||$==="constructor"||$==="prototype")continue;if($==="-"&&Array.isArray(K))$=K.length;if(Z=Y[W+1],!($ in K))if(Z.match(/^(\d+|-)$/))K[$]=[];else K[$]={};K=K[$]}if(Z==="-"&&Array.isArray(K))Z=K.length;return K[Z]=X,this};z.remove=function(G,K){var Q=Array.isArray(K)?K:z.parse(K),X=Q[Q.length-1];if(X===void 0)throw Error('Invalid JSON pointer for remove: "'+K+'"');var Y=z.get(G,Q.slice(0,-1));if(Array.isArray(Y)){var Z=+X;if(X===""&&isNaN(Z))throw Error('Invalid array index: "'+X+'"');Array.prototype.splice.call(Y,Z,1)}else delete Y[X]};z.dict=function(K,Q){var X={};return z.walk(K,function(Y,Z){X[Z]=Y},Q),X};z.walk=function(K,Q,X){var Y=[];X=X||function(Z){var W=Object.prototype.toString.call(Z);return W==="[object Object]"||W==="[object Array]"},function Z(W){Q0(W,function($,q){if(Y.push(String(q)),X($))Z($);else Q($,z.compile(Y));Y.pop()})}(K)};z.has=function(K,Q){try{z.get(K,Q)}catch(X){return!1}return!0};z.escape=function(K){return K.toString().replace(/~/g,"~0").replace(/\//g,"~1")};z.unescape=function(K){return K.replace(/~1/g,"/").replace(/~0/g,"~")};z.parse=function(K){if(K==="")return[];if(K.charAt(0)!=="/")throw Error("Invalid JSON pointer: "+K);return K.substring(1).split(/\//).map(z.unescape)};z.compile=function(K){if(K.length===0)return"";return"/"+K.map(z.escape).join("/")}});var F={log:(...G)=>console.log("[ReactPy]",...G),info:(...G)=>console.info("[ReactPy]",...G),warn:(...G)=>console.warn("[ReactPy]",...G),error:(...G)=>console.error("[ReactPy]",...G)};function y(G){let{interval:K,maxInterval:Q,maxRetries:X,backoffMultiplier:Y}=G,Z=0,W=K,$=!1,q=!1,H={},B=()=>{if(q)return;H.current=new WebSocket(G.url),H.current.onopen=()=>{if($=!0,F.info("Connected!"),W=K,Z=0,G.onOpen)G.onOpen()},H.current.onmessage=(o)=>{if(G.onMessage)G.onMessage(o)},H.current.onclose=()=>{if(G.onClose)G.onClose();if(!$){F.info("Failed to connect!");return}if(F.info("Disconnected!"),Z>=X){F.info("Connection max retries exhausted!");return}F.info(`Reconnecting in ${(W/1000).toPrecision(4)} seconds...`),setTimeout(B,W),W=e(W,Y,Q),Z++}};return G.readyPromise.then(()=>F.info("Starting client...")).then(B),H}function e(G,K,Q){return Math.min(G*K,Q)}class b{handlers={};ready;resolveReady;constructor(){this.resolveReady=()=>{},this.ready=new Promise((G)=>this.resolveReady=G)}onMessage(G,K){return(this.handlers[G]||(this.handlers[G]=[])).push(K),this.resolveReady(void 0),()=>{this.handlers[G]=this.handlers[G].filter((Q)=>Q!==K)}}handleIncoming(G){if(!G.type){F.warn("Received message without type",G);return}let K=this.handlers[G.type];if(!K){F.warn("Received message without handler",G);return}K.forEach((Q)=>Q(G))}}class f extends b{urls;socket;mountElement;constructor(G){super();this.urls=G.urls,this.mountElement=G.mountElement,this.socket=y({url:this.urls.componentUrl,readyPromise:this.ready,...G.reconnectOptions,onMessage:async({data:K})=>this.handleIncoming(JSON.parse(K))})}sendMessage(G){this.socket.current?.send(JSON.stringify(G))}loadModule(G){return import(`${this.urls.jsModulesPath}${G}`)}}var n=I(c(),1);var w={__stop__:!0};function C(G,K=10){if(!G||typeof G!=="object")return console.warn("eventToObject: Expected an object input, received:",G),G;let Q=new WeakSet;Q.add(G);let X={};for(let Y in G)try{if(V(G[Y],Y))continue;else if(typeof G[Y]==="object"){let Z=A(G[Y],K,Q);if(Z!==w)X[Y]=Z}else X[Y]=G[Y]}catch{continue}if(typeof window<"u"&&window.Event&&G instanceof window.Event)X.selection=X0(K,Q);return X}function X0(G,K){if(typeof window>"u"||!window.getSelection)return null;let Q=window.getSelection();if(!Q)return null;return{type:Q.type,anchorNode:Q.anchorNode?A(Q.anchorNode,G,K):null,anchorOffset:Q.anchorOffset,focusNode:Q.focusNode?A(Q.focusNode,G,K):null,focusOffset:Q.focusOffset,isCollapsed:Q.isCollapsed,rangeCount:Q.rangeCount,selectedText:Q.toString()}}function A(G,K,Q){let X=K-1;if(X<=0&&typeof G==="object")return w;if(!G||typeof G!=="object")return G;if(Q.has(G))return w;Q.add(G);try{if(Array.isArray(G)||typeof G?.length==="number"&&typeof G[Symbol.iterator]==="function"&&!Object.prototype.toString.call(G).includes("Map")&&!(G instanceof CSSStyleDeclaration))return Y0(G,X,Q);return Z0(G,X,Q)}finally{Q.delete(G)}}function Y0(G,K,Q){let X=[];for(let Y=0;Y<G.length;Y++)if(V(G[Y]))continue;else if(typeof G[Y]==="object"){let Z=A(G[Y],K,Q);if(Z!==w)X.push(Z)}else X.push(G[Y]);return X}function Z0(G,K,Q){let X={};for(let $ in G)try{if(V(G[$],$,G))continue;else if(typeof G[$]==="object"){let q=A(G[$],K,Q);if(q!==w)X[$]=q}else X[$]=G[$]}catch{continue}if(G&&typeof G==="object"&&"dataset"in G&&!Object.prototype.hasOwnProperty.call(X,"dataset")){let $=G.dataset;if(!V($,"dataset",G)){let q=A($,K,Q);if(q!==w)X.dataset=q}}let Y=["value","checked","files","type","name"];for(let $ of Y)if(G&&typeof G==="object"&&$ in G&&!Object.prototype.hasOwnProperty.call(X,$)){let q=G[$];if(!V(q,$,G))if(typeof q==="object"){let H=$==="files"?Math.max(K,3):K,B=A(q,H,Q);if(B!==w)X[$]=B}else X[$]=q}let Z=typeof window<"u"?window:void 0,W=Z?Z.HTMLFormElement:typeof HTMLFormElement<"u"?HTMLFormElement:void 0;if(W&&G instanceof W&&G.elements)for(let $=0;$<G.elements.length;$++){let q=G.elements[$];if(q.name&&!Object.prototype.hasOwnProperty.call(X,q.name)&&!V(q,q.name,G))if(typeof q==="object"){let H=A(q,K,Q);if(H!==w)X[q.name]=H}else X[q.name]=q}return X}function V(G,K="",Q=void 0){return G===null||G===void 0||K.startsWith("__")||K.length>0&&/^[A-Z_]+$/.test(K)||typeof G==="function"||G instanceof CSSStyleSheet||G instanceof Window||G instanceof Document||K==="view"||K==="size"||K==="length"||Q instanceof CSSStyleDeclaration&&G===""||typeof Node<"u"&&Q instanceof Node&&(K==="parentNode"||K==="parentElement"||K==="ownerDocument"||K==="getRootNode"||K==="childNodes"||K==="children"||K==="firstChild"||K==="lastChild"||K==="previousSibling"||K==="nextSibling"||K==="previousElementSibling"||K==="nextElementSibling"||K==="innerHTML"||K==="outerHTML"||K==="offsetParent"||K==="offsetWidth"||K==="offsetHeight"||K==="offsetLeft"||K==="offsetTop"||K==="clientTop"||K==="clientLeft"||K==="clientWidth"||K==="clientHeight"||K==="scrollWidth"||K==="scrollHeight"||K==="scrollTop"||K==="scrollLeft")}async function m(){try{let G=await import("react"),K=await import("react-dom/client");return(Q)=>q0(Q,G,K)}catch{return console.error("Unknown error occurred: 'react' is missing within this ReactPy environment! Your JavaScript components may not work as expected!"),(G)=>W0(G)}}function W0(G){return{create:(K,Q,X)=>M(K,Q,...X||[]),render:(K)=>{U(K,G)},unmount:()=>U(null,G)}}var P=new WeakMap;function q0(G,K,Q){let X=null;return{create:(Y,Z,W)=>K.createElement(Y,Z,...W||[]),render:(Y)=>{if(!X)if(!P.get(G))X=Q.createRoot(G),P.set(G,X);else X=P.get(G);X.render(Y)},unmount:()=>{if(X){if(X.unmount(),P.get(G)===X)P.delete(G);X=null}}}}async function h(G,K){let Q;if(G.sourceType==="URL")Q=await import(G.source);else Q=await K.loadModule(G.source);let{bind:X}=Q;if(typeof X!=="function")X=await m();return(Y)=>{let Z=X(Y,{sendMessage:K.sendMessage,onMessage:K.onMessage});if(!(typeof Z.create==="function"&&typeof Z.render==="function"&&typeof Z.unmount==="function"))return F.error(`${G.source} returned an impropper binding`),null;return{render:(W)=>Z.render(i({client:K,module:Q,binding:Z,model:W,currentImportSource:G})),unmount:Z.unmount}}}function i(G){let K;if(G.model.importSource){if(!N(G.currentImportSource,G.model.importSource))return G.binding.create("reactpy-child",{ref:(Q)=>{if(Q)Q.client=G.client,Q.model=G.model,Q.requestUpdate()}});else if(K=z0(G.module,G.model.tagName,G.model.importSource),!K)return null}else K=G.model.tagName;return G.binding.create(K,O(G.model,G.client),R(G.model,(Q)=>i({...G,model:Q})))}function z0(G,K,Q){let X=K.split("."),Y=null;for(let Z=0;Z<X.length;Z++){let W=X[Z];if(Y=Z==0?G[W]:Y[W],!Y){if(Z==0)F.error("Module from source "+l(Q)+` does not export ${W}`);else console.error(`Component ${X.slice(0,Z).join(".")} from source `+l(Q)+` does not have subcomponent ${W}`);break}}return Y}function N(G,K){return G.source===K.source&&G.sourceType===K.sourceType}function l(G){return JSON.stringify({source:G.source,sourceType:G.sourceType})}function R(G,K){if(!G.children)return[];else return G.children.map((Q)=>{switch(typeof Q){case"object":return K(Q);case"string":return Q}})}function O(G,K){return Object.fromEntries(Object.entries({...G.attributes,...Object.fromEntries(Object.entries(G.eventHandlers||{}).map(([Q,X])=>H0(K,Q,X))),...Object.fromEntries(Object.entries(G.inlineJavaScript||{}).map(([Q,X])=>J0(Q,X)))}))}function H0(G,K,{target:Q,preventDefault:X,stopPropagation:Y}){let Z=function(...W){let $=Array.from(W).map((q)=>{let H=q;if(X)H.preventDefault();if(Y)H.stopPropagation();if(typeof H==="object")return C(H);else return H});G.sendMessage({type:"layout-event",data:$,target:Q})};return Z.isHandler=!0,[K,Z]}function J0(name,inlineJavaScript){let wrappedExecutable=function(...args){function handleExecution(...args){let evalResult=eval(inlineJavaScript);if(typeof evalResult=="function")return evalResult(...args)}if(args.length>0&&args[0]instanceof Event)return handleExecution.call(args[0].currentTarget,...args);else return handleExecution(...args)};return wrappedExecutable.isHandler=!1,[name,wrappedExecutable]}class s extends HTMLElement{mountPoint;binding=null;_client=null;_model=null;currentImportSource=null;constructor(){super();this.mountPoint=document.createElement("div"),this.mountPoint.style.display="contents"}connectedCallback(){this.appendChild(this.mountPoint)}set client(G){this._client=G}set model(G){this._model=G}requestUpdate(){this.update()}async update(){if(!this._client||!this._model||!this._model.importSource)return;let G=this._model.importSource;if(!this.binding||!this.currentImportSource||!N(this.currentImportSource,G)){if(this.binding)this.binding.unmount(),this.binding=null;this.currentImportSource=G;try{let K=await h(G,this._client);if(this.isConnected&&this.currentImportSource&&N(this.currentImportSource,G)){let Q=this.binding;if(Q)Q.unmount();if(this.binding=K(this.mountPoint),this.binding)this.binding.render(this._model)}}catch(K){console.error("Failed to load import source",K)}}else if(this.binding)this.binding.render(this._model)}disconnectedCallback(){if(this.binding)this.binding.unmount(),this.binding=null,this.currentImportSource=null}}if(typeof customElements<"u"&&!customElements.get("reactpy-child"))customElements.define("reactpy-child",s);var D=p(null);function r(G){let K=_({tagName:""})[0],Q=A0();return L(()=>G.client.onMessage("layout-update",({path:X,model:Y})=>{if(X==="")Object.assign(K,Y);else n.set(K,X,Y);Q()}),[K,G.client]),J(D.Provider,{value:G.client,children:J(j,{model:K})})}function j({model:G}){if(G.error!==void 0)if(G.error)return J("pre",{children:G.error});else return null;let K;if(G.tagName in a)K=a[G.tagName];else if(G.importSource)K=w0;else K=t;return J(K,{model:G})}function t({model:G}){let K=E(D);return M(G.tagName===""?g:G.tagName,O(G,K),...R(G,(Q)=>{return J(j,{model:Q},Q.attributes?.key)}))}function S({model:G}){let K=E(D),Q=O(G,K),[X,Y]=_(Q.value);L(()=>Y(Q.value),[Q.value]);let Z=Q.onChange;if(typeof Z==="function")Q.onChange=(W)=>{if(W.target)Y(W.target.value);Z(W)};return M(G.tagName,{...Q,value:X},...R(G,(W)=>J(j,{model:W},W.attributes?.key)))}function F0({model:G}){let K=T(null);return L(()=>{if(!K.current)return;let Q=document.createElement("script");for(let[Y,Z]of Object.entries(G.attributes||{}))Q.setAttribute(Y,Z);let X=G?.children?.filter((Y)=>typeof Y=="string")[0];if(X)Q.appendChild(document.createTextNode(X));return K.current.appendChild(Q),()=>{K.current?.removeChild(Q)}},[G.attributes?.key]),J("div",{ref:K})}function w0({model:G}){let K=G.importSource,Q=B0(G);if(!K)return null;let X=K.fallback;if(!K)if(!X)return null;else if(typeof X==="string")return J("span",{children:X});else return J(t,{model:X});else return J("span",{ref:Q})}function A0(){let[,G]=_(!1);return()=>G((K)=>!K)}function B0(G){let K=G.importSource,Q=JSON.stringify(K),X=T(null),Y=E(D),[Z,W]=_(null),$=T(null);return L(()=>{let q=!1,H=null;if(K)h(K,Y).then((B)=>{if(!q&&X.current)H=B(X.current),$.current=Q,W(H)});return()=>{if(q=!0,H&&K&&!K.unmountBeforeUpdate)H.unmount()}},[Y,Q,W,X.current]),L(()=>{if(!(Z&&K))return;if($.current!==Q)return;if(Z.render(G),K.unmountBeforeUpdate)return Z.unmount}),X}var a={input:S,script:F0,select:S,textarea:S};function V0(G){let Q=`${`ws${window.location.protocol==="https:"?"s":""}:`}//${window.location.host}`,X=new URL(`${Q}${G.pathPrefix}${G.componentPath||""}`);if(X.searchParams.append("http_pathname",window.location.pathname),window.location.search)X.searchParams.append("http_query_string",window.location.search);let Y=new f({urls:{componentUrl:X,jsModulesPath:`${window.location.origin}${G.pathPrefix}modules/`},reconnectOptions:{interval:G.reconnectInterval||750,maxInterval:G.reconnectMaxInterval||60000,maxRetries:G.reconnectMaxRetries||150,backoffMultiplier:G.reconnectBackoffMultiplier||1.25},mountElement:G.mountElement});U(J(r,{client:Y}),G.mountElement)}export{V0 as mountReactPy};
|
|
1
|
+
import{a as J}from"./index-64wy0fss.js";import{e as J0,f as b,g as c,i as M,k as _,m as U,n as a,o as R,q as L,s as E,w as D}from"./index-beq660xy.js";var x=b((T0,v)=>{var e=Object.prototype.hasOwnProperty,G0=Object.prototype.toString;v.exports=function(K,Q,X){if(G0.call(Q)!=="[object Function]")throw TypeError("iterator must be a function");var Y=K.length;if(Y===+Y)for(var Z=0;Z<Y;Z++)Q.call(X,K[Z],Z,K);else for(var W in K)if(e.call(K,W))Q.call(X,K[W],W,K)}});var u=b((E0,k)=>{var K0=x();k.exports=z;function z(G,K,Q){if(arguments.length===3)return z.set(G,K,Q);if(arguments.length===2)return z.get(G,K);var X=z.bind(z,G);for(var Y in z)if(z.hasOwnProperty(Y))X[Y]=z[Y].bind(X,G);return X}z.get=function(K,Q){var X=Array.isArray(Q)?Q:z.parse(Q);for(var Y=0;Y<X.length;++Y){var Z=X[Y];if(!(typeof K=="object"&&(Z in K)))throw Error("Invalid reference token: "+Z);K=K[Z]}return K};z.set=function(K,Q,X){var Y=Array.isArray(Q)?Q:z.parse(Q),Z=Y[0];if(Y.length===0)throw Error("Can not set the root object");for(var W=0;W<Y.length-1;++W){var $=Y[W];if(typeof $!=="string"&&typeof $!=="number")$=String($);if($==="__proto__"||$==="constructor"||$==="prototype")continue;if($==="-"&&Array.isArray(K))$=K.length;if(Z=Y[W+1],!($ in K))if(Z.match(/^(\d+|-)$/))K[$]=[];else K[$]={};K=K[$]}if(Z==="-"&&Array.isArray(K))Z=K.length;return K[Z]=X,this};z.remove=function(G,K){var Q=Array.isArray(K)?K:z.parse(K),X=Q[Q.length-1];if(X===void 0)throw Error('Invalid JSON pointer for remove: "'+K+'"');var Y=z.get(G,Q.slice(0,-1));if(Array.isArray(Y)){var Z=+X;if(X===""&&isNaN(Z))throw Error('Invalid array index: "'+X+'"');Array.prototype.splice.call(Y,Z,1)}else delete Y[X]};z.dict=function(K,Q){var X={};return z.walk(K,function(Y,Z){X[Z]=Y},Q),X};z.walk=function(K,Q,X){var Y=[];X=X||function(Z){var W=Object.prototype.toString.call(Z);return W==="[object Object]"||W==="[object Array]"},function Z(W){K0(W,function($,q){if(Y.push(String(q)),X($))Z($);else Q($,z.compile(Y));Y.pop()})}(K)};z.has=function(K,Q){try{z.get(K,Q)}catch(X){return!1}return!0};z.escape=function(K){return K.toString().replace(/~/g,"~0").replace(/\//g,"~1")};z.unescape=function(K){return K.replace(/~1/g,"/").replace(/~0/g,"~")};z.parse=function(K){if(K==="")return[];if(K.charAt(0)!=="/")throw Error("Invalid JSON pointer: "+K);return K.substring(1).split(/\//).map(z.unescape)};z.compile=function(K){if(K.length===0)return"";return"/"+K.map(z.escape).join("/")}});var w={log:(...G)=>console.log("[ReactPy]",...G),info:(...G)=>console.info("[ReactPy]",...G),warn:(...G)=>console.warn("[ReactPy]",...G),error:(...G)=>console.error("[ReactPy]",...G)};function j(G){let{interval:K,maxInterval:Q,maxRetries:X,backoffMultiplier:Y}=G,Z=0,W=K,$=!1,q=!1,H={},B=()=>{if(q)return;H.current=new WebSocket(G.url),H.current.onopen=()=>{if($=!0,w.info("Connected!"),W=K,Z=0,G.onOpen)G.onOpen()},H.current.onmessage=(t)=>{if(G.onMessage)G.onMessage(t)},H.current.onclose=()=>{if(G.onClose)G.onClose();if(!$){w.info("Failed to connect!");return}if(w.info("Disconnected!"),Z>=X){w.info("Connection max retries exhausted!");return}w.info(`Reconnecting in ${(W/1000).toPrecision(4)} seconds...`),setTimeout(B,W),W=o(W,Y,Q),Z++}};return G.readyPromise.then(()=>w.info("Starting client...")).then(B),H}function o(G,K,Q){return Math.min(G*K,Q)}class y{handlers={};ready;resolveReady;constructor(){this.resolveReady=()=>{},this.ready=new Promise((G)=>this.resolveReady=G)}onMessage(G,K){return(this.handlers[G]||(this.handlers[G]=[])).push(K),this.resolveReady(void 0),()=>{this.handlers[G]=this.handlers[G].filter((Q)=>Q!==K)}}handleIncoming(G){if(!G.type){w.warn("Received message without type",G);return}let K=this.handlers[G.type];if(!K){w.warn("Received message without handler",G);return}K.forEach((Q)=>Q(G))}}class C extends y{urls;socket;mountElement;constructor(G){super();this.urls=G.urls,this.mountElement=G.mountElement,this.socket=j({url:this.urls.componentUrl,readyPromise:this.ready,...G.reconnectOptions,onMessage:async({data:K})=>this.handleIncoming(JSON.parse(K))})}sendMessage(G){this.socket.current?.send(JSON.stringify(G))}loadModule(G){return import(`${this.urls.jsModulesPath}${G}`)}}var p=J0(u(),1);var F={__stop__:!0};function I(G,K=10){if(!G||typeof G!=="object")return console.warn("eventToObject: Expected an object input, received:",G),G;let Q=new WeakSet;Q.add(G);let X={};for(let Y in G)try{if(V(G[Y],Y))continue;else if(typeof G[Y]==="object"){let Z=A(G[Y],K,Q);if(Z!==F)X[Y]=Z}else X[Y]=G[Y]}catch{continue}if(typeof window<"u"&&window.Event&&G instanceof window.Event)X.selection=Q0(K,Q);return X}function Q0(G,K){if(typeof window>"u"||!window.getSelection)return null;let Q=window.getSelection();if(!Q)return null;return{type:Q.type,anchorNode:Q.anchorNode?A(Q.anchorNode,G,K):null,anchorOffset:Q.anchorOffset,focusNode:Q.focusNode?A(Q.focusNode,G,K):null,focusOffset:Q.focusOffset,isCollapsed:Q.isCollapsed,rangeCount:Q.rangeCount,selectedText:Q.toString()}}function A(G,K,Q){let X=K-1;if(X<=0&&typeof G==="object")return F;if(!G||typeof G!=="object")return G;if(Q.has(G))return F;Q.add(G);try{if(Array.isArray(G)||typeof G?.length==="number"&&typeof G[Symbol.iterator]==="function"&&!Object.prototype.toString.call(G).includes("Map")&&!(G instanceof CSSStyleDeclaration))return X0(G,X,Q);return Y0(G,X,Q)}finally{Q.delete(G)}}function X0(G,K,Q){let X=[];for(let Y=0;Y<G.length;Y++)if(V(G[Y]))continue;else if(typeof G[Y]==="object"){let Z=A(G[Y],K,Q);if(Z!==F)X.push(Z)}else X.push(G[Y]);return X}function Y0(G,K,Q){let X={};for(let $ in G)try{if(V(G[$],$,G))continue;else if(typeof G[$]==="object"){let q=A(G[$],K,Q);if(q!==F)X[$]=q}else X[$]=G[$]}catch{continue}if(G&&typeof G==="object"&&"dataset"in G&&!Object.prototype.hasOwnProperty.call(X,"dataset")){let $=G.dataset;if(!V($,"dataset",G)){let q=A($,K,Q);if(q!==F)X.dataset=q}}let Y=["value","checked","files","type","name"];for(let $ of Y)if(G&&typeof G==="object"&&$ in G&&!Object.prototype.hasOwnProperty.call(X,$)){let q=G[$];if(!V(q,$,G))if(typeof q==="object"){let H=$==="files"?Math.max(K,3):K,B=A(q,H,Q);if(B!==F)X[$]=B}else X[$]=q}let Z=typeof window<"u"?window:void 0,W=Z?Z.HTMLFormElement:typeof HTMLFormElement<"u"?HTMLFormElement:void 0;if(W&&G instanceof W&&G.elements)for(let $=0;$<G.elements.length;$++){let q=G.elements[$];if(q.name&&!Object.prototype.hasOwnProperty.call(X,q.name)&&!V(q,q.name,G))if(typeof q==="object"){let H=A(q,K,Q);if(H!==F)X[q.name]=H}else X[q.name]=q}return X}function V(G,K="",Q=void 0){return G===null||G===void 0||K.startsWith("__")||K.length>0&&/^[A-Z_]+$/.test(K)||typeof G==="function"||G instanceof CSSStyleSheet||G instanceof Window||G instanceof Document||K==="view"||K==="size"||K==="length"||Q instanceof CSSStyleDeclaration&&G===""||typeof Node<"u"&&Q instanceof Node&&(K==="parentNode"||K==="parentElement"||K==="ownerDocument"||K==="getRootNode"||K==="childNodes"||K==="children"||K==="firstChild"||K==="lastChild"||K==="previousSibling"||K==="nextSibling"||K==="previousElementSibling"||K==="nextElementSibling"||K==="innerHTML"||K==="outerHTML"||K==="offsetParent"||K==="offsetWidth"||K==="offsetHeight"||K==="offsetLeft"||K==="offsetTop"||K==="clientTop"||K==="clientLeft"||K==="clientWidth"||K==="clientHeight"||K==="scrollWidth"||K==="scrollHeight"||K==="scrollTop"||K==="scrollLeft")}async function d(){try{let G=await import("react"),K=await import("react-dom/client");return(Q)=>W0(Q,G,K)}catch{return console.error("Unknown error occurred: 'react' is missing within this ReactPy environment! Your JavaScript components may not work as expected!"),(G)=>$0(G)}}function $0(G){return{create:(K,Q,X)=>M(K,Q,...X||[]),render:(K)=>{U(K,G)},unmount:()=>U(null,G)}}var P=new WeakMap;function W0(G,K,Q){let X=null;return{create:(Y,Z,W)=>K.createElement(Y,Z,...W||[]),render:(Y)=>{if(!X)if(!P.get(G))X=Q.createRoot(G),P.set(G,X);else X=P.get(G);X.render(Y)},unmount:()=>{if(X){if(X.unmount(),P.get(G)===X)P.delete(G);X=null}}}}async function h(G,K){let Q;if(G.sourceType==="URL")Q=await import(G.source);else Q=await K.loadModule(G.source);let{bind:X}=Q;if(typeof X!=="function")X=await d();return(Y)=>{let Z=X(Y,{sendMessage:K.sendMessage,onMessage:K.onMessage});if(!(typeof Z.create==="function"&&typeof Z.render==="function"&&typeof Z.unmount==="function"))return w.error(`${G.source} returned an impropper binding`),null;return{render:(W)=>Z.render(l({client:K,module:Q,binding:Z,model:W,currentImportSource:G})),unmount:Z.unmount}}}function l(G){let K;if(G.model.importSource){if(!N(G.currentImportSource,G.model.importSource))return G.binding.create("reactpy-child",{ref:(Q)=>{if(Q)Q.client=G.client,Q.model=G.model,Q.requestUpdate()}});else if(K=q0(G.module,G.model.tagName,G.model.importSource),!K)return null}else K=G.model.tagName===""?_:G.model.tagName;return G.binding.create(K,T(G.model,G.client),O(G.model,(Q)=>l({...G,model:Q})))}function q0(G,K,Q){let X=K.split("."),Y=null;for(let Z=0;Z<X.length;Z++){let W=X[Z];if(Y=Z==0?G[W]:Y[W],!Y){if(Z==0)w.error("Module from source "+m(Q)+` does not export ${W}`);else console.error(`Component ${X.slice(0,Z).join(".")} from source `+m(Q)+` does not have subcomponent ${W}`);break}}return Y}function N(G,K){return G.source===K.source&&G.sourceType===K.sourceType}function m(G){return JSON.stringify({source:G.source,sourceType:G.sourceType})}function O(G,K){if(!G.children)return[];else return G.children.map((Q)=>{switch(typeof Q){case"object":return K(Q);case"string":return Q}})}function T(G,K){return Object.fromEntries(Object.entries({...G.attributes,...Object.fromEntries(Object.entries(G.eventHandlers||{}).map(([Q,X])=>z0(K,Q,X))),...Object.fromEntries(Object.entries(G.inlineJavaScript||{}).map(([Q,X])=>H0(Q,X)))}))}function z0(G,K,{target:Q,preventDefault:X,stopPropagation:Y}){let Z=function(...W){let $=Array.from(W).map((q)=>{let H=q;if(X)H.preventDefault();if(Y)H.stopPropagation();if(typeof H==="object")return I(H);else return H});G.sendMessage({type:"layout-event",data:$,target:Q})};return Z.isHandler=!0,[K,Z]}function H0(name,inlineJavaScript){let wrappedExecutable=function(...args){function handleExecution(...args){let evalResult=eval(inlineJavaScript);if(typeof evalResult=="function")return evalResult(...args)}if(args.length>0&&args[0]instanceof Event)return handleExecution.call(args[0].currentTarget,...args);else return handleExecution(...args)};return wrappedExecutable.isHandler=!1,[name,wrappedExecutable]}class i extends HTMLElement{mountPoint;binding=null;_client=null;_model=null;currentImportSource=null;constructor(){super();this.mountPoint=document.createElement("div"),this.mountPoint.style.display="contents"}connectedCallback(){this.appendChild(this.mountPoint)}set client(G){this._client=G}set model(G){this._model=G}requestUpdate(){this.update()}async update(){if(!this._client||!this._model||!this._model.importSource)return;let G=this._model.importSource;if(!this.binding||!this.currentImportSource||!N(this.currentImportSource,G)){if(this.binding)this.binding.unmount(),this.binding=null;this.currentImportSource=G;try{let K=await h(G,this._client);if(this.isConnected&&this.currentImportSource&&N(this.currentImportSource,G)){let Q=this.binding;if(Q)Q.unmount();if(this.binding=K(this.mountPoint),this.binding)this.binding.render(this._model)}}catch(K){console.error("Failed to load import source",K)}}else if(this.binding)this.binding.render(this._model)}disconnectedCallback(){if(this.binding)this.binding.unmount(),this.binding=null,this.currentImportSource=null}}if(typeof customElements<"u"&&!customElements.get("reactpy-child"))customElements.define("reactpy-child",i);var f=a(null);function n(G){let K=R({tagName:""})[0],Q=A0();return L(()=>G.client.onMessage("layout-update",({path:X,model:Y})=>{if(X==="")Object.assign(K,Y);else p.set(K,X,Y);Q()}),[K,G.client]),J(f.Provider,{value:G.client,children:J(g,{model:K})})}function g({model:G}){if(G.error!==void 0)if(G.error)return J("pre",{children:G.error});else return null;let K;if(G.tagName in s)K=s[G.tagName];else if(G.importSource)K=F0;else K=r;return J(K,{model:G})}function r({model:G}){let K=D(f);return M(G.tagName===""?_:G.tagName,T(G,K),...O(G,(Q)=>{return J(g,{model:Q},Q.attributes?.key)}))}function S({model:G}){let K=D(f),Q=T(G,K),[X,Y]=R(Q.value);L(()=>Y(Q.value),[Q.value]);let Z=Q.onChange;if(typeof Z==="function")Q.onChange=(W)=>{if(W.target)Y(W.target.value);Z(W)};return M(G.tagName,{...Q,value:X},...O(G,(W)=>J(g,{model:W},W.attributes?.key)))}function w0({model:G}){let K=E(null);return L(()=>{if(!K.current)return;let Q=document.createElement("script");for(let[Y,Z]of Object.entries(G.attributes||{}))Q.setAttribute(Y,Z);let X=G?.children?.filter((Y)=>typeof Y=="string")[0];if(X)Q.appendChild(document.createTextNode(X));return K.current.appendChild(Q),()=>{K.current?.removeChild(Q)}},[G.attributes?.key]),J("div",{ref:K})}function F0({model:G}){let K=G.importSource,Q=B0(G);if(!K)return null;let X=K.fallback;if(!K)if(!X)return null;else if(typeof X==="string")return J("span",{children:X});else return J(r,{model:X});else return J("span",{ref:Q})}function A0(){let[,G]=R(!1);return()=>G((K)=>!K)}function B0(G){let K=G.importSource,Q=JSON.stringify(K),X=E(null),Y=D(f),[Z,W]=R(null),$=E(null);return L(()=>{let q=!1,H=null;if(K)h(K,Y).then((B)=>{if(!q&&X.current)H=B(X.current),$.current=Q,W(H)});return()=>{if(q=!0,H&&K&&!K.unmountBeforeUpdate)H.unmount()}},[Y,Q,W,X.current]),L(()=>{if(!(Z&&K))return;if($.current!==Q)return;if(Z.render(G),K.unmountBeforeUpdate)return Z.unmount}),X}var s={input:S,script:w0,select:S,textarea:S};function V0(G){let Q=`${`ws${window.location.protocol==="https:"?"s":""}:`}//${window.location.host}`,X=new URL(`${Q}${G.pathPrefix}${G.componentPath||""}`);if(X.searchParams.append("http_pathname",window.location.pathname),window.location.search)X.searchParams.append("http_query_string",window.location.search);let Y=new C({urls:{componentUrl:X,jsModulesPath:`${window.location.origin}${G.pathPrefix}modules/`},reconnectOptions:{interval:G.reconnectInterval||750,maxInterval:G.reconnectMaxInterval||60000,maxRetries:G.reconnectMaxRetries||150,backoffMultiplier:G.reconnectBackoffMultiplier||1.25},mountElement:G.mountElement});U(J(n,{client:Y}),G.mountElement)}export{V0 as mountReactPy};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=219F1B8D77E5876364756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
reactpy/static/index.js.map
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
"export default {\n log: (...args) => console.log(\"[ReactPy]\", ...args),\n info: (...args) => console.info(\"[ReactPy]\", ...args),\n warn: (...args) => console.warn(\"[ReactPy]\", ...args),\n error: (...args) => console.error(\"[ReactPy]\", ...args),\n};\n//# sourceMappingURL=logger.js.map",
|
|
8
8
|
"import log from \"./logger\";\nexport function createReconnectingWebSocket(props) {\n const { interval, maxInterval, maxRetries, backoffMultiplier } = props;\n let retries = 0;\n let currentInterval = interval;\n let everConnected = false;\n const closed = false;\n const socket = {};\n const connect = () => {\n if (closed) {\n return;\n }\n socket.current = new WebSocket(props.url);\n socket.current.onopen = () => {\n everConnected = true;\n log.info(\"Connected!\");\n currentInterval = interval;\n retries = 0;\n if (props.onOpen) {\n props.onOpen();\n }\n };\n socket.current.onmessage = (event) => {\n if (props.onMessage) {\n props.onMessage(event);\n }\n };\n socket.current.onclose = () => {\n if (props.onClose) {\n props.onClose();\n }\n if (!everConnected) {\n log.info(\"Failed to connect!\");\n return;\n }\n log.info(\"Disconnected!\");\n if (retries >= maxRetries) {\n log.info(\"Connection max retries exhausted!\");\n return;\n }\n log.info(`Reconnecting in ${(currentInterval / 1000).toPrecision(4)} seconds...`);\n setTimeout(connect, currentInterval);\n currentInterval = nextInterval(currentInterval, backoffMultiplier, maxInterval);\n retries++;\n };\n };\n props.readyPromise.then(() => log.info(\"Starting client...\")).then(connect);\n return socket;\n}\nexport function nextInterval(currentInterval, backoffMultiplier, maxInterval) {\n return Math.min(\n // increase interval by backoff multiplier\n currentInterval * backoffMultiplier, \n // don't exceed max interval\n maxInterval);\n}\n//# sourceMappingURL=websocket.js.map",
|
|
9
9
|
"import logger from \"./logger\";\nimport { createReconnectingWebSocket } from \"./websocket\";\nexport class BaseReactPyClient {\n handlers = {};\n ready;\n resolveReady;\n constructor() {\n this.resolveReady = () => { };\n this.ready = new Promise((resolve) => (this.resolveReady = resolve));\n }\n onMessage(type, handler) {\n (this.handlers[type] || (this.handlers[type] = [])).push(handler);\n this.resolveReady(undefined);\n return () => {\n this.handlers[type] = this.handlers[type].filter((h) => h !== handler);\n };\n }\n /**\n * Handle an incoming message.\n *\n * This should be called by subclasses when a message is received.\n *\n * @param message The message to handle. The message must have a `type` property.\n */\n handleIncoming(message) {\n if (!message.type) {\n logger.warn(\"Received message without type\", message);\n return;\n }\n const messageHandlers = this.handlers[message.type];\n if (!messageHandlers) {\n logger.warn(\"Received message without handler\", message);\n return;\n }\n messageHandlers.forEach((h) => h(message));\n }\n}\nexport class ReactPyClient extends BaseReactPyClient {\n urls;\n socket;\n mountElement;\n constructor(props) {\n super();\n this.urls = props.urls;\n this.mountElement = props.mountElement;\n this.socket = createReconnectingWebSocket({\n url: this.urls.componentUrl,\n readyPromise: this.ready,\n ...props.reconnectOptions,\n onMessage: async ({ data }) => this.handleIncoming(JSON.parse(data)),\n });\n }\n sendMessage(message) {\n this.socket.current?.send(JSON.stringify(message));\n }\n loadModule(moduleName) {\n return import(`${this.urls.jsModulesPath}${moduleName}`);\n }\n}\n//# sourceMappingURL=client.js.map",
|
|
10
|
-
"import { jsx as _jsx } from \"preact/jsx-runtime\";\nimport { set as setJsonPointer } from \"json-pointer\";\nimport { createContext, createElement, Fragment } from \"preact\";\nimport { useContext, useEffect, useRef, useState } from \"preact/hooks\";\nimport { createAttributes, createChildren, loadImportSource } from \"./vdom\";\nconst ClientContext = createContext(null);\nexport function Layout(props) {\n const currentModel = useState({ tagName: \"\" })[0];\n const forceUpdate = useForceUpdate();\n useEffect(() => props.client.onMessage(\"layout-update\", ({ path, model }) => {\n if (path === \"\") {\n Object.assign(currentModel, model);\n }\n else {\n setJsonPointer(currentModel, path, model);\n }\n forceUpdate();\n }), [currentModel, props.client]);\n return (_jsx(ClientContext.Provider, { value: props.client, children: _jsx(Element, { model: currentModel }) }));\n}\nexport function Element({ model }) {\n if (model.error !== undefined) {\n if (model.error) {\n return _jsx(\"pre\", { children: model.error });\n }\n else {\n return null;\n }\n }\n let SpecializedElement;\n if (model.tagName in SPECIAL_ELEMENTS) {\n SpecializedElement =\n SPECIAL_ELEMENTS[model.tagName];\n }\n else if (model.importSource) {\n SpecializedElement = ImportedElement;\n }\n else {\n SpecializedElement = StandardElement;\n }\n return _jsx(SpecializedElement, { model: model });\n}\nfunction StandardElement({ model }) {\n const client = useContext(ClientContext);\n // Use createElement here to avoid warning about variable numbers of children not\n // having keys. Warning about this must now be the responsibility of the client\n // providing the models instead of the client rendering them.\n return createElement(model.tagName === \"\" ? Fragment : model.tagName, createAttributes(model, client), ...createChildren(model, (child) => {\n return _jsx(Element, { model: child }, child.attributes?.key);\n }));\n}\nfunction UserInputElement({ model }) {\n const client = useContext(ClientContext);\n const props = createAttributes(model, client);\n const [value, setValue] = useState(props.value);\n // honor changes to value from the client via props\n useEffect(() => setValue(props.value), [props.value]);\n const givenOnChange = props.onChange;\n if (typeof givenOnChange === \"function\") {\n props.onChange = (event) => {\n // immediately update the value to give the user feedback\n if (event.target) {\n setValue(event.target.value);\n }\n // allow the client to respond (and possibly change the value)\n givenOnChange(event);\n };\n }\n // Use createElement here to avoid warning about variable numbers of children not\n // having keys. Warning about this must now be the responsibility of the client\n // providing the models instead of the client rendering them.\n return createElement(model.tagName, \n // overwrite\n { ...props, value }, ...createChildren(model, (child) => (_jsx(Element, { model: child }, child.attributes?.key))));\n}\nfunction ScriptElement({ model }) {\n const ref = useRef(null);\n useEffect(() => {\n // Don't run if the parent element is missing\n if (!ref.current) {\n return;\n }\n // Create the script element\n const scriptElement = document.createElement(\"script\");\n for (const [k, v] of Object.entries(model.attributes || {})) {\n scriptElement.setAttribute(k, v);\n }\n // Add the script content as text\n const scriptContent = model?.children?.filter((value) => typeof value == \"string\")[0];\n if (scriptContent) {\n scriptElement.appendChild(document.createTextNode(scriptContent));\n }\n // Append the script element to the parent element\n ref.current.appendChild(scriptElement);\n // Remove the script element when the component is unmounted\n return () => {\n ref.current?.removeChild(scriptElement);\n };\n }, [model.attributes?.key]);\n return _jsx(\"div\", { ref: ref });\n}\nfunction ImportedElement({ model }) {\n const importSourceVdom = model.importSource;\n const importSourceRef = useImportSource(model);\n if (!importSourceVdom) {\n return null;\n }\n const importSourceFallback = importSourceVdom.fallback;\n if (!importSourceVdom) {\n // display a fallback if one was given\n if (!importSourceFallback) {\n return null;\n }\n else if (typeof importSourceFallback === \"string\") {\n return _jsx(\"span\", { children: importSourceFallback });\n }\n else {\n return _jsx(StandardElement, { model: importSourceFallback });\n }\n }\n else {\n return _jsx(\"span\", { ref: importSourceRef });\n }\n}\nfunction useForceUpdate() {\n const [, setState] = useState(false);\n return () => setState((old) => !old);\n}\nfunction useImportSource(model) {\n const vdomImportSource = model.importSource;\n const vdomImportSourceJsonString = JSON.stringify(vdomImportSource);\n const mountPoint = useRef(null);\n const client = useContext(ClientContext);\n const [binding, setBinding] = useState(null);\n const bindingSource = useRef(null);\n useEffect(() => {\n let unmounted = false;\n let currentBinding = null;\n if (vdomImportSource) {\n loadImportSource(vdomImportSource, client).then((bind) => {\n if (!unmounted && mountPoint.current) {\n currentBinding = bind(mountPoint.current);\n bindingSource.current = vdomImportSourceJsonString;\n setBinding(currentBinding);\n }\n });\n }\n return () => {\n unmounted = true;\n if (currentBinding &&\n vdomImportSource &&\n !vdomImportSource.unmountBeforeUpdate) {\n currentBinding.unmount();\n }\n };\n }, [client, vdomImportSourceJsonString, setBinding, mountPoint.current]);\n // this effect must run every time in case the model has changed\n useEffect(() => {\n if (!(binding && vdomImportSource)) {\n return;\n }\n if (bindingSource.current !== vdomImportSourceJsonString) {\n return;\n }\n binding.render(model);\n if (vdomImportSource.unmountBeforeUpdate) {\n return binding.unmount;\n }\n });\n return mountPoint;\n}\nconst SPECIAL_ELEMENTS = {\n input: UserInputElement,\n script: ScriptElement,\n select: UserInputElement,\n textarea: UserInputElement,\n};\n//# sourceMappingURL=components.js.map",
|
|
10
|
+
"import { jsx as _jsx } from \"preact/jsx-runtime\";\nimport { set as setJsonPointer } from \"json-pointer\";\nimport { createContext, createElement, Fragment, } from \"preact\";\nimport { useContext, useEffect, useRef, useState } from \"preact/hooks\";\nimport { createAttributes, createChildren, loadImportSource } from \"./vdom\";\nconst ClientContext = createContext(null);\nexport function Layout(props) {\n const currentModel = useState({ tagName: \"\" })[0];\n const forceUpdate = useForceUpdate();\n useEffect(() => props.client.onMessage(\"layout-update\", ({ path, model }) => {\n if (path === \"\") {\n Object.assign(currentModel, model);\n }\n else {\n setJsonPointer(currentModel, path, model);\n }\n forceUpdate();\n }), [currentModel, props.client]);\n return (_jsx(ClientContext.Provider, { value: props.client, children: _jsx(Element, { model: currentModel }) }));\n}\nexport function Element({ model }) {\n if (model.error !== undefined) {\n if (model.error) {\n return _jsx(\"pre\", { children: model.error });\n }\n else {\n return null;\n }\n }\n let SpecializedElement;\n if (model.tagName in SPECIAL_ELEMENTS) {\n SpecializedElement =\n SPECIAL_ELEMENTS[model.tagName];\n }\n else if (model.importSource) {\n SpecializedElement = ImportedElement;\n }\n else {\n SpecializedElement = StandardElement;\n }\n return _jsx(SpecializedElement, { model: model });\n}\nfunction StandardElement({ model }) {\n const client = useContext(ClientContext);\n // Use createElement here to avoid warning about variable numbers of children not\n // having keys. Warning about this must now be the responsibility of the client\n // providing the models instead of the client rendering them.\n return createElement(model.tagName === \"\" ? Fragment : model.tagName, createAttributes(model, client), ...createChildren(model, (child) => {\n return _jsx(Element, { model: child }, child.attributes?.key);\n }));\n}\nfunction UserInputElement({ model }) {\n const client = useContext(ClientContext);\n const props = createAttributes(model, client);\n const [value, setValue] = useState(props.value);\n // honor changes to value from the client via props\n useEffect(() => setValue(props.value), [props.value]);\n const givenOnChange = props.onChange;\n if (typeof givenOnChange === \"function\") {\n props.onChange = (event) => {\n // immediately update the value to give the user feedback\n if (event.target) {\n setValue(event.target.value);\n }\n // allow the client to respond (and possibly change the value)\n givenOnChange(event);\n };\n }\n // Use createElement here to avoid warning about variable numbers of children not\n // having keys. Warning about this must now be the responsibility of the client\n // providing the models instead of the client rendering them.\n return createElement(model.tagName, \n // overwrite\n { ...props, value }, ...createChildren(model, (child) => (_jsx(Element, { model: child }, child.attributes?.key))));\n}\nfunction ScriptElement({ model }) {\n const ref = useRef(null);\n useEffect(() => {\n // Don't run if the parent element is missing\n if (!ref.current) {\n return;\n }\n // Create the script element\n const scriptElement = document.createElement(\"script\");\n for (const [k, v] of Object.entries(model.attributes || {})) {\n scriptElement.setAttribute(k, v);\n }\n // Add the script content as text\n const scriptContent = model?.children?.filter((value) => typeof value == \"string\")[0];\n if (scriptContent) {\n scriptElement.appendChild(document.createTextNode(scriptContent));\n }\n // Append the script element to the parent element\n ref.current.appendChild(scriptElement);\n // Remove the script element when the component is unmounted\n return () => {\n ref.current?.removeChild(scriptElement);\n };\n }, [model.attributes?.key]);\n return _jsx(\"div\", { ref: ref });\n}\nfunction ImportedElement({ model }) {\n const importSourceVdom = model.importSource;\n const importSourceRef = useImportSource(model);\n if (!importSourceVdom) {\n return null;\n }\n const importSourceFallback = importSourceVdom.fallback;\n if (!importSourceVdom) {\n // display a fallback if one was given\n if (!importSourceFallback) {\n return null;\n }\n else if (typeof importSourceFallback === \"string\") {\n return _jsx(\"span\", { children: importSourceFallback });\n }\n else {\n return _jsx(StandardElement, { model: importSourceFallback });\n }\n }\n else {\n return _jsx(\"span\", { ref: importSourceRef });\n }\n}\nfunction useForceUpdate() {\n const [, setState] = useState(false);\n return () => setState((old) => !old);\n}\nfunction useImportSource(model) {\n const vdomImportSource = model.importSource;\n const vdomImportSourceJsonString = JSON.stringify(vdomImportSource);\n const mountPoint = useRef(null);\n const client = useContext(ClientContext);\n const [binding, setBinding] = useState(null);\n const bindingSource = useRef(null);\n useEffect(() => {\n let unmounted = false;\n let currentBinding = null;\n if (vdomImportSource) {\n loadImportSource(vdomImportSource, client).then((bind) => {\n if (!unmounted && mountPoint.current) {\n currentBinding = bind(mountPoint.current);\n bindingSource.current = vdomImportSourceJsonString;\n setBinding(currentBinding);\n }\n });\n }\n return () => {\n unmounted = true;\n if (currentBinding &&\n vdomImportSource &&\n !vdomImportSource.unmountBeforeUpdate) {\n currentBinding.unmount();\n }\n };\n }, [client, vdomImportSourceJsonString, setBinding, mountPoint.current]);\n // this effect must run every time in case the model has changed\n useEffect(() => {\n if (!(binding && vdomImportSource)) {\n return;\n }\n if (bindingSource.current !== vdomImportSourceJsonString) {\n return;\n }\n binding.render(model);\n if (vdomImportSource.unmountBeforeUpdate) {\n return binding.unmount;\n }\n });\n return mountPoint;\n}\nconst SPECIAL_ELEMENTS = {\n input: UserInputElement,\n script: ScriptElement,\n select: UserInputElement,\n textarea: UserInputElement,\n};\n//# sourceMappingURL=components.js.map",
|
|
11
11
|
"const maxDepthSignal = { __stop__: true };\n/**\n * Convert any class object (such as `Event`) to a plain object.\n */\nexport default function convert(classObject, maxDepth = 10) {\n // Immediately return `classObject` if given an unexpected (non-object) input\n if (!classObject || typeof classObject !== \"object\") {\n console.warn(\"eventToObject: Expected an object input, received:\", classObject);\n return classObject;\n }\n // Begin conversion\n const visited = new WeakSet();\n visited.add(classObject);\n const convertedObj = {};\n for (const key in classObject) {\n // Skip keys that cannot be converted\n try {\n if (shouldIgnoreValue(classObject[key], key)) {\n continue;\n }\n // Handle objects (potentially cyclical)\n else if (typeof classObject[key] === \"object\") {\n const result = deepCloneClass(classObject[key], maxDepth, visited);\n if (result !== maxDepthSignal) {\n convertedObj[key] = result;\n }\n }\n // Handle simple types (non-cyclical)\n else {\n convertedObj[key] = classObject[key];\n }\n }\n catch {\n continue;\n }\n }\n // Special case: Event selection\n if (typeof window !== \"undefined\" &&\n window.Event &&\n classObject instanceof window.Event) {\n convertedObj[\"selection\"] = serializeSelection(maxDepth, visited);\n }\n return convertedObj;\n}\n/**\n * Serialize the current window selection.\n */\nfunction serializeSelection(maxDepth, visited) {\n if (typeof window === \"undefined\" || !window.getSelection) {\n return null;\n }\n const selection = window.getSelection();\n if (!selection) {\n return null;\n }\n return {\n type: selection.type,\n anchorNode: selection.anchorNode\n ? deepCloneClass(selection.anchorNode, maxDepth, visited)\n : null,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode\n ? deepCloneClass(selection.focusNode, maxDepth, visited)\n : null,\n focusOffset: selection.focusOffset,\n isCollapsed: selection.isCollapsed,\n rangeCount: selection.rangeCount,\n selectedText: selection.toString(),\n };\n}\n/**\n * Recursively convert a class-based object to a plain object.\n */\nfunction deepCloneClass(x, _maxDepth, visited) {\n const maxDepth = _maxDepth - 1;\n // Return an indicator if maxDepth is reached\n if (maxDepth <= 0 && typeof x === \"object\") {\n return maxDepthSignal;\n }\n // Safety check: WeakSet only accepts objects (and not null)\n if (!x || typeof x !== \"object\") {\n return x;\n }\n if (visited.has(x)) {\n return maxDepthSignal;\n }\n visited.add(x);\n try {\n // Convert array-like class (e.g., NodeList, ClassList, HTMLCollection)\n if (Array.isArray(x) ||\n (typeof x?.length === \"number\" &&\n typeof x[Symbol.iterator] === \"function\" &&\n !Object.prototype.toString.call(x).includes(\"Map\") &&\n !(x instanceof CSSStyleDeclaration))) {\n return classToArray(x, maxDepth, visited);\n }\n // Convert mapping-like class (e.g., Node, Map, Set)\n return classToObject(x, maxDepth, visited);\n }\n finally {\n visited.delete(x);\n }\n}\n/**\n * Convert an array-like class to a plain array.\n */\nfunction classToArray(x, maxDepth, visited) {\n const result = [];\n for (let i = 0; i < x.length; i++) {\n // Skip anything that should not be converted\n if (shouldIgnoreValue(x[i])) {\n continue;\n }\n // Only push objects as if we haven't reached max depth\n else if (typeof x[i] === \"object\") {\n const converted = deepCloneClass(x[i], maxDepth, visited);\n if (converted !== maxDepthSignal) {\n result.push(converted);\n }\n }\n // Add plain values if not skippable\n else {\n result.push(x[i]);\n }\n }\n return result;\n}\n/**\n * Convert a mapping-like class to a plain JSON object.\n * We must iterate through it with a for-loop in order to gain\n * access to properties from all parent classes.\n */\nfunction classToObject(x, maxDepth, visited) {\n const result = {};\n for (const key in x) {\n try {\n // Skip anything that should not be converted\n if (shouldIgnoreValue(x[key], key, x)) {\n continue;\n }\n // Add objects as a property if we haven't reached max depth\n else if (typeof x[key] === \"object\") {\n const converted = deepCloneClass(x[key], maxDepth, visited);\n if (converted !== maxDepthSignal) {\n result[key] = converted;\n }\n }\n // Add plain values if not skippable\n else {\n result[key] = x[key];\n }\n }\n catch {\n continue;\n }\n }\n // Explicitly include dataset if it exists (it might not be enumerable)\n if (x &&\n typeof x === \"object\" &&\n \"dataset\" in x &&\n !Object.prototype.hasOwnProperty.call(result, \"dataset\")) {\n const dataset = x[\"dataset\"];\n if (!shouldIgnoreValue(dataset, \"dataset\", x)) {\n const converted = deepCloneClass(dataset, maxDepth, visited);\n if (converted !== maxDepthSignal) {\n result[\"dataset\"] = converted;\n }\n }\n }\n // Explicitly include common input properties if they exist\n const extraProps = [\"value\", \"checked\", \"files\", \"type\", \"name\"];\n for (const prop of extraProps) {\n if (x &&\n typeof x === \"object\" &&\n prop in x &&\n !Object.prototype.hasOwnProperty.call(result, prop)) {\n const val = x[prop];\n if (!shouldIgnoreValue(val, prop, x)) {\n if (typeof val === \"object\") {\n // Ensure files have enough depth to be serialized\n const propDepth = prop === \"files\" ? Math.max(maxDepth, 3) : maxDepth;\n const converted = deepCloneClass(val, propDepth, visited);\n if (converted !== maxDepthSignal) {\n result[prop] = converted;\n }\n }\n else {\n result[prop] = val;\n }\n }\n }\n }\n // Explicitly include form elements if they exist and are not enumerable\n const win = typeof window !== \"undefined\" ? window : undefined;\n // @ts-ignore\n const FormClass = win\n ? win.HTMLFormElement\n : typeof HTMLFormElement !== \"undefined\"\n ? HTMLFormElement\n : undefined;\n if (FormClass && x instanceof FormClass && x.elements) {\n for (let i = 0; i < x.elements.length; i++) {\n const element = x.elements[i];\n if (element.name &&\n !Object.prototype.hasOwnProperty.call(result, element.name) &&\n !shouldIgnoreValue(element, element.name, x)) {\n if (typeof element === \"object\") {\n const converted = deepCloneClass(element, maxDepth, visited);\n if (converted !== maxDepthSignal) {\n result[element.name] = converted;\n }\n }\n else {\n result[element.name] = element;\n }\n }\n }\n }\n return result;\n}\n/**\n * Check if a value is non-convertible or holds minimal value.\n */\nfunction shouldIgnoreValue(value, keyName = \"\", parent = undefined) {\n return (\n // Useless data\n value === null ||\n value === undefined ||\n keyName.startsWith(\"__\") ||\n (keyName.length > 0 && /^[A-Z_]+$/.test(keyName)) ||\n // Non-convertible types\n typeof value === \"function\" ||\n value instanceof CSSStyleSheet ||\n value instanceof Window ||\n value instanceof Document ||\n keyName === \"view\" ||\n keyName === \"size\" ||\n keyName === \"length\" ||\n (parent instanceof CSSStyleDeclaration && value === \"\") ||\n // DOM Node Blacklist\n (typeof Node !== \"undefined\" &&\n parent instanceof Node &&\n // Recursive properties\n (keyName === \"parentNode\" ||\n keyName === \"parentElement\" ||\n keyName === \"ownerDocument\" ||\n keyName === \"getRootNode\" ||\n keyName === \"childNodes\" ||\n keyName === \"children\" ||\n keyName === \"firstChild\" ||\n keyName === \"lastChild\" ||\n keyName === \"previousSibling\" ||\n keyName === \"nextSibling\" ||\n keyName === \"previousElementSibling\" ||\n keyName === \"nextElementSibling\" ||\n // Potentially large data\n keyName === \"innerHTML\" ||\n keyName === \"outerHTML\" ||\n // Reflow triggers\n keyName === \"offsetParent\" ||\n keyName === \"offsetWidth\" ||\n keyName === \"offsetHeight\" ||\n keyName === \"offsetLeft\" ||\n keyName === \"offsetTop\" ||\n keyName === \"clientTop\" ||\n keyName === \"clientLeft\" ||\n keyName === \"clientWidth\" ||\n keyName === \"clientHeight\" ||\n keyName === \"scrollWidth\" ||\n keyName === \"scrollHeight\" ||\n keyName === \"scrollTop\" ||\n keyName === \"scrollLeft\")));\n}\n//# sourceMappingURL=index.js.map",
|
|
12
12
|
"import * as preact from \"preact\";\nexport async function infer_bind_from_environment() {\n try {\n // @ts-ignore\n const React = await import(\"react\");\n // @ts-ignore\n const ReactDOM = await import(\"react-dom/client\");\n return (node) => reactjs_bind(node, React, ReactDOM);\n }\n catch {\n console.error(\"Unknown error occurred: 'react' is missing within this ReactPy environment! \\\n Your JavaScript components may not work as expected!\");\n return (node) => local_preact_bind(node);\n }\n}\nfunction local_preact_bind(node) {\n return {\n create: (type, props, children) => preact.createElement(type, props, ...(children || [])),\n render: (element) => {\n preact.render(element, node);\n },\n unmount: () => preact.render(null, node),\n };\n}\nconst roots = new WeakMap();\nfunction reactjs_bind(node, React, ReactDOM) {\n let root = null;\n return {\n create: (type, props, children) => React.createElement(type, props, ...(children || [])),\n render: (element) => {\n if (!root) {\n if (!roots.get(node)) {\n root = ReactDOM.createRoot(node);\n roots.set(node, root);\n }\n else {\n root = roots.get(node);\n }\n }\n root.render(element);\n },\n unmount: () => {\n if (root) {\n root.unmount();\n if (roots.get(node) === root) {\n roots.delete(node);\n }\n root = null;\n }\n },\n };\n}\n//# sourceMappingURL=bind.js.map",
|
|
13
|
-
"import eventToObject from \"event-to-object\";\nimport { infer_bind_from_environment } from \"./bind\";\nimport log from \"./logger\";\nexport async function loadImportSource(vdomImportSource, client) {\n let module;\n if (vdomImportSource.sourceType === \"URL\") {\n module = await import(vdomImportSource.source);\n }\n else {\n module = await client.loadModule(vdomImportSource.source);\n }\n let { bind } = module;\n if (typeof bind !== \"function\") {\n bind = await infer_bind_from_environment();\n }\n return (node) => {\n const binding = bind(node, {\n sendMessage: client.sendMessage,\n onMessage: client.onMessage,\n });\n if (!(typeof binding.create === \"function\" &&\n typeof binding.render === \"function\" &&\n typeof binding.unmount === \"function\")) {\n log.error(`${vdomImportSource.source} returned an impropper binding`);\n return null;\n }\n return {\n render: (model) => binding.render(createImportSourceElement({\n client,\n module,\n binding,\n model,\n currentImportSource: vdomImportSource,\n })),\n unmount: binding.unmount,\n };\n };\n}\nfunction createImportSourceElement(props) {\n let type;\n if (props.model.importSource) {\n if (!isImportSourceEqual(props.currentImportSource, props.model.importSource)) {\n return props.binding.create(\"reactpy-child\", {\n ref: (node) => {\n if (node) {\n node.client = props.client;\n node.model = props.model;\n node.requestUpdate();\n }\n },\n });\n }\n else {\n type = getComponentFromModule(props.module, props.model.tagName, props.model.importSource);\n if (!type) {\n // Error message logged within getComponentFromModule\n return null;\n }\n }\n }\n else {\n type = props.model.tagName;\n }\n return props.binding.create(type, createAttributes(props.model, props.client), createChildren(props.model, (child) => createImportSourceElement({\n ...props,\n model: child,\n })));\n}\nfunction getComponentFromModule(module, componentName, importSource) {\n /* Gets the component with the provided name from the provided module.\n \n Built specifically to work on inifinitely deep nested components.\n For example, component \"My.Nested.Component\" is accessed from\n ModuleA like so: ModuleA[\"My\"][\"Nested\"][\"Component\"].\n */\n const componentParts = componentName.split(\".\");\n let Component = null;\n for (let i = 0; i < componentParts.length; i++) {\n const iterAttr = componentParts[i];\n Component = i == 0 ? module[iterAttr] : Component[iterAttr];\n if (!Component) {\n if (i == 0) {\n log.error(\"Module from source \" +\n stringifyImportSource(importSource) +\n ` does not export ${iterAttr}`);\n }\n else {\n console.error(`Component ${componentParts.slice(0, i).join(\".\")} from source ` +\n stringifyImportSource(importSource) +\n ` does not have subcomponent ${iterAttr}`);\n }\n break;\n }\n }\n return Component;\n}\nfunction isImportSourceEqual(source1, source2) {\n return (source1.source === source2.source &&\n source1.sourceType === source2.sourceType);\n}\nfunction stringifyImportSource(importSource) {\n return JSON.stringify({\n source: importSource.source,\n sourceType: importSource.sourceType,\n });\n}\nexport function createChildren(model, createChild) {\n if (!model.children) {\n return [];\n }\n else {\n return model.children.map((child) => {\n switch (typeof child) {\n case \"object\":\n return createChild(child);\n case \"string\":\n return child;\n }\n });\n }\n}\nexport function createAttributes(model, client) {\n return Object.fromEntries(Object.entries({\n // Normal HTML attributes\n ...model.attributes,\n // Construct event handlers\n ...Object.fromEntries(Object.entries(model.eventHandlers || {}).map(([name, handler]) => createEventHandler(client, name, handler))),\n ...Object.fromEntries(Object.entries(model.inlineJavaScript || {}).map(([name, inlineJavaScript]) => createInlineJavaScript(name, inlineJavaScript))),\n }));\n}\nfunction createEventHandler(client, name, { target, preventDefault, stopPropagation }) {\n const eventHandler = function (...args) {\n const data = Array.from(args).map((value) => {\n const event = value;\n if (preventDefault) {\n event.preventDefault();\n }\n if (stopPropagation) {\n event.stopPropagation();\n }\n // Convert JavaScript objects to plain JSON, if needed\n if (typeof event === \"object\") {\n return eventToObject(event);\n }\n else {\n return event;\n }\n });\n client.sendMessage({ type: \"layout-event\", data, target });\n };\n eventHandler.isHandler = true;\n return [name, eventHandler];\n}\nfunction createInlineJavaScript(name, inlineJavaScript) {\n /* Function that will execute the string-like InlineJavaScript\n via eval in the most appropriate way */\n const wrappedExecutable = function (...args) {\n function handleExecution(...args) {\n const evalResult = eval(inlineJavaScript);\n if (typeof evalResult == \"function\") {\n return evalResult(...args);\n }\n }\n if (args.length > 0 && args[0] instanceof Event) {\n /* If being triggered by an event, set the event's current\n target to \"this\". This ensures that inline\n javascript statements such as the following work:\n html.button({\"onclick\": 'this.value = \"Clicked!\"'}, \"Click Me\")*/\n return handleExecution.call(args[0].currentTarget, ...args);\n }\n else {\n /* If not being triggered by an event, do not set \"this\" and\n just call normally */\n return handleExecution(...args);\n }\n };\n wrappedExecutable.isHandler = false;\n return [name, wrappedExecutable];\n}\nclass ReactPyChild extends HTMLElement {\n mountPoint;\n binding = null;\n _client = null;\n _model = null;\n currentImportSource = null;\n constructor() {\n super();\n this.mountPoint = document.createElement(\"div\");\n this.mountPoint.style.display = \"contents\";\n }\n connectedCallback() {\n this.appendChild(this.mountPoint);\n }\n set client(value) {\n this._client = value;\n }\n set model(value) {\n this._model = value;\n }\n requestUpdate() {\n this.update();\n }\n async update() {\n if (!this._client || !this._model || !this._model.importSource) {\n return;\n }\n const newImportSource = this._model.importSource;\n if (!this.binding ||\n !this.currentImportSource ||\n !isImportSourceEqual(this.currentImportSource, newImportSource)) {\n if (this.binding) {\n this.binding.unmount();\n this.binding = null;\n }\n this.currentImportSource = newImportSource;\n try {\n const bind = await loadImportSource(newImportSource, this._client);\n if (this.isConnected &&\n this.currentImportSource &&\n isImportSourceEqual(this.currentImportSource, newImportSource)) {\n const oldBinding = this.binding;\n if (oldBinding) {\n oldBinding.unmount();\n }\n this.binding = bind(this.mountPoint);\n if (this.binding) {\n this.binding.render(this._model);\n }\n }\n }\n catch (error) {\n console.error(\"Failed to load import source\", error);\n }\n }\n else {\n if (this.binding) {\n this.binding.render(this._model);\n }\n }\n }\n disconnectedCallback() {\n if (this.binding) {\n this.binding.unmount();\n this.binding = null;\n this.currentImportSource = null;\n }\n }\n}\nif (typeof customElements !== \"undefined\" &&\n !customElements.get(\"reactpy-child\")) {\n customElements.define(\"reactpy-child\", ReactPyChild);\n}\n//# sourceMappingURL=vdom.js.map",
|
|
13
|
+
"import eventToObject from \"event-to-object\";\nimport { Fragment } from \"preact\";\nimport { infer_bind_from_environment } from \"./bind\";\nimport log from \"./logger\";\nexport async function loadImportSource(vdomImportSource, client) {\n let module;\n if (vdomImportSource.sourceType === \"URL\") {\n module = await import(vdomImportSource.source);\n }\n else {\n module = await client.loadModule(vdomImportSource.source);\n }\n let { bind } = module;\n if (typeof bind !== \"function\") {\n bind = await infer_bind_from_environment();\n }\n return (node) => {\n const binding = bind(node, {\n sendMessage: client.sendMessage,\n onMessage: client.onMessage,\n });\n if (!(typeof binding.create === \"function\" &&\n typeof binding.render === \"function\" &&\n typeof binding.unmount === \"function\")) {\n log.error(`${vdomImportSource.source} returned an impropper binding`);\n return null;\n }\n return {\n render: (model) => binding.render(createImportSourceElement({\n client,\n module,\n binding,\n model,\n currentImportSource: vdomImportSource,\n })),\n unmount: binding.unmount,\n };\n };\n}\nfunction createImportSourceElement(props) {\n let type;\n if (props.model.importSource) {\n if (!isImportSourceEqual(props.currentImportSource, props.model.importSource)) {\n return props.binding.create(\"reactpy-child\", {\n ref: (node) => {\n if (node) {\n node.client = props.client;\n node.model = props.model;\n node.requestUpdate();\n }\n },\n });\n }\n else {\n type = getComponentFromModule(props.module, props.model.tagName, props.model.importSource);\n if (!type) {\n // Error message logged within getComponentFromModule\n return null;\n }\n }\n }\n else {\n type = props.model.tagName === \"\" ? Fragment : props.model.tagName;\n }\n return props.binding.create(type, createAttributes(props.model, props.client), createChildren(props.model, (child) => createImportSourceElement({\n ...props,\n model: child,\n })));\n}\nfunction getComponentFromModule(module, componentName, importSource) {\n /* Gets the component with the provided name from the provided module.\n \n Built specifically to work on inifinitely deep nested components.\n For example, component \"My.Nested.Component\" is accessed from\n ModuleA like so: ModuleA[\"My\"][\"Nested\"][\"Component\"].\n */\n const componentParts = componentName.split(\".\");\n let Component = null;\n for (let i = 0; i < componentParts.length; i++) {\n const iterAttr = componentParts[i];\n Component = i == 0 ? module[iterAttr] : Component[iterAttr];\n if (!Component) {\n if (i == 0) {\n log.error(\"Module from source \" +\n stringifyImportSource(importSource) +\n ` does not export ${iterAttr}`);\n }\n else {\n console.error(`Component ${componentParts.slice(0, i).join(\".\")} from source ` +\n stringifyImportSource(importSource) +\n ` does not have subcomponent ${iterAttr}`);\n }\n break;\n }\n }\n return Component;\n}\nfunction isImportSourceEqual(source1, source2) {\n return (source1.source === source2.source &&\n source1.sourceType === source2.sourceType);\n}\nfunction stringifyImportSource(importSource) {\n return JSON.stringify({\n source: importSource.source,\n sourceType: importSource.sourceType,\n });\n}\nexport function createChildren(model, createChild) {\n if (!model.children) {\n return [];\n }\n else {\n return model.children.map((child) => {\n switch (typeof child) {\n case \"object\":\n return createChild(child);\n case \"string\":\n return child;\n }\n });\n }\n}\nexport function createAttributes(model, client) {\n return Object.fromEntries(Object.entries({\n // Normal HTML attributes\n ...model.attributes,\n // Construct event handlers\n ...Object.fromEntries(Object.entries(model.eventHandlers || {}).map(([name, handler]) => createEventHandler(client, name, handler))),\n ...Object.fromEntries(Object.entries(model.inlineJavaScript || {}).map(([name, inlineJavaScript]) => createInlineJavaScript(name, inlineJavaScript))),\n }));\n}\nfunction createEventHandler(client, name, { target, preventDefault, stopPropagation }) {\n const eventHandler = function (...args) {\n const data = Array.from(args).map((value) => {\n const event = value;\n if (preventDefault) {\n event.preventDefault();\n }\n if (stopPropagation) {\n event.stopPropagation();\n }\n // Convert JavaScript objects to plain JSON, if needed\n if (typeof event === \"object\") {\n return eventToObject(event);\n }\n else {\n return event;\n }\n });\n client.sendMessage({ type: \"layout-event\", data, target });\n };\n eventHandler.isHandler = true;\n return [name, eventHandler];\n}\nfunction createInlineJavaScript(name, inlineJavaScript) {\n /* Function that will execute the string-like InlineJavaScript\n via eval in the most appropriate way */\n const wrappedExecutable = function (...args) {\n function handleExecution(...args) {\n const evalResult = eval(inlineJavaScript);\n if (typeof evalResult == \"function\") {\n return evalResult(...args);\n }\n }\n if (args.length > 0 && args[0] instanceof Event) {\n /* If being triggered by an event, set the event's current\n target to \"this\". This ensures that inline\n javascript statements such as the following work:\n html.button({\"onclick\": 'this.value = \"Clicked!\"'}, \"Click Me\")*/\n return handleExecution.call(args[0].currentTarget, ...args);\n }\n else {\n /* If not being triggered by an event, do not set \"this\" and\n just call normally */\n return handleExecution(...args);\n }\n };\n wrappedExecutable.isHandler = false;\n return [name, wrappedExecutable];\n}\nclass ReactPyChild extends HTMLElement {\n mountPoint;\n binding = null;\n _client = null;\n _model = null;\n currentImportSource = null;\n constructor() {\n super();\n this.mountPoint = document.createElement(\"div\");\n this.mountPoint.style.display = \"contents\";\n }\n connectedCallback() {\n this.appendChild(this.mountPoint);\n }\n set client(value) {\n this._client = value;\n }\n set model(value) {\n this._model = value;\n }\n requestUpdate() {\n this.update();\n }\n async update() {\n if (!this._client || !this._model || !this._model.importSource) {\n return;\n }\n const newImportSource = this._model.importSource;\n if (!this.binding ||\n !this.currentImportSource ||\n !isImportSourceEqual(this.currentImportSource, newImportSource)) {\n if (this.binding) {\n this.binding.unmount();\n this.binding = null;\n }\n this.currentImportSource = newImportSource;\n try {\n const bind = await loadImportSource(newImportSource, this._client);\n if (this.isConnected &&\n this.currentImportSource &&\n isImportSourceEqual(this.currentImportSource, newImportSource)) {\n const oldBinding = this.binding;\n if (oldBinding) {\n oldBinding.unmount();\n }\n this.binding = bind(this.mountPoint);\n if (this.binding) {\n this.binding.render(this._model);\n }\n }\n }\n catch (error) {\n console.error(\"Failed to load import source\", error);\n }\n }\n else {\n if (this.binding) {\n this.binding.render(this._model);\n }\n }\n }\n disconnectedCallback() {\n if (this.binding) {\n this.binding.unmount();\n this.binding = null;\n this.currentImportSource = null;\n }\n }\n}\nif (typeof customElements !== \"undefined\" &&\n !customElements.get(\"reactpy-child\")) {\n customElements.define(\"reactpy-child\", ReactPyChild);\n}\n//# sourceMappingURL=vdom.js.map",
|
|
14
14
|
"import { jsx as _jsx } from \"preact/jsx-runtime\";\nimport { render } from \"preact\";\nimport { ReactPyClient } from \"./client\";\nimport { Layout } from \"./components\";\nexport function mountReactPy(props) {\n // WebSocket route for component rendering\n const wsProtocol = `ws${window.location.protocol === \"https:\" ? \"s\" : \"\"}:`;\n const wsOrigin = `${wsProtocol}//${window.location.host}`;\n const componentUrl = new URL(`${wsOrigin}${props.pathPrefix}${props.componentPath || \"\"}`);\n // Embed the initial HTTP path into the WebSocket URL\n componentUrl.searchParams.append(\"http_pathname\", window.location.pathname);\n if (window.location.search) {\n componentUrl.searchParams.append(\"http_query_string\", window.location.search);\n }\n // Configure a new ReactPy client\n const client = new ReactPyClient({\n urls: {\n componentUrl: componentUrl,\n jsModulesPath: `${window.location.origin}${props.pathPrefix}modules/`,\n },\n reconnectOptions: {\n interval: props.reconnectInterval || 750,\n maxInterval: props.reconnectMaxInterval || 60000,\n maxRetries: props.reconnectMaxRetries || 150,\n backoffMultiplier: props.reconnectBackoffMultiplier || 1.25,\n },\n mountElement: props.mountElement,\n });\n // Start rendering the component\n render(_jsx(Layout, { client: client }), props.mountElement);\n}\n//# sourceMappingURL=mount.js.map"
|
|
15
15
|
],
|
|
16
|
-
"mappings": "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",
|
|
17
|
-
"debugId": "
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "219F1B8D77E5876364756E2164756E21",
|
|
18
18
|
"names": []
|
|
19
19
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
reactpy/__init__.py,sha256=
|
|
1
|
+
reactpy/__init__.py,sha256=s4vt4vzW_DeU2YAsAgBWCUFyXZjkGLL9JeTvkeEK3gk,1213
|
|
2
2
|
reactpy/_html.py,sha256=1r47Irgeh_emnJfSNo9ajDntmW4CeiqSqPFLMczQG_Y,11529
|
|
3
3
|
reactpy/_option.py,sha256=T4rQa_YIGLEVlYmqLDD-a2hQBfM5OHVGjFycTQUP4sI,5115
|
|
4
4
|
reactpy/_warnings.py,sha256=DR1YGzTS8ijaH0Wqh2V3TWDeDlkBwEb9dSsEYYuW-RI,933
|
|
@@ -20,7 +20,7 @@ reactpy/core/_life_cycle_hook.py,sha256=GyMF6g-Mjeh0wO5NBJziPOcA7gXFUO-OITmApZ2C
|
|
|
20
20
|
reactpy/core/_thread_local.py,sha256=qMnnF9Wz-OqbqUk81glgPpppvxdq6hXyDkx-AYXtfAI,828
|
|
21
21
|
reactpy/core/component.py,sha256=zASYlRhBrT6JZ-_uTU7N_UOhVSIsnnky4S8xoz5OY98,969
|
|
22
22
|
reactpy/core/events.py,sha256=HK8SHvl6uQS4H1AqfoK4Mj_YCaMaX3JvSFJ6Bqc4eMI,8594
|
|
23
|
-
reactpy/core/hooks.py,sha256=
|
|
23
|
+
reactpy/core/hooks.py,sha256=7mpjc3g81SMyLSDHDz30kPSsKX4t2EjZtuxCxMSSdss,19185
|
|
24
24
|
reactpy/core/layout.py,sha256=CYQBWnzS0PdzRi8pifC8PYg3BS0kzOgB0MQc1O4e404,26122
|
|
25
25
|
reactpy/core/serve.py,sha256=DFdJ6AWZzAuuq_8PtPmD-QprvMJFsYp77_O3Q46prx8,2337
|
|
26
26
|
reactpy/core/vdom.py,sha256=Boe9dsHKrsVWM2hZai7Y41VYzTHeIQn-bl537vkj0ds,9771
|
|
@@ -36,16 +36,16 @@ reactpy/executors/pyscript/component_template.py,sha256=0EC2NUzrDxjCg0zcOtHV1yfR
|
|
|
36
36
|
reactpy/executors/pyscript/components.py,sha256=cz1555jzwqc8JZfPP3g-aV3UEJ1-Qh4zXNKfAxksotk,1925
|
|
37
37
|
reactpy/executors/pyscript/layout_handler.py,sha256=aBrnBeiEMudUvRqbhW7KoJW-RkwS_wQ2KZl6m47vcNA,6289
|
|
38
38
|
reactpy/executors/pyscript/utils.py,sha256=qI923vqfs91nAOYmE9G-yfIwW2DgJIUPyc9Vrm6N0t0,8863
|
|
39
|
-
reactpy/reactjs/__init__.py,sha256=
|
|
40
|
-
reactpy/reactjs/module.py,sha256=
|
|
39
|
+
reactpy/reactjs/__init__.py,sha256=M34COQhGOpC3wgJQ4yAift0M_t0RGpMlHv4o-LwyNx8,12005
|
|
40
|
+
reactpy/reactjs/module.py,sha256=OqF_CrHufT9xmTLfCj9mBsBsYjHVky7jDH4tkL79zx0,9181
|
|
41
41
|
reactpy/reactjs/types.py,sha256=Oik_-Ipj6SNwZyHa1_wEVQBAUPWIB1rtadb_rLpFDgI,208
|
|
42
42
|
reactpy/reactjs/utils.py,sha256=cJ2VbImlhfv0qwIZaCTXJ5YgbuqKPaO2_IHCQqLZLlE,6840
|
|
43
43
|
reactpy/static/index-64wy0fss.js,sha256=8syb59S954n37cK1l2G5UqbfQ6pvolOXMcTIo3XAgAY,1793
|
|
44
44
|
reactpy/static/index-64wy0fss.js.map,sha256=rx76p2DWfjroCpS4CrT0rou36_T0gzSPWgd5aJ8uKIY,4190
|
|
45
45
|
reactpy/static/index-beq660xy.js,sha256=oeNLtnKprSg7WT2Wr_Pn6oNgOJYwDguUWkBB0fmy4FE,25294
|
|
46
46
|
reactpy/static/index-beq660xy.js.map,sha256=su0fHsjdcrYoql7TC8xxnrzXN9TasaoNC_6MKmG6N5M,58059
|
|
47
|
-
reactpy/static/index.js,sha256=
|
|
48
|
-
reactpy/static/index.js.map,sha256=
|
|
47
|
+
reactpy/static/index.js,sha256=DsR5SeQ-yRTBTWkARpBLli9-LAfy6IOsPgH2qZqw8og,14291
|
|
48
|
+
reactpy/static/index.js.map,sha256=806Pqyrrv6I_WhbOKQakmrTmQEF-gY3nI3sLRpIs3ww,57280
|
|
49
49
|
reactpy/static/preact-dom.js,sha256=37D1sjc5O-4VhLm4cJj4dGSL2tgFjIb4lRTHfIRE-Aw,1427
|
|
50
50
|
reactpy/static/preact-dom.js.map,sha256=oL0GgSCIpg81j_LP5uWonxvEhWmNYsQXiEnyLT-dMRY,1183
|
|
51
51
|
reactpy/static/preact-jsx-runtime.js,sha256=fOTjeln4sPSheSj7VRmpI0zJuUhep1wmbTJGjEDvW8E,293
|
|
@@ -121,8 +121,8 @@ reactpy/testing/logs.py,sha256=XfFZr-Qhq-x6nPgkPqeo_L51NmhJQtAsvnzjuWbx8qY,5672
|
|
|
121
121
|
reactpy/web/__init__.py,sha256=ldSzfmqYFnKCEclfPs8Y5oL9GaG5LDYtXN9Vaz9wUhI,216
|
|
122
122
|
reactpy/web/module.py,sha256=A5N6habdSSOsTjvahQ7jXEPBYQKRiGslxzAc8N7GWDU,3332
|
|
123
123
|
reactpy/web/utils.py,sha256=TOCy15woEr2QZjiXZV_p6YMof2rYZbQu7wsJVznB5jI,136
|
|
124
|
-
reactpy-2.0.
|
|
125
|
-
reactpy-2.0.
|
|
126
|
-
reactpy-2.0.
|
|
127
|
-
reactpy-2.0.
|
|
128
|
-
reactpy-2.0.
|
|
124
|
+
reactpy-2.0.0b8.dist-info/METADATA,sha256=p7oZs4lCd_aowJ9enxwXog4vhNlMYsYyDCspR7rXkgw,4998
|
|
125
|
+
reactpy-2.0.0b8.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
126
|
+
reactpy-2.0.0b8.dist-info/entry_points.txt,sha256=WRit3ZrLVh7iDEhUMAPE3A9bcaa7TsolCdAdkxGmv0U,61
|
|
127
|
+
reactpy-2.0.0b8.dist-info/licenses/LICENSE,sha256=-8yQb3G5cW-IBhxyIe-uoQzI9lPEu7-6Yi5wJSO1ous,1093
|
|
128
|
+
reactpy-2.0.0b8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|