ex4nicegui 0.1.7__tar.gz → 0.1.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.
Files changed (36) hide show
  1. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/PKG-INFO +1 -1
  2. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/__init__.py +1 -1
  3. {ex4nicegui-0.1.7/ex4nicegui/reactive/echarts → ex4nicegui-0.1.9/ex4nicegui/reactive/ECharts}/ECharts.py +4 -8
  4. {ex4nicegui-0.1.7/ex4nicegui/reactive/draggable → ex4nicegui-0.1.9/ex4nicegui/reactive/UseDraggable}/UseDraggable.js +1 -1
  5. {ex4nicegui-0.1.7/ex4nicegui/reactive/draggable → ex4nicegui-0.1.9/ex4nicegui/reactive/UseDraggable}/UseDraggable.py +6 -10
  6. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/__index.py +4 -1
  7. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/drawer.py +2 -2
  8. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/local_file_picker.py +5 -5
  9. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/officials.py +136 -29
  10. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/q_pagination.py +2 -2
  11. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/useMouse/UseMouse.py +22 -14
  12. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui.egg-info/PKG-INFO +1 -1
  13. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui.egg-info/SOURCES.txt +6 -6
  14. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui.egg-info/requires.txt +1 -1
  15. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/setup.py +2 -26
  16. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/LICENSE +0 -0
  17. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/README.md +0 -0
  18. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/layout/__init__.py +0 -0
  19. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/layout/gridbox.py +0 -0
  20. {ex4nicegui-0.1.7/ex4nicegui/reactive/echarts → ex4nicegui-0.1.9/ex4nicegui/reactive/ECharts}/ECharts.js +0 -0
  21. {ex4nicegui-0.1.7/ex4nicegui/reactive/draggable → ex4nicegui-0.1.9/ex4nicegui/reactive/ECharts}/__init__.py +0 -0
  22. {ex4nicegui-0.1.7/ex4nicegui/reactive/echarts → ex4nicegui-0.1.9/ex4nicegui/reactive/UseDraggable}/__init__.py +0 -0
  23. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/__init__.py +0 -0
  24. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/rxui.py +0 -0
  25. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/useMouse/UseMouse.js +0 -0
  26. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/useMouse/__init__.py +0 -0
  27. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/reactive/usePagination.py +0 -0
  28. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/tools/__init__.py +0 -0
  29. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/tools/debug.py +0 -0
  30. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/utils/__init__.py +0 -0
  31. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/utils/common.py +0 -0
  32. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui/utils/signals.py +0 -0
  33. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui.egg-info/dependency_links.txt +0 -0
  34. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui.egg-info/not-zip-safe +0 -0
  35. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/ex4nicegui.egg-info/top_level.txt +0 -0
  36. {ex4nicegui-0.1.7 → ex4nicegui-0.1.9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ex4nicegui
3
- Version: 0.1.7
3
+ Version: 0.1.9
4
4
  Summary: ...
5
5
  Home-page:
6
6
  Author: carson_jia
@@ -15,4 +15,4 @@ from ex4nicegui import tools
15
15
  from signe import batch
16
16
 
17
17
 
18
- __version__ = "0.1.7"
18
+ __version__ = "0.1.9"
@@ -2,12 +2,9 @@ from typing import Any, Callable, Optional
2
2
  from dataclasses import dataclass
3
3
  from nicegui.helpers import KWONLY_SLOTS
4
4
  from nicegui.events import handle_event, EventArguments
5
- from nicegui.dependencies import register_component
6
5
  from nicegui.element import Element
7
6
 
8
7
 
9
- register_component("ECharts", __file__, "ECharts.js")
10
-
11
8
  _Chart_Click_Args = [
12
9
  "componentType",
13
10
  "seriesType",
@@ -36,9 +33,9 @@ class EChartsClickEventArguments(EventArguments):
36
33
  color: str
37
34
 
38
35
 
39
- class echarts(Element):
36
+ class echarts(Element, component="ECharts.js"):
40
37
  def __init__(self, options: dict) -> None:
41
- super().__init__("ECharts")
38
+ super().__init__()
42
39
  self._props["options"] = options
43
40
 
44
41
  def update_options(self, options: dict, opts: Optional[dict] = None):
@@ -65,9 +62,8 @@ class echarts(Element):
65
62
  def on_chart_click(
66
63
  self, handler: Optional[Callable[[EChartsClickEventArguments], Any]]
67
64
  ):
68
- def inner_handler(args: dict):
69
- args = args["args"]
70
- print(args)
65
+ def inner_handler(e):
66
+ args = e.args
71
67
  handle_event(
72
68
  handler,
73
69
  EChartsClickEventArguments(
@@ -139,7 +139,7 @@ const pe = /* @__PURE__ */ H({
139
139
  setup(e, { emit: r }) {
140
140
  const t = e;
141
141
  return q(() => {
142
- const o = document.getElementById(t.elementId), { x: a, y: c, style: g, isDragging: _ } = le(o, t.options);
142
+ const o = document.getElementById(`c${t.elementId}`), { x: a, y: c, style: g, isDragging: _ } = le(o, t.options);
143
143
  h([a, c, g], ([l, f, i]) => {
144
144
  r("update", { x: l, y: f, style: i });
145
145
  }), h(_, (l) => {
@@ -1,15 +1,11 @@
1
1
  from typing import Any, Callable, Optional
2
2
  from dataclasses import dataclass
3
- from nicegui import ui
4
3
  from nicegui.helpers import KWONLY_SLOTS
5
4
  from nicegui.events import handle_event, EventArguments
6
- from nicegui.dependencies import register_component
7
5
  from nicegui.element import Element
8
6
  from signe import createSignal, effect, batch
9
7
  from ex4nicegui.utils.signals import ref_from_signal
10
8
 
11
- register_component("UseDraggable", __file__, "UseDraggable.js")
12
-
13
9
  _Update_Args = [
14
10
  "x",
15
11
  "y",
@@ -33,9 +29,9 @@ def use_draggable(element: Element, init_x=0.0, init_y=0.0, auto_bind_style=True
33
29
  return ud
34
30
 
35
31
 
36
- class UseDraggable(Element):
32
+ class UseDraggable(Element, component="UseDraggable.js"):
37
33
  def __init__(self, element: Element, init_x=0.0, init_y=0.0) -> None:
38
- super().__init__("UseDraggable")
34
+ super().__init__()
39
35
  self._props["elementId"] = str(element.id)
40
36
  self._props["options"] = {"initialValue": {"x": init_x, "y": init_y}}
41
37
 
@@ -53,8 +49,8 @@ class UseDraggable(Element):
53
49
 
54
50
  self.on_update(update)
55
51
 
56
- def on_isDraggingUpdate(args):
57
- self.__isDragging_setter(args["args"]["isDragging"])
52
+ def on_isDraggingUpdate(e):
53
+ self.__isDragging_setter(e.args["isDragging"])
58
54
  # print(args['args']['isDragging'])
59
55
 
60
56
  self.on("isDraggingUpdate", on_isDraggingUpdate)
@@ -82,8 +78,8 @@ class UseDraggable(Element):
82
78
  element.update()
83
79
 
84
80
  def on_update(self, handler: Optional[Callable[..., Any]]):
85
- def inner_handler(args: dict):
86
- args = args["args"]
81
+ def inner_handler(e):
82
+ args = e.args
87
83
  handle_event(
88
84
  handler,
89
85
  UseDraggableUpdateEventArguments(
@@ -22,12 +22,15 @@ from .officials import (
22
22
  SliderBindableUi as slider,
23
23
  LazySliderBindableUi as lazy_slider,
24
24
  HtmlBindableUi as html,
25
+ ImageBindableUi as image,
26
+ UploadBindableUi as upload,
27
+ UploadResult,
25
28
  )
26
29
  from .q_pagination import QPagination as q_pagination
27
30
  from .local_file_picker import local_file_picker
28
31
  from ex4nicegui.utils.signals import ref_computed
29
32
  from signe import effect
30
- from .draggable.UseDraggable import use_draggable
33
+ from .UseDraggable.UseDraggable import use_draggable
31
34
  from .useMouse.UseMouse import use_mouse
32
35
  from .drawer import drawer
33
36
  from .usePagination import PaginationRef as use_pagination
@@ -49,8 +49,8 @@ def drawer(
49
49
  value = "true" if r.value else "false"
50
50
  ele.props(f":model-value={value}")
51
51
 
52
- def on_update(args):
53
- r.value = args["args"]
52
+ def on_update(e):
53
+ r.value = e.args
54
54
 
55
55
  ele.on("update:modelValue", on_update)
56
56
 
@@ -1,4 +1,4 @@
1
- from typing import Any, Callable, Optional, cast,List
1
+ from typing import Any, Callable, Optional, cast, List
2
2
  from typing_extensions import Literal
3
3
  from signe import createSignal, effect, computed
4
4
  from nicegui import ui, Tailwind
@@ -155,8 +155,8 @@ def local_file_picker(
155
155
  grid.style("width:50vw")
156
156
  # grid.tailwind("w-96")
157
157
 
158
- def dblClicked(msg):
159
- path = cur_dir() / Path(msg["args"]["data"]["名称"])
158
+ def dblClicked(e):
159
+ path = cur_dir() / Path(e.args["data"]["名称"])
160
160
 
161
161
  if path.is_dir():
162
162
  set_cur_dir(path)
@@ -166,8 +166,8 @@ def local_file_picker(
166
166
  set_result(str(path.absolute()))
167
167
  dia.close()
168
168
 
169
- def clicked(msg):
170
- path = cur_dir() / Path(msg["args"]["data"]["名称"])
169
+ def clicked(e):
170
+ path = cur_dir() / Path(e.args["data"]["名称"])
171
171
 
172
172
  if mode == "file" and path.is_dir():
173
173
  return
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
  import asyncio
3
+ from pathlib import Path
3
4
 
4
5
  from typing import (
5
6
  Any,
@@ -11,9 +12,8 @@ from typing import (
11
12
  cast,
12
13
  Dict,
13
14
  Union,
14
- overload,
15
15
  )
16
- from typing_extensions import Literal, Self
16
+ from typing_extensions import Literal
17
17
  from signe import effect
18
18
  from ex4nicegui.utils.signals import (
19
19
  ReadonlyRef,
@@ -26,6 +26,7 @@ from ex4nicegui.utils.signals import (
26
26
  )
27
27
  import ex4nicegui.utils.common as utils_common
28
28
  from nicegui import ui
29
+ from nicegui import events as ng_events
29
30
  from nicegui.elements.mixins.text_element import TextElement
30
31
  from nicegui.elements.mixins.value_element import ValueElement
31
32
  from nicegui.elements.mixins.color_elements import (
@@ -34,7 +35,7 @@ from nicegui.elements.mixins.color_elements import (
34
35
  TAILWIND_COLORS,
35
36
  )
36
37
  from nicegui.page_layout import Drawer
37
- from ex4nicegui.reactive.echarts.ECharts import echarts
38
+ from ex4nicegui.reactive.ECharts.ECharts import echarts
38
39
 
39
40
  T = TypeVar("T")
40
41
 
@@ -172,8 +173,8 @@ def _convert_kws_ref2value(kws: Dict):
172
173
  class SelectBindableUi(SingleValueBindableUi[T, ui.select]):
173
174
  @staticmethod
174
175
  def _setup_(binder: "SelectBindableUi"):
175
- def onValueChanged(args):
176
- binder._ref.value = args["args"]["label"] # type: ignore
176
+ def onValueChanged(e):
177
+ binder._ref.value = e.args["label"] # type: ignore
177
178
 
178
179
  @effect
179
180
  def _():
@@ -243,8 +244,8 @@ class SelectBindableUi(SingleValueBindableUi[T, ui.select]):
243
244
  class RadioBindableUi(SingleValueBindableUi[bool, ui.radio]):
244
245
  @staticmethod
245
246
  def _setup_(binder: "RadioBindableUi"):
246
- def onValueChanged(args):
247
- binder._ref.value = binder.element.options[args["args"]] # type: ignore
247
+ def onValueChanged(e):
248
+ binder._ref.value = binder.element.options[e.args] # type: ignore
248
249
 
249
250
  @effect
250
251
  def _():
@@ -301,8 +302,8 @@ class RadioBindableUi(SingleValueBindableUi[bool, ui.radio]):
301
302
  class SwitchBindableUi(SingleValueBindableUi[bool, ui.switch]):
302
303
  @staticmethod
303
304
  def _setup_(binder: "SwitchBindableUi"):
304
- def onValueChanged(args):
305
- binder._ref.value = args["args"] # type: ignore
305
+ def onValueChanged(e):
306
+ binder._ref.value = e.args # type: ignore
306
307
 
307
308
  ele = cast(ValueElement, binder.element)
308
309
 
@@ -350,8 +351,8 @@ class SwitchBindableUi(SingleValueBindableUi[bool, ui.switch]):
350
351
  class CheckboxBindableUi(SingleValueBindableUi[bool, ui.checkbox]):
351
352
  @staticmethod
352
353
  def _setup_(binder: "CheckboxBindableUi"):
353
- def onValueChanged(args):
354
- binder._ref.value = args["args"] # type: ignore
354
+ def onValueChanged(e):
355
+ binder._ref.value = e.args # type: ignore
355
356
 
356
357
  ele = cast(ValueElement, binder.element)
357
358
 
@@ -439,8 +440,8 @@ class InputBindableUi(SingleValueBindableUi[str, ui.input]):
439
440
  def _():
440
441
  ele.value = self.value
441
442
 
442
- def onModelValueChanged(args):
443
- self._ref.value = args["args"] or "" # type: ignore
443
+ def onModelValueChanged(e):
444
+ self._ref.value = e.args or "" # type: ignore
444
445
 
445
446
  ele.on("update:modelValue", handler=onModelValueChanged)
446
447
 
@@ -496,7 +497,7 @@ class LazyInputBindableUi(InputBindableUi):
496
497
  ele.on("keyup.enter", onValueChanged)
497
498
 
498
499
 
499
- _TSliderValue = TypeVar("_TSliderValue", float, int)
500
+ _TSliderValue = TypeVar("_TSliderValue", float, int, None)
500
501
 
501
502
 
502
503
  class SliderBindableUi(SingleValueBindableUi[Optional[_TSliderValue], ui.slider]):
@@ -535,8 +536,8 @@ class SliderBindableUi(SingleValueBindableUi[Optional[_TSliderValue], ui.slider]
535
536
  def _():
536
537
  ele.value = self.value
537
538
 
538
- def onModelValueChanged(args):
539
- self._ref.value = args["args"] # type: ignore
539
+ def onModelValueChanged(e):
540
+ self._ref.value = e.args # type: ignore
540
541
 
541
542
  ele.on("update:modelValue", handler=onModelValueChanged)
542
543
 
@@ -557,10 +558,10 @@ class SliderBindableUi(SingleValueBindableUi[Optional[_TSliderValue], ui.slider]
557
558
  class LazySliderBindableUi(SliderBindableUi):
558
559
  def __init__(
559
560
  self,
560
- min: TMaybeRef[float],
561
- max: TMaybeRef[float],
562
- step: TMaybeRef[float] = 1,
563
- value: TMaybeRef[float | None] = None,
561
+ min: TMaybeRef[_TSliderValue],
562
+ max: TMaybeRef[_TSliderValue],
563
+ step: TMaybeRef[_TSliderValue] = 1,
564
+ value: TMaybeRef[_TSliderValue | None] = None,
564
565
  on_change: Callable[..., Any] | None = None,
565
566
  ) -> None:
566
567
  super().__init__(min, max, step, value, on_change)
@@ -575,7 +576,7 @@ class LazySliderBindableUi(SliderBindableUi):
575
576
  def onValueChanged():
576
577
  self._ref.value = ele.value
577
578
 
578
- ele.on("change ", onValueChanged)
579
+ ele.on("change", onValueChanged)
579
580
 
580
581
 
581
582
  class TextareaBindableUi(SingleValueBindableUi[str, ui.textarea]):
@@ -615,8 +616,8 @@ class TextareaBindableUi(SingleValueBindableUi[str, ui.textarea]):
615
616
  def _():
616
617
  ele.value = self.value
617
618
 
618
- def onModelValueChanged(args):
619
- self._ref.value = args["args"] # type: ignore
619
+ def onModelValueChanged(e):
620
+ self._ref.value = e.args # type: ignore
620
621
 
621
622
  ele.on("update:modelValue", handler=onModelValueChanged)
622
623
 
@@ -669,8 +670,8 @@ class LazyTextareaBindableUi(TextareaBindableUi):
669
670
  class LabelBindableUi(SingleValueBindableUi[str, ui.label]):
670
671
  @staticmethod
671
672
  def _setup_(binder: "LabelBindableUi"):
672
- def onValueChanged(args):
673
- binder._ref.value = args["args"]["label"] # type: ignore
673
+ def onValueChanged(e):
674
+ binder._ref.value = e.args["label"] # type: ignore
674
675
 
675
676
  @effect
676
677
  def _():
@@ -865,8 +866,8 @@ class ColorPickerBindableUi(SingleValueBindableUi[str, ui.color_picker]):
865
866
  def _():
866
867
  ele._props["modelValue"] = self.value
867
868
 
868
- def onModelValueChanged(args):
869
- self._ref.value = args["args"] # type: ignore
869
+ def onModelValueChanged(e):
870
+ self._ref.value = e.args # type: ignore
870
871
 
871
872
  ele.on("update:modelValue", handler=onModelValueChanged)
872
873
 
@@ -908,8 +909,8 @@ class ColorPickerLazyBindableUi(ColorPickerBindableUi):
908
909
  # def _():
909
910
  # ele._props["modelValue"] = self.value
910
911
 
911
- def onModelValueChanged(args):
912
- self._ref.value = args["args"] # type: ignore
912
+ def onModelValueChanged(e):
913
+ self._ref.value = e.args # type: ignore
913
914
 
914
915
  ele.on("change", handler=onModelValueChanged)
915
916
 
@@ -1301,3 +1302,109 @@ class HtmlBindableUi(SingleValueBindableUi[str, ui.html]):
1301
1302
  color = ref_ui.value
1302
1303
  ele._style["color"] = color
1303
1304
  ele.update()
1305
+
1306
+
1307
+ class ImageBindableUi(SingleValueBindableUi[Union[str, Path], ui.image]):
1308
+ @staticmethod
1309
+ def _setup_(binder: "ImageBindableUi"):
1310
+ @effect
1311
+ def _():
1312
+ binder.element.on_source_change(binder.value)
1313
+
1314
+ def __init__(
1315
+ self,
1316
+ source: Union[TMaybeRef[str], TMaybeRef[Path]] = "",
1317
+ ) -> None:
1318
+ kws = {
1319
+ "source": source,
1320
+ }
1321
+
1322
+ value_kws = _convert_kws_ref2value(kws)
1323
+
1324
+ element = ui.image(**value_kws)
1325
+
1326
+ super().__init__(source, element) # type: ignore
1327
+
1328
+ for key, value in kws.items():
1329
+ if is_ref(value):
1330
+ self.bind_prop(key, value) # type: ignore
1331
+
1332
+ # ImageBindableUi._setup_(self)
1333
+
1334
+ def bind_prop(self, prop: str, ref_ui: ReadonlyRef):
1335
+ if prop == "source":
1336
+ return self.bind_source(ref_ui)
1337
+
1338
+ return super().bind_prop(prop, ref_ui)
1339
+
1340
+ def bind_source(self, ref_ui: ReadonlyRef[Union[str, Path]]):
1341
+ @effect
1342
+ def _():
1343
+ ele = self.element
1344
+ source = ref_ui.value
1345
+ ele.on_source_change(source)
1346
+
1347
+
1348
+ class UploadResult:
1349
+ def __init__(self, content: bytes = bytes(), name="", type=""):
1350
+ self.content = content
1351
+ self.name = name
1352
+ self.type = type
1353
+
1354
+ def get_bytes(self):
1355
+ return self.content
1356
+
1357
+ @property
1358
+ def ready(self):
1359
+ return len(self.content) > 0
1360
+
1361
+
1362
+ class UploadBindableUi(SingleValueBindableUi[UploadResult, ui.upload]):
1363
+ @staticmethod
1364
+ def _setup_(binder: "UploadBindableUi"):
1365
+ def on_upload(e: ng_events.UploadEventArguments):
1366
+ binder._ref.value = UploadResult(e.content.read(), e.name, e.type)
1367
+
1368
+ binder._on_upload_callbacks.append(on_upload)
1369
+
1370
+ def __init__(
1371
+ self,
1372
+ multiple: TMaybeRef[bool] = False,
1373
+ max_file_size: Optional[TMaybeRef[int]] = None,
1374
+ max_total_size: Optional[TMaybeRef[int]] = None,
1375
+ max_files: Optional[TMaybeRef[int]] = None,
1376
+ on_upload: Optional[Callable[..., Any]] = None,
1377
+ on_rejected: Optional[Callable[..., Any]] = None,
1378
+ label: TMaybeRef[str] = "",
1379
+ auto_upload: TMaybeRef[bool] = False,
1380
+ ) -> None:
1381
+ kws = {
1382
+ "multiple": multiple,
1383
+ "max_file_size": max_file_size,
1384
+ "max_total_size": max_total_size,
1385
+ "max_files": max_files,
1386
+ "on_rejected": on_rejected,
1387
+ "label": label,
1388
+ "auto_upload": auto_upload,
1389
+ }
1390
+
1391
+ value_kws = _convert_kws_ref2value(kws)
1392
+
1393
+ self._on_upload_callbacks = []
1394
+
1395
+ def _on_upload(e: ng_events.UploadEventArguments):
1396
+ for fn in self._on_upload_callbacks:
1397
+ fn(e)
1398
+
1399
+ if on_upload:
1400
+ self._on_upload_callbacks.append(on_upload)
1401
+
1402
+ element = ui.upload(**value_kws, on_upload=_on_upload)
1403
+
1404
+ super().__init__(UploadResult(), element) # type: ignore
1405
+
1406
+ for key, value in kws.items():
1407
+ if is_ref(value):
1408
+ self.bind_prop(key, value) # type: ignore
1409
+
1410
+ UploadBindableUi._setup_(self)
@@ -27,8 +27,8 @@ class QPagination(Element):
27
27
  self.__min = min
28
28
  self.__max = max
29
29
 
30
- def onchange(arg):
31
- arg_value = cast(int, arg["args"])
30
+ def onchange(e):
31
+ arg_value = cast(int, e.args)
32
32
 
33
33
  self._props["model-value"] = arg_value
34
34
  if isinstance(self.__value, Ref):
@@ -1,13 +1,16 @@
1
- from typing import Any, Callable, Optional
1
+ from typing import Any, Callable, Optional, cast
2
2
  from dataclasses import dataclass
3
3
  from nicegui.helpers import KWONLY_SLOTS
4
4
  from nicegui.events import handle_event, EventArguments
5
- from nicegui.dependencies import register_component
6
5
  from nicegui.element import Element
7
6
  from signe import createSignal, effect, batch
7
+ from ex4nicegui.utils.signals import ref_from_signal
8
8
 
9
+ # from nicegui.dependencies import register_library
10
+ # from pathlib import Path
9
11
 
10
- register_component("UseMouse", __file__, "UseMouse.js")
12
+
13
+ # register_library(Path(__file__).parent / "index-6543384e.js")
11
14
 
12
15
  _Update_Args = [
13
16
  "x",
@@ -23,16 +26,21 @@ class UseMouseUpdateEventArguments(EventArguments):
23
26
  sourceType: str
24
27
 
25
28
 
26
- class UseMouse(Element):
29
+ class UseMouse(Element, component="UseMouse.js"):
27
30
  def __init__(self, options: Optional[dict] = None) -> None:
28
- super().__init__("UseMouse")
31
+ super().__init__()
29
32
 
30
33
  if options:
31
34
  self._props["options"] = options
32
35
 
33
36
  self.__x_getter, self.__x_setter = createSignal(0.0)
37
+ self.__x_readonly_ref = ref_from_signal(self.__x_getter)
38
+
34
39
  self.__y_getter, self.__y_setter = createSignal(0.0)
40
+ self.__y_readonly_ref = ref_from_signal(self.__y_getter)
41
+
35
42
  self.__sourceType_getter, self.__sourceType_setter = createSignal("sourceType")
43
+ self.__sourceType_readonly_ref = ref_from_signal(self.__sourceType_getter)
36
44
 
37
45
  def update(args: UseMouseUpdateEventArguments):
38
46
  @batch
@@ -45,19 +53,19 @@ class UseMouse(Element):
45
53
 
46
54
  @property
47
55
  def x(self):
48
- return self.__x_getter()
56
+ return self.__x_readonly_ref
49
57
 
50
58
  @property
51
59
  def y(self):
52
- return self.__y_getter()
60
+ return self.__y_readonly_ref
53
61
 
54
62
  @property
55
63
  def sourceType(self):
56
- return self.__sourceType_getter()
64
+ return self.__sourceType_readonly_ref
57
65
 
58
66
  def on_update(self, handler: Optional[Callable[..., Any]]):
59
- def inner_handler(args: dict):
60
- args = args["args"]
67
+ def inner_handler(e):
68
+ args = e.args
61
69
  handle_event(
62
70
  handler,
63
71
  UseMouseUpdateEventArguments(
@@ -72,12 +80,12 @@ class UseMouse(Element):
72
80
  self.on("update", inner_handler, args=_Update_Args)
73
81
 
74
82
 
75
- _Use_Mouse_Ins = UseMouse()
83
+ _Use_Mouse_Ins = None
76
84
 
77
85
 
78
86
  def use_mouse(options: Optional[dict] = None):
79
87
  global _Use_Mouse_Ins
80
- # if _Use_Mouse_Ins is None:
81
- # _Use_Mouse_Ins = UseMouse(options)
88
+ if _Use_Mouse_Ins is None:
89
+ _Use_Mouse_Ins = UseMouse(options)
82
90
 
83
- return _Use_Mouse_Ins
91
+ return cast(UseMouse, _Use_Mouse_Ins)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ex4nicegui
3
- Version: 0.1.7
3
+ Version: 0.1.9
4
4
  Summary: ...
5
5
  Home-page:
6
6
  Author: carson_jia
@@ -18,12 +18,12 @@ ex4nicegui/reactive/officials.py
18
18
  ex4nicegui/reactive/q_pagination.py
19
19
  ex4nicegui/reactive/rxui.py
20
20
  ex4nicegui/reactive/usePagination.py
21
- ex4nicegui/reactive/draggable/UseDraggable.js
22
- ex4nicegui/reactive/draggable/UseDraggable.py
23
- ex4nicegui/reactive/draggable/__init__.py
24
- ex4nicegui/reactive/echarts/ECharts.js
25
- ex4nicegui/reactive/echarts/ECharts.py
26
- ex4nicegui/reactive/echarts/__init__.py
21
+ ex4nicegui/reactive/ECharts/ECharts.js
22
+ ex4nicegui/reactive/ECharts/ECharts.py
23
+ ex4nicegui/reactive/ECharts/__init__.py
24
+ ex4nicegui/reactive/UseDraggable/UseDraggable.js
25
+ ex4nicegui/reactive/UseDraggable/UseDraggable.py
26
+ ex4nicegui/reactive/UseDraggable/__init__.py
27
27
  ex4nicegui/reactive/useMouse/UseMouse.js
28
28
  ex4nicegui/reactive/useMouse/UseMouse.py
29
29
  ex4nicegui/reactive/useMouse/__init__.py
@@ -1,3 +1,3 @@
1
1
  signe>=0.1.8
2
- nicegui>=1.2.24
2
+ nicegui>=1.3.3
3
3
  typing_extensions
@@ -21,7 +21,7 @@ def get_data_files(base):
21
21
  with open("README.md", encoding="utf8") as readme_file:
22
22
  readme = readme_file.read()
23
23
 
24
- requirements = ["signe>=0.1.8", "nicegui>=1.2.24", "typing_extensions"]
24
+ requirements = ["signe>=0.1.8", "nicegui>=1.3.3", "typing_extensions"]
25
25
 
26
26
  test_requirements = ["pytest>=3"]
27
27
 
@@ -37,11 +37,7 @@ setup(
37
37
  "Programming Language :: Python :: 3.8",
38
38
  ],
39
39
  description="...",
40
- entry_points={
41
- # 'console_scripts': [
42
- # 'test_prj=test_prj.cli:main',
43
- # ],
44
- },
40
+ entry_points={},
45
41
  install_requires=requirements,
46
42
  license="MIT license",
47
43
  # long_description=readme,
@@ -50,26 +46,6 @@ setup(
50
46
  name="ex4nicegui",
51
47
  packages=find_packages(include=["ex4nicegui", "ex4nicegui.*"]),
52
48
  data_files=get_data_files("ex4nicegui/reactive"),
53
- # data_files=[
54
- # (
55
- # "echarts",
56
- # [
57
- # "ex4nicegui/reactive/echarts/ECharts.js",
58
- # ],
59
- # ),
60
- # (
61
- # "draggable",
62
- # [
63
- # "ex4nicegui/reactive/draggable/UseDraggable.js",
64
- # ],
65
- # ),
66
- # (
67
- # "useMouse",
68
- # [
69
- # "ex4nicegui/reactive/useMouse/UseMouse.js",
70
- # ],
71
- # ),
72
- # ],
73
49
  test_suite="__tests",
74
50
  tests_require=test_requirements,
75
51
  url="",
File without changes
File without changes
File without changes