ex4nicegui 0.6.3__py3-none-any.whl → 0.6.5__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 CHANGED
@@ -45,4 +45,4 @@ __all__ = [
45
45
  "is_setter_ref",
46
46
  ]
47
47
 
48
- __version__ = "0.6.3"
48
+ __version__ = "0.6.5"
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
  from typing import Callable, Dict, List, Optional, Set, cast, TYPE_CHECKING
3
3
  from ex4nicegui import to_ref, ref_computed, on, batch, effect
4
- from nicegui import context as ng_context, Client, ui
4
+ from nicegui import Client, ui
5
5
 
6
6
  from dataclasses import dataclass, field
7
7
  from . import types
@@ -149,7 +149,7 @@ class DataSource:
149
149
  self.__notify_update()
150
150
 
151
151
  def get_component_info_key(self, element_id: types._TElementID):
152
- client_id = ng_context.get_client().id
152
+ client_id = ui.context.client.id
153
153
  return ComponentInfoKey(client_id, element_id)
154
154
 
155
155
  def get_filtered_data(self, element: ui.element):
@@ -175,7 +175,7 @@ class DataSource:
175
175
  update_callback: Optional[_TComponentUpdateCallback] = None,
176
176
  ui_result: Optional[UiResult] = None,
177
177
  ):
178
- ng_client = ng_context.get_client()
178
+ ng_client = ui.context.client
179
179
  client_id = ng_client.id
180
180
 
181
181
  if not self._component_map.has_client_record(client_id):
@@ -198,7 +198,7 @@ class DataSource:
198
198
  filter: Optional[Filter],
199
199
  notify_update=True,
200
200
  ):
201
- client_id = ng_context.get_client().id
201
+ client_id = ui.context.client.id
202
202
  key = ComponentInfoKey(client_id, element_id)
203
203
 
204
204
  if not self._component_map.has_record(key):
@@ -216,7 +216,7 @@ class DataSource:
216
216
  return self
217
217
 
218
218
  def notify_update(self, exclude: Optional[List[UiResult]] = None):
219
- client_id = ng_context.get_client().id
219
+ client_id = ui.context.client.id
220
220
  exclude_infos = [
221
221
  self._component_map.get_info(ComponentInfoKey(client_id, ur.id))
222
222
  for ur in (exclude or [])
ex4nicegui/gsap/gsap.py CHANGED
@@ -2,7 +2,7 @@ import os
2
2
  from pathlib import Path
3
3
  from typing import Dict, Optional, Union
4
4
  from nicegui.element import Element
5
- from nicegui import context as ng_context
5
+ from nicegui import ui
6
6
  from weakref import WeakKeyDictionary
7
7
 
8
8
 
@@ -45,7 +45,7 @@ class Gsap(
45
45
  def fn():
46
46
  self.run_method("runScript", script)
47
47
 
48
- if ng_context.get_client().has_socket_connection:
48
+ if ui.context.client.has_socket_connection:
49
49
  fn()
50
50
  else:
51
51
  tasks = self._props["scriptTasks"]
@@ -55,7 +55,7 @@ class Gsap(
55
55
  def fn():
56
56
  self.run_method(name, targets, vars)
57
57
 
58
- if ng_context.get_client().has_socket_connection:
58
+ if ui.context.client.has_socket_connection:
59
59
  fn()
60
60
  else:
61
61
  tasks = self._props["tasks"]
@@ -66,7 +66,7 @@ __instance_map = WeakKeyDictionary()
66
66
 
67
67
 
68
68
  def _get_instance():
69
- current_client = ng_context.get_client()
69
+ current_client = ui.context.client
70
70
  ins = __instance_map.get(current_client)
71
71
 
72
72
  if not ins:
@@ -2,7 +2,7 @@ import os
2
2
  from pathlib import Path
3
3
  from typing import Dict, Optional, Union
4
4
  from nicegui.element import Element
5
- from nicegui import context as ng_context
5
+ from nicegui import ui
6
6
 
7
7
 
8
8
  class Timeline(
@@ -40,7 +40,7 @@ class Timeline(
40
40
  def fn():
41
41
  self.run_method("runScript", script)
42
42
 
43
- if ng_context.get_client().has_socket_connection:
43
+ if ui.context.client.has_socket_connection:
44
44
  fn()
45
45
  else:
46
46
  tasks = self._props["scriptTasks"]
@@ -52,7 +52,7 @@ class Timeline(
52
52
  def fn():
53
53
  self.run_method(name, targets, vars)
54
54
 
55
- if ng_context.get_client().has_socket_connection:
55
+ if ui.context.client.has_socket_connection:
56
56
  fn()
57
57
  else:
58
58
  tasks = self._props["tasks"]
@@ -16,7 +16,7 @@ from nicegui.events import (
16
16
  )
17
17
  from nicegui.element import Element
18
18
  from nicegui.awaitable_response import AwaitableResponse
19
- from nicegui import context as ng_context
19
+ from nicegui import ui
20
20
  from pathlib import Path
21
21
  import nicegui
22
22
  import uuid
@@ -102,7 +102,7 @@ class echarts(Element, component="ECharts.js", libraries=libraries): # type: ig
102
102
 
103
103
  client.connect_handlers.remove(on_client_connect) # type: ignore
104
104
 
105
- ng_context.get_client().on_connect(on_client_connect)
105
+ ui.context.client.on_connect(on_client_connect)
106
106
 
107
107
  def echartsOn_handler(e):
108
108
  callbackId = e.args["callbackId"]
@@ -176,7 +176,7 @@ class echarts(Element, component="ECharts.js", libraries=libraries): # type: ig
176
176
  handler: _T_echats_on_callback,
177
177
  query: Optional[Union[str, Dict]] = None,
178
178
  ):
179
- if not ng_context.get_client().has_socket_connection:
179
+ if not ui.context.client.has_socket_connection:
180
180
 
181
181
  def task_func():
182
182
  self.echarts_on(event_name, handler, query)
@@ -50,6 +50,7 @@ from .officials.tabs import TabsBindableUi as tabs
50
50
  from .officials.tab import TabBindableUi as tab
51
51
  from .officials.tab_panels import TabPanelsBindableUi as tab_panels
52
52
  from .officials.tab_panel import TabPanelBindableUi as tab_panel
53
+ from .officials.element import ElementBindableUi as element
53
54
  from .q_pagination import PaginationBindableUi as q_pagination
54
55
 
55
56
  from .local_file_picker import local_file_picker
@@ -67,6 +68,7 @@ pagination = q_pagination
67
68
 
68
69
 
69
70
  __all__ = [
71
+ "element",
70
72
  "tab_panels",
71
73
  "tab_panel",
72
74
  "tabs",
@@ -2,7 +2,7 @@ from pathlib import Path
2
2
  from typing import Any, Callable, Dict, List, Union, cast, Optional
3
3
  from typing_extensions import Literal
4
4
  from ex4nicegui.reactive.utils import ParameterClassifier
5
- from ex4nicegui.utils.apiEffect import ui_effect
5
+ from ex4nicegui.utils.signals import on
6
6
 
7
7
  from ex4nicegui.utils.signals import (
8
8
  ReadonlyRef,
@@ -10,6 +10,7 @@ from ex4nicegui.utils.signals import (
10
10
  ref_computed,
11
11
  _TMaybeRef as TMaybeRef,
12
12
  to_value,
13
+ to_raw,
13
14
  )
14
15
  from .base import BindableUi
15
16
  from ex4nicegui.reactive.EChartsComponent.ECharts import (
@@ -136,10 +137,10 @@ class EChartsBindableUi(BindableUi[echarts]):
136
137
  return super().bind_prop(prop, ref_ui)
137
138
 
138
139
  def bind_options(self, ref_ui: ReadonlyRef[Dict]):
139
- @ui_effect
140
+ @on(ref_ui)
140
141
  def _():
141
142
  ele = self.element
142
- ele.update_options(to_value(ref_ui), self.__update_setting)
143
+ ele.update_options(to_raw(to_value(ref_ui)), self.__update_setting)
143
144
  ele.update()
144
145
 
145
146
  return self
@@ -0,0 +1,19 @@
1
+ from typing import (
2
+ Any,
3
+ )
4
+ from nicegui import ui
5
+ from .base import BindableUi
6
+
7
+
8
+ class ElementBindableUi(BindableUi[ui.element]):
9
+ def __init__(self, tag: str) -> None:
10
+ element = ui.element(tag)
11
+
12
+ super().__init__(element)
13
+
14
+ def __enter__(self):
15
+ self.element.__enter__()
16
+ return self
17
+
18
+ def __exit__(self, *_: Any):
19
+ self.element.__exit__(*_)
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
  from nicegui.element import Element
3
- from nicegui import context
3
+ from nicegui import ui
4
4
  from ex4nicegui.utils.clientScope import _CLIENT_SCOPE_MANAGER
5
5
  from ex4nicegui.utils.signals import (
6
6
  TReadonlyRef,
@@ -158,7 +158,7 @@ class vfor(Generic[_T]):
158
158
  key, element, store, scope = build_element(idx, value)
159
159
  self._store_map[key] = StoreItem(store, element.id, scope)
160
160
 
161
- ng_client = context.get_client()
161
+ ng_client = ui.context.client
162
162
 
163
163
  @on(self._data, deep=True)
164
164
  def _():
@@ -1,6 +1,6 @@
1
1
  from typing import Dict
2
2
  from signe.core.scope import ScopeSuite
3
- from nicegui import Client, context as ng_context
3
+ from nicegui import Client, ui
4
4
 
5
5
 
6
6
  _TClientID = str
@@ -24,18 +24,19 @@ class NgClientScopeManager:
24
24
  # if len(ng_context.get_slot_stack()) <= 0:
25
25
  # return
26
26
 
27
- client = ng_context.get_client()
28
- # if client.shared:
29
- # return
27
+ client = ui.context.client
30
28
 
31
29
  if client.id not in self._client_scope_map:
32
30
  self._client_scope_map[client.id] = NgScopeSuite()
33
31
 
34
- @client.on_disconnect
35
- def _(e: Client):
36
- if e.id in self._client_scope_map:
37
- self._client_scope_map[e.id]._top_scope.dispose()
38
- del self._client_scope_map[e.id]
32
+ # shared clients always not dispose their scope
33
+ if not client.shared:
34
+
35
+ @client.on_disconnect
36
+ def _(e: Client):
37
+ if e.id in self._client_scope_map:
38
+ self._client_scope_map[e.id]._top_scope.dispose()
39
+ del self._client_scope_map[e.id]
39
40
 
40
41
  return self._client_scope_map[client.id]
41
42
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ex4nicegui
3
- Version: 0.6.3
3
+ Version: 0.6.5
4
4
  Summary: Extension library based on nicegui, providing data responsive,BI functionality modules
5
5
  Home-page:
6
6
  Author: carson_jia
@@ -15,7 +15,7 @@ Requires-Python: >=3.8
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  Requires-Dist: signe (>=0.4.14)
18
- Requires-Dist: nicegui (>=1.4.0)
18
+ Requires-Dist: nicegui (>=1.4.23)
19
19
  Requires-Dist: typing-extensions
20
20
  Requires-Dist: executing
21
21
 
@@ -1,6 +1,6 @@
1
- ex4nicegui/__init__.py,sha256=4qmuKMR7xYKdce4byUKEYP8jNnl6o_n-rxHZwFvCYCo,818
1
+ ex4nicegui/__init__.py,sha256=-00dmxm2M188iPRftlKHd-mU6A-FbezqyyvVluNDaD8,818
2
2
  ex4nicegui/bi/__init__.py,sha256=eu-2CuzzrcHCyKQOfoo87v6C9nSwFDdeLhjY0cRV13M,315
3
- ex4nicegui/bi/dataSource.py,sha256=sQzuQvNWBf20n9cz--1OX5gxT6RUAhwrq_xTQEpSa0o,7691
3
+ ex4nicegui/bi/dataSource.py,sha256=hOOUN4PpSfPx4Vp1sg9Sfxi5K-wROw9C22Z-mmNXs6w,7644
4
4
  ex4nicegui/bi/dataSourceFacade.py,sha256=6NuAyrTIk_L2Tz9IRFpuHKRQY_OwJINDzxoM6JYOc14,8186
5
5
  ex4nicegui/bi/index.py,sha256=ZuwFxUD1KcxBpKvTLO7CGQQ5gN7FDpaHo9tfAS3UpQ4,2067
6
6
  ex4nicegui/bi/protocols.py,sha256=SjwYrS21L6dcNfYrLvh5pESya0NIa6ihQ6URMU6z-6Q,4529
@@ -23,9 +23,9 @@ ex4nicegui/experimental_/__init__.py,sha256=HODL0f70HUzVrfRwUzdCwxTp_9mYr4D1nnzd
23
23
  ex4nicegui/experimental_/gridLayout/__init__.py,sha256=c9k-zykhKW3Ol6QECUoKqJW9QEuhA9xPi8s4Dm4m7SU,125
24
24
  ex4nicegui/experimental_/gridLayout/index.py,sha256=zFXuvFroo5EC1CFjt-b4hMiEy67hGP5J1GYTKH6kpUU,4737
25
25
  ex4nicegui/gsap/__init__.py,sha256=xBApQlq9st9exhgcSkqCzWeS6bc1eKiPJfYP25MSInw,218
26
- ex4nicegui/gsap/gsap.py,sha256=-1sncG2_37LYN6RosnHZAgYSI899HMj9FB6MQWUj8yw,4675
26
+ ex4nicegui/gsap/gsap.py,sha256=JM3xM9OjjmUMSV-be5-H-geiw61xDU3ZljDyl8yyZAU,4638
27
27
  ex4nicegui/gsap/timeline.js,sha256=CB300drH7UUSfy_WDeuWHSNh3WX-vwbRtKBLL1Ak43o,1241
28
- ex4nicegui/gsap/timeline.py,sha256=B3CvN83CzJMMFMVdZZC2UHR0l_I90amRQ0Sf-P623zo,2421
28
+ ex4nicegui/gsap/timeline.py,sha256=EfJ3Iom3EbJMML8PnRDAO_nn58j2bone3uWrd3UubeU,2390
29
29
  ex4nicegui/gsap/wrapGsap.js,sha256=0Iz7qh8aA-h3svV7fW4U5k_pX7zXCcIdHDaG7NNvgLU,1045
30
30
  ex4nicegui/layout/__init__.py,sha256=YT76Ec7p4aFOGms6wc19207flBeyI6jrq7Kg_FQ2wnQ,278
31
31
  ex4nicegui/layout/gridFlex/GridFlex.js,sha256=ljkxGFucBUIPksMAT5w_35sxGogC7OzxzXnOw21Z3_k,4468
@@ -66,7 +66,7 @@ ex4nicegui/libs/gsap/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
66
66
  ex4nicegui/libs/gsap/utils/matrix.js,sha256=77scrxbQZXx4ex5HkvnT9IkhMG1rQoDNp4TSYgUeYVk,15235
67
67
  ex4nicegui/libs/gsap/utils/paths.js,sha256=2SPaRHQ7zgba9cH8hGhkTYPCZdrrEhE2qhh6ECAEvSA,49314
68
68
  ex4nicegui/libs/gsap/utils/strings.js,sha256=47G9slz5ltG9mDSwrfQDtWzzdV5QJ-AIMLRMNK0VSiM,10472
69
- ex4nicegui/reactive/__init__.py,sha256=PxPRQonNUdgz6Kp6eP0QaYp09tM_zN-S0V9LncYrXS4,3637
69
+ ex4nicegui/reactive/__init__.py,sha256=-FC9JUa7bMqozkbbKlpWJB7WY8HuojAINgAD8ZcxHdY,3714
70
70
  ex4nicegui/reactive/empty.js,sha256=Y-caS4CN8jUq59LgGgcvgfkndze-RgWF_ZMmAcxOrbw,50
71
71
  ex4nicegui/reactive/empty.py,sha256=kB851B12V1_VCNsFKW6OmjcdIiuZqGEGjLgA6k6yug8,132
72
72
  ex4nicegui/reactive/fileWatcher.py,sha256=gjeZhgar02f-qGQa47Tj5SMaCP_ftRtSU898XUmXl1U,1472
@@ -78,10 +78,10 @@ ex4nicegui/reactive/transitionGroup.py,sha256=VWyYL3QUfX6YQXuxwBFF4sJ4P5VP1S-bCj
78
78
  ex4nicegui/reactive/usePagination.py,sha256=Gop9KV780DcQK5bH4zQZ5sRpV3jOD2sRX_Bpmb1LTFI,2598
79
79
  ex4nicegui/reactive/utils.py,sha256=DZ77y0qQAeHUb52yyCKlLE5_3MQlE_OAUH_M1s31_Qg,4360
80
80
  ex4nicegui/reactive/vfor.js,sha256=xtKVUPSN0BP99H0BO6LRUYFqxqTGIRttQh5UjoUTwBc,282
81
- ex4nicegui/reactive/vfor.py,sha256=MirlPrwDSy0YR85i4wcGGGX4QjuN5iek3fIxhIpFbGo,5786
81
+ ex4nicegui/reactive/vfor.py,sha256=LntYIilx3JoeGjplRKLgW9cxzX9uRw27n6YRF9ROxN8,5778
82
82
  ex4nicegui/reactive/vmodel.py,sha256=SgmchPVfM6uQAH60VlVyNobfuTg3ScuxlXNFJLRD-r8,5091
83
83
  ex4nicegui/reactive/EChartsComponent/ECharts.js,sha256=HMmgXlDl548H4JpozDSbLWv-opvPi3OdJz_XY_MHbnY,3326
84
- ex4nicegui/reactive/EChartsComponent/ECharts.py,sha256=hoUZ7h-KOUKNd-1BybSX4xxv33gYuTkky70yEzv-oIA,6344
84
+ ex4nicegui/reactive/EChartsComponent/ECharts.py,sha256=PbRChy9bgJndizyahDUxaV8LYN7sGH_A8licXA2DAC8,6313
85
85
  ex4nicegui/reactive/EChartsComponent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  ex4nicegui/reactive/UseDraggable/UseDraggable.js,sha256=xZm_g_L2lamxAjiAeGPDR0CNmjlvgzuiJ6gH77pNrg4,5473
87
87
  ex4nicegui/reactive/UseDraggable/UseDraggable.py,sha256=Zh6NfQPSf3nMvCL8wDA4tjhyH7jfqt9cnbJ7L4cI-SU,3929
@@ -103,7 +103,8 @@ ex4nicegui/reactive/officials/color_picker.py,sha256=fSRICdzdH16w3BIGyAk3CtaauYq
103
103
  ex4nicegui/reactive/officials/column.py,sha256=CfoJigEdpRoGaJTY_O7wbK8cp8ufX8mYUKNRUnPWUr0,1040
104
104
  ex4nicegui/reactive/officials/date.py,sha256=jp75WgZaICnCHLS_wpF3uJI2kaGeNqmRLj3qpn5IIyg,2681
105
105
  ex4nicegui/reactive/officials/drawer.py,sha256=y9_gbDDy_6Y7mRfSB8BGawM-_g6kECM1ieZXMX2YCQo,2370
106
- ex4nicegui/reactive/officials/echarts.py,sha256=rBYHL6K_uAp4A4r_qacXt_bFukOMPWxdN_9xjEXG4RY,9683
106
+ ex4nicegui/reactive/officials/echarts.py,sha256=btLYAqYuWv_zlX3KJH-L_rofx8HblYbscnVDf-bz23w,9696
107
+ ex4nicegui/reactive/officials/element.py,sha256=-qsHcxfF3fMfU0sJlKtTksX_wYPMIPJ_AgFcZbbI754,412
107
108
  ex4nicegui/reactive/officials/expansion.py,sha256=pAFGaj_N88KLNPw2476lthyZbCOa3APlMtHsgRT9rWI,1873
108
109
  ex4nicegui/reactive/officials/grid.py,sha256=z3mdvDnpxKECtvioTgGXROc1kcAugNCBOvwZ7NCpQHI,865
109
110
  ex4nicegui/reactive/officials/html.js,sha256=lyvRAdMKZGOc7MPEapeU6WbOzq_MVzqzUJEhKuC8zWc,119
@@ -136,13 +137,13 @@ ex4nicegui/tools/debug.py,sha256=h9iYHxw7jWWvmiExSpGi2hQl1PfhPZgC2KNS_GTuHSw,486
136
137
  ex4nicegui/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
138
  ex4nicegui/utils/apiEffect.py,sha256=tAvQ-6sbSbZBZ1bibdAdQNb_BjrUF1uALwOkAdV_Y8M,2527
138
139
  ex4nicegui/utils/asyncComputed.py,sha256=-v19ic20URewLkjbms5Teco1k8LPRnpP7usjrgo1pRU,1505
139
- ex4nicegui/utils/clientScope.py,sha256=-KJnrZGqdAQUNNbQbqMAqNzWHCVon-lC3aaQGuaTdxI,1225
140
+ ex4nicegui/utils/clientScope.py,sha256=ekS3thfir7iQ1L3wHbe4gJ3FhQjRcM3PLn6QCJ8wDNw,1267
140
141
  ex4nicegui/utils/common.py,sha256=7P0vboDadLun6EMxNi3br9rKJgKt0QT4sy_66cHEwb4,994
141
142
  ex4nicegui/utils/effect.py,sha256=MgvWuAP3OFs2bR4ef6uXPwGCkKORUK-4hmx1oSwl04Y,2310
142
143
  ex4nicegui/utils/scheduler.py,sha256=Wa963Df3UDvWHjXXoVYGIBevIILzCFoz-yAWjvxeyfQ,1218
143
144
  ex4nicegui/utils/signals.py,sha256=-80iaAzIyUDR_7LBr8TfOY59Fj4dSq92klWXoRy538g,11346
144
- ex4nicegui-0.6.3.dist-info/LICENSE,sha256=0KDDElS2dl-HIsWvbpy8ywbLzJMBFzXLev57LnMIZXs,1094
145
- ex4nicegui-0.6.3.dist-info/METADATA,sha256=wmIPVn_YKEZWuMghpS4n3k86j___PqFROxrmOR9CQrc,27618
146
- ex4nicegui-0.6.3.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
147
- ex4nicegui-0.6.3.dist-info/top_level.txt,sha256=VFwMiO9AFjj5rfLMJwN1ipLRASk9fJXB8tM6DNrpvPQ,11
148
- ex4nicegui-0.6.3.dist-info/RECORD,,
145
+ ex4nicegui-0.6.5.dist-info/LICENSE,sha256=0KDDElS2dl-HIsWvbpy8ywbLzJMBFzXLev57LnMIZXs,1094
146
+ ex4nicegui-0.6.5.dist-info/METADATA,sha256=jhr7cj9AuuCJdsuZZRSoHb7Fw9vgbYLAMivi7kNHYzs,27619
147
+ ex4nicegui-0.6.5.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
148
+ ex4nicegui-0.6.5.dist-info/top_level.txt,sha256=VFwMiO9AFjj5rfLMJwN1ipLRASk9fJXB8tM6DNrpvPQ,11
149
+ ex4nicegui-0.6.5.dist-info/RECORD,,