pulse-framework 0.1.59__tar.gz → 0.1.61__tar.gz
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.
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/PKG-INFO +1 -1
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/pyproject.toml +1 -1
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/form.py +2 -1
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/renderer.py +7 -10
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/nodes.py +2 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/vdom.py +2 -1
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/README.md +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/_examples.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/app.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/channel.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/cmd.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/dependencies.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/folder_lock.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/helpers.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/logging.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/models.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/packages.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/processes.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/secrets.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cli/uvicorn_log_config.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/code_analysis.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/codegen/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/codegen/codegen.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/codegen/templates/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/codegen/templates/layout.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/codegen/templates/route.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/codegen/templates/routes_ts.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/codegen/utils.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/component.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/components/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/components/for_.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/components/if_.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/components/react_router.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/context.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/cookies.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/decorators.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/dom/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/dom/elements.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/dom/events.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/dom/props.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/dom/svg.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/dom/tags.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/dom/tags.pyi +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/env.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/helpers.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/hooks/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/hooks/core.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/hooks/effects.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/hooks/init.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/hooks/runtime.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/hooks/setup.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/hooks/stable.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/hooks/state.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/__init__.pyi +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/_types.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/array.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/console.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/date.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/document.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/error.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/json.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/map.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/math.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/navigator.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/number.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/obj.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/object.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/promise.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/pulse.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/react.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/regexp.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/set.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/string.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/weakmap.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/weakset.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/js/window.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/messages.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/middleware.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/plugin.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/proxy.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/py.typed +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/queries/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/queries/client.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/queries/common.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/queries/effect.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/queries/infinite_query.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/queries/mutation.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/queries/protocol.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/queries/query.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/queries/store.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/react_component.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/reactive.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/reactive_extensions.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/render_session.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/request.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/routing.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/serializer.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/state.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/test_helpers.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/assets.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/builtins.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/dynamic_import.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/emit_context.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/errors.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/function.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/id.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/imports.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/js_module.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/modules/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/modules/asyncio.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/modules/json.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/modules/math.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/modules/pulse/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/modules/pulse/tags.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/modules/typing.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/py_module.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/transpiler.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/types/__init__.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/types/event_handler.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/user_session.py +0 -0
- {pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/version.py +0 -0
|
@@ -422,8 +422,9 @@ class ManualForm(Disposable):
|
|
|
422
422
|
Returns:
|
|
423
423
|
Dict with action, method, encType, and onSubmit props.
|
|
424
424
|
"""
|
|
425
|
+
prefix = PulseContext.get().app.api_prefix
|
|
425
426
|
return {
|
|
426
|
-
"action": f"{server_address()}/
|
|
427
|
+
"action": f"{server_address()}{prefix}/forms/{self._render.id}/{self.registration.id}",
|
|
427
428
|
"method": "POST",
|
|
428
429
|
"encType": "multipart/form-data",
|
|
429
430
|
"onSubmit": self._start_submit,
|
|
@@ -27,6 +27,7 @@ from pulse.transpiler.vdom import (
|
|
|
27
27
|
UpdatePropsDelta,
|
|
28
28
|
UpdatePropsOperation,
|
|
29
29
|
VDOMElement,
|
|
30
|
+
VDOMExpr,
|
|
30
31
|
VDOMNode,
|
|
31
32
|
VDOMOperation,
|
|
32
33
|
VDOMPropValue,
|
|
@@ -441,21 +442,17 @@ class Renderer:
|
|
|
441
442
|
# Expression + tag rendering
|
|
442
443
|
# ------------------------------------------------------------------
|
|
443
444
|
|
|
444
|
-
def render_tag(self, tag: str | Expr) -> str:
|
|
445
|
+
def render_tag(self, tag: str | Expr) -> str | VDOMExpr:
|
|
445
446
|
if isinstance(tag, str):
|
|
446
447
|
return tag
|
|
447
448
|
|
|
448
|
-
|
|
449
|
-
return f"{MOUNT_PREFIX}{key}"
|
|
449
|
+
return self.register_component_expr(tag)
|
|
450
450
|
|
|
451
|
-
def register_component_expr(self, expr: Expr) -> str:
|
|
451
|
+
def register_component_expr(self, expr: Expr) -> str | VDOMExpr:
|
|
452
452
|
ref = registry_ref(expr)
|
|
453
|
-
if ref is None:
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
+ "(Import/JsFunction/Constant/JsxFunction)."
|
|
457
|
-
)
|
|
458
|
-
return ref["key"]
|
|
453
|
+
if ref is not None:
|
|
454
|
+
return f"{MOUNT_PREFIX}{ref['key']}"
|
|
455
|
+
return expr.render()
|
|
459
456
|
|
|
460
457
|
# ------------------------------------------------------------------
|
|
461
458
|
# Unmount helper
|
|
@@ -177,9 +177,10 @@ class VDOMElement(TypedDict):
|
|
|
177
177
|
Special tags:
|
|
178
178
|
- "": React Fragment
|
|
179
179
|
- "$$<ComponentKey>": mount point for client component registry
|
|
180
|
+
- Expr object (VDOMExpr): evaluated on the client for dynamic component tags
|
|
180
181
|
"""
|
|
181
182
|
|
|
182
|
-
tag: str
|
|
183
|
+
tag: str | VDOMExpr
|
|
183
184
|
key: NotRequired[str]
|
|
184
185
|
# Default: plain JSON props (no interpretation).
|
|
185
186
|
# When `eval` is present, listed keys may contain VDOMExpr / VDOMElement / "$cb:...".
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/modules/pulse/__init__.py
RENAMED
|
File without changes
|
{pulse_framework-0.1.59 → pulse_framework-0.1.61}/src/pulse/transpiler/modules/pulse/tags.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|