reactpy 2.0.0b2__tar.gz → 2.0.0b4__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.
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/PKG-INFO +2 -3
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/pyproject.toml +9 -14
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/build_scripts/copy_dir.py +0 -1
- reactpy-2.0.0b4/src/js/bun.lockb +0 -0
- reactpy-2.0.0b4/src/js/eslint.config.mjs +25 -0
- reactpy-2.0.0b4/src/js/package.json +29 -0
- reactpy-2.0.0b4/src/js/tsconfig.json +31 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/__init__.py +1 -3
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/_console/rewrite_keys.py +2 -4
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/component.py +1 -1
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/events.py +46 -15
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/hooks.py +8 -2
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/layout.py +3 -1
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/serve.py +3 -22
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/vdom.py +0 -1
- reactpy-2.0.0b4/src/reactpy/executors/asgi/__init__.py +5 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/executors/asgi/pyscript.py +2 -2
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/executors/utils.py +1 -3
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/pyscript/component_template.py +3 -6
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/pyscript/layout_handler.py +1 -1
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/pyscript/utils.py +1 -7
- reactpy-2.0.0b4/src/reactpy/static/index.js +4 -0
- reactpy-2.0.0b4/src/reactpy/static/index.js.map +22 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/static/morphdom/morphdom-esm.js +5 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/static/morphdom/morphdom-factory.js +5 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/static/morphdom/morphdom-umd.js +5 -0
- reactpy-2.0.0b4/src/reactpy/static/morphdom/morphdom-umd.min.js +1 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/static/morphdom/morphdom.js +5 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror-BYspKCDy.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror-BYspKCDy.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_commands-BLDaEdQ6.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_commands-BLDaEdQ6.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_lang-python-CkOVBHci.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_lang-python-CkOVBHci.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_language-DOkvasqm.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_language-DOkvasqm.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_state-BIAL8JKm.js +2 -0
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_state-1UkzIAPK.js.map → reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_state-BIAL8JKm.js.map +1 -1
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_view-Bt4sLgyA.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/codemirror_view-Bt4sLgyA.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/core-PTfg6inS.js +4 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/core-PTfg6inS.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/core.css +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/core.js +2 -0
- reactpy-2.0.0b2/src/reactpy/static/pyscript/deprecations-manager-B8Tz2RBD.js → reactpy-2.0.0b4/src/reactpy/static/pyscript/deprecations-manager-DIDxhyRq.js +2 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/deprecations-manager-B8Tz2RBD.js.map → reactpy-2.0.0b4/src/reactpy/static/pyscript/deprecations-manager-DIDxhyRq.js.map +1 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/donkey-83vCPSep.js → reactpy-2.0.0b4/src/reactpy/static/pyscript/donkey-CLhmQOjG.js +2 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/donkey-83vCPSep.js.map → reactpy-2.0.0b4/src/reactpy/static/pyscript/donkey-CLhmQOjG.js.map +1 -1
- reactpy-2.0.0b4/src/reactpy/static/pyscript/error-uzvvriog.js +2 -0
- reactpy-2.0.0b2/src/reactpy/static/pyscript/error-Bd5T9j4s.js.map → reactpy-2.0.0b4/src/reactpy/static/pyscript/error-uzvvriog.js.map +1 -1
- reactpy-2.0.0b4/src/reactpy/static/pyscript/index-jZ1aOVVJ.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/index-jZ1aOVVJ.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/mpy-CnF17tqI.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/mpy-CnF17tqI.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/py-BZSSqcx3.js +2 -0
- reactpy-2.0.0b2/src/reactpy/static/pyscript/py-CdW1_TfR.js.map → reactpy-2.0.0b4/src/reactpy/static/pyscript/py-BZSSqcx3.js.map +1 -1
- reactpy-2.0.0b4/src/reactpy/static/pyscript/py-editor-DZ0Dxzzk.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/py-editor-DZ0Dxzzk.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/py-game-bqieV522.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/py-game-bqieV522.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/py-terminal-DYY4WN57.js +2 -0
- reactpy-2.0.0b2/src/reactpy/static/pyscript/py-terminal-C3QERaDG.js.map → reactpy-2.0.0b4/src/reactpy/static/pyscript/py-terminal-DYY4WN57.js.map +1 -1
- reactpy-2.0.0b4/src/reactpy/static/pyscript/service-worker.js +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/storage.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/storage.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/toml-BK2RWy-G.js +3 -0
- reactpy-2.0.0b2/src/reactpy/static/pyscript/toml-DiUM0_qs.js.map → reactpy-2.0.0b4/src/reactpy/static/pyscript/toml-BK2RWy-G.js.map +1 -1
- reactpy-2.0.0b4/src/reactpy/static/pyscript/toml-Blg7Izee.js +3 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/toml-Blg7Izee.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/xterm-DrSYbXEP.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/xterm-DrSYbXEP.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/xterm-readline-CK_45Ygx.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/xterm-readline-CK_45Ygx.js.map +1 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/static/pyscript/xterm.css +1 -1
- reactpy-2.0.0b4/src/reactpy/static/pyscript/xterm_addon-fit--gyF3PcZ.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/xterm_addon-web-links-D95xh2la.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/xterm_addon-web-links-D95xh2la.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/zip-pccs084i.js +2 -0
- reactpy-2.0.0b4/src/reactpy/static/pyscript/zip-pccs084i.js.map +1 -0
- reactpy-2.0.0b4/src/reactpy/templatetags/__init__.py +3 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/templatetags/jinja.py +1 -1
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/testing/backend.py +1 -1
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/types.py +16 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/utils.py +5 -5
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/web/__init__.py +6 -0
- reactpy-2.0.0b4/src/reactpy/web/module.py +563 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/web/utils.py +1 -1
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/widgets.py +3 -25
- reactpy-2.0.0b2/src/js/README.md +0 -3
- reactpy-2.0.0b2/src/js/bun.lockb +0 -0
- reactpy-2.0.0b2/src/js/eslint.config.mjs +0 -58
- reactpy-2.0.0b2/src/js/package.json +0 -17
- reactpy-2.0.0b2/src/js/packages/@reactpy/app/bun.lockb +0 -0
- reactpy-2.0.0b2/src/js/packages/@reactpy/app/eslint.config.mjs +0 -42
- reactpy-2.0.0b2/src/js/packages/@reactpy/app/package.json +0 -19
- reactpy-2.0.0b2/src/js/packages/@reactpy/app/src/index.ts +0 -1
- reactpy-2.0.0b2/src/js/packages/@reactpy/app/tsconfig.json +0 -14
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/README.md +0 -3
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/bun.lockb +0 -0
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/package.json +0 -36
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/src/client.ts +0 -83
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/src/components.tsx +0 -229
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/src/index.ts +0 -8
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/src/logger.ts +0 -6
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/src/mount.tsx +0 -41
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/src/types.ts +0 -152
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/src/vdom.tsx +0 -254
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/src/websocket.ts +0 -75
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/tsconfig.json +0 -14
- reactpy-2.0.0b2/src/js/packages/@reactpy/client/tsconfig.tsbuildinfo +0 -1
- reactpy-2.0.0b2/src/js/packages/event-to-object/README.md +0 -3
- reactpy-2.0.0b2/src/js/packages/event-to-object/bun.lockb +0 -0
- reactpy-2.0.0b2/src/js/packages/event-to-object/package.json +0 -34
- reactpy-2.0.0b2/src/js/packages/event-to-object/src/events.ts +0 -257
- reactpy-2.0.0b2/src/js/packages/event-to-object/src/index.ts +0 -421
- reactpy-2.0.0b2/src/js/packages/event-to-object/tests/event-to-object.test.ts +0 -381
- reactpy-2.0.0b2/src/js/packages/event-to-object/tests/tooling/check.ts +0 -46
- reactpy-2.0.0b2/src/js/packages/event-to-object/tests/tooling/mock.ts +0 -56
- reactpy-2.0.0b2/src/js/packages/event-to-object/tests/tooling/setup.js +0 -22
- reactpy-2.0.0b2/src/js/packages/event-to-object/tsconfig.json +0 -9
- reactpy-2.0.0b2/src/js/packages/event-to-object/tsconfig.tsbuildinfo +0 -1
- reactpy-2.0.0b2/src/js/tsconfig.json +0 -22
- reactpy-2.0.0b2/src/reactpy/executors/asgi/__init__.py +0 -5
- reactpy-2.0.0b2/src/reactpy/static/index.js +0 -4
- reactpy-2.0.0b2/src/reactpy/static/index.js.map +0 -21
- reactpy-2.0.0b2/src/reactpy/static/morphdom/morphdom-umd.min.js +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror-DNtCVICy.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror-DNtCVICy.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_commands-DvCG1qNv.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_commands-DvCG1qNv.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_lang-python-BgZ6XoEX.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_lang-python-BgZ6XoEX.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_language-ddx8nifT.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_language-ddx8nifT.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_state-1UkzIAPK.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_view-C2ObO--u.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/codemirror_view-C2ObO--u.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/core-BsIVS0z4.js +0 -4
- reactpy-2.0.0b2/src/reactpy/static/pyscript/core-BsIVS0z4.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/core.css +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/core.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/error-Bd5T9j4s.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/index-978lpDXp.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/index-978lpDXp.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/mpy-De_qSCIU.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/mpy-De_qSCIU.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/py-CdW1_TfR.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/py-editor-MNjBwLfD.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/py-editor-MNjBwLfD.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/py-game-Did5BuBI.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/py-game-Did5BuBI.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/py-terminal-C3QERaDG.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/storage.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/storage.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/toml-BLBSZ43A.js +0 -3
- reactpy-2.0.0b2/src/reactpy/static/pyscript/toml-BLBSZ43A.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/toml-DiUM0_qs.js +0 -3
- reactpy-2.0.0b2/src/reactpy/static/pyscript/xterm-7LwxAMsn.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/xterm-7LwxAMsn.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/xterm-readline-e8QPhSrm.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/xterm-readline-e8QPhSrm.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/xterm_addon-fit--gyF3PcZ.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/xterm_addon-web-links-Cnej-nJ6.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/xterm_addon-web-links-Cnej-nJ6.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/static/pyscript/zip-CFEEYRfx.js +0 -2
- reactpy-2.0.0b2/src/reactpy/static/pyscript/zip-CFEEYRfx.js.map +0 -1
- reactpy-2.0.0b2/src/reactpy/templatetags/__init__.py +0 -3
- reactpy-2.0.0b2/src/reactpy/web/module.py +0 -305
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/.gitignore +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/LICENSE +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/README.md +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/build_scripts/clean_js_dir.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/js/.gitignore +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/_console/__init__.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/_console/ast_utils.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/_console/cli.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/_console/rewrite_props.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/_html.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/_option.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/_warnings.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/config.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/__init__.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/_f_back.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/_life_cycle_hook.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/core/_thread_local.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/executors/__init__.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/executors/asgi/middleware.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/executors/asgi/standalone.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/executors/asgi/types.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/logging.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/py.typed +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/pyscript/__init__.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/pyscript/components.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/static/pyscript/core.js.map +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/static/pyscript/xterm_addon-fit--gyF3PcZ.js +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/static/pyscript-hide-debug.css +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/testing/__init__.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/testing/common.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/testing/display.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/testing/logs.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/testing/utils.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/transforms.py +0 -0
- {reactpy-2.0.0b2 → reactpy-2.0.0b4}/src/reactpy/web/templates/react.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: reactpy
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.0b4
|
|
4
4
|
Summary: It's React, but in Python.
|
|
5
5
|
Project-URL: Changelog, https://reactpy.dev/docs/about/changelog.html
|
|
6
6
|
Project-URL: Documentation, https://reactpy.dev/
|
|
@@ -44,8 +44,7 @@ Requires-Dist: jinja2-simple-tags; extra == 'jinja'
|
|
|
44
44
|
Requires-Dist: jinja2>=3; extra == 'jinja'
|
|
45
45
|
Provides-Extra: testing
|
|
46
46
|
Requires-Dist: playwright; extra == 'testing'
|
|
47
|
-
|
|
48
|
-
Requires-Dist: uvicorn[standard]; extra == 'uvicorn'
|
|
47
|
+
Requires-Dist: uvicorn[standard]; extra == 'testing'
|
|
49
48
|
Description-Content-Type: text/markdown
|
|
50
49
|
|
|
51
50
|
# <img src="https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/svg/reactpy-logo-square.svg" align="left" height="45"/> ReactPy
|
|
@@ -40,11 +40,10 @@ urls.Documentation = "https://reactpy.dev/"
|
|
|
40
40
|
urls.Source = "https://github.com/reactive-python/reactpy"
|
|
41
41
|
|
|
42
42
|
[project.optional-dependencies]
|
|
43
|
-
all = ["reactpy[asgi,jinja,
|
|
43
|
+
all = ["reactpy[asgi,jinja,testing]"]
|
|
44
44
|
asgi = ["asgiref", "asgi-tools", "servestatic", "orjson", "pip"]
|
|
45
45
|
jinja = ["jinja2-simple-tags", "jinja2 >=3"]
|
|
46
|
-
|
|
47
|
-
testing = ["playwright"]
|
|
46
|
+
testing = ["playwright", "uvicorn[standard]"]
|
|
48
47
|
|
|
49
48
|
[tool.hatch.version]
|
|
50
49
|
path = "src/reactpy/__init__.py"
|
|
@@ -75,8 +74,8 @@ commands = [
|
|
|
75
74
|
'bun run --cwd "src/js/packages/@reactpy/client" build',
|
|
76
75
|
'bun install --cwd "src/js/packages/@reactpy/app"',
|
|
77
76
|
'bun run --cwd "src/js/packages/@reactpy/app" build',
|
|
78
|
-
'python "src/build_scripts/copy_dir.py" "src/js/
|
|
79
|
-
'python "src/build_scripts/copy_dir.py" "src/js/
|
|
77
|
+
'python "src/build_scripts/copy_dir.py" "src/js/node_modules/@pyscript/core/dist" "src/reactpy/static/pyscript"',
|
|
78
|
+
'python "src/build_scripts/copy_dir.py" "src/js/node_modules/morphdom/dist" "src/reactpy/static/morphdom"',
|
|
80
79
|
]
|
|
81
80
|
artifacts = []
|
|
82
81
|
|
|
@@ -86,7 +85,6 @@ artifacts = []
|
|
|
86
85
|
|
|
87
86
|
[tool.hatch.envs.hatch-test]
|
|
88
87
|
extra-dependencies = [
|
|
89
|
-
"reactpy[all]",
|
|
90
88
|
"pytest-sugar",
|
|
91
89
|
"pytest-asyncio",
|
|
92
90
|
"responses",
|
|
@@ -94,15 +92,13 @@ extra-dependencies = [
|
|
|
94
92
|
"jsonpointer",
|
|
95
93
|
"starlette",
|
|
96
94
|
]
|
|
95
|
+
features = ["all"]
|
|
97
96
|
|
|
98
97
|
[[tool.hatch.envs.hatch-test.matrix]]
|
|
99
98
|
python = ["3.10", "3.11", "3.12", "3.13"]
|
|
100
99
|
|
|
101
100
|
[tool.pytest.ini_options]
|
|
102
|
-
addopts = """
|
|
103
|
-
--strict-config
|
|
104
|
-
--strict-markers
|
|
105
|
-
"""
|
|
101
|
+
addopts = ["--strict-config", "--strict-markers"]
|
|
106
102
|
filterwarnings = """
|
|
107
103
|
ignore::DeprecationWarning:uvicorn.*
|
|
108
104
|
ignore::DeprecationWarning:websockets.*
|
|
@@ -182,10 +178,7 @@ check = [
|
|
|
182
178
|
'bun run --cwd "src/js/packages/@reactpy/app" checkTypes',
|
|
183
179
|
]
|
|
184
180
|
fix = ['bun install --cwd "src/js"', 'bun run --cwd "src/js" format']
|
|
185
|
-
test = [
|
|
186
|
-
'hatch run javascript:build_event_to_object',
|
|
187
|
-
'bun run --cwd "src/js/packages/event-to-object" test',
|
|
188
|
-
]
|
|
181
|
+
test = ['hatch run javascript:build_event_to_object', 'bun test']
|
|
189
182
|
build = [
|
|
190
183
|
'hatch run "src/build_scripts/clean_js_dir.py"',
|
|
191
184
|
'bun install --cwd "src/js"',
|
|
@@ -308,6 +301,8 @@ lint.ignore = [
|
|
|
308
301
|
"PLR0912",
|
|
309
302
|
"PLR0913",
|
|
310
303
|
"PLR0915",
|
|
304
|
+
# Allow imports anywhere
|
|
305
|
+
"PLC0415",
|
|
311
306
|
]
|
|
312
307
|
lint.unfixable = [
|
|
313
308
|
# Don't touch unused imports
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { default as eslint } from "@eslint/js";
|
|
2
|
+
import globals from "globals";
|
|
3
|
+
import tseslint from "typescript-eslint";
|
|
4
|
+
|
|
5
|
+
export default [
|
|
6
|
+
eslint.configs.recommended,
|
|
7
|
+
...tseslint.configs.recommended,
|
|
8
|
+
{ ignores: ["**/node_modules/", "**/dist/"] },
|
|
9
|
+
{
|
|
10
|
+
languageOptions: {
|
|
11
|
+
globals: {
|
|
12
|
+
...globals.browser,
|
|
13
|
+
...globals.node,
|
|
14
|
+
},
|
|
15
|
+
ecmaVersion: "latest",
|
|
16
|
+
sourceType: "module",
|
|
17
|
+
},
|
|
18
|
+
rules: {
|
|
19
|
+
"@typescript-eslint/ban-ts-comment": "off",
|
|
20
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
21
|
+
"@typescript-eslint/no-non-null-assertion": "off",
|
|
22
|
+
"@typescript-eslint/no-empty-function": "off",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"workspaces": [
|
|
3
|
+
"packages/*",
|
|
4
|
+
"packages/@reactpy/*"
|
|
5
|
+
],
|
|
6
|
+
"catalog": {
|
|
7
|
+
"preact": "^10.27.2",
|
|
8
|
+
"@pyscript/core": "^0.7.11",
|
|
9
|
+
"morphdom": "^2.7.7",
|
|
10
|
+
"typescript": "^5.9.3",
|
|
11
|
+
"json-pointer": "^0.6.2",
|
|
12
|
+
"@types/json-pointer": "^1.0.34",
|
|
13
|
+
"@reactpy/client": "file:./packages/@reactpy/client",
|
|
14
|
+
"event-to-object": "file:./packages/event-to-object"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@eslint/js": "^9.39.1",
|
|
18
|
+
"bun-types": "^1.3.3",
|
|
19
|
+
"eslint": "^9.39.1",
|
|
20
|
+
"globals": "^16.5.0",
|
|
21
|
+
"prettier": "^3.6.2",
|
|
22
|
+
"typescript-eslint": "^8.47.0"
|
|
23
|
+
},
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"scripts": {
|
|
26
|
+
"format": "prettier --write . && eslint --fix",
|
|
27
|
+
"lint": "prettier --check . && eslint"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"allowJs": true,
|
|
4
|
+
"allowSyntheticDefaultImports": true,
|
|
5
|
+
"declaration": true,
|
|
6
|
+
"declarationMap": true,
|
|
7
|
+
"esModuleInterop": true,
|
|
8
|
+
"forceConsistentCasingInFileNames": true,
|
|
9
|
+
"isolatedModules": true,
|
|
10
|
+
"jsx": "react-jsx",
|
|
11
|
+
"jsxImportSource": "preact",
|
|
12
|
+
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
|
13
|
+
"module": "Preserve",
|
|
14
|
+
"moduleDetection": "force",
|
|
15
|
+
"moduleResolution": "bundler",
|
|
16
|
+
"noEmitOnError": true,
|
|
17
|
+
"noUnusedLocals": true,
|
|
18
|
+
"paths": {
|
|
19
|
+
"react": ["./node_modules/preact/compat/"],
|
|
20
|
+
"react-dom": ["./node_modules/preact/compat/"],
|
|
21
|
+
"react-dom/*": ["./node_modules/preact/compat/*"],
|
|
22
|
+
"react/jsx-runtime": ["./node_modules/preact/jsx-runtime"]
|
|
23
|
+
},
|
|
24
|
+
"resolveJsonModule": true,
|
|
25
|
+
"skipLibCheck": true,
|
|
26
|
+
"sourceMap": true,
|
|
27
|
+
"strict": true,
|
|
28
|
+
"target": "ESNext",
|
|
29
|
+
"verbatimModuleSyntax": true
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -18,16 +18,14 @@ from reactpy.core.hooks import (
|
|
|
18
18
|
use_scope,
|
|
19
19
|
use_state,
|
|
20
20
|
)
|
|
21
|
-
from reactpy.core.layout import Layout
|
|
22
21
|
from reactpy.core.vdom import Vdom
|
|
23
22
|
from reactpy.pyscript.components import pyscript_component
|
|
24
23
|
from reactpy.utils import Ref, reactpy_to_string, string_to_reactpy
|
|
25
24
|
|
|
26
25
|
__author__ = "The Reactive Python Team"
|
|
27
|
-
__version__ = "2.0.
|
|
26
|
+
__version__ = "2.0.0b4"
|
|
28
27
|
|
|
29
28
|
__all__ = [
|
|
30
|
-
"Layout",
|
|
31
29
|
"Ref",
|
|
32
30
|
"Vdom",
|
|
33
31
|
"component",
|
|
@@ -100,9 +100,7 @@ def log_could_not_rewrite(file: Path, tree: ast.AST) -> None:
|
|
|
100
100
|
else:
|
|
101
101
|
continue
|
|
102
102
|
|
|
103
|
-
if (
|
|
104
|
-
name == "
|
|
105
|
-
or hasattr(html, name)
|
|
106
|
-
and any(kw.arg == "key" for kw in node.keywords)
|
|
103
|
+
if name == "vdom" or (
|
|
104
|
+
hasattr(html, name) and any(kw.arg == "key" for kw in node.keywords)
|
|
107
105
|
):
|
|
108
106
|
click.echo(f"Unable to rewrite usage at {file}:{node.lineno}")
|
|
@@ -34,7 +34,7 @@ def component(
|
|
|
34
34
|
class Component:
|
|
35
35
|
"""An object for rending component models."""
|
|
36
36
|
|
|
37
|
-
__slots__ = "__weakref__", "
|
|
37
|
+
__slots__ = "__weakref__", "_args", "_func", "_kwargs", "_sig", "key", "type"
|
|
38
38
|
|
|
39
39
|
def __init__(
|
|
40
40
|
self,
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
+
import dis
|
|
4
5
|
from collections.abc import Sequence
|
|
5
|
-
from typing import Any, Callable, Literal, overload
|
|
6
|
+
from typing import Any, Callable, Literal, cast, overload
|
|
6
7
|
|
|
7
8
|
from anyio import create_task_group
|
|
8
9
|
|
|
@@ -69,10 +70,7 @@ def event(
|
|
|
69
70
|
prevent_default,
|
|
70
71
|
)
|
|
71
72
|
|
|
72
|
-
if function is not None
|
|
73
|
-
return setup(function)
|
|
74
|
-
else:
|
|
75
|
-
return setup
|
|
73
|
+
return setup(function) if function is not None else setup
|
|
76
74
|
|
|
77
75
|
|
|
78
76
|
class EventHandler:
|
|
@@ -109,18 +107,47 @@ class EventHandler:
|
|
|
109
107
|
self.stop_propagation = stop_propagation
|
|
110
108
|
self.target = target
|
|
111
109
|
|
|
110
|
+
# Check if our `preventDefault` or `stopPropagation` methods were called
|
|
111
|
+
# by inspecting the function's bytecode
|
|
112
|
+
func_to_inspect = cast(Any, function)
|
|
113
|
+
while hasattr(func_to_inspect, "__wrapped__"):
|
|
114
|
+
func_to_inspect = func_to_inspect.__wrapped__
|
|
115
|
+
|
|
116
|
+
code = func_to_inspect.__code__
|
|
117
|
+
if code.co_argcount > 0:
|
|
118
|
+
event_arg_name = code.co_varnames[0]
|
|
119
|
+
last_was_event = False
|
|
120
|
+
|
|
121
|
+
for instr in dis.get_instructions(func_to_inspect):
|
|
122
|
+
if instr.opname == "LOAD_FAST" and instr.argval == event_arg_name:
|
|
123
|
+
last_was_event = True
|
|
124
|
+
continue
|
|
125
|
+
|
|
126
|
+
if last_was_event and instr.opname in (
|
|
127
|
+
"LOAD_METHOD",
|
|
128
|
+
"LOAD_ATTR",
|
|
129
|
+
):
|
|
130
|
+
if instr.argval == "preventDefault":
|
|
131
|
+
self.prevent_default = True
|
|
132
|
+
elif instr.argval == "stopPropagation":
|
|
133
|
+
self.stop_propagation = True
|
|
134
|
+
|
|
135
|
+
last_was_event = False
|
|
136
|
+
|
|
137
|
+
__hash__ = None # type: ignore
|
|
138
|
+
|
|
112
139
|
def __eq__(self, other: object) -> bool:
|
|
113
140
|
undefined = object()
|
|
114
|
-
|
|
115
|
-
"
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
141
|
+
return not any(
|
|
142
|
+
not attr.startswith("_")
|
|
143
|
+
and not getattr(other, attr, undefined) == getattr(self, attr)
|
|
144
|
+
for attr in (
|
|
145
|
+
"function",
|
|
146
|
+
"prevent_default",
|
|
147
|
+
"stop_propagation",
|
|
148
|
+
"target",
|
|
149
|
+
)
|
|
150
|
+
)
|
|
124
151
|
|
|
125
152
|
def __repr__(self) -> str:
|
|
126
153
|
public_names = [name for name in self.__slots__ if not name.startswith("_")]
|
|
@@ -146,17 +173,21 @@ def to_event_handler_function(
|
|
|
146
173
|
async def wrapper(data: Sequence[Any]) -> None:
|
|
147
174
|
await function(*data)
|
|
148
175
|
|
|
176
|
+
cast(Any, wrapper).__wrapped__ = function
|
|
177
|
+
|
|
149
178
|
else:
|
|
150
179
|
|
|
151
180
|
async def wrapper(data: Sequence[Any]) -> None:
|
|
152
181
|
function(*data)
|
|
153
182
|
|
|
183
|
+
cast(Any, wrapper).__wrapped__ = function
|
|
154
184
|
return wrapper
|
|
155
185
|
elif not asyncio.iscoroutinefunction(function):
|
|
156
186
|
|
|
157
187
|
async def wrapper(data: Sequence[Any]) -> None:
|
|
158
188
|
function(data)
|
|
159
189
|
|
|
190
|
+
cast(Any, wrapper).__wrapped__ = function
|
|
160
191
|
return wrapper
|
|
161
192
|
else:
|
|
162
193
|
return function
|
|
@@ -79,7 +79,7 @@ def use_state(initial_value: _Type | Callable[[], _Type]) -> State[_Type]:
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
class _CurrentState(Generic[_Type]):
|
|
82
|
-
__slots__ = "
|
|
82
|
+
__slots__ = "dispatch", "value"
|
|
83
83
|
|
|
84
84
|
def __init__(
|
|
85
85
|
self,
|
|
@@ -146,6 +146,12 @@ def use_effect(
|
|
|
146
146
|
Returns:
|
|
147
147
|
If not function is provided, a decorator. Otherwise ``None``.
|
|
148
148
|
"""
|
|
149
|
+
if asyncio.iscoroutinefunction(function):
|
|
150
|
+
raise TypeError(
|
|
151
|
+
"`use_effect` does not support async functions. "
|
|
152
|
+
"Use `use_async_effect` instead."
|
|
153
|
+
)
|
|
154
|
+
|
|
149
155
|
hook = HOOK_STACK.current_hook()
|
|
150
156
|
dependencies = _try_to_infer_closure_values(function, dependencies)
|
|
151
157
|
memoize = use_memo(dependencies=dependencies)
|
|
@@ -534,7 +540,7 @@ def use_memo(
|
|
|
534
540
|
class _Memo(Generic[_Type]):
|
|
535
541
|
"""Simple object for storing memoization data"""
|
|
536
542
|
|
|
537
|
-
__slots__ = "
|
|
543
|
+
__slots__ = "deps", "value"
|
|
538
544
|
|
|
539
545
|
value: _Type
|
|
540
546
|
deps: Sequence[Any]
|
|
@@ -40,6 +40,7 @@ from reactpy.core.vdom import validate_vdom_json
|
|
|
40
40
|
from reactpy.types import (
|
|
41
41
|
ComponentType,
|
|
42
42
|
Context,
|
|
43
|
+
Event,
|
|
43
44
|
EventHandlerDict,
|
|
44
45
|
Key,
|
|
45
46
|
LayoutEventMessage,
|
|
@@ -120,7 +121,8 @@ class Layout:
|
|
|
120
121
|
|
|
121
122
|
if handler is not None:
|
|
122
123
|
try:
|
|
123
|
-
|
|
124
|
+
data = [Event(d) if isinstance(d, dict) else d for d in event["data"]]
|
|
125
|
+
await handler.function(data)
|
|
124
126
|
except Exception:
|
|
125
127
|
logger.exception(f"Failed to execute event handler {handler}")
|
|
126
128
|
else:
|
|
@@ -3,7 +3,6 @@ from __future__ import annotations
|
|
|
3
3
|
from collections.abc import Awaitable
|
|
4
4
|
from logging import getLogger
|
|
5
5
|
from typing import Any, Callable
|
|
6
|
-
from warnings import warn
|
|
7
6
|
|
|
8
7
|
from anyio import create_task_group
|
|
9
8
|
from anyio.abc import TaskGroup
|
|
@@ -25,16 +24,6 @@ The event will then trigger an :class:`reactpy.core.proto.EventHandlerType` in a
|
|
|
25
24
|
"""
|
|
26
25
|
|
|
27
26
|
|
|
28
|
-
class Stop(BaseException):
|
|
29
|
-
"""Deprecated
|
|
30
|
-
|
|
31
|
-
Stop serving changes and events
|
|
32
|
-
|
|
33
|
-
Raising this error will tell dispatchers to gracefully exit. Typically this is
|
|
34
|
-
called by code running inside a layout to tell it to stop rendering.
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
|
|
38
27
|
async def serve_layout(
|
|
39
28
|
layout: LayoutType[
|
|
40
29
|
LayoutUpdateMessage | dict[str, Any], LayoutEventMessage | dict[str, Any]
|
|
@@ -44,17 +33,9 @@ async def serve_layout(
|
|
|
44
33
|
) -> None:
|
|
45
34
|
"""Run a dispatch loop for a single view instance"""
|
|
46
35
|
async with layout:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
task_group.start_soon(_single_incoming_loop, task_group, layout, recv)
|
|
51
|
-
except Stop: # nocov
|
|
52
|
-
warn(
|
|
53
|
-
"The Stop exception is deprecated and will be removed in a future version",
|
|
54
|
-
UserWarning,
|
|
55
|
-
stacklevel=1,
|
|
56
|
-
)
|
|
57
|
-
logger.info(f"Stopped serving {layout}")
|
|
36
|
+
async with create_task_group() as task_group:
|
|
37
|
+
task_group.start_soon(_single_outgoing_loop, layout, send)
|
|
38
|
+
task_group.start_soon(_single_incoming_loop, task_group, layout, recv)
|
|
58
39
|
|
|
59
40
|
|
|
60
41
|
async def _single_outgoing_loop(
|
|
@@ -20,7 +20,7 @@ from reactpy.pyscript.utils import pyscript_component_html, pyscript_setup_html
|
|
|
20
20
|
from reactpy.types import ReactPyConfig, VdomDict
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
class
|
|
23
|
+
class ReactPyCsr(ReactPy):
|
|
24
24
|
def __init__(
|
|
25
25
|
self,
|
|
26
26
|
*file_paths: str | Path,
|
|
@@ -88,7 +88,7 @@ class ReactPyPyscript(ReactPy):
|
|
|
88
88
|
class ReactPyPyscriptApp(ReactPyApp):
|
|
89
89
|
"""ReactPy's standalone ASGI application for Client-Side Rendering (CSR) via PyScript."""
|
|
90
90
|
|
|
91
|
-
parent:
|
|
91
|
+
parent: ReactPyCsr
|
|
92
92
|
_index_html = ""
|
|
93
93
|
_etag = ""
|
|
94
94
|
_last_modified = ""
|
|
@@ -43,9 +43,7 @@ def vdom_head_to_html(head: VdomDict) -> str:
|
|
|
43
43
|
if isinstance(head, dict) and head.get("tagName") == "head":
|
|
44
44
|
return reactpy_to_string(head)
|
|
45
45
|
|
|
46
|
-
raise ValueError(
|
|
47
|
-
"Invalid head element! Element must be either `html.head` or a string."
|
|
48
|
-
)
|
|
46
|
+
raise ValueError("Head element must be constructed with `html.head`.")
|
|
49
47
|
|
|
50
48
|
|
|
51
49
|
def process_settings(settings: ReactPyConfig) -> None:
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
# ruff: noqa:
|
|
1
|
+
# ruff: noqa: N816, RUF006
|
|
2
2
|
# type: ignore
|
|
3
|
-
|
|
3
|
+
import asyncio
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
import asyncio
|
|
7
|
-
|
|
8
|
-
from reactpy.pyscript.layout_handler import ReactPyLayoutHandler
|
|
5
|
+
from reactpy.pyscript.layout_handler import ReactPyLayoutHandler
|
|
9
6
|
|
|
10
7
|
|
|
11
8
|
# User component is inserted below by regex replacement
|
|
@@ -11,7 +11,7 @@ from reactpy.core.layout import Layout
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class ReactPyLayoutHandler:
|
|
14
|
-
"""Encapsulate the entire layout handler with a class to prevent overlapping
|
|
14
|
+
"""Encapsulate the entire PyScript layout handler with a class to prevent overlapping
|
|
15
15
|
variable names between user code.
|
|
16
16
|
|
|
17
17
|
This code is designed to be run directly by PyScript, and is not intended to be run
|
|
@@ -13,8 +13,6 @@ from pathlib import Path
|
|
|
13
13
|
from typing import TYPE_CHECKING, Any
|
|
14
14
|
from uuid import uuid4
|
|
15
15
|
|
|
16
|
-
import jsonpointer
|
|
17
|
-
|
|
18
16
|
import reactpy
|
|
19
17
|
from reactpy.config import REACTPY_DEBUG, REACTPY_PATH_PREFIX, REACTPY_WEB_MODULES_DIR
|
|
20
18
|
from reactpy.types import VdomDict
|
|
@@ -116,11 +114,7 @@ def extend_pyscript_config(
|
|
|
116
114
|
|
|
117
115
|
# Extends ReactPy's default PyScript config with user provided values.
|
|
118
116
|
pyscript_config: dict[str, Any] = {
|
|
119
|
-
"packages": [
|
|
120
|
-
reactpy_version_string(),
|
|
121
|
-
f"jsonpointer=={jsonpointer.__version__}",
|
|
122
|
-
"ssl",
|
|
123
|
-
],
|
|
117
|
+
"packages": [reactpy_version_string(), "jsonpointer==3.*", "ssl"],
|
|
124
118
|
"js_modules": {
|
|
125
119
|
"main": {
|
|
126
120
|
f"{REACTPY_PATH_PREFIX.current}static/morphdom/morphdom-esm.js": "morphdom"
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var C1=Object.create;var{getPrototypeOf:N1,defineProperty:I0,getOwnPropertyNames:S1}=Object;var g1=Object.prototype.hasOwnProperty;var j1=(X,Y,Z)=>{Z=X!=null?C1(N1(X)):{};let K=Y||!X||!X.__esModule?I0(Z,"default",{value:X,enumerable:!0}):Z;for(let Q of S1(X))if(!g1.call(K,Q))I0(K,Q,{get:()=>X[Q],enumerable:!0});return K};var C0=(X,Y)=>()=>(Y||X((Y={exports:{}}).exports,Y),Y.exports);var u0=C0((N4,i0)=>{var c1=Object.prototype.hasOwnProperty,s1=Object.prototype.toString;i0.exports=function(Y,Z,K){if(s1.call(Z)!=="[object Function]")throw TypeError("iterator must be a function");var Q=Y.length;if(Q===+Q)for(var G=0;G<Q;G++)Z.call(K,Y[G],G,Y);else for(var W in Y)if(c1.call(Y,W))Z.call(K,Y[W],W,Y)}});var r0=C0((S4,l0)=>{var p1=u0();l0.exports=B;function B(X,Y,Z){if(arguments.length===3)return B.set(X,Y,Z);if(arguments.length===2)return B.get(X,Y);var K=B.bind(B,X);for(var Q in B)if(B.hasOwnProperty(Q))K[Q]=B[Q].bind(K,X);return K}B.get=function(Y,Z){var K=Array.isArray(Z)?Z:B.parse(Z);for(var Q=0;Q<K.length;++Q){var G=K[Q];if(!(typeof Y=="object"&&(G in Y)))throw Error("Invalid reference token: "+G);Y=Y[G]}return Y};B.set=function(Y,Z,K){var Q=Array.isArray(Z)?Z:B.parse(Z),G=Q[0];if(Q.length===0)throw Error("Can not set the root object");for(var W=0;W<Q.length-1;++W){var q=Q[W];if(typeof q!=="string"&&typeof q!=="number")q=String(q);if(q==="__proto__"||q==="constructor"||q==="prototype")continue;if(q==="-"&&Array.isArray(Y))q=Y.length;if(G=Q[W+1],!(q in Y))if(G.match(/^(\d+|-)$/))Y[q]=[];else Y[q]={};Y=Y[q]}if(G==="-"&&Array.isArray(Y))G=Y.length;return Y[G]=K,this};B.remove=function(X,Y){var Z=Array.isArray(Y)?Y:B.parse(Y),K=Z[Z.length-1];if(K===void 0)throw Error('Invalid JSON pointer for remove: "'+Y+'"');var Q=B.get(X,Z.slice(0,-1));if(Array.isArray(Q)){var G=+K;if(K===""&&isNaN(G))throw Error('Invalid array index: "'+K+'"');Array.prototype.splice.call(Q,G,1)}else delete Q[K]};B.dict=function(Y,Z){var K={};return B.walk(Y,function(Q,G){K[G]=Q},Z),K};B.walk=function(Y,Z,K){var Q=[];K=K||function(G){var W=Object.prototype.toString.call(G);return W==="[object Object]"||W==="[object Array]"},function G(W){p1(W,function(q,F){if(Q.push(String(F)),K(q))G(q);else Z(q,B.compile(Q));Q.pop()})}(Y)};B.has=function(Y,Z){try{B.get(Y,Z)}catch(K){return!1}return!0};B.escape=function(Y){return Y.toString().replace(/~/g,"~0").replace(/\//g,"~1")};B.unescape=function(Y){return Y.replace(/~1/g,"/").replace(/~0/g,"~")};B.parse=function(Y){if(Y==="")return[];if(Y.charAt(0)!=="/")throw Error("Invalid JSON pointer: "+Y);return Y.substring(1).split(/\//).map(B.unescape)};B.compile=function(Y){if(Y.length===0)return"";return"/"+Y.map(B.escape).join("/")}});var M={log:(...X)=>console.log("[ReactPy]",...X),info:(...X)=>console.info("[ReactPy]",...X),warn:(...X)=>console.warn("[ReactPy]",...X),error:(...X)=>console.error("[ReactPy]",...X)};function N0(X){let{interval:Y,maxInterval:Z,maxRetries:K,backoffMultiplier:Q}=X,G=0,W=Y,q=!1,F=!1,$={},z=()=>{if(F)return;$.current=new WebSocket(X.url),$.current.onopen=()=>{if(q=!0,M.info("Connected!"),W=Y,G=0,X.onOpen)X.onOpen()},$.current.onmessage=(J)=>{if(X.onMessage)X.onMessage(J)},$.current.onclose=()=>{if(X.onClose)X.onClose();if(!q){M.info("Failed to connect!");return}if(M.info("Disconnected!"),G>=K){M.info("Connection max retries exhausted!");return}M.info(`Reconnecting in ${(W/1000).toPrecision(4)} seconds...`),setTimeout(z,W),W=y1(W,Q,Z),G++}};return X.readyPromise.then(()=>M.info("Starting client...")).then(z),$}function y1(X,Y,Z){return Math.min(X*Y,Z)}class S0{handlers={};ready;resolveReady;constructor(){this.resolveReady=()=>{},this.ready=new Promise((X)=>this.resolveReady=X)}onMessage(X,Y){return(this.handlers[X]||(this.handlers[X]=[])).push(Y),this.resolveReady(void 0),()=>{this.handlers[X]=this.handlers[X].filter((Z)=>Z!==Y)}}handleIncoming(X){if(!X.type){M.warn("Received message without type",X);return}let Y=this.handlers[X.type];if(!Y){M.warn("Received message without handler",X);return}Y.forEach((Z)=>Z(X))}}class F0 extends S0{urls;socket;mountElement;constructor(X){super();this.urls=X.urls,this.mountElement=X.mountElement,this.socket=N0({url:this.urls.componentUrl,readyPromise:this.ready,...X.reconnectOptions,onMessage:async({data:Y})=>this.handleIncoming(JSON.parse(Y))})}sendMessage(X){this.socket.current?.send(JSON.stringify(X))}loadModule(X){return import(`${this.urls.jsModulesPath}${X}`)}}var n,H,b0,b1,b,g0,f0,v0,x0,B0,H0,z0,k0,s={},h0=[],f1=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,p=Array.isArray;function C(X,Y){for(var Z in Y)X[Z]=Y[Z];return X}function w0(X){X&&X.parentNode&&X.parentNode.removeChild(X)}function S(X,Y,Z){var K,Q,G,W={};for(G in Y)G=="key"?K=Y[G]:G=="ref"?Q=Y[G]:W[G]=Y[G];if(arguments.length>2&&(W.children=arguments.length>3?n.call(arguments,2):Z),typeof X=="function"&&X.defaultProps!=null)for(G in X.defaultProps)W[G]===void 0&&(W[G]=X.defaultProps[G]);return o(X,W,K,Q,null)}function o(X,Y,Z,K,Q){var G={type:X,props:Y,key:Z,ref:K,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:Q==null?++b0:Q,__i:-1,__u:0};return Q==null&&H.vnode!=null&&H.vnode(G),G}function E(X){return X.children}function T(X,Y){this.props=X,this.context=Y}function x(X,Y){if(Y==null)return X.__?x(X.__,X.__i+1):null;for(var Z;Y<X.__k.length;Y++)if((Z=X.__k[Y])!=null&&Z.__e!=null)return Z.__e;return typeof X.type=="function"?x(X):null}function d0(X){var Y,Z;if((X=X.__)!=null&&X.__c!=null){for(X.__e=X.__c.base=null,Y=0;Y<X.__k.length;Y++)if((Z=X.__k[Y])!=null&&Z.__e!=null){X.__e=X.__c.base=Z.__e;break}return d0(X)}}function V0(X){(!X.__d&&(X.__d=!0)&&b.push(X)&&!t.__r++||g0!=H.debounceRendering)&&((g0=H.debounceRendering)||f0)(t)}function t(){for(var X,Y,Z,K,Q,G,W,q=1;b.length;)b.length>q&&b.sort(v0),X=b.shift(),q=b.length,X.__d&&(Z=void 0,K=void 0,Q=(K=(Y=X).__v).__e,G=[],W=[],Y.__P&&((Z=C({},K)).__v=K.__v+1,H.vnode&&H.vnode(Z),U0(Y.__P,Z,K,Y.__n,Y.__P.namespaceURI,32&K.__u?[Q]:null,G,Q==null?x(K):Q,!!(32&K.__u),W),Z.__v=K.__v,Z.__.__k[Z.__i]=Z,s0(G,Z,W),K.__e=K.__=null,Z.__e!=Q&&d0(Z)));t.__r=0}function m0(X,Y,Z,K,Q,G,W,q,F,$,z){var J,A,V,P,D,O,U,w=K&&K.__k||h0,N=Y.length;for(F=v1(Z,Y,w,F,N),J=0;J<N;J++)(V=Z.__k[J])!=null&&(A=V.__i==-1?s:w[V.__i]||s,V.__i=J,O=U0(X,V,A,Q,G,W,q,F,$,z),P=V.__e,V.ref&&A.ref!=V.ref&&(A.ref&&R0(A.ref,null,V),z.push(V.ref,V.__c||P,V)),D==null&&P!=null&&(D=P),(U=!!(4&V.__u))||A.__k===V.__k?F=c0(V,F,X,U):typeof V.type=="function"&&O!==void 0?F=O:P&&(F=P.nextSibling),V.__u&=-7);return Z.__e=D,F}function v1(X,Y,Z,K,Q){var G,W,q,F,$,z=Z.length,J=z,A=0;for(X.__k=Array(Q),G=0;G<Q;G++)(W=Y[G])!=null&&typeof W!="boolean"&&typeof W!="function"?(typeof W=="string"||typeof W=="number"||typeof W=="bigint"||W.constructor==String?W=X.__k[G]=o(null,W,null,null,null):p(W)?W=X.__k[G]=o(E,{children:W},null,null,null):W.constructor==null&&W.__b>0?W=X.__k[G]=o(W.type,W.props,W.key,W.ref?W.ref:null,W.__v):X.__k[G]=W,F=G+A,W.__=X,W.__b=X.__b+1,($=W.__i=x1(W,Z,F,J))!=-1&&(J--,(q=Z[$])&&(q.__u|=2)),q==null||q.__v==null?($==-1&&(Q>z?A--:Q<z&&A++),typeof W.type!="function"&&(W.__u|=4)):$!=F&&($==F-1?A--:$==F+1?A++:($>F?A--:A++,W.__u|=4))):X.__k[G]=null;if(J)for(G=0;G<z;G++)(q=Z[G])!=null&&(2&q.__u)==0&&(q.__e==K&&(K=x(q)),a0(q,q));return K}function c0(X,Y,Z,K){var Q,G;if(typeof X.type=="function"){for(Q=X.__k,G=0;Q&&G<Q.length;G++)Q[G]&&(Q[G].__=X,Y=c0(Q[G],Y,Z,K));return Y}X.__e!=Y&&(K&&(Y&&X.type&&!Y.parentNode&&(Y=x(X)),Z.insertBefore(X.__e,Y||null)),Y=X.__e);do Y=Y&&Y.nextSibling;while(Y!=null&&Y.nodeType==8);return Y}function a(X,Y){return Y=Y||[],X==null||typeof X=="boolean"||(p(X)?X.some(function(Z){a(Z,Y)}):Y.push(X)),Y}function x1(X,Y,Z,K){var Q,G,W,q=X.key,F=X.type,$=Y[Z],z=$!=null&&(2&$.__u)==0;if($===null&&q==null||z&&q==$.key&&F==$.type)return Z;if(K>(z?1:0)){for(Q=Z-1,G=Z+1;Q>=0||G<Y.length;)if(($=Y[W=Q>=0?Q--:G++])!=null&&(2&$.__u)==0&&q==$.key&&F==$.type)return W}return-1}function j0(X,Y,Z){Y[0]=="-"?X.setProperty(Y,Z==null?"":Z):X[Y]=Z==null?"":typeof Z!="number"||f1.test(Y)?Z:Z+"px"}function r(X,Y,Z,K,Q){var G,W;X:if(Y=="style")if(typeof Z=="string")X.style.cssText=Z;else{if(typeof K=="string"&&(X.style.cssText=K=""),K)for(Y in K)Z&&Y in Z||j0(X.style,Y,"");if(Z)for(Y in Z)K&&Z[Y]==K[Y]||j0(X.style,Y,Z[Y])}else if(Y[0]=="o"&&Y[1]=="n")G=Y!=(Y=Y.replace(x0,"$1")),W=Y.toLowerCase(),Y=W in X||Y=="onFocusOut"||Y=="onFocusIn"?W.slice(2):Y.slice(2),X.l||(X.l={}),X.l[Y+G]=Z,Z?K?Z.u=K.u:(Z.u=B0,X.addEventListener(Y,G?z0:H0,G)):X.removeEventListener(Y,G?z0:H0,G);else{if(Q=="http://www.w3.org/2000/svg")Y=Y.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(Y!="width"&&Y!="height"&&Y!="href"&&Y!="list"&&Y!="form"&&Y!="tabIndex"&&Y!="download"&&Y!="rowSpan"&&Y!="colSpan"&&Y!="role"&&Y!="popover"&&Y in X)try{X[Y]=Z==null?"":Z;break X}catch(q){}typeof Z=="function"||(Z==null||Z===!1&&Y[4]!="-"?X.removeAttribute(Y):X.setAttribute(Y,Y=="popover"&&Z==1?"":Z))}}function y0(X){return function(Y){if(this.l){var Z=this.l[Y.type+X];if(Y.t==null)Y.t=B0++;else if(Y.t<Z.u)return;return Z(H.event?H.event(Y):Y)}}}function U0(X,Y,Z,K,Q,G,W,q,F,$){var z,J,A,V,P,D,O,U,w,N,y,u,m,T0,l,c,$0,I=Y.type;if(Y.constructor!=null)return null;128&Z.__u&&(F=!!(32&Z.__u),G=[q=Y.__e=Z.__e]),(z=H.__b)&&z(Y);X:if(typeof I=="function")try{if(U=Y.props,w="prototype"in I&&I.prototype.render,N=(z=I.contextType)&&K[z.__c],y=z?N?N.props.value:z.__:K,Z.__c?O=(J=Y.__c=Z.__c).__=J.__E:(w?Y.__c=J=new I(U,y):(Y.__c=J=new T(U,y),J.constructor=I,J.render=h1),N&&N.sub(J),J.state||(J.state={}),J.__n=K,A=J.__d=!0,J.__h=[],J._sb=[]),w&&J.__s==null&&(J.__s=J.state),w&&I.getDerivedStateFromProps!=null&&(J.__s==J.state&&(J.__s=C({},J.__s)),C(J.__s,I.getDerivedStateFromProps(U,J.__s))),V=J.props,P=J.state,J.__v=Y,A)w&&I.getDerivedStateFromProps==null&&J.componentWillMount!=null&&J.componentWillMount(),w&&J.componentDidMount!=null&&J.__h.push(J.componentDidMount);else{if(w&&I.getDerivedStateFromProps==null&&U!==V&&J.componentWillReceiveProps!=null&&J.componentWillReceiveProps(U,y),Y.__v==Z.__v||!J.__e&&J.shouldComponentUpdate!=null&&J.shouldComponentUpdate(U,J.__s,y)===!1){for(Y.__v!=Z.__v&&(J.props=U,J.state=J.__s,J.__d=!1),Y.__e=Z.__e,Y.__k=Z.__k,Y.__k.some(function(v){v&&(v.__=Y)}),u=0;u<J._sb.length;u++)J.__h.push(J._sb[u]);J._sb=[],J.__h.length&&W.push(J);break X}J.componentWillUpdate!=null&&J.componentWillUpdate(U,J.__s,y),w&&J.componentDidUpdate!=null&&J.__h.push(function(){J.componentDidUpdate(V,P,D)})}if(J.context=y,J.props=U,J.__P=X,J.__e=!1,m=H.__r,T0=0,w){for(J.state=J.__s,J.__d=!1,m&&m(Y),z=J.render(J.props,J.state,J.context),l=0;l<J._sb.length;l++)J.__h.push(J._sb[l]);J._sb=[]}else do J.__d=!1,m&&m(Y),z=J.render(J.props,J.state,J.context),J.state=J.__s;while(J.__d&&++T0<25);J.state=J.__s,J.getChildContext!=null&&(K=C(C({},K),J.getChildContext())),w&&!A&&J.getSnapshotBeforeUpdate!=null&&(D=J.getSnapshotBeforeUpdate(V,P)),c=z,z!=null&&z.type===E&&z.key==null&&(c=p0(z.props.children)),q=m0(X,p(c)?c:[c],Y,Z,K,Q,G,W,q,F,$),J.base=Y.__e,Y.__u&=-161,J.__h.length&&W.push(J),O&&(J.__E=J.__=null)}catch(v){if(Y.__v=null,F||G!=null)if(v.then){for(Y.__u|=F?160:128;q&&q.nodeType==8&&q.nextSibling;)q=q.nextSibling;G[G.indexOf(q)]=null,Y.__e=q}else{for($0=G.length;$0--;)w0(G[$0]);A0(Y)}else Y.__e=Z.__e,Y.__k=Z.__k,v.then||A0(Y);H.__e(v,Y,Z)}else G==null&&Y.__v==Z.__v?(Y.__k=Z.__k,Y.__e=Z.__e):q=Y.__e=k1(Z.__e,Y,Z,K,Q,G,W,F,$);return(z=H.diffed)&&z(Y),128&Y.__u?void 0:q}function A0(X){X&&X.__c&&(X.__c.__e=!0),X&&X.__k&&X.__k.forEach(A0)}function s0(X,Y,Z){for(var K=0;K<Z.length;K++)R0(Z[K],Z[++K],Z[++K]);H.__c&&H.__c(Y,X),X.some(function(Q){try{X=Q.__h,Q.__h=[],X.some(function(G){G.call(Q)})}catch(G){H.__e(G,Q.__v)}})}function p0(X){return typeof X!="object"||X==null||X.__b&&X.__b>0?X:p(X)?X.map(p0):C({},X)}function k1(X,Y,Z,K,Q,G,W,q,F){var $,z,J,A,V,P,D,O=Z.props||s,U=Y.props,w=Y.type;if(w=="svg"?Q="http://www.w3.org/2000/svg":w=="math"?Q="http://www.w3.org/1998/Math/MathML":Q||(Q="http://www.w3.org/1999/xhtml"),G!=null){for($=0;$<G.length;$++)if((V=G[$])&&"setAttribute"in V==!!w&&(w?V.localName==w:V.nodeType==3)){X=V,G[$]=null;break}}if(X==null){if(w==null)return document.createTextNode(U);X=document.createElementNS(Q,w,U.is&&U),q&&(H.__m&&H.__m(Y,G),q=!1),G=null}if(w==null)O===U||q&&X.data==U||(X.data=U);else{if(G=G&&n.call(X.childNodes),!q&&G!=null)for(O={},$=0;$<X.attributes.length;$++)O[(V=X.attributes[$]).name]=V.value;for($ in O)if(V=O[$],$=="children");else if($=="dangerouslySetInnerHTML")J=V;else if(!($ in U)){if($=="value"&&"defaultValue"in U||$=="checked"&&"defaultChecked"in U)continue;r(X,$,null,V,Q)}for($ in U)V=U[$],$=="children"?A=V:$=="dangerouslySetInnerHTML"?z=V:$=="value"?P=V:$=="checked"?D=V:q&&typeof V!="function"||O[$]===V||r(X,$,V,O[$],Q);if(z)q||J&&(z.__html==J.__html||z.__html==X.innerHTML)||(X.innerHTML=z.__html),Y.__k=[];else if(J&&(X.innerHTML=""),m0(Y.type=="template"?X.content:X,p(A)?A:[A],Y,Z,K,w=="foreignObject"?"http://www.w3.org/1999/xhtml":Q,G,W,G?G[0]:Z.__k&&x(Z,0),q,F),G!=null)for($=G.length;$--;)w0(G[$]);q||($="value",w=="progress"&&P==null?X.removeAttribute("value"):P!=null&&(P!==X[$]||w=="progress"&&!P||w=="option"&&P!=O[$])&&r(X,$,P,O[$],Q),$="checked",D!=null&&D!=X[$]&&r(X,$,D,O[$],Q))}return X}function R0(X,Y,Z){try{if(typeof X=="function"){var K=typeof X.__u=="function";K&&X.__u(),K&&Y==null||(X.__u=X(Y))}else X.current=Y}catch(Q){H.__e(Q,Z)}}function a0(X,Y,Z){var K,Q;if(H.unmount&&H.unmount(X),(K=X.ref)&&(K.current&&K.current!=X.__e||R0(K,null,Y)),(K=X.__c)!=null){if(K.componentWillUnmount)try{K.componentWillUnmount()}catch(G){H.__e(G,Y)}K.base=K.__P=null}if(K=X.__k)for(Q=0;Q<K.length;Q++)K[Q]&&a0(K[Q],Y,Z||typeof X.type!="function");Z||w0(X.__e),X.__c=X.__=X.__e=void 0}function h1(X,Y,Z){return this.constructor(X,Z)}function L0(X,Y,Z){var K,Q,G,W;Y==document&&(Y=document.documentElement),H.__&&H.__(X,Y),Q=(K=typeof Z=="function")?null:Z&&Z.__k||Y.__k,G=[],W=[],U0(Y,X=(!K&&Z||Y).__k=S(E,null,[X]),Q||s,s,Y.namespaceURI,!K&&Z?[Z]:Q?null:Y.firstChild?n.call(Y.childNodes):null,G,!K&&Z?Z:Q?Q.__e:Y.firstChild,K,W),s0(G,X,W)}function e(X){function Y(Z){var K,Q;return this.getChildContext||(K=new Set,(Q={})[Y.__c]=this,this.getChildContext=function(){return Q},this.componentWillUnmount=function(){K=null},this.shouldComponentUpdate=function(G){this.props.value!=G.value&&K.forEach(function(W){W.__e=!0,V0(W)})},this.sub=function(G){K.add(G);var W=G.componentWillUnmount;G.componentWillUnmount=function(){K&&K.delete(G),W&&W.call(G)}}),Z.children}return Y.__c="__cC"+k0++,Y.__=X,Y.Provider=Y.__l=(Y.Consumer=function(Z,K){return Z.children(K)}).contextType=Y,Y}n=h0.slice,H={__e:function(X,Y,Z,K){for(var Q,G,W;Y=Y.__;)if((Q=Y.__c)&&!Q.__)try{if((G=Q.constructor)&&G.getDerivedStateFromError!=null&&(Q.setState(G.getDerivedStateFromError(X)),W=Q.__d),Q.componentDidCatch!=null&&(Q.componentDidCatch(X,K||{}),W=Q.__d),W)return Q.__E=Q}catch(q){X=q}throw X}},b0=0,b1=function(X){return X!=null&&X.constructor==null},T.prototype.setState=function(X,Y){var Z;Z=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=C({},this.state),typeof X=="function"&&(X=X(C({},Z),this.props)),X&&C(Z,X),X!=null&&this.__v&&(Y&&this._sb.push(Y),V0(this))},T.prototype.forceUpdate=function(X){this.__v&&(this.__e=!0,X&&this.__h.push(X),V0(this))},T.prototype.render=E,b=[],f0=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,v0=function(X,Y){return X.__v.__b-Y.__v.__b},t.__r=0,x0=/(PointerCapture)$|Capture$/i,B0=0,H0=y0(!1),z0=y0(!0),k0=0;var m1=0;function _(X,Y,Z,K,Q,G){Y||(Y={});var W,q,F=Y;if("ref"in F)for(q in F={},Y)q=="ref"?W=Y[q]:F[q]=Y[q];var $={type:X,props:F,key:Z,ref:W,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--m1,__i:-1,__u:0,__source:Q,__self:G};if(typeof X=="function"&&(W=X.defaultProps))for(q in W)F[q]===void 0&&(F[q]=W[q]);return H.vnode&&H.vnode($),$}var z1=j1(r0(),1);var k,R,P0,o0,Y0=0,Q1=[],L=H,t0=L.__b,n0=L.__r,e0=L.diffed,X1=L.__c,Y1=L.unmount,Z1=L.__;function Z0(X,Y){L.__h&&L.__h(R,X,Y0||Y),Y0=0;var Z=R.__H||(R.__H={__:[],__h:[]});return X>=Z.__.length&&Z.__.push({}),Z.__[X]}function h(X){return Y0=1,G1(J1,X)}function G1(X,Y,Z){var K=Z0(k++,2);if(K.t=X,!K.__c&&(K.__=[Z?Z(Y):J1(void 0,Y),function(q){var F=K.__N?K.__N[0]:K.__[0],$=K.t(F,q);F!==$&&(K.__N=[$,K.__[1]],K.__c.setState({}))}],K.__c=R,!R.__f)){var Q=function(q,F,$){if(!K.__c.__H)return!0;var z=K.__c.__H.__.filter(function(A){return!!A.__c});if(z.every(function(A){return!A.__N}))return!G||G.call(this,q,F,$);var J=K.__c.props!==q;return z.forEach(function(A){if(A.__N){var V=A.__[0];A.__=A.__N,A.__N=void 0,V!==A.__[0]&&(J=!0)}}),G&&G.call(this,q,F,$)||J};R.__f=!0;var{shouldComponentUpdate:G,componentWillUpdate:W}=R;R.componentWillUpdate=function(q,F,$){if(this.__e){var z=G;G=void 0,Q(q,F,$),G=z}W&&W.call(this,q,F,$)},R.shouldComponentUpdate=Q}return K.__N||K.__}function f(X,Y){var Z=Z0(k++,3);!L.__s&&q1(Z.__H,Y)&&(Z.__=X,Z.u=Y,R.__H.__h.push(Z))}function K0(X){return Y0=5,W1(function(){return{current:X}},[])}function W1(X,Y){var Z=Z0(k++,7);return q1(Z.__H,Y)&&(Z.__=X(),Z.__H=Y,Z.__h=X),Z.__}function i(X){var Y=R.context[X.__c],Z=Z0(k++,9);return Z.c=X,Y?(Z.__==null&&(Z.__=!0,Y.sub(R)),Y.props.value):X.__}function a1(){for(var X;X=Q1.shift();)if(X.__P&&X.__H)try{X.__H.__h.forEach(X0),X.__H.__h.forEach(O0),X.__H.__h=[]}catch(Y){X.__H.__h=[],L.__e(Y,X.__v)}}L.__b=function(X){R=null,t0&&t0(X)},L.__=function(X,Y){X&&Y.__k&&Y.__k.__m&&(X.__m=Y.__k.__m),Z1&&Z1(X,Y)},L.__r=function(X){n0&&n0(X),k=0;var Y=(R=X.__c).__H;Y&&(P0===R?(Y.__h=[],R.__h=[],Y.__.forEach(function(Z){Z.__N&&(Z.__=Z.__N),Z.u=Z.__N=void 0})):(Y.__h.forEach(X0),Y.__h.forEach(O0),Y.__h=[],k=0)),P0=R},L.diffed=function(X){e0&&e0(X);var Y=X.__c;Y&&Y.__H&&(Y.__H.__h.length&&(Q1.push(Y)!==1&&o0===L.requestAnimationFrame||((o0=L.requestAnimationFrame)||i1)(a1)),Y.__H.__.forEach(function(Z){Z.u&&(Z.__H=Z.u),Z.u=void 0})),P0=R=null},L.__c=function(X,Y){Y.some(function(Z){try{Z.__h.forEach(X0),Z.__h=Z.__h.filter(function(K){return!K.__||O0(K)})}catch(K){Y.some(function(Q){Q.__h&&(Q.__h=[])}),Y=[],L.__e(K,Z.__v)}}),X1&&X1(X,Y)},L.unmount=function(X){Y1&&Y1(X);var Y,Z=X.__c;Z&&Z.__H&&(Z.__H.__.forEach(function(K){try{X0(K)}catch(Q){Y=Q}}),Z.__H=void 0,Y&&L.__e(Y,Z.__v))};var K1=typeof requestAnimationFrame=="function";function i1(X){var Y,Z=function(){clearTimeout(K),K1&&cancelAnimationFrame(Y),setTimeout(X)},K=setTimeout(Z,35);K1&&(Y=requestAnimationFrame(Z))}function X0(X){var Y=R,Z=X.__c;typeof Z=="function"&&(X.__c=void 0,Z()),R=Y}function O0(X){var Y=R;X.__c=X.__(),R=Y}function q1(X,Y){return!X||X.length!==Y.length||Y.some(function(Z,K){return Z!==X[K]})}function J1(X,Y){return typeof Y=="function"?Y(X):Y}var g={__stop__:!0};function M0(X,Y=10){if(!X||typeof X!=="object")return console.warn("eventToObject: Expected an object input, received:",X),X;let Z=new WeakSet;Z.add(X);let K={};for(let Q in X)try{if(d(X[Q],Q))continue;else if(typeof X[Q]==="object"){let G=j(X[Q],Y,Z);if(G!==g)K[Q]=G}else K[Q]=X[Q]}catch{continue}if(typeof window<"u"&&window.Event&&X instanceof window.Event)K.selection=u1(Y,Z);return K}function u1(X,Y){if(typeof window>"u"||!window.getSelection)return null;let Z=window.getSelection();if(!Z)return null;return{type:Z.type,anchorNode:Z.anchorNode?j(Z.anchorNode,X,Y):null,anchorOffset:Z.anchorOffset,focusNode:Z.focusNode?j(Z.focusNode,X,Y):null,focusOffset:Z.focusOffset,isCollapsed:Z.isCollapsed,rangeCount:Z.rangeCount,selectedText:Z.toString()}}function j(X,Y,Z){let K=Y-1;if(K<=0&&typeof X==="object")return g;if(!X||typeof X!=="object")return X;if(Z.has(X))return g;Z.add(X);try{if(Array.isArray(X)||typeof X?.length==="number"&&typeof X[Symbol.iterator]==="function"&&!Object.prototype.toString.call(X).includes("Map")&&!(X instanceof CSSStyleDeclaration))return l1(X,K,Z);return r1(X,K,Z)}finally{Z.delete(X)}}function l1(X,Y,Z){let K=[];for(let Q=0;Q<X.length;Q++)if(d(X[Q]))continue;else if(typeof X[Q]==="object"){let G=j(X[Q],Y,Z);if(G!==g)K.push(G)}else K.push(X[Q]);return K}function r1(X,Y,Z){let K={};for(let q in X)try{if(d(X[q],q,X))continue;else if(typeof X[q]==="object"){let F=j(X[q],Y,Z);if(F!==g)K[q]=F}else K[q]=X[q]}catch{continue}if(X&&typeof X==="object"&&"dataset"in X&&!Object.prototype.hasOwnProperty.call(K,"dataset")){let q=X.dataset;if(!d(q,"dataset",X)){let F=j(q,Y,Z);if(F!==g)K.dataset=F}}let Q=["value","checked","files","type","name"];for(let q of Q)if(X&&typeof X==="object"&&q in X&&!Object.prototype.hasOwnProperty.call(K,q)){let F=X[q];if(!d(F,q,X))if(typeof F==="object"){let $=q==="files"?Math.max(Y,3):Y,z=j(F,$,Z);if(z!==g)K[q]=z}else K[q]=F}let G=typeof window<"u"?window:void 0,W=G?G.HTMLFormElement:typeof HTMLFormElement<"u"?HTMLFormElement:void 0;if(W&&X instanceof W&&X.elements)for(let q=0;q<X.elements.length;q++){let F=X.elements[q];if(F.name&&!Object.prototype.hasOwnProperty.call(K,F.name)&&!d(F,F.name,X))if(typeof F==="object"){let $=j(F,Y,Z);if($!==g)K[F.name]=$}else K[F.name]=F}return K}function d(X,Y="",Z=void 0){return X===null||X===void 0||Y.startsWith("__")||Y.length>0&&/^[A-Z_]+$/.test(Y)||typeof X==="function"||X instanceof CSSStyleSheet||X instanceof Window||X instanceof Document||Y==="view"||Y==="size"||Y==="length"||Z instanceof CSSStyleDeclaration&&X===""||typeof Node<"u"&&Z instanceof Node&&(Y==="parentNode"||Y==="parentElement"||Y==="ownerDocument"||Y==="getRootNode"||Y==="childNodes"||Y==="children"||Y==="firstChild"||Y==="lastChild"||Y==="previousSibling"||Y==="nextSibling"||Y==="previousElementSibling"||Y==="nextElementSibling"||Y==="innerHTML"||Y==="outerHTML"||Y==="offsetParent"||Y==="offsetWidth"||Y==="offsetHeight"||Y==="offsetLeft"||Y==="offsetTop"||Y==="clientTop"||Y==="clientLeft"||Y==="clientWidth"||Y==="clientHeight"||Y==="scrollWidth"||Y==="scrollHeight"||Y==="scrollTop"||Y==="scrollLeft")}async function $1(X,Y){let Z;if(X.sourceType==="URL")Z=await import(X.source);else Z=await Y.loadModule(X.source);if(typeof Z.bind!=="function")throw Error(`${X.source} did not export a function 'bind'`);return(K)=>{let Q=Z.bind(K,{sendMessage:Y.sendMessage,onMessage:Y.onMessage});if(!(typeof Q.create==="function"&&typeof Q.render==="function"&&typeof Q.unmount==="function"))return M.error(`${X.source} returned an impropper binding`),null;return{render:(G)=>Q.render(F1({client:Y,module:Z,binding:Q,model:G,currentImportSource:X})),unmount:Q.unmount}}}function F1(X){let Y;if(X.model.importSource){if(!t1(X.currentImportSource,X.model.importSource))return M.error("Parent element import source "+Q0(X.currentImportSource)+" does not match child's import source "+Q0(X.model.importSource)),null;else if(Y=o1(X.module,X.model.tagName,X.model.importSource),!Y)return null}else Y=X.model.tagName;return X.binding.create(Y,W0(X.model,X.client),G0(X.model,(Z)=>F1({...X,model:Z})))}function o1(X,Y,Z){let K=Y.split("."),Q=null;for(let G=0;G<K.length;G++){let W=K[G];if(Q=G==0?X[W]:Q[W],!Q){if(G==0)M.error("Module from source "+Q0(Z)+` does not export ${W}`);else console.error(`Component ${K.slice(0,G).join(".")} from source `+Q0(Z)+` does not have subcomponent ${W}`);break}}return Q}function t1(X,Y){return X.source===Y.source&&X.sourceType===Y.sourceType}function Q0(X){return JSON.stringify({source:X.source,sourceType:X.sourceType})}function G0(X,Y){if(!X.children)return[];else return X.children.map((Z)=>{switch(typeof Z){case"object":return Y(Z);case"string":return Z}})}function W0(X,Y){return Object.fromEntries(Object.entries({...X.attributes,...Object.fromEntries(Object.entries(X.eventHandlers||{}).map(([Z,K])=>n1(Y,Z,K))),...Object.fromEntries(Object.entries(X.inlineJavaScript||{}).map(([Z,K])=>e1(Z,K)))}))}function n1(X,Y,{target:Z,preventDefault:K,stopPropagation:Q}){let G=function(...W){let q=Array.from(W).map((F)=>{let $=F;if(K)$.preventDefault();if(Q)$.stopPropagation();if(typeof $==="object")return M0($);else return $});X.sendMessage({type:"layout-event",data:q,target:Z})};return G.isHandler=!0,[Y,G]}function e1(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]}var q0=e(null);function V1(X){let Y=h({tagName:""})[0],Z=Z4();return f(()=>X.client.onMessage("layout-update",({path:K,model:Q})=>{if(K==="")Object.assign(Y,Q);else z1.set(Y,K,Q);Z()}),[Y,X.client]),_(q0.Provider,{value:X.client,children:_(E0,{model:Y})})}function E0({model:X}){if(X.error!==void 0)if(X.error)return _("pre",{children:X.error});else return null;let Y;if(X.tagName in H1)Y=H1[X.tagName];else if(X.importSource)Y=Y4;else Y=A1;return _(Y,{model:X})}function A1({model:X}){let Y=i(q0);return S(X.tagName===""?E:X.tagName,W0(X,Y),...G0(X,(Z)=>{return _(E0,{model:Z},Z.key)}))}function _0({model:X}){let Y=i(q0),Z=W0(X,Y),[K,Q]=h(Z.value);f(()=>Q(Z.value),[Z.value]);let G=Z.onChange;if(typeof G==="function")Z.onChange=(W)=>{if(W.target)Q(W.target.value);G(W)};return S(X.tagName,{...Z,value:K},...G0(X,(W)=>_(E0,{model:W},W.key)))}function X4({model:X}){let Y=K0(null);return f(()=>{if(!Y.current)return;let Z=document.createElement("script");for(let[Q,G]of Object.entries(X.attributes||{}))Z.setAttribute(Q,G);let K=X?.children?.filter((Q)=>typeof Q=="string")[0];if(K)Z.appendChild(document.createTextNode(K));return Y.current.appendChild(Z),()=>{Y.current?.removeChild(Z)}},[X.key]),_("div",{ref:Y})}function Y4({model:X}){let Y=X.importSource,Z=K4(X);if(!Y)return null;let K=Y.fallback;if(!Y)if(!K)return null;else if(typeof K==="string")return _("span",{children:K});else return _(A1,{model:K});else return _("span",{ref:Z})}function Z4(){let[,X]=h(!1);return()=>X((Y)=>!Y)}function K4(X){let Y=X.importSource,Z=JSON.stringify(Y),K=K0(null),Q=i(q0),[G,W]=h(null);return f(()=>{let q=!1;if(Y)$1(Y,Q).then((F)=>{if(!q&&K.current)W(F(K.current))});return()=>{if(q=!0,G&&Y&&!Y.unmountBeforeUpdate)G.unmount()}},[Q,Z,W,K.current]),f(()=>{if(!(G&&Y))return;if(G.render(X),Y.unmountBeforeUpdate)return G.unmount}),K}var H1={input:_0,script:X4,select:_0,textarea:_0};function Q4(X){let Z=`${`ws${window.location.protocol==="https:"?"s":""}:`}//${window.location.host}`,K=new URL(`${Z}${X.pathPrefix}${X.componentPath||""}`);if(K.searchParams.append("http_pathname",window.location.pathname),window.location.search)K.searchParams.append("http_query_string",window.location.search);let Q=new F0({urls:{componentUrl:K,jsModulesPath:`${window.location.origin}${X.pathPrefix}modules/`},reconnectOptions:{interval:X.reconnectInterval||750,maxInterval:X.reconnectMaxInterval||60000,maxRetries:X.reconnectMaxRetries||150,backoffMultiplier:X.reconnectBackoffMultiplier||1.25},mountElement:X.mountElement});L0(_(V1,{client:Q}),X.mountElement)}function W4(X,Y){for(var Z in Y)X[Z]=Y[Z];return X}function B1(X,Y){for(var Z in X)if(Z!=="__source"&&!(Z in Y))return!0;for(var K in Y)if(K!=="__source"&&X[K]!==Y[K])return!0;return!1}function w1(X,Y){this.props=X,this.context=Y}(w1.prototype=new T).isPureReactComponent=!0,w1.prototype.shouldComponentUpdate=function(X,Y){return B1(this.props,X)||B1(this.state,Y)};var U1=H.__b;H.__b=function(X){X.type&&X.type.__f&&X.ref&&(X.props.ref=X.ref,X.ref=null),U1&&U1(X)};var q4=H.__e;H.__e=function(X,Y,Z,K){if(X.then){for(var Q,G=Y;G=G.__;)if((Q=G.__c)&&Q.__c)return Y.__e==null&&(Y.__e=Z.__e,Y.__k=Z.__k),Q.__c(X,Y)}q4(X,Y,Z,K)};var R1=H.unmount;function E1(X,Y,Z){return X&&(X.__c&&X.__c.__H&&(X.__c.__H.__.forEach(function(K){typeof K.__c=="function"&&K.__c()}),X.__c.__H=null),(X=W4({},X)).__c!=null&&(X.__c.__P===Z&&(X.__c.__P=Y),X.__c.__e=!0,X.__c=null),X.__k=X.__k&&X.__k.map(function(K){return E1(K,Y,Z)})),X}function D1(X,Y,Z){return X&&Z&&(X.__v=null,X.__k=X.__k&&X.__k.map(function(K){return D1(K,Y,Z)}),X.__c&&X.__c.__P===Y&&(X.__e&&Z.appendChild(X.__e),X.__c.__e=!0,X.__c.__P=Z)),X}function D0(){this.__u=0,this.o=null,this.__b=null}function T1(X){var Y=X.__.__c;return Y&&Y.__a&&Y.__a(X)}function J0(){this.i=null,this.l=null}H.unmount=function(X){var Y=X.__c;Y&&Y.__R&&Y.__R(),Y&&32&X.__u&&(X.type=null),R1&&R1(X)},(D0.prototype=new T).__c=function(X,Y){var Z=Y.__c,K=this;K.o==null&&(K.o=[]),K.o.push(Z);var Q=T1(K.__v),G=!1,W=function(){G||(G=!0,Z.__R=null,Q?Q(q):q())};Z.__R=W;var q=function(){if(!--K.__u){if(K.state.__a){var F=K.state.__a;K.__v.__k[0]=D1(F,F.__c.__P,F.__c.__O)}var $;for(K.setState({__a:K.__b=null});$=K.o.pop();)$.forceUpdate()}};K.__u++||32&Y.__u||K.setState({__a:K.__b=K.__v.__k[0]}),X.then(W,W)},D0.prototype.componentWillUnmount=function(){this.o=[]},D0.prototype.render=function(X,Y){if(this.__b){if(this.__v.__k){var Z=document.createElement("div"),K=this.__v.__k[0].__c;this.__v.__k[0]=E1(this.__b,Z,K.__O=K.__P)}this.__b=null}var Q=Y.__a&&S(E,null,X.fallback);return Q&&(Q.__u&=-33),[S(E,null,Y.__a?null:X.children),Q]};var L1=function(X,Y,Z){if(++Z[1]===Z[0]&&X.l.delete(Y),X.props.revealOrder&&(X.props.revealOrder[0]!=="t"||!X.l.size))for(Z=X.i;Z;){for(;Z.length>3;)Z.pop()();if(Z[1]<Z[0])break;X.i=Z=Z[2]}};(J0.prototype=new T).__a=function(X){var Y=this,Z=T1(Y.__v),K=Y.l.get(X);return K[0]++,function(Q){var G=function(){Y.props.revealOrder?(K.push(Q),L1(Y,X,K)):Q()};Z?Z(G):G()}},J0.prototype.render=function(X){this.i=null,this.l=new Map;var Y=a(X.children);X.revealOrder&&X.revealOrder[0]==="b"&&Y.reverse();for(var Z=Y.length;Z--;)this.l.set(Y[Z],this.i=[1,0,this.i]);return X.children},J0.prototype.componentDidUpdate=J0.prototype.componentDidMount=function(){var X=this;this.l.forEach(function(Y,Z){L1(X,Z,Y)})};var J4=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,$4=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,F4=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,H4=/[A-Z0-9]/g,z4=typeof document<"u",V4=function(X){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(X)};T.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(X){Object.defineProperty(T.prototype,X,{configurable:!0,get:function(){return this["UNSAFE_"+X]},set:function(Y){Object.defineProperty(this,X,{configurable:!0,writable:!0,value:Y})}})});var P1=H.event;function A4(){}function B4(){return this.cancelBubble}function w4(){return this.defaultPrevented}H.event=function(X){return P1&&(X=P1(X)),X.persist=A4,X.isPropagationStopped=B4,X.isDefaultPrevented=w4,X.nativeEvent=X};var I1,U4={enumerable:!1,configurable:!0,get:function(){return this.class}},O1=H.vnode;H.vnode=function(X){typeof X.type=="string"&&function(Y){var{props:Z,type:K}=Y,Q={},G=K.indexOf("-")===-1;for(var W in Z){var q=Z[W];if(!(W==="value"&&("defaultValue"in Z)&&q==null||z4&&W==="children"&&K==="noscript"||W==="class"||W==="className")){var F=W.toLowerCase();W==="defaultValue"&&"value"in Z&&Z.value==null?W="value":W==="download"&&q===!0?q="":F==="translate"&&q==="no"?q=!1:F[0]==="o"&&F[1]==="n"?F==="ondoubleclick"?W="ondblclick":F!=="onchange"||K!=="input"&&K!=="textarea"||V4(Z.type)?F==="onfocus"?W="onfocusin":F==="onblur"?W="onfocusout":F4.test(W)&&(W=F):F=W="oninput":G&&$4.test(W)?W=W.replace(H4,"-$&").toLowerCase():q===null&&(q=void 0),F==="oninput"&&Q[W=F]&&(W="oninputCapture"),Q[W]=q}}K=="select"&&Q.multiple&&Array.isArray(Q.value)&&(Q.value=a(Z.children).forEach(function($){$.props.selected=Q.value.indexOf($.props.value)!=-1})),K=="select"&&Q.defaultValue!=null&&(Q.value=a(Z.children).forEach(function($){$.props.selected=Q.multiple?Q.defaultValue.indexOf($.props.value)!=-1:Q.defaultValue==$.props.value})),Z.class&&!Z.className?(Q.class=Z.class,Object.defineProperty(Q,"className",U4)):(Z.className&&!Z.class||Z.class&&Z.className)&&(Q.class=Q.className=Z.className),Y.props=Q}(X),X.$$typeof=J4,O1&&O1(X)};var M1=H.__r;H.__r=function(X){M1&&M1(X),I1=X.__c};var _1=H.diffed;H.diffed=function(X){_1&&_1(X);var{props:Y,__e:Z}=X;Z!=null&&X.type==="textarea"&&"value"in Y&&Y.value!==Z.value&&(Z.value=Y.value==null?"":Y.value),I1=null};export{Q4 as mountReactPy};
|
|
2
|
+
|
|
3
|
+
//# debugId=A2365124B281ED7A64756E2164756E21
|
|
4
|
+
//# sourceMappingURL=index.js.map
|