ex4nicegui 0.8.7__tar.gz → 0.8.9__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.
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/PKG-INFO +2 -2
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/__init__.py +2 -1
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/drawer.py +1 -1
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/view_model.py +33 -3
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/descriptor.py +34 -7
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/signals.py +26 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/pyproject.toml +5 -4
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/LICENSE +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/README.md +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/dataSource.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/dataSourceFacade.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/containers.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/layouts.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/models.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/text.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/ui_aggrid.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/ui_date_picker.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/ui_date_picker.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/ui_echarts.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/ui_radio.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/ui_range.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/ui_select.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/ui_slider.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/elements/ui_table.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/index.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/protocols.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/bi/types.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/experimental_/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/experimental_/gridLayout/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/experimental_/gridLayout/index.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/gsap/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/gsap/gsap.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/gsap/timeline.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/gsap/timeline.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/gsap/wrapGsap.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/helper/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/helper/client_instance_locker.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/layout/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/layout/gridFlex/GridFlex.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/layout/gridFlex/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/layout/gridFlex/gridFlex.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/layout/gridFlex/utils.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/layout/rxFlex/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/layout/rxFlex/index.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/layout/rxFlex/types.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/d3-color.ems.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/d3-dispatch.ems.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/d3-drag.ems.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/d3-ease.ems.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/d3-interpolate.ems.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/d3-selection.ems.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/d3-timer.ems.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/d3-transition.ems.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/d3/d3-zoom.ems.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/.DS_Store +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/CSSPlugin.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/CSSRulePlugin.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/CustomEase.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/Draggable.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/EasePack.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/EaselPlugin.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/Flip.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/MotionPathPlugin.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/Observer.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/PixiPlugin.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/ScrollToPlugin.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/ScrollTrigger.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/TextPlugin.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/all.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/gsap-core.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/gsap.mjs +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/utils/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/utils/matrix.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/utils/paths.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/libs/gsap/utils/strings.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/EChartsComponent/ECharts.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/EChartsComponent/ECharts.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/EChartsComponent/events.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/EChartsComponent/types.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/EChartsComponent/utils.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/UseDraggable/UseDraggable.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/UseDraggable/UseDraggable.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/base.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/deferredTask.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/dropZone/dropZone.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/dropZone/dropZone.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/empty.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/empty.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/fileWatcher.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/local_file_picker.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/mermaid/mermaid.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/mermaid/mermaid.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/mixins/backgroundColor.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/mixins/disableable.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/mixins/flexLayout.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/mixins/textColor.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/mixins/value_element.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/aggrid.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/avatar.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/badge.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/base.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/button.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/card.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/checkbox.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/chip.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/circular_progress.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/color_picker.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/column.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/date.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/dialog.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/echarts.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/element.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/expansion.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/grid.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/html.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/html.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/icon.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/image.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/input.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/knob.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/label.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/linear_progress.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/number.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/radio.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/range.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/row.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/select.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/slider.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/spinner.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/switch.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/tab.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/tab_panel.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/tab_panels.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/table.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/tabs.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/textarea.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/toggle.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/tooltip.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/tree.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/officials/upload.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/q_pagination.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/rxui.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/scopedStyle.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/scopedStyle.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/services/pandas_service.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/services/reactive_service.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/systems/color_system.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/systems/object_system.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/systems/reactive_system.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/transitionGroup.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/transitionGroup.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/useMouse/UseMouse.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/useMouse/UseMouse.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/usePagination.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/vfor.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/vfor.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/reactive/vmodel.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/toolbox/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/toolbox/core/VueUse.js +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/toolbox/core/vue_use.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/toolbox/functions/breakpoint.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/toolbox/functions/dark.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/toolbox/functions/qr_code.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/tools/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/tools/debug.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/apiEffect.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/asyncComputed.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/clientScope.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/common.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/effect.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/__init__.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/base.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/bool.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/date.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/dict.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/float.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/int.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/list.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/string.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/proxy/utils.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/refComputed.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/refWrapper.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/scheduler.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/utils/types.py +0 -0
- {ex4nicegui-0.8.7 → ex4nicegui-0.8.9}/ex4nicegui/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: ex4nicegui
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.9
|
|
4
4
|
Summary: Extension library based on nicegui, providing data responsive,BI functionality modules
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: nicegui,ex4nicegui,webui
|
|
@@ -16,7 +16,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
18
|
Requires-Dist: executing (>=2.0.1,<3.0.0)
|
|
19
|
-
Requires-Dist: nicegui (>=2.
|
|
19
|
+
Requires-Dist: nicegui (>=2.21.1,<3.0.0)
|
|
20
20
|
Requires-Dist: signe (>=0.4.22,<0.5.0)
|
|
21
21
|
Project-URL: Repository, https://github.com/CrystalWindSnake/ex4nicegui
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
@@ -74,7 +74,7 @@ from .mermaid.mermaid import Mermaid as mermaid
|
|
|
74
74
|
from .officials.dialog import DialogBindableUi as dialog
|
|
75
75
|
from .vfor import vfor, VforStore
|
|
76
76
|
from .vmodel import vmodel
|
|
77
|
-
from .view_model import ViewModel, var, cached_var, list_var
|
|
77
|
+
from .view_model import ViewModel, var, cached_var, list_var, dict_var
|
|
78
78
|
|
|
79
79
|
pagination = q_pagination
|
|
80
80
|
|
|
@@ -102,6 +102,7 @@ __all__ = [
|
|
|
102
102
|
"var",
|
|
103
103
|
"cached_var",
|
|
104
104
|
"list_var",
|
|
105
|
+
"dict_var",
|
|
105
106
|
"html",
|
|
106
107
|
"aggrid",
|
|
107
108
|
"button",
|
|
@@ -11,7 +11,7 @@ from ex4nicegui.utils.signals import (
|
|
|
11
11
|
_TMaybeRef as TMaybeRef,
|
|
12
12
|
)
|
|
13
13
|
from nicegui import ui
|
|
14
|
-
from nicegui.
|
|
14
|
+
from nicegui.elements.drawer import Drawer
|
|
15
15
|
from .base import BindableUi
|
|
16
16
|
|
|
17
17
|
_TDrawerSide = Literal["left", "right"]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from typing import Any, Callable, List, Optional, Union, Type, TypeVar, overload
|
|
2
|
+
from typing import Any, Callable, Dict, List, Optional, Union, Type, TypeVar, overload
|
|
3
3
|
from ex4nicegui.utils.signals import (
|
|
4
4
|
deep_ref,
|
|
5
5
|
is_ref,
|
|
@@ -23,6 +23,7 @@ from ex4nicegui.utils.proxy.descriptor import ProxyDescriptor
|
|
|
23
23
|
|
|
24
24
|
_CACHED_VARS_FLAG = "__vm_cached__"
|
|
25
25
|
_LIST_VAR_FLAG = "__vm_list_var__"
|
|
26
|
+
_DICT_VAR_FLAG = "__vm_dict_var__"
|
|
26
27
|
|
|
27
28
|
_T = TypeVar("_T")
|
|
28
29
|
|
|
@@ -72,7 +73,8 @@ class ViewModel(NoProxy):
|
|
|
72
73
|
if callable(value) and hasattr(value, _CACHED_VARS_FLAG):
|
|
73
74
|
setattr(self, name, computed(partial(value, self)))
|
|
74
75
|
|
|
75
|
-
def __init_subclass__(cls) -> None:
|
|
76
|
+
def __init_subclass__(cls, **kwargs) -> None:
|
|
77
|
+
super().__init_subclass__(**kwargs)
|
|
76
78
|
need_vars = (
|
|
77
79
|
(name, value)
|
|
78
80
|
for name, value in vars(cls).items()
|
|
@@ -80,7 +82,7 @@ class ViewModel(NoProxy):
|
|
|
80
82
|
)
|
|
81
83
|
|
|
82
84
|
for name, value in need_vars:
|
|
83
|
-
class_var_setter(cls, name, value, _LIST_VAR_FLAG)
|
|
85
|
+
class_var_setter(cls, name, value, _LIST_VAR_FLAG, _DICT_VAR_FLAG)
|
|
84
86
|
|
|
85
87
|
@overload
|
|
86
88
|
@staticmethod
|
|
@@ -280,6 +282,34 @@ def list_var(factory: Callable[[], List[_T_Var_Value]]) -> List[_T_Var_Value]:
|
|
|
280
282
|
return factory # type: ignore
|
|
281
283
|
|
|
282
284
|
|
|
285
|
+
def dict_var(factory: Callable[[], Dict]) -> Dict:
|
|
286
|
+
"""Create implicitly proxied reactive variables for dictionaries. Use them just like ordinary dictionaries while maintaining reactivity. Only use within rxui.ViewModel.
|
|
287
|
+
|
|
288
|
+
Args:
|
|
289
|
+
factory (Callable[[], Dict]): A factory function that returns a new dictionary.
|
|
290
|
+
|
|
291
|
+
Example:
|
|
292
|
+
.. code-block:: python
|
|
293
|
+
from ex4nicegui import rxui
|
|
294
|
+
class State(rxui.ViewModel):
|
|
295
|
+
data = rxui.dict_var(lambda: {"a": 1, "b": 2, "c": 3})
|
|
296
|
+
|
|
297
|
+
def update_data(self):
|
|
298
|
+
self.data["d"] = len(self.data) + 1
|
|
299
|
+
|
|
300
|
+
def display_data(self):
|
|
301
|
+
return ",".join(f"{k}:{v}" for k, v in self.data.items())
|
|
302
|
+
|
|
303
|
+
state = State()
|
|
304
|
+
ui.button("Update", on_click=state.update_data)
|
|
305
|
+
rxui.label(state.display_data)
|
|
306
|
+
|
|
307
|
+
"""
|
|
308
|
+
assert callable(factory), "factory must be a callable"
|
|
309
|
+
setattr(factory, _DICT_VAR_FLAG, None)
|
|
310
|
+
return factory # type: ignore
|
|
311
|
+
|
|
312
|
+
|
|
283
313
|
def cached_var(func: Callable[..., _T]) -> ReadonlyRef[_T]:
|
|
284
314
|
"""A decorator to cache the result of a function. Only use within rxui.ViewModel.
|
|
285
315
|
|
|
@@ -8,6 +8,7 @@ from .float import FloatProxy
|
|
|
8
8
|
from .bool import BoolProxy
|
|
9
9
|
from .date import DateProxy
|
|
10
10
|
from .dict import DictProxy
|
|
11
|
+
from ex4nicegui.utils.signals import deep_ref
|
|
11
12
|
import datetime
|
|
12
13
|
import warnings
|
|
13
14
|
from . import to_value_if_base_type_proxy
|
|
@@ -61,9 +62,34 @@ class ListDescriptor(ProxyDescriptor[Callable[[], List]]):
|
|
|
61
62
|
super().__init__(name, value, lambda x: ListProxy(x() if callable(x) else x))
|
|
62
63
|
|
|
63
64
|
|
|
64
|
-
class DictDescriptor
|
|
65
|
-
def __init__(
|
|
66
|
-
|
|
65
|
+
class DictDescriptor:
|
|
66
|
+
def __init__(
|
|
67
|
+
self,
|
|
68
|
+
name: str,
|
|
69
|
+
factory: Callable[[], Dict],
|
|
70
|
+
) -> None:
|
|
71
|
+
self.name = name
|
|
72
|
+
self._ref_builder = lambda: deep_ref(factory())
|
|
73
|
+
|
|
74
|
+
def __get__(self, instance: object, owner: Any):
|
|
75
|
+
if instance is None:
|
|
76
|
+
return self
|
|
77
|
+
|
|
78
|
+
proxy = instance.__dict__.get(self.name, None)
|
|
79
|
+
if proxy is None:
|
|
80
|
+
proxy = self._ref_builder()
|
|
81
|
+
instance.__dict__[self.name] = proxy
|
|
82
|
+
|
|
83
|
+
return proxy.value
|
|
84
|
+
|
|
85
|
+
def __set__(self, instance: object, value: T) -> None:
|
|
86
|
+
value = to_value_if_base_type_proxy(value)
|
|
87
|
+
proxy = instance.__dict__.get(self.name, None)
|
|
88
|
+
if proxy is None:
|
|
89
|
+
proxy = self._ref_builder()
|
|
90
|
+
instance.__dict__[self.name] = proxy
|
|
91
|
+
|
|
92
|
+
proxy.value = value # type: ignore
|
|
67
93
|
|
|
68
94
|
|
|
69
95
|
class StringDescriptor(ProxyDescriptor[str]):
|
|
@@ -91,7 +117,9 @@ class DateDescriptor(ProxyDescriptor[datetime.date]):
|
|
|
91
117
|
super().__init__(name, value, lambda x: DateProxy(x.year, x.month, x.day))
|
|
92
118
|
|
|
93
119
|
|
|
94
|
-
def class_var_setter(
|
|
120
|
+
def class_var_setter(
|
|
121
|
+
cls: Type, name: str, value, list_var_flat: str, dict_var_flat: str
|
|
122
|
+
) -> None:
|
|
95
123
|
if value is None or isinstance(value, str):
|
|
96
124
|
setattr(cls, name, StringDescriptor(name, value))
|
|
97
125
|
elif isinstance(value, bool):
|
|
@@ -111,9 +139,8 @@ def class_var_setter(cls: Type, name: str, value, list_var_flat: str) -> None:
|
|
|
111
139
|
)
|
|
112
140
|
setattr(cls, name, ListDescriptor(name, lambda: []))
|
|
113
141
|
|
|
114
|
-
elif
|
|
115
|
-
|
|
116
|
-
# setattr(cls, name, DictDescriptor(name, value))
|
|
142
|
+
elif callable(value) and hasattr(value, dict_var_flat):
|
|
143
|
+
setattr(cls, name, DictDescriptor(name, value))
|
|
117
144
|
elif isinstance(value, float):
|
|
118
145
|
setattr(cls, name, FloatDescriptor(name, value))
|
|
119
146
|
elif isinstance(value, datetime.date):
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from datetime import date, datetime
|
|
2
|
+
import inspect
|
|
2
3
|
import signe
|
|
3
4
|
from signe.core.scope import Scope
|
|
4
5
|
from .clientScope import _CLIENT_SCOPE_MANAGER
|
|
@@ -13,6 +14,7 @@ from typing import (
|
|
|
13
14
|
Sequence,
|
|
14
15
|
)
|
|
15
16
|
from nicegui import ui
|
|
17
|
+
from nicegui.functions.refreshable import RefreshableContainer
|
|
16
18
|
from .effect import effect
|
|
17
19
|
from .scheduler import get_uiScheduler
|
|
18
20
|
from .types import (
|
|
@@ -168,6 +170,9 @@ class effect_refreshable:
|
|
|
168
170
|
def warp(
|
|
169
171
|
fn: Callable,
|
|
170
172
|
):
|
|
173
|
+
if inspect.iscoroutinefunction(fn):
|
|
174
|
+
return async_effect_refreshable(refs)(fn)
|
|
175
|
+
|
|
171
176
|
return effect_refreshable(fn, refs)
|
|
172
177
|
|
|
173
178
|
return warp
|
|
@@ -194,6 +199,27 @@ class effect_refreshable:
|
|
|
194
199
|
return runner
|
|
195
200
|
|
|
196
201
|
|
|
202
|
+
def async_effect_refreshable(source: _T_effect_refreshable_refs):
|
|
203
|
+
def wrapper(fn: Callable[[], Any]):
|
|
204
|
+
@on(source, onchanges=False)
|
|
205
|
+
async def on_source_changed():
|
|
206
|
+
with temp_box:
|
|
207
|
+
await fn()
|
|
208
|
+
|
|
209
|
+
container.clear()
|
|
210
|
+
|
|
211
|
+
for child in list(temp_box):
|
|
212
|
+
child.move(container)
|
|
213
|
+
|
|
214
|
+
temp_box.clear()
|
|
215
|
+
|
|
216
|
+
# 临时容器做中转,避免异步等待时,页面内容空白的问题
|
|
217
|
+
temp_box = RefreshableContainer()
|
|
218
|
+
container = RefreshableContainer()
|
|
219
|
+
|
|
220
|
+
return wrapper
|
|
221
|
+
|
|
222
|
+
|
|
197
223
|
def on(
|
|
198
224
|
refs: Union[TGetterOrReadonlyRef, RefWrapper, Sequence[TGetterOrReadonlyRef], Any],
|
|
199
225
|
onchanges=False,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "ex4nicegui"
|
|
3
|
-
version = "0.8.
|
|
3
|
+
version = "0.8.9"
|
|
4
4
|
description = "Extension library based on nicegui, providing data responsive,BI functionality modules"
|
|
5
5
|
authors = ["CrystalWindSnake <568166495@qq.com>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -10,7 +10,7 @@ keywords = ["nicegui", "ex4nicegui", "webui"]
|
|
|
10
10
|
|
|
11
11
|
[tool.poetry.dependencies]
|
|
12
12
|
python = "^3.8"
|
|
13
|
-
nicegui = "^2.
|
|
13
|
+
nicegui = "^2.21.1"
|
|
14
14
|
signe = "^0.4.22"
|
|
15
15
|
executing = "^2.0.1"
|
|
16
16
|
|
|
@@ -27,9 +27,10 @@ numpy = [
|
|
|
27
27
|
{version = "^1.26.0", python = ">=3.9,<3.13"}
|
|
28
28
|
]
|
|
29
29
|
pyecharts = "^2.0.5"
|
|
30
|
-
pytest-playwright = "
|
|
31
|
-
playwright = "
|
|
30
|
+
pytest-playwright = "<0.7.0"
|
|
31
|
+
playwright = "<1.52.0"
|
|
32
32
|
pytest-asyncio = "^0.24.0"
|
|
33
|
+
pywebview = ">=5.4"
|
|
33
34
|
|
|
34
35
|
[build-system]
|
|
35
36
|
requires = ["poetry-core"]
|
|
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
|
|
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
|