ex4nicegui 0.6.7__py3-none-any.whl → 0.6.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ex4nicegui/__init__.py +10 -6
- ex4nicegui/gsap/__init__.py +11 -0
- ex4nicegui/helper/__init__.py +4 -0
- ex4nicegui/helper/client_instance_locker.py +31 -0
- ex4nicegui/reactive/local_file_picker.py +1 -2
- ex4nicegui/reactive/officials/aggrid.py +4 -4
- ex4nicegui/reactive/officials/base.py +188 -86
- ex4nicegui/reactive/officials/button.py +1 -1
- ex4nicegui/reactive/officials/checkbox.py +2 -3
- ex4nicegui/reactive/officials/circular_progress.py +2 -3
- ex4nicegui/reactive/officials/color_picker.py +3 -4
- ex4nicegui/reactive/officials/column.py +1 -1
- ex4nicegui/reactive/officials/date.py +2 -3
- ex4nicegui/reactive/officials/drawer.py +2 -3
- ex4nicegui/reactive/officials/echarts.py +2 -3
- ex4nicegui/reactive/officials/expansion.py +2 -3
- ex4nicegui/reactive/officials/grid.py +1 -1
- ex4nicegui/reactive/officials/html.py +1 -3
- ex4nicegui/reactive/officials/icon.py +5 -6
- ex4nicegui/reactive/officials/image.py +2 -4
- ex4nicegui/reactive/officials/input.py +4 -6
- ex4nicegui/reactive/officials/knob.py +2 -4
- ex4nicegui/reactive/officials/label.py +1 -1
- ex4nicegui/reactive/officials/linear_progress.py +5 -6
- ex4nicegui/reactive/officials/number.py +3 -6
- ex4nicegui/reactive/officials/radio.py +3 -5
- ex4nicegui/reactive/officials/row.py +1 -1
- ex4nicegui/reactive/officials/select.py +3 -5
- ex4nicegui/reactive/officials/slider.py +3 -5
- ex4nicegui/reactive/officials/switch.py +2 -4
- ex4nicegui/reactive/officials/tab.py +1 -1
- ex4nicegui/reactive/officials/tab_panel.py +1 -1
- ex4nicegui/reactive/officials/tab_panels.py +1 -1
- ex4nicegui/reactive/officials/table.py +7 -6
- ex4nicegui/reactive/officials/tabs.py +1 -1
- ex4nicegui/reactive/officials/textarea.py +3 -5
- ex4nicegui/reactive/officials/upload.py +2 -2
- ex4nicegui/reactive/q_pagination.py +2 -2
- ex4nicegui/reactive/scopedStyle.js +55 -0
- ex4nicegui/reactive/scopedStyle.py +22 -0
- ex4nicegui/reactive/services/color_service.py +56 -0
- ex4nicegui/reactive/services/pandas_service.py +31 -0
- ex4nicegui/reactive/{utils.py → services/reactive_service.py} +9 -67
- ex4nicegui/reactive/systems/color_system.py +25 -0
- ex4nicegui/reactive/systems/object_system.py +33 -0
- ex4nicegui/reactive/systems/reactive_system.py +21 -0
- ex4nicegui/reactive/useMouse/UseMouse.py +4 -4
- ex4nicegui/reactive/usePagination.py +1 -1
- ex4nicegui/reactive/vfor.py +1 -2
- ex4nicegui/reactive/vmodel.py +1 -1
- ex4nicegui/utils/refComputed.py +147 -0
- ex4nicegui/utils/refWrapper.py +57 -0
- ex4nicegui/utils/signals.py +51 -192
- ex4nicegui/utils/types.py +16 -0
- ex4nicegui/version.py +3 -0
- {ex4nicegui-0.6.7.dist-info → ex4nicegui-0.6.8.dist-info}/METADATA +33 -4
- {ex4nicegui-0.6.7.dist-info → ex4nicegui-0.6.8.dist-info}/RECORD +59 -53
- ex4nicegui/reactive/EChartsComponent/__init__.py +0 -0
- ex4nicegui/reactive/UseDraggable/__init__.py +0 -0
- ex4nicegui/reactive/dropZone/__init__.py +0 -0
- ex4nicegui/reactive/mermaid/__init__.py +0 -0
- ex4nicegui/reactive/officials/__init__.py +0 -1
- ex4nicegui/reactive/officials/utils.py +0 -11
- ex4nicegui/reactive/useMouse/__init__.py +0 -0
- {ex4nicegui-0.6.7.dist-info → ex4nicegui-0.6.8.dist-info}/LICENSE +0 -0
- {ex4nicegui-0.6.7.dist-info → ex4nicegui-0.6.8.dist-info}/WHEEL +0 -0
ex4nicegui/utils/signals.py
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
from datetime import date, datetime
|
|
2
|
-
from functools import partial
|
|
3
|
-
import types
|
|
4
|
-
from weakref import WeakValueDictionary
|
|
5
2
|
import signe
|
|
6
|
-
from signe.core.
|
|
3
|
+
from signe.core.scope import Scope
|
|
7
4
|
from .clientScope import _CLIENT_SCOPE_MANAGER
|
|
8
5
|
from typing import (
|
|
9
6
|
Any,
|
|
10
7
|
Dict,
|
|
11
|
-
Protocol,
|
|
12
8
|
TypeVar,
|
|
13
|
-
Generic,
|
|
14
|
-
overload,
|
|
15
9
|
Optional,
|
|
16
10
|
Callable,
|
|
17
11
|
cast,
|
|
@@ -21,85 +15,51 @@ from typing import (
|
|
|
21
15
|
from nicegui import ui
|
|
22
16
|
from .effect import effect
|
|
23
17
|
from .scheduler import get_uiScheduler
|
|
24
|
-
import
|
|
18
|
+
from .types import (
|
|
19
|
+
_TMaybeRef,
|
|
20
|
+
TGetterOrReadonlyRef,
|
|
21
|
+
Ref,
|
|
22
|
+
TReadonlyRef, # noqa: F401
|
|
23
|
+
TRef, # noqa: F401
|
|
24
|
+
DescReadonlyRef, # noqa: F401
|
|
25
|
+
_TMaybeRef as TMaybeRef, # noqa: F401
|
|
26
|
+
)
|
|
27
|
+
from .refWrapper import RefWrapper, to_ref_wrapper # noqa: F401
|
|
28
|
+
from .refComputed import ref_computed # noqa: F401
|
|
25
29
|
|
|
26
30
|
T = TypeVar("T")
|
|
27
31
|
|
|
28
32
|
|
|
29
|
-
TReadonlyRef = ComputedResultProtocol[T]
|
|
30
|
-
ReadonlyRef = TReadonlyRef[T]
|
|
31
|
-
DescReadonlyRef = TReadonlyRef[T]
|
|
32
|
-
|
|
33
|
-
TGetterOrReadonlyRef = signe.TGetter[T]
|
|
34
|
-
|
|
35
|
-
|
|
36
33
|
is_reactive = signe.is_reactive
|
|
34
|
+
to_raw = signe.to_raw
|
|
37
35
|
|
|
38
36
|
|
|
39
37
|
def reactive(obj: T) -> T:
|
|
40
38
|
return signe.reactive(obj, get_uiScheduler())
|
|
41
39
|
|
|
42
40
|
|
|
43
|
-
class RefWrapper(Generic[T]):
|
|
44
|
-
__slot__ = ("_getter_fn", "_setter_fn", "")
|
|
45
|
-
|
|
46
|
-
def __init__(
|
|
47
|
-
self,
|
|
48
|
-
getter_or_ref: TGetterOrReadonlyRef[T],
|
|
49
|
-
setter_or_ref: Optional[Callable[[T], None]] = None,
|
|
50
|
-
):
|
|
51
|
-
if signe.is_signal(getter_or_ref):
|
|
52
|
-
self._getter_fn = lambda: getter_or_ref.value
|
|
53
|
-
|
|
54
|
-
def ref_setter(v):
|
|
55
|
-
getter_or_ref.value = v # type: ignore
|
|
56
|
-
|
|
57
|
-
self._setter_fn = ref_setter
|
|
58
|
-
elif isinstance(getter_or_ref, Callable):
|
|
59
|
-
self._getter_fn = getter_or_ref
|
|
60
|
-
self._setter_fn = setter_or_ref or (lambda x: None)
|
|
61
|
-
else:
|
|
62
|
-
self._getter_fn = lambda: getter_or_ref
|
|
63
|
-
self._setter_fn = lambda x: None
|
|
64
|
-
|
|
65
|
-
self._is_readonly = False
|
|
66
|
-
|
|
67
|
-
@property
|
|
68
|
-
def value(self) -> T:
|
|
69
|
-
return cast(T, self._getter_fn())
|
|
70
|
-
|
|
71
|
-
@value.setter
|
|
72
|
-
def value(self, new_value: T):
|
|
73
|
-
if self._is_readonly:
|
|
74
|
-
warnings.warn("readonly ref cannot be assigned.")
|
|
75
|
-
return
|
|
76
|
-
return self._setter_fn(new_value)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
def to_ref_wrapper(
|
|
80
|
-
getter_or_ref: TGetterOrReadonlyRef[T],
|
|
81
|
-
setter_or_ref: Optional[Callable[[T], None]] = None,
|
|
82
|
-
):
|
|
83
|
-
return RefWrapper(getter_or_ref, setter_or_ref)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
_TMaybeRef = signe.TMaybeSignal[T]
|
|
87
|
-
TRef = signe.TSignal[T]
|
|
88
|
-
Ref = TRef[T]
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
to_raw = signe.to_raw
|
|
92
|
-
|
|
93
|
-
|
|
94
41
|
def is_setter_ref(obj):
|
|
95
42
|
return isinstance(obj, (signe.Signal, RefWrapper))
|
|
96
43
|
|
|
97
44
|
|
|
98
|
-
def is_ref(obj):
|
|
45
|
+
def is_ref(obj: Any):
|
|
46
|
+
"""Checks if a value is a ref object."""
|
|
99
47
|
return signe.is_signal(obj) or isinstance(obj, (RefWrapper))
|
|
100
48
|
|
|
101
49
|
|
|
102
50
|
def to_value(obj: Union[_TMaybeRef[T], RefWrapper]) -> T:
|
|
51
|
+
"""unwraps a ref object and returns its inner value.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
obj (Union[_TMaybeRef[T], RefWrapper]): A getter function, an existing ref, or a non-function value.
|
|
55
|
+
|
|
56
|
+
## Example
|
|
57
|
+
```python
|
|
58
|
+
to_value(1) # 1
|
|
59
|
+
to_value(lambda: 1) # 1
|
|
60
|
+
to_value(to_ref(1)) # 1
|
|
61
|
+
```
|
|
62
|
+
"""
|
|
103
63
|
if is_ref(obj):
|
|
104
64
|
return obj.value # type: ignore
|
|
105
65
|
if isinstance(obj, Callable):
|
|
@@ -144,7 +104,7 @@ def _ref_comp_with_None(old, new):
|
|
|
144
104
|
return False
|
|
145
105
|
|
|
146
106
|
|
|
147
|
-
def ref(value: T, is_deep=False):
|
|
107
|
+
def ref(value: T, is_deep=False) -> Ref[T]:
|
|
148
108
|
comp = False # Default never equal
|
|
149
109
|
|
|
150
110
|
if _is_comp_values(value):
|
|
@@ -170,135 +130,33 @@ def deep_ref(value: T) -> Ref[T]:
|
|
|
170
130
|
return to_ref(value, is_deep=True)
|
|
171
131
|
|
|
172
132
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
fn: Union[Callable[[], T], TInstanceCall[T]],
|
|
181
|
-
*,
|
|
182
|
-
desc="",
|
|
183
|
-
debug_trigger: Optional[Callable[..., None]] = None,
|
|
184
|
-
priority_level: int = 1,
|
|
185
|
-
debug_name: Optional[str] = None,
|
|
186
|
-
) -> ReadonlyRef[T]:
|
|
187
|
-
"""Takes a getter function and returns a readonly reactive ref object for the returned value from the getter. It can also take an object with get and set functions to create a writable ref object.
|
|
188
|
-
|
|
189
|
-
@see - https://github.com/CrystalWindSnake/ex4nicegui/blob/main/README.en.md#ref_computed
|
|
190
|
-
@中文文档 - https://gitee.com/carson_add/ex4nicegui/tree/main/#ref_computed
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
Args:
|
|
194
|
-
fn (Callable[[], T]): _description_
|
|
195
|
-
desc (str, optional): _description_. Defaults to "".
|
|
196
|
-
debug_trigger (Optional[Callable[..., None]], optional): _description_. Defaults to None.
|
|
197
|
-
priority_level (int, optional): _description_. Defaults to 1.
|
|
198
|
-
debug_name (Optional[str], optional): _description_. Defaults to None.
|
|
199
|
-
|
|
200
|
-
"""
|
|
201
|
-
...
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
@overload
|
|
205
|
-
def ref_computed(
|
|
206
|
-
fn=None,
|
|
207
|
-
*,
|
|
208
|
-
desc="",
|
|
209
|
-
debug_trigger: Optional[Callable[..., None]] = None,
|
|
210
|
-
priority_level: int = 1,
|
|
211
|
-
debug_name: Optional[str] = None,
|
|
212
|
-
) -> Callable[[Callable[..., T]], ReadonlyRef[T]]:
|
|
213
|
-
...
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
def ref_computed(
|
|
217
|
-
fn: Optional[Union[Callable[[], T], TInstanceCall[T]]] = None,
|
|
218
|
-
*,
|
|
219
|
-
desc="",
|
|
220
|
-
debug_trigger: Optional[Callable[..., None]] = None,
|
|
221
|
-
priority_level: int = 1,
|
|
222
|
-
debug_name: Optional[str] = None,
|
|
223
|
-
) -> Union[ReadonlyRef[T], Callable[[Callable[..., T]], ReadonlyRef[T]]]:
|
|
224
|
-
kws = {
|
|
225
|
-
"debug_trigger": debug_trigger,
|
|
226
|
-
"priority_level": priority_level,
|
|
227
|
-
"debug_name": debug_name,
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
if fn:
|
|
231
|
-
if _is_class_define_method(fn):
|
|
232
|
-
return cast(
|
|
233
|
-
ref_computed_method[T],
|
|
234
|
-
ref_computed_method(fn, computed_args=kws), # type: ignore
|
|
235
|
-
) # type: ignore
|
|
236
|
-
|
|
237
|
-
getter = signe.Computed(
|
|
238
|
-
cast(Callable[[], T], fn),
|
|
239
|
-
**kws,
|
|
240
|
-
scope=_CLIENT_SCOPE_MANAGER.get_current_scope(),
|
|
241
|
-
scheduler=get_uiScheduler(),
|
|
242
|
-
)
|
|
243
|
-
return cast(DescReadonlyRef[T], getter)
|
|
244
|
-
|
|
245
|
-
else:
|
|
246
|
-
|
|
247
|
-
def wrap(fn: Callable[[], T]):
|
|
248
|
-
return ref_computed(fn, **kws)
|
|
249
|
-
|
|
250
|
-
return wrap
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
def _is_class_define_method(fn: Callable):
|
|
254
|
-
has_name = hasattr(fn, "__name__")
|
|
255
|
-
qualname_prefix = f".<locals>.{fn.__name__}" if has_name else ""
|
|
256
|
-
|
|
257
|
-
return (
|
|
258
|
-
hasattr(fn, "__qualname__")
|
|
259
|
-
and has_name
|
|
260
|
-
and "." in fn.__qualname__
|
|
261
|
-
and qualname_prefix != fn.__qualname__[-len(qualname_prefix) :]
|
|
262
|
-
and (isinstance(fn, types.FunctionType))
|
|
263
|
-
)
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
class ref_computed_method(Generic[T]):
|
|
267
|
-
__isabstractmethod__: bool
|
|
268
|
-
|
|
269
|
-
def __init__(self, fget: Callable[[Any], T], computed_args: Dict) -> None:
|
|
270
|
-
self._fget = fget
|
|
271
|
-
self._computed_args = computed_args
|
|
272
|
-
self._instance_map: WeakValueDictionary[
|
|
273
|
-
int, TReadonlyRef[T]
|
|
274
|
-
] = WeakValueDictionary()
|
|
275
|
-
|
|
276
|
-
def __get_computed(self, instance):
|
|
277
|
-
ins_id = id(instance)
|
|
278
|
-
if ins_id not in self._instance_map:
|
|
279
|
-
cp = signe.Computed(
|
|
280
|
-
partial(self._fget, instance),
|
|
281
|
-
**self._computed_args,
|
|
282
|
-
scope=_CLIENT_SCOPE_MANAGER.get_current_scope(),
|
|
283
|
-
scheduler=get_uiScheduler(),
|
|
284
|
-
capture_parent_effect=False,
|
|
285
|
-
)
|
|
286
|
-
self._instance_map[ins_id] = cp # type: ignore
|
|
287
|
-
|
|
288
|
-
return self._instance_map[ins_id]
|
|
289
|
-
|
|
290
|
-
def __get__(self, __instance: Any, __owner: Optional[type] = None):
|
|
291
|
-
return cast(TRef[T], self.__get_computed(__instance))
|
|
133
|
+
_T_effect_refreshable_refs = Union[
|
|
134
|
+
TGetterOrReadonlyRef,
|
|
135
|
+
RefWrapper,
|
|
136
|
+
Sequence[TGetterOrReadonlyRef],
|
|
137
|
+
_TMaybeRef,
|
|
138
|
+
Sequence[_TMaybeRef],
|
|
139
|
+
]
|
|
292
140
|
|
|
293
141
|
|
|
294
142
|
class effect_refreshable:
|
|
295
|
-
def __init__(self, fn: Callable, refs:
|
|
143
|
+
def __init__(self, fn: Callable, refs: _T_effect_refreshable_refs = []) -> None:
|
|
296
144
|
self._fn = fn
|
|
297
|
-
|
|
145
|
+
|
|
146
|
+
if isinstance(refs, Sequence):
|
|
147
|
+
ref_arg = [ref for ref in refs if self._is_valid_ref(ref)]
|
|
148
|
+
else:
|
|
149
|
+
ref_arg = [refs] if self._is_valid_ref(refs) else []
|
|
150
|
+
|
|
151
|
+
self._refs = ref_arg
|
|
298
152
|
self()
|
|
299
153
|
|
|
154
|
+
@classmethod
|
|
155
|
+
def _is_valid_ref(cls, ref):
|
|
156
|
+
return is_ref(ref) or isinstance(ref, Callable)
|
|
157
|
+
|
|
300
158
|
@staticmethod
|
|
301
|
-
def on(refs:
|
|
159
|
+
def on(refs: _T_effect_refreshable_refs):
|
|
302
160
|
def warp(
|
|
303
161
|
fn: Callable,
|
|
304
162
|
):
|
|
@@ -323,7 +181,7 @@ class effect_refreshable:
|
|
|
323
181
|
if len(self._refs) == 0:
|
|
324
182
|
runner = effect(runner)
|
|
325
183
|
else:
|
|
326
|
-
runner = on(self._refs)(runner)
|
|
184
|
+
runner = on(self._refs)(runner) # type: ignore
|
|
327
185
|
|
|
328
186
|
return runner
|
|
329
187
|
|
|
@@ -334,6 +192,7 @@ def on(
|
|
|
334
192
|
priority_level=1,
|
|
335
193
|
effect_kws: Optional[Dict[str, Any]] = None,
|
|
336
194
|
deep: bool = True,
|
|
195
|
+
scope: Optional[Scope] = None,
|
|
337
196
|
):
|
|
338
197
|
"""Watches one or more reactive data sources and invokes a callback function when the sources change.
|
|
339
198
|
|
|
@@ -362,7 +221,7 @@ def on(
|
|
|
362
221
|
fn,
|
|
363
222
|
onchanges=onchanges,
|
|
364
223
|
effect_kws=effect_kws,
|
|
365
|
-
scope=_CLIENT_SCOPE_MANAGER.get_current_scope(),
|
|
224
|
+
scope=scope or _CLIENT_SCOPE_MANAGER.get_current_scope(),
|
|
366
225
|
deep=deep,
|
|
367
226
|
scheduler=get_uiScheduler(),
|
|
368
227
|
)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import signe
|
|
2
|
+
from signe.core.protocols import ComputedResultProtocol
|
|
3
|
+
from typing import (
|
|
4
|
+
TypeVar,
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
T = TypeVar("T")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
TReadonlyRef = ComputedResultProtocol[T]
|
|
11
|
+
ReadonlyRef = TReadonlyRef[T]
|
|
12
|
+
DescReadonlyRef = TReadonlyRef[T]
|
|
13
|
+
TGetterOrReadonlyRef = signe.TGetter[T]
|
|
14
|
+
_TMaybeRef = signe.TMaybeSignal[T]
|
|
15
|
+
TRef = signe.TSignal[T]
|
|
16
|
+
Ref = TRef[T]
|
ex4nicegui/version.py
ADDED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ex4nicegui
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.8
|
|
4
4
|
Summary: Extension library based on nicegui, providing data responsive,BI functionality modules
|
|
5
5
|
Home-page: https://github.com/CrystalWindSnake/ex4nicegui
|
|
6
6
|
License: MIT
|
|
@@ -604,7 +604,7 @@ rxui.label("bind to ref_computed").bind_classes(
|
|
|
604
604
|
|
|
605
605
|
---
|
|
606
606
|
|
|
607
|
-
|
|
607
|
+
绑定为列表或单个字符串的响应式变量
|
|
608
608
|
|
|
609
609
|
```python
|
|
610
610
|
bg_color = to_ref("red")
|
|
@@ -617,10 +617,11 @@ rxui.select(["red", "green", "yellow"], label="bg color", value=bg_color)
|
|
|
617
617
|
rxui.select(["red", "green", "yellow"], label="text color", value=text_color)
|
|
618
618
|
|
|
619
619
|
rxui.label("binding to arrays").bind_classes([bg_color_class, text_color_class])
|
|
620
|
-
|
|
620
|
+
rxui.label("binding to single string").bind_classes(bg_color_class)
|
|
621
621
|
```
|
|
622
622
|
|
|
623
|
-
列表中每个元素为返回类名的响应式变量
|
|
623
|
+
- 列表中每个元素为返回类名的响应式变量
|
|
624
|
+
|
|
624
625
|
|
|
625
626
|
---
|
|
626
627
|
|
|
@@ -887,6 +888,34 @@ rxui.radio(names, value=current_tab).props("inline")
|
|
|
887
888
|
|
|
888
889
|
rxui.label(lambda: f"当前 tab 为:{current_tab.value}")
|
|
889
890
|
```
|
|
891
|
+
---
|
|
892
|
+
|
|
893
|
+
### scoped_style
|
|
894
|
+
|
|
895
|
+
`scoped_style` 方法允许你创建限定在组件内部的样式。
|
|
896
|
+
|
|
897
|
+
```python
|
|
898
|
+
# 所有子元素都会有红色轮廓,但排除自身
|
|
899
|
+
with rxui.row().scoped_style("*", "outline: 1px solid red;") as row:
|
|
900
|
+
ui.label("Hello")
|
|
901
|
+
ui.label("World")
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
# 所有子元素都会有红色轮廓,包括自身
|
|
905
|
+
with rxui.row().scoped_style(":self *", "outline: 1px solid red;") as row:
|
|
906
|
+
ui.label("Hello")
|
|
907
|
+
ui.label("World")
|
|
908
|
+
|
|
909
|
+
# 当鼠标悬停在 row 组件时,所有子元素都会有红色轮廓,但排除自身
|
|
910
|
+
with rxui.row().scoped_style(":hover *", "outline: 1px solid red;") as row:
|
|
911
|
+
ui.label("Hello")
|
|
912
|
+
ui.label("World")
|
|
913
|
+
|
|
914
|
+
# 当鼠标悬停在 row 组件时,所有子元素都会有红色轮廓,包括自身
|
|
915
|
+
with rxui.row().scoped_style(":self:hover *", "outline: 1px solid red;") as row:
|
|
916
|
+
ui.label("Hello")
|
|
917
|
+
ui.label("World")
|
|
918
|
+
```
|
|
890
919
|
|
|
891
920
|
|
|
892
921
|
---
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
ex4nicegui/__init__.py,sha256=
|
|
1
|
+
ex4nicegui/__init__.py,sha256=waq1asZd0w4BKeBozgDVKSFJTCgyK55ojdtRr-QFs1U,1048
|
|
2
2
|
ex4nicegui/bi/__init__.py,sha256=eu-2CuzzrcHCyKQOfoo87v6C9nSwFDdeLhjY0cRV13M,315
|
|
3
3
|
ex4nicegui/bi/dataSource.py,sha256=hOOUN4PpSfPx4Vp1sg9Sfxi5K-wROw9C22Z-mmNXs6w,7644
|
|
4
4
|
ex4nicegui/bi/dataSourceFacade.py,sha256=6NuAyrTIk_L2Tz9IRFpuHKRQY_OwJINDzxoM6JYOc14,8186
|
|
@@ -22,11 +22,13 @@ ex4nicegui/bi/types.py,sha256=PGPUXr17iRmxxYHxHKJSdxp5CdAkHWb2_9nJ1GwYRlc,355
|
|
|
22
22
|
ex4nicegui/experimental_/__init__.py,sha256=HODL0f70HUzVrfRwUzdCwxTp_9mYr4D1nnzd8jevlMw,69
|
|
23
23
|
ex4nicegui/experimental_/gridLayout/__init__.py,sha256=c9k-zykhKW3Ol6QECUoKqJW9QEuhA9xPi8s4Dm4m7SU,125
|
|
24
24
|
ex4nicegui/experimental_/gridLayout/index.py,sha256=zFXuvFroo5EC1CFjt-b4hMiEy67hGP5J1GYTKH6kpUU,4737
|
|
25
|
-
ex4nicegui/gsap/__init__.py,sha256=
|
|
25
|
+
ex4nicegui/gsap/__init__.py,sha256=hoLf8K7_-W4WMx1SGCVe3JGl9DzX9wtJmvj5lOqMWS4,439
|
|
26
26
|
ex4nicegui/gsap/gsap.py,sha256=JM3xM9OjjmUMSV-be5-H-geiw61xDU3ZljDyl8yyZAU,4638
|
|
27
27
|
ex4nicegui/gsap/timeline.js,sha256=CB300drH7UUSfy_WDeuWHSNh3WX-vwbRtKBLL1Ak43o,1241
|
|
28
28
|
ex4nicegui/gsap/timeline.py,sha256=EfJ3Iom3EbJMML8PnRDAO_nn58j2bone3uWrd3UubeU,2390
|
|
29
29
|
ex4nicegui/gsap/wrapGsap.js,sha256=0Iz7qh8aA-h3svV7fW4U5k_pX7zXCcIdHDaG7NNvgLU,1045
|
|
30
|
+
ex4nicegui/helper/__init__.py,sha256=a-9skUII1iofsWU8xlieQrmeKYb9PjVsqF5TTO34wn8,98
|
|
31
|
+
ex4nicegui/helper/client_instance_locker.py,sha256=mrgwYjb_OricG5kDscBI4UvItLu0N_HmOwIiAaH2dWE,968
|
|
30
32
|
ex4nicegui/layout/__init__.py,sha256=YT76Ec7p4aFOGms6wc19207flBeyI6jrq7Kg_FQ2wnQ,278
|
|
31
33
|
ex4nicegui/layout/gridFlex/__init__.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
|
32
34
|
ex4nicegui/layout/gridFlex/GridFlex.js,sha256=ljkxGFucBUIPksMAT5w_35sxGogC7OzxzXnOw21Z3_k,4468
|
|
@@ -70,10 +72,8 @@ ex4nicegui/libs/gsap/utils/paths.js,sha256=2SPaRHQ7zgba9cH8hGhkTYPCZdrrEhE2qhh6E
|
|
|
70
72
|
ex4nicegui/libs/gsap/utils/strings.js,sha256=47G9slz5ltG9mDSwrfQDtWzzdV5QJ-AIMLRMNK0VSiM,10472
|
|
71
73
|
ex4nicegui/reactive/__init__.py,sha256=-FC9JUa7bMqozkbbKlpWJB7WY8HuojAINgAD8ZcxHdY,3714
|
|
72
74
|
ex4nicegui/reactive/deferredTask.py,sha256=l__Qdis24jAO97_DSHW1yBns0f13-OK02O2SSkyvoZQ,824
|
|
73
|
-
ex4nicegui/reactive/dropZone/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
75
|
ex4nicegui/reactive/dropZone/dropZone.js,sha256=7rSpFJX-Fk_W_NGZhOTyuEw0bzR-YUc8ZYPzQG9KzE0,2713
|
|
75
76
|
ex4nicegui/reactive/dropZone/dropZone.py,sha256=hg9UKTayff8v8Ek-n38h_3wX1Qmiotvdyv1Hsqilh5Y,2590
|
|
76
|
-
ex4nicegui/reactive/EChartsComponent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
77
|
ex4nicegui/reactive/EChartsComponent/ECharts.js,sha256=ye2FZNLfY4T41YAGQQYqn3LThSlnbY0pqnGtpyEg9bE,3548
|
|
78
78
|
ex4nicegui/reactive/EChartsComponent/ECharts.py,sha256=ho6Cnz5zv99UXyQGdoln81KSCWlLsA4ZUT0Jdic4Xmo,4490
|
|
79
79
|
ex4nicegui/reactive/EChartsComponent/events.py,sha256=_BtmLRcAIZciDQT5i1eFc-r3e0pBnAabW1BSl6uzhCc,570
|
|
@@ -82,62 +82,64 @@ ex4nicegui/reactive/EChartsComponent/utils.py,sha256=a5r2fghC6IIZbyfUUR8TEkpLj9H
|
|
|
82
82
|
ex4nicegui/reactive/empty.js,sha256=Y-caS4CN8jUq59LgGgcvgfkndze-RgWF_ZMmAcxOrbw,50
|
|
83
83
|
ex4nicegui/reactive/empty.py,sha256=kB851B12V1_VCNsFKW6OmjcdIiuZqGEGjLgA6k6yug8,132
|
|
84
84
|
ex4nicegui/reactive/fileWatcher.py,sha256=gjeZhgar02f-qGQa47Tj5SMaCP_ftRtSU898XUmXl1U,1472
|
|
85
|
-
ex4nicegui/reactive/local_file_picker.py,sha256=
|
|
86
|
-
ex4nicegui/reactive/mermaid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
85
|
+
ex4nicegui/reactive/local_file_picker.py,sha256=MoInXSauFdCuhYi_CmNKZwxAtsOqXh8roWWdqNwjPBY,6199
|
|
87
86
|
ex4nicegui/reactive/mermaid/mermaid.js,sha256=Ds5VevGWZE1_N0WKf-uITd8xSCO9gQzVUsmb80EajNY,2308
|
|
88
87
|
ex4nicegui/reactive/mermaid/mermaid.py,sha256=uP321QiNj_S5E5I2KF9h03WlSFdRITE8tvObGdk6m7M,2144
|
|
89
|
-
ex4nicegui/reactive/officials/
|
|
90
|
-
ex4nicegui/reactive/officials/
|
|
91
|
-
ex4nicegui/reactive/officials/
|
|
92
|
-
ex4nicegui/reactive/officials/button.py,sha256=Ut3B93a9zMCvvBPmVgQpecpR5owaO9_nDPfbdPB_amo,1701
|
|
88
|
+
ex4nicegui/reactive/officials/aggrid.py,sha256=AhDmbCUk8PU97eP25HCTYfGhdtKCZ6noLE3Snb2O6pU,2974
|
|
89
|
+
ex4nicegui/reactive/officials/base.py,sha256=4UWSB0q7nE-Z4bzAka5VyfNkO0CGF914-fiXihipAqA,14360
|
|
90
|
+
ex4nicegui/reactive/officials/button.py,sha256=TSq8PcebIbW_rjHNhzLiYbl9NhJDaNMz31-QTcL6hM8,1721
|
|
93
91
|
ex4nicegui/reactive/officials/card.py,sha256=8-tBwm3xfVybolQ87i8lAYUpBV6FdaVdeSH6xu0736U,1275
|
|
94
|
-
ex4nicegui/reactive/officials/checkbox.py,sha256=
|
|
95
|
-
ex4nicegui/reactive/officials/circular_progress.py,sha256=
|
|
96
|
-
ex4nicegui/reactive/officials/color_picker.py,sha256=
|
|
97
|
-
ex4nicegui/reactive/officials/column.py,sha256=
|
|
98
|
-
ex4nicegui/reactive/officials/date.py,sha256=
|
|
99
|
-
ex4nicegui/reactive/officials/drawer.py,sha256=
|
|
100
|
-
ex4nicegui/reactive/officials/echarts.py,sha256=
|
|
92
|
+
ex4nicegui/reactive/officials/checkbox.py,sha256=c_CDUlPx7izgaZY3Y4CaCIyxM3moQ0x_lLEs4MylSOc,1565
|
|
93
|
+
ex4nicegui/reactive/officials/circular_progress.py,sha256=B24s7zwLQB8C7ScHxjlLA0rrHCYXiWgk3-8WvuZrZpE,1790
|
|
94
|
+
ex4nicegui/reactive/officials/color_picker.py,sha256=FUuHhSQ96bCaVua5Cq28_V08PYIVOHFxygVawJkqo1I,3420
|
|
95
|
+
ex4nicegui/reactive/officials/column.py,sha256=Ox2OZRmKjAR8pRTWNXej8I-AYI8FGujIAhZyAoi9cNY,1109
|
|
96
|
+
ex4nicegui/reactive/officials/date.py,sha256=E5Xs4mJgknQzpBqW_lwJ8c3GZf8wlyi7xCPQrJ70MWE,2515
|
|
97
|
+
ex4nicegui/reactive/officials/drawer.py,sha256=_Ro6stOh8U3igYMeDwI4omBgi1nld5berrAk9Dv5RVw,2346
|
|
98
|
+
ex4nicegui/reactive/officials/echarts.py,sha256=YvoVfxRl2V93e6pC5l5O6-VJqMxvfwqEf0JLXv639UY,10072
|
|
101
99
|
ex4nicegui/reactive/officials/element.py,sha256=-qsHcxfF3fMfU0sJlKtTksX_wYPMIPJ_AgFcZbbI754,412
|
|
102
|
-
ex4nicegui/reactive/officials/expansion.py,sha256=
|
|
103
|
-
ex4nicegui/reactive/officials/grid.py,sha256=
|
|
100
|
+
ex4nicegui/reactive/officials/expansion.py,sha256=N0mp7_ZO0gHjGTAA69-mAdDCNZWr3FP_sqFL4-Rvhes,1898
|
|
101
|
+
ex4nicegui/reactive/officials/grid.py,sha256=ih2Ew4AMx6U6k3ZXwLstn9XH0OjNiWrK6lwdp1f3e6s,885
|
|
104
102
|
ex4nicegui/reactive/officials/html.js,sha256=lyvRAdMKZGOc7MPEapeU6WbOzq_MVzqzUJEhKuC8zWc,119
|
|
105
|
-
ex4nicegui/reactive/officials/html.py,sha256=
|
|
106
|
-
ex4nicegui/reactive/officials/icon.py,sha256=
|
|
107
|
-
ex4nicegui/reactive/officials/image.py,sha256=
|
|
108
|
-
ex4nicegui/reactive/officials/input.py,sha256=
|
|
109
|
-
ex4nicegui/reactive/officials/knob.py,sha256=
|
|
110
|
-
ex4nicegui/reactive/officials/label.py,sha256=
|
|
111
|
-
ex4nicegui/reactive/officials/linear_progress.py,sha256=
|
|
112
|
-
ex4nicegui/reactive/officials/number.py,sha256=
|
|
113
|
-
ex4nicegui/reactive/officials/radio.py,sha256=
|
|
114
|
-
ex4nicegui/reactive/officials/row.py,sha256=
|
|
115
|
-
ex4nicegui/reactive/officials/select.py,sha256=
|
|
116
|
-
ex4nicegui/reactive/officials/slider.py,sha256=
|
|
117
|
-
ex4nicegui/reactive/officials/switch.py,sha256=
|
|
118
|
-
ex4nicegui/reactive/officials/tab.py,sha256=
|
|
119
|
-
ex4nicegui/reactive/officials/tab_panel.py,sha256=
|
|
120
|
-
ex4nicegui/reactive/officials/tab_panels.py,sha256=
|
|
121
|
-
ex4nicegui/reactive/officials/table.py,sha256=
|
|
122
|
-
ex4nicegui/reactive/officials/tabs.py,sha256=
|
|
123
|
-
ex4nicegui/reactive/officials/textarea.py,sha256=
|
|
124
|
-
ex4nicegui/reactive/officials/upload.py,sha256=
|
|
125
|
-
ex4nicegui/reactive/
|
|
126
|
-
ex4nicegui/reactive/q_pagination.py,sha256=nBt9nA3NrRxYYol14JQZdOWXcPKog_7HUBnIGlRwckc,1554
|
|
103
|
+
ex4nicegui/reactive/officials/html.py,sha256=XrOpGoAJDo8dtTnZVLSmi7H5iHffmYpeZ94lXxHjBwI,629
|
|
104
|
+
ex4nicegui/reactive/officials/icon.py,sha256=cFrnWAuO-i5Aj_aHZ4yJrlaR0j4KitcL_EJ2cbduoQ8,1625
|
|
105
|
+
ex4nicegui/reactive/officials/image.py,sha256=ifuBU_RORV8FTG_3xKQtj6d5F5exz-nxqD70HKo0S7g,1121
|
|
106
|
+
ex4nicegui/reactive/officials/input.py,sha256=osu9HfT6W3zXhFkCLNIaN-q3LjlFvz6GknksO6h7r7Y,4044
|
|
107
|
+
ex4nicegui/reactive/officials/knob.py,sha256=5wQJxCWx45pi09c0jP-szbcch3YX_7He-3iL0bV7rCw,2154
|
|
108
|
+
ex4nicegui/reactive/officials/label.py,sha256=_t0SGYbaKlSiR4phfgoZlWUcvyZPH5yvWsKVsQraHLw,1478
|
|
109
|
+
ex4nicegui/reactive/officials/linear_progress.py,sha256=TAcy9iYnGmRldNyWvdzmL0VpVu6IFtkcF4nHsWoPBls,2194
|
|
110
|
+
ex4nicegui/reactive/officials/number.py,sha256=H5_6_NfcC4tosomHJXht9DHAF3q87zQKBIkPoKmHgZk,2786
|
|
111
|
+
ex4nicegui/reactive/officials/radio.py,sha256=N13zS2FVzA3gew77_OjRCyzdcnheGLAeGYlWK3CxGTc,1945
|
|
112
|
+
ex4nicegui/reactive/officials/row.py,sha256=fGNcEHS2sMT1GY33jpLTvUh-MjqdNSuyCrjgBXM-p2Q,1049
|
|
113
|
+
ex4nicegui/reactive/officials/select.py,sha256=japHOAIeFM860W9RCOXAQtMdslN9tLjxdYuzNZ3p4rM,2996
|
|
114
|
+
ex4nicegui/reactive/officials/slider.py,sha256=6dXVNsW1l0DN9ljC610FlR6wfVHfpv5xSQdkN7VaiAM,2961
|
|
115
|
+
ex4nicegui/reactive/officials/switch.py,sha256=9OtkOB1QD3wCEyPBwPvzAPyYJku5v5MvuTciNE9EQvo,1606
|
|
116
|
+
ex4nicegui/reactive/officials/tab.py,sha256=A83oxhlr8-YBeuUJTfPk05Kt9DeA5knNwbpwE5-i7Lk,1816
|
|
117
|
+
ex4nicegui/reactive/officials/tab_panel.py,sha256=Y05XTIOE6qXYZjcCoVIPm9lruyR7av58McRLmPc2yxg,650
|
|
118
|
+
ex4nicegui/reactive/officials/tab_panels.py,sha256=VND49QlINVBjMdaNiqI1UaDR2Rhk6tqt79ePl-jh1oA,2123
|
|
119
|
+
ex4nicegui/reactive/officials/table.py,sha256=oNOuG8rT0oKbnn-MpO2sRisdJwpGILDZkxk96g7GYtQ,6208
|
|
120
|
+
ex4nicegui/reactive/officials/tabs.py,sha256=w-wXIRUnYBgBDZDTNLhcUrIvP6rpiZRs0kd2GvJ7zPw,1301
|
|
121
|
+
ex4nicegui/reactive/officials/textarea.py,sha256=dCF_uNUIveK6Nuy-OxJDSb7jzPyw-rIsNw51uwsg090,3043
|
|
122
|
+
ex4nicegui/reactive/officials/upload.py,sha256=5SX2CFkf3s_4bPcnx0bmKRA4eYVlm0S8RBeQ7qHnqck,2395
|
|
123
|
+
ex4nicegui/reactive/q_pagination.py,sha256=hvX8abzp7nmeOy2gKwtNM6Dhpt7fYqw7d8YNHYAltx8,1560
|
|
127
124
|
ex4nicegui/reactive/rxui.py,sha256=gZ8ZEjGuJFKcedEZhcm4PIZguNkY-Wv5yQx80QnsBKI,31
|
|
125
|
+
ex4nicegui/reactive/scopedStyle.js,sha256=RtpfUwkpjMv_cbplkr2UtydKAxB5Dz7Sm6jRgPHRhow,1569
|
|
126
|
+
ex4nicegui/reactive/scopedStyle.py,sha256=lwykOybREj2mjjiN_oQ7S-TRda40kO-TxVlHtXF0M3c,633
|
|
127
|
+
ex4nicegui/reactive/services/color_service.py,sha256=UIQXP4PQ_l5601Opqw5T6E_wOyd3yt1dtMLmHdRP5L4,1746
|
|
128
|
+
ex4nicegui/reactive/services/pandas_service.py,sha256=XOoy6tZr4TpTyhewAH59eiSwVFxqwOipdM_j-mkGpdM,1043
|
|
129
|
+
ex4nicegui/reactive/services/reactive_service.py,sha256=cgw7Qirc70avsgvGuMT4RCT_mFouJb1-KR3dWOgucX8,2742
|
|
130
|
+
ex4nicegui/reactive/systems/color_system.py,sha256=zJvFd2UobkAtMN3yb6amGgHoR9BLyEiTSfLY-107r4w,542
|
|
131
|
+
ex4nicegui/reactive/systems/object_system.py,sha256=bja9YNb4v5fVZl5gJvVA4HbwRssRp-2yFy3JBzNeKxA,752
|
|
132
|
+
ex4nicegui/reactive/systems/reactive_system.py,sha256=EYDshl4UR9VheNcxcNHc231Dwko9VudilfMIxCD_uOk,685
|
|
128
133
|
ex4nicegui/reactive/transitionGroup.js,sha256=rbfNU3Jrz9WFDQih3BgZOgC1MBr6j9cODZ9XggMAaTs,898
|
|
129
134
|
ex4nicegui/reactive/transitionGroup.py,sha256=VWyYL3QUfX6YQXuxwBFF4sJ4P5VP1S-bCjLKUr28KEY,597
|
|
130
|
-
ex4nicegui/reactive/UseDraggable/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
135
|
ex4nicegui/reactive/UseDraggable/UseDraggable.js,sha256=xZm_g_L2lamxAjiAeGPDR0CNmjlvgzuiJ6gH77pNrg4,5473
|
|
132
136
|
ex4nicegui/reactive/UseDraggable/UseDraggable.py,sha256=Zh6NfQPSf3nMvCL8wDA4tjhyH7jfqt9cnbJ7L4cI-SU,3929
|
|
133
|
-
ex4nicegui/reactive/useMouse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
134
137
|
ex4nicegui/reactive/useMouse/UseMouse.js,sha256=6FjcYozJK5zFwK1kBP8JlfMyTUwKVK3k_0wSdhapaZs,2722
|
|
135
|
-
ex4nicegui/reactive/useMouse/UseMouse.py,sha256=
|
|
136
|
-
ex4nicegui/reactive/usePagination.py,sha256=
|
|
137
|
-
ex4nicegui/reactive/utils.py,sha256=DZ77y0qQAeHUb52yyCKlLE5_3MQlE_OAUH_M1s31_Qg,4360
|
|
138
|
+
ex4nicegui/reactive/useMouse/UseMouse.py,sha256=cFNlso7_BneyAfGmWbl-N9vQwGleV2ArsqdRBv_yS6Y,2126
|
|
139
|
+
ex4nicegui/reactive/usePagination.py,sha256=8YLqcZ_ecuX0FdQ0ct-XdEFfMAVkubAS_K02YOhg5oo,2584
|
|
138
140
|
ex4nicegui/reactive/vfor.js,sha256=xtKVUPSN0BP99H0BO6LRUYFqxqTGIRttQh5UjoUTwBc,282
|
|
139
|
-
ex4nicegui/reactive/vfor.py,sha256=
|
|
140
|
-
ex4nicegui/reactive/vmodel.py,sha256=
|
|
141
|
+
ex4nicegui/reactive/vfor.py,sha256=dBTxoXiR7lZMWp5dMQSLPhzTqRGeY7MnJPAVFEIXINg,5765
|
|
142
|
+
ex4nicegui/reactive/vmodel.py,sha256=cKfclpvUvQf_UYGLSYWOJVOJP2iPu8KvE7p6D-ZAHOg,5126
|
|
141
143
|
ex4nicegui/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
144
|
ex4nicegui/tools/debug.py,sha256=h9iYHxw7jWWvmiExSpGi2hQl1PfhPZgC2KNS_GTuHSw,4868
|
|
143
145
|
ex4nicegui/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -146,9 +148,13 @@ ex4nicegui/utils/asyncComputed.py,sha256=-v19ic20URewLkjbms5Teco1k8LPRnpP7usjrgo
|
|
|
146
148
|
ex4nicegui/utils/clientScope.py,sha256=AM5GQLXSIrLALnzz72ZmplykhKVhRjRxQdHdAeR7g7k,1719
|
|
147
149
|
ex4nicegui/utils/common.py,sha256=7P0vboDadLun6EMxNi3br9rKJgKt0QT4sy_66cHEwb4,994
|
|
148
150
|
ex4nicegui/utils/effect.py,sha256=MgvWuAP3OFs2bR4ef6uXPwGCkKORUK-4hmx1oSwl04Y,2310
|
|
151
|
+
ex4nicegui/utils/refComputed.py,sha256=Vb7fyi0wNieFeLfCjXl6wSzpws3i6_aeCka1s9dsc8E,4232
|
|
152
|
+
ex4nicegui/utils/refWrapper.py,sha256=gX5sdfC1P4UXmMYM6FwdImfLD39y02kq7Af6dIMDrZ8,1472
|
|
149
153
|
ex4nicegui/utils/scheduler.py,sha256=Wa963Df3UDvWHjXXoVYGIBevIILzCFoz-yAWjvxeyfQ,1218
|
|
150
|
-
ex4nicegui/utils/signals.py,sha256
|
|
151
|
-
ex4nicegui
|
|
152
|
-
ex4nicegui
|
|
153
|
-
ex4nicegui-0.6.
|
|
154
|
-
ex4nicegui-0.6.
|
|
154
|
+
ex4nicegui/utils/signals.py,sha256=t21k-XUjQpX0UlW_diyzx_OxNN1Al-kNqk4u8Wx0L14,7024
|
|
155
|
+
ex4nicegui/utils/types.py,sha256=pE5WOSbcTHxaAhnT24FaZEd1B2Z_lTcsd46w0OKiMyc,359
|
|
156
|
+
ex4nicegui/version.py,sha256=NE7u1piESstg3xCtf5hhV4iedGs2qJQw9SiC3ZSpiio,90
|
|
157
|
+
ex4nicegui-0.6.8.dist-info/LICENSE,sha256=0KDDElS2dl-HIsWvbpy8ywbLzJMBFzXLev57LnMIZXs,1094
|
|
158
|
+
ex4nicegui-0.6.8.dist-info/METADATA,sha256=NK_zTEIdCukO1X2BGBtmWUEb-DBzsnkU2roJLU7P73Q,29500
|
|
159
|
+
ex4nicegui-0.6.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
160
|
+
ex4nicegui-0.6.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
File without changes
|
|
File without changes
|
|
File without changes
|