instaui 0.1.15__py2.py3-none-any.whl → 0.1.17__py2.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.
instaui/ui/__init__.py CHANGED
@@ -61,7 +61,6 @@ __all__ = [
61
61
  "skip_output",
62
62
  "js_output",
63
63
  "str_format",
64
- "url_location",
65
64
  "on_page_request_lifespan",
66
65
  "webview",
67
66
  "code",
@@ -69,6 +68,7 @@ __all__ = [
69
68
  "echarts",
70
69
  "use_shadcn_classless",
71
70
  "mermaid",
71
+ "timer",
72
72
  ]
73
73
 
74
74
  # -- static imports
@@ -107,6 +107,7 @@ from instaui.components.vif import VIf as vif
107
107
  from instaui.components.match import Match as match
108
108
  from instaui.components.content import Content as content
109
109
  from instaui.components.label import label
110
+ from instaui.components.timer.timer import Timer as timer
110
111
 
111
112
  from instaui.event.web_event import event, WebEvent as TEventFn
112
113
  from instaui.event.js_event import js_event
@@ -126,7 +127,6 @@ import instaui.experimental as experimental
126
127
 
127
128
  from instaui.ui_functions.server import create_server as server
128
129
  from instaui.ui_functions.ui_page import page
129
- from instaui.ui_functions.url_location import UrlLocation as url_location
130
130
  from instaui.ui_functions.str_format import str_format
131
131
  from instaui.ui_functions.ui_types import TBindable, is_bindable
132
132
 
instaui/ui/__init__.pyi CHANGED
@@ -61,7 +61,6 @@ __all__ = [
61
61
  "skip_output",
62
62
  "js_output",
63
63
  "str_format",
64
- "url_location",
65
64
  "on_page_request_lifespan",
66
65
  "webview",
67
66
  "code",
@@ -69,6 +68,7 @@ __all__ = [
69
68
  "echarts",
70
69
  "use_shadcn_classless",
71
70
  "mermaid",
71
+ "timer",
72
72
  ]
73
73
 
74
74
  # -- static imports
@@ -107,6 +107,7 @@ from instaui.components.vif import VIf as vif
107
107
  from instaui.components.match import Match as match
108
108
  from instaui.components.content import Content as content
109
109
  from instaui.components.label import label
110
+ from instaui.components.timer.timer import Timer as timer
110
111
 
111
112
  from instaui.event.web_event import event, WebEvent as TEventFn
112
113
  from instaui.event.js_event import js_event
@@ -126,7 +127,6 @@ import instaui.experimental as experimental
126
127
 
127
128
  from instaui.ui_functions.server import create_server as server
128
129
  from instaui.ui_functions.ui_page import page
129
- from instaui.ui_functions.url_location import UrlLocation as url_location
130
130
  from instaui.ui_functions.str_format import str_format
131
131
  from instaui.ui_functions.ui_types import TBindable, is_bindable
132
132
 
@@ -6,7 +6,10 @@ from instaui.common.jsonable import Jsonable
6
6
  from instaui.runtime._app import get_current_scope
7
7
  from instaui.vars.path_var import PathVar
8
8
  from instaui.vars.mixin_types.var_type import VarMixin
9
- from instaui.vars.mixin_types.element_binding import ElementBindingMixin
9
+ from instaui.vars.mixin_types.element_binding import (
10
+ ElementBindingMixin,
11
+ _try_mark_inputs_used,
12
+ )
10
13
  from instaui.vars.mixin_types.py_binding import CanInputMixin
11
14
  from instaui.vars.mixin_types.pathable import CanPathPropMixin
12
15
  from instaui.vars.mixin_types.str_format_binding import StrFormatBindingMixin
@@ -55,6 +58,7 @@ class JsComputed(
55
58
  deep_compare_on_input: bool = False,
56
59
  ) -> None:
57
60
  self.code = code
61
+ self._org_inputs = inputs or []
58
62
 
59
63
  scope = get_current_scope()
60
64
  scope.register_js_computed(self)
@@ -67,6 +71,7 @@ class JsComputed(
67
71
 
68
72
  self._async_init_value = async_init_value
69
73
  self._deep_compare_on_input = deep_compare_on_input
74
+ self.__be_used = False
70
75
 
71
76
  def __to_binding_config(self):
72
77
  return {
@@ -90,6 +95,16 @@ class JsComputed(
90
95
  def _to_observable_config(self):
91
96
  return self.__to_binding_config()
92
97
 
98
+ def _mark_used(self):
99
+ if self.__be_used:
100
+ return
101
+
102
+ self.__be_used = True
103
+ _try_mark_inputs_used(self._org_inputs)
104
+
105
+ def _is_used(self):
106
+ return self.__be_used
107
+
93
108
  def _to_json_dict(self):
94
109
  data = super()._to_json_dict()
95
110
 
@@ -1,4 +1,4 @@
1
- from typing import Dict, Generic, TypeVar
1
+ from typing import Dict, Generic, Iterable, TypeVar
2
2
  from abc import ABC, abstractmethod
3
3
 
4
4
  T = TypeVar("T")
@@ -14,3 +14,9 @@ class ElementBindingMixin(ABC, Generic[T]):
14
14
 
15
15
  def _is_used(self):
16
16
  return True
17
+
18
+
19
+ def _try_mark_inputs_used(inputs: Iterable):
20
+ for input_ in inputs:
21
+ if isinstance(input_, ElementBindingMixin):
22
+ input_._mark_used()
instaui/vars/path_var.py CHANGED
@@ -13,8 +13,8 @@ class PathVar(PathableMixin):
13
13
  def __getitem__(self, item: Union[str, int, CanPathPropMixin]):
14
14
  return PathTrackerBindable(self)[item]
15
15
 
16
- def inverse(self):
17
- return PathTrackerBindable(self).inverse()
16
+ def not_(self):
17
+ return PathTrackerBindable(self).not_()
18
18
 
19
19
  def __add__(self, other: str):
20
20
  return PathTrackerBindable(self) + other
@@ -33,7 +33,7 @@ class PathTracker:
33
33
  def __getattr__(self, key) -> Self:
34
34
  return self.__new_self__([*self.paths, key])
35
35
 
36
- def inverse(self) -> Self:
36
+ def not_(self) -> Self:
37
37
  return self.__new_self__([*self.paths, ["!"]])
38
38
 
39
39
  def __add__(self, other: str) -> Self:
instaui/vars/ref.py CHANGED
@@ -37,13 +37,16 @@ class Ref(
37
37
  ):
38
38
  VAR_TYPE = "var"
39
39
 
40
- def __init__(self, value: Optional[_T_Value] = None) -> None:
40
+ def __init__(
41
+ self, value: Optional[_T_Value] = None, *, deep_compare: bool = False
42
+ ) -> None:
41
43
  self.value = value # type: ignore
42
44
  scope = get_current_scope()
43
45
  scope.register_ref(self)
44
46
 
45
47
  self._sid = scope.id
46
48
  self._id = scope.generate_vars_id()
49
+ self._deep_compare = deep_compare
47
50
  self._debounced = None
48
51
 
49
52
  def debounced(self, secounds: float):
@@ -83,6 +86,9 @@ class Ref(
83
86
  if self._debounced is not None:
84
87
  data["debounced"] = self._debounced
85
88
 
89
+ if self._deep_compare is True:
90
+ data["deepCompare"] = True
91
+
86
92
  return data
87
93
 
88
94
 
@@ -90,14 +96,18 @@ TRef = Ref
90
96
 
91
97
 
92
98
  @overload
93
- def ref(value: Ref[_T_Value]) -> Ref[_T_Value]: ...
99
+ def ref(value: Ref[_T_Value], *, deep_compare: bool = False) -> Ref[_T_Value]: ...
94
100
 
95
101
 
96
102
  @overload
97
- def ref(value: Optional[_T_Value] = None) -> Ref[_T_Value]: ...
103
+ def ref(
104
+ value: Optional[_T_Value] = None, *, deep_compare: bool = False
105
+ ) -> Ref[_T_Value]: ...
98
106
 
99
107
 
100
- def ref(value: Union[Ref[_T_Value], _T_Value, None] = None):
108
+ def ref(
109
+ value: Union[Ref[_T_Value], _T_Value, None] = None, *, deep_compare: bool = False
110
+ ):
101
111
  if isinstance(value, Ref):
102
112
  return value
103
- return Ref(value)
113
+ return Ref(value, deep_compare=deep_compare)
instaui/vars/state.py CHANGED
@@ -25,9 +25,9 @@ class RefProxy(
25
25
  ElementBindingMixin,
26
26
  Jsonable,
27
27
  ):
28
- def __init__(self, instance: BaseModel) -> None:
28
+ def __init__(self, instance: BaseModel, *, deep_compare: bool = False) -> None:
29
29
  data = instance.model_dump()
30
- self._ref_ = ui.ref(data)
30
+ self._ref_ = ui.ref(data, deep_compare=deep_compare)
31
31
  self._prop_names_ = set(data.keys()) if isinstance(data, dict) else set()
32
32
 
33
33
  def __getattribute__(self, name):
@@ -77,7 +77,7 @@ class StateModel(BaseModel, Jsonable):
77
77
  return self.model_dump()
78
78
 
79
79
 
80
- def state(value: _T) -> _T:
80
+ def state(value: _T, *, deep_compare: bool = False) -> _T:
81
81
  """
82
82
  Creates a reactive state object that tracks changes and notifies dependencies.
83
83
 
@@ -93,5 +93,5 @@ def state(value: _T) -> _T:
93
93
  html.number(count)
94
94
  ui.label(count)
95
95
  """
96
- obj = RefProxy(_ProxyModel(value)) # type: ignore
96
+ obj = RefProxy(_ProxyModel(value), deep_compare=deep_compare) # type: ignore
97
97
  return obj # type: ignore
@@ -6,7 +6,10 @@ from instaui.common.jsonable import Jsonable
6
6
  from instaui.runtime._app import get_current_scope
7
7
  from instaui.vars.path_var import PathVar
8
8
  from instaui.vars.mixin_types.var_type import VarMixin
9
- from instaui.vars.mixin_types.element_binding import ElementBindingMixin
9
+ from instaui.vars.mixin_types.element_binding import (
10
+ ElementBindingMixin,
11
+ _try_mark_inputs_used,
12
+ )
10
13
  from instaui.vars.mixin_types.py_binding import CanInputMixin
11
14
  from instaui.vars.mixin_types.pathable import CanPathPropMixin
12
15
  from instaui.vars.mixin_types.str_format_binding import StrFormatBindingMixin
@@ -31,11 +34,13 @@ class VueComputed(
31
34
  bindings: Optional[Mapping[str, Union[ElementBindingMixin, Any]]] = None,
32
35
  ) -> None:
33
36
  self.code = fn_code
37
+ self._bindings = bindings
34
38
  scope = get_current_scope()
35
39
  scope.register_vue_computed(self)
36
40
 
37
41
  self._sid = scope.id
38
42
  self._id = scope.generate_vars_id()
43
+ self.__be_used = False
39
44
 
40
45
  if bindings:
41
46
  const_bind = []
@@ -71,10 +76,21 @@ class VueComputed(
71
76
  def _to_observable_config(self):
72
77
  return self.__to_binding_config()
73
78
 
79
+ def _mark_used(self):
80
+ if self.__be_used:
81
+ return
82
+
83
+ self.__be_used = True
84
+ _try_mark_inputs_used((self._bindings or {}).values())
85
+
86
+ def _is_used(self):
87
+ return self.__be_used
88
+
74
89
  def _to_json_dict(self):
75
90
  data = super()._to_json_dict()
76
91
  data["sid"] = self._sid
77
92
  data["id"] = self._id
93
+ _try_mark_inputs_used((self._bindings or {}).values())
78
94
  return data
79
95
 
80
96
 
@@ -17,7 +17,10 @@ from instaui.handlers import watch_handler
17
17
 
18
18
  from instaui.vars.path_var import PathVar
19
19
  from instaui.vars.mixin_types.py_binding import CanInputMixin, CanOutputMixin
20
- from instaui.vars.mixin_types.element_binding import ElementBindingMixin
20
+ from instaui.vars.mixin_types.element_binding import (
21
+ ElementBindingMixin,
22
+ _try_mark_inputs_used,
23
+ )
21
24
  from instaui.vars.mixin_types.pathable import CanPathPropMixin
22
25
  from instaui.vars.mixin_types.str_format_binding import StrFormatBindingMixin
23
26
  from instaui.vars.mixin_types.observable import ObservableMixin
@@ -146,9 +149,7 @@ class WebComputed(
146
149
  return
147
150
 
148
151
  self.__be_used = True
149
- for input_ in self._org_inputs:
150
- if isinstance(input_, ElementBindingMixin):
151
- input_._mark_used()
152
+ _try_mark_inputs_used(self._org_inputs)
152
153
 
153
154
  def _is_used(self):
154
155
  return self.__be_used
instaui/watch/js_watch.py CHANGED
@@ -6,6 +6,7 @@ from instaui.common.jsonable import Jsonable
6
6
  from instaui.runtime._app import get_current_scope
7
7
 
8
8
  from instaui.vars.mixin_types.py_binding import CanOutputMixin
9
+ from instaui.vars.mixin_types.element_binding import _try_mark_inputs_used
9
10
  from instaui.vars.mixin_types.common_type import TObservableInput
10
11
  from instaui._helper import observable_helper
11
12
 
@@ -21,6 +22,7 @@ class JsWatch(Jsonable):
21
22
  once: bool = False,
22
23
  flush: typing.Optional[_types.TFlush] = None,
23
24
  ) -> None:
25
+ _try_mark_inputs_used(inputs or [])
24
26
  inputs = observable_helper.auto_made_inputs_to_slient(inputs, outputs)
25
27
 
26
28
  get_current_scope().register_js_watch(self)
@@ -10,7 +10,7 @@ from instaui.runtime._app import get_app_slot, get_current_scope
10
10
  from instaui.handlers import watch_handler
11
11
 
12
12
  from instaui.vars.mixin_types.py_binding import CanOutputMixin
13
- from instaui.vars.mixin_types.element_binding import ElementBindingMixin
13
+ from instaui.vars.mixin_types.element_binding import _try_mark_inputs_used
14
14
  from instaui.vars.mixin_types.common_type import TObservableInput
15
15
  from instaui._helper import observable_helper
16
16
 
@@ -33,7 +33,7 @@ class WebWatch(Jsonable, typing.Generic[P, R]):
33
33
  flush: typing.Optional[_types.TFlush] = None,
34
34
  _debug: typing.Optional[typing.Any] = None,
35
35
  ) -> None:
36
- self.__org_inputs = inputs or []
36
+ _try_mark_inputs_used(inputs or [])
37
37
  inputs = observable_helper.auto_made_inputs_to_slient(inputs, outputs)
38
38
 
39
39
  get_current_scope().register_web_watch(self)
@@ -58,10 +58,6 @@ class WebWatch(Jsonable, typing.Generic[P, R]):
58
58
 
59
59
  app = get_app_slot()
60
60
 
61
- for _input in self.__org_inputs:
62
- if isinstance(_input, ElementBindingMixin):
63
- _input._mark_used()
64
-
65
61
  if app.mode == "web":
66
62
  hkey = watch_handler.create_handler_key(
67
63
  page_path=app.page_path,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: instaui
3
- Version: 0.1.15
3
+ Version: 0.1.17
4
4
  Summary: insta-ui is a Python-based UI library for rapidly building user interfaces.
5
5
  Author-email: CrystalWindSnake <568166495@qq.com>
6
6
  License-Expression: MIT
@@ -8,6 +8,9 @@ instaui/page_info.py,sha256=aJtfLp2h05tCuLzxk2pZ6a9ztyxSdI-g3NBRxbqpS6E,269
8
8
  instaui/skip.py,sha256=uqhqusgeChVoivKFMoZd-XePYrlSoLvUzRZDBcUgFmA,149
9
9
  instaui/version.py,sha256=to8l16EjNe4jmzK316s5ZIotjv554tqF0VfwA1tBhQk,87
10
10
  instaui/_helper/observable_helper.py,sha256=U30PmA8jZ9q48GI_FMNPRYUTKNdl4SsMTAFoq94eRFs,1447
11
+ instaui/action/__init__.py,sha256=YJQlCwJhQ4py5hAsfsgVUgfa9V2jNnu0pLlMFr5zXY0,219
12
+ instaui/action/cookie.py,sha256=UD4QbgxX3Ty5gXrE4_PmLjrQWV819qEtXO17c7h6Vc8,551
13
+ instaui/action/url_location.py,sha256=zyTAJpA-3GBBe7WAiP2IDKQxeQhu0LNgBOxwEzcDaDk,823
11
14
  instaui/arco/__init__.py,sha256=_QuzxGbuQKuq9hjem65NKqYwiKDAP_3ZVPHy75Idw_s,6155
12
15
  instaui/arco/_settings.py,sha256=iuWQb-sGNlw4fBxf-Ufj-YGnBXaGVJIDMgPuVg9ZJ38,771
13
16
  instaui/arco/component_types.py,sha256=wAJvOw4SGbf8bcC3QTdJonsWk5SsRVui-imsKdg-Nzo,39397
@@ -63,8 +66,8 @@ instaui/arco/components/pagination.py,sha256=SOim-t1TE25OkhH4IRavalXLz1TSVgOfVLS
63
66
  instaui/arco/components/pop_confirm.py,sha256=Q96oCK88FjNBesC9VZhv8dWuxlEMTqa-SIBV2fGbNBM,1490
64
67
  instaui/arco/components/popover.py,sha256=pfJBqvTOi4BzPGNHw6EjkXs7c7nOjLgeqBpCcwm9IUQ,955
65
68
  instaui/arco/components/progress.py,sha256=uB0HnUCug_FZdDaKUGiIkmECwV3jPBOOEpovrxV-Cck,388
66
- instaui/arco/components/radio.py,sha256=w0v8Uh70MFjRFKzVKZTYa0V7aFW90IW4KAzcCjOBQFI,1096
67
- instaui/arco/components/radio_group.py,sha256=3LhRaljmD83cR5KAy0492zy62hRde6TTQF-VqkF1Wos,1290
69
+ instaui/arco/components/radio.py,sha256=ds4TxOpEksuQALnfpIqg21EhphRKZluGCf80yZxiGw8,1564
70
+ instaui/arco/components/radio_group.py,sha256=QdZvt3PbnXaMbwErQGALEMsQZiWL2irGkISitgB7vI0,1234
68
71
  instaui/arco/components/rate.py,sha256=GLALtLZ1-1xklnnGKZf02KOLJga-IWVB-l_XSrQoQMs,1163
69
72
  instaui/arco/components/resize_box.py,sha256=imq3YgcLtaeFChZFvC-jflCaJxq0hY_cnK4TCN7s3j4,1678
70
73
  instaui/arco/components/result.py,sha256=QEkQeTujw4P9GtsAziUHDT3UqoRjCcVS2MdZDtT2a8U,382
@@ -102,7 +105,7 @@ instaui/arco/static/instaui-arco.js,sha256=PktbvZE6yids2NyfSKo81g--fCo-AiNEdOgvv
102
105
  instaui/common/jsonable.py,sha256=efzn_IvfrsaNKjc3B3UzshoMvsqSsB-jnD2Aia8YMYM,902
103
106
  instaui/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
107
  instaui/components/column.py,sha256=t_kDAelb-5_aqx4hv19sOm8zcQpRmn-slTMcwZfMOLk,848
105
- instaui/components/component.py,sha256=cfKWlhxATdvERSzsVzvLtm61f72_gblhLJXIrXLGQrk,1284
108
+ instaui/components/component.py,sha256=peaC_t1I-tAIS43U1cZ_UrrxVSO7exoorQAr4jqPoxU,1364
106
109
  instaui/components/content.py,sha256=f6dm0GukYJk4RRNJzuvOGqBrStLWkJQbLkV7M5fJ63k,1094
107
110
  instaui/components/directive.py,sha256=bHSOWXNhzWRVNqLXwhc_hY3R3g-JAQ5DWIqpZkI6_wI,1411
108
111
  instaui/components/element.py,sha256=pPbiJ84D2MZoNE4MZdiMuE_riwuv8PRibOhRbAx7NNA,17691
@@ -115,7 +118,7 @@ instaui/components/transition_group.py,sha256=H9zx9NTlCoQnBArWfmxmh7CMKb5hZn8vKr
115
118
  instaui/components/value_element.py,sha256=wRIAaR3_Cq9qLNJw2KPhWt7dJmclj1mrttzlGpb01Y0,1412
116
119
  instaui/components/vfor.py,sha256=1KeJ0-XMmxJuaZIuOqyOZjh6Y5rDAdAewr6HEqL8N_M,4125
117
120
  instaui/components/vif.py,sha256=jG0xa-DFU9gegJp-S6Br-FX0TZfg5AdVx7z0sNkFNYk,1313
118
- instaui/components/html/__init__.py,sha256=9bO1ai0aQCWwj80NKqDeq_3zwMg5gf17mE40a1IESAk,1088
121
+ instaui/components/html/__init__.py,sha256=B1BDIbeHexH3dEg1Gwx3HwZgR0JnxWhNcNlVUp5VeE4,1137
119
122
  instaui/components/html/_mixins.py,sha256=5dcSM9h1PswIKL6_eiqUxqW4H2OCuyNeCuRZq3gDGOc,876
120
123
  instaui/components/html/_preset.py,sha256=c5rTj3r8W7UP0UHFLUW-ZSPedIa-gzrsU1goi60l20Q,94
121
124
  instaui/components/html/button.py,sha256=lB5SYC2Q8b3dOHLBclJW8yaWBuhoe0qNhpKeEifRDJc,820
@@ -125,11 +128,12 @@ instaui/components/html/div.py,sha256=fF9rBlOBIl-tDvml1DtJK9lFfFY0SBcP5bn36pluis
125
128
  instaui/components/html/form.py,sha256=C-QVtwX18zH8ZuVK93weGwlRWfSyTGWY_CYIdGcaslU,169
126
129
  instaui/components/html/heading.py,sha256=nYGfUIJFNjeVV_RRwCRuEMblWAEZT-CjNX8eAmtbaaU,1260
127
130
  instaui/components/html/input.py,sha256=I9Sbl4THBQuCcaE2HulwD-Hz8Kh2v-rp-HEactlZZBs,894
128
- instaui/components/html/label.py,sha256=HAH0pGhRdyRG3YwTM4qM8lyF8O3yAfmEyPHj0fQnA-k,507
131
+ instaui/components/html/label.py,sha256=iJPI5HzTulEs-38hpNiSi_D4klpVx0WexsBtKGUcSC0,557
129
132
  instaui/components/html/li.py,sha256=2IS8eudUX4McHjyxT1SOu91xviC2D1NNdYKLjznZ-IA,416
130
133
  instaui/components/html/link.py,sha256=eNC2f-twFZUhw_rL-Ggff2Lo8NRU33oF8CfWW_9-ktI,670
131
134
  instaui/components/html/number.py,sha256=Y2oIzTMHKWMWpufG55tFz0npEoEFvLhTWpZbMJ8J07s,1069
132
135
  instaui/components/html/paragraph.py,sha256=TNMtI9dyQb6hYKE5vGAsSXiOiEqkx7BM6CEoJrg6nz8,914
136
+ instaui/components/html/radio.py,sha256=yZxwLnzWhDMn8D_z98aVuXpQR-FO6q8zeUa80Ut8wig,1013
133
137
  instaui/components/html/range.py,sha256=cLGoo3QaARG9YDnh6g3UYtc1yueI5dfMa9-4e-feSn4,1644
134
138
  instaui/components/html/select.py,sha256=Bq6mwyKa1qAk7bZiHK0uOg65W2twz4QkcJQTjvFNDP4,2029
135
139
  instaui/components/html/span.py,sha256=RJnccwnYEh8PUZ36VTBCKzBNV74M3SMohAejb0ck0UI,440
@@ -152,12 +156,14 @@ instaui/components/shiki_code/static/langs/shell.mjs,sha256=tFnepW_2H4k-TKg0X2a5
152
156
  instaui/components/shiki_code/static/langs/shellscript.mjs,sha256=hUZDCGMkHhsWI8d8RJwqC5DENXuUoJgFmrgJFnuN_Gw,45548
153
157
  instaui/components/shiki_code/static/themes/vitesse-dark.mjs,sha256=OqDIbeBNg40dGoy2Ef02zM7aS7QTcC3bah6ZzvtkpbA,15326
154
158
  instaui/components/shiki_code/static/themes/vitesse-light.mjs,sha256=RWgJuEHtO93_BSyNYuenSW6O_x1fv01aiGRO0ZF_qdo,15176
159
+ instaui/components/timer/timer.js,sha256=Y109rj0XTWgNEfiPHhSmLB5B__z8hXe0AeFyK-mmHKw,1271
160
+ instaui/components/timer/timer.py,sha256=49J_xHd5Ck4Ma9uhLXFigGq7kZZWuIdYmFYmWkJZh5U,2736
155
161
  instaui/dependencies/component_dependency.py,sha256=V9L9YmM0_d1bQFMea3aH8qYG_mvGsAVPhmz0UHZa3PQ,672
156
162
  instaui/dependencies/plugin_dependency.py,sha256=6u562ihKbiL3DE4hBrGjauS2nzYEC2glOVN0fwEVNVc,806
157
163
  instaui/event/event_mixin.py,sha256=cN0Wh95e1wX183mGnGFm8BK_aEHWJ8WNx3Upy75mU_4,286
158
- instaui/event/js_event.py,sha256=CGegLXP3QldJp0jN-lNY0XSG8fLuaitFqKkgGEfI7yE,2868
159
- instaui/event/vue_event.py,sha256=NRwEcAromivjyPtgMq5SEqHqx8GEc1OJZsRL2Nj43RY,2187
160
- instaui/event/web_event.py,sha256=vilVbw4FtLodkLt0BxQ16dvXv555eWipM53lSkK6tVA,3814
164
+ instaui/event/js_event.py,sha256=0W8oo1ZXEJsyqTGsHXugpUcSIy6LJFqMMdeIr1tymgw,2993
165
+ instaui/event/vue_event.py,sha256=AseL5M2eHnLQOkTB7YLpPV4k6DJUcgxulqwwf3SFfGc,2329
166
+ instaui/event/web_event.py,sha256=_RYvKdUcy8JUnV7nQdLODpAYQsozK5J9qBuxrfkrQJQ,3730
161
167
  instaui/experimental/__init__.py,sha256=nKvudMaBaDsxflSZQ00ck8Cc4hmrF0f6Xzs4mhIYa08,75
162
168
  instaui/experimental/debug.py,sha256=UGUWgNZ3ShanpuxfuPdx52TgQrkO9hByABYMnPZEIiE,1325
163
169
  instaui/extra_libs/_echarts.py,sha256=HCF4mxmzVyKRtxHuehiqf7kmBq7G14_dc2m9XQEM-fQ,78
@@ -187,7 +193,7 @@ instaui/runtime/_link_manager.py,sha256=sVdqm3gdCl6i9UXa8WwckfYVf1vmESm7hvdagT_-
187
193
  instaui/runtime/context.py,sha256=MXwyKnX1X13peHOUbYzwAMflaA1WoQrNkGbi5C_0ErU,1086
188
194
  instaui/runtime/dataclass.py,sha256=dr3hN4YjFXPzckRX9HR87t1-gPjT9RNq9YV-0uJnjHo,587
189
195
  instaui/runtime/resource.py,sha256=8I47HZHRHIzIDrYcfSiHA2RWwb3-ZIsVFMsat8jgV-8,2363
190
- instaui/runtime/scope.py,sha256=tsf15tmxZ66rsALxN-OLWYSQp7Xr8keAf83cDi0Ua_c,4774
196
+ instaui/runtime/scope.py,sha256=zDihbXxdI2Qs_fLk0sfTCiBDO3awNs-rs2_MTZ5HQqs,4962
191
197
  instaui/runtime/ui_state_scope.py,sha256=g48VpQj0BboooUrPr5VIWvcQoJe0bIQARMwRyVEE0I8,314
192
198
  instaui/settings/__init__.py,sha256=nK_xDrlq7CPjm9x3EKsKUW5qWBg_1d-xbqAp_i5G8cc,70
193
199
  instaui/settings/__settings.py,sha256=DWzRvs9bBqjoNA2MvGAyz3GRrSV8H6lMLF1H3iJyoyA,385
@@ -205,9 +211,9 @@ instaui/spa_router/_router_param_var.py,sha256=KCy54xBZxGMqLO3Zlbzr6XV8ts-M6jCOK
205
211
  instaui/spa_router/_types.py,sha256=KuGuv5C6qivwllfdmV5qrvM0S_GWJ6u8OOTkCNmJImU,81
206
212
  instaui/spa_router/templates/page_routes,sha256=8VjM_8f6pjFb01QbU9z5HNqpcNRdCiX3X0OqNHLq8fo,1355
207
213
  instaui/static/insta-ui.css,sha256=EFA-_5bytZzwbe9w_kaAskE-bpdtwKbBRAyS4iw7NvU,292
208
- instaui/static/insta-ui.esm-browser.prod.js,sha256=vOYJmB8XMhjNCilar1qXOsjkwoCOVrSw5fsjbQsjYGY,109896
214
+ instaui/static/insta-ui.esm-browser.prod.js,sha256=03mpt5Q9ltVW5AHGgXjJpsE83-xXj-ZZYwINcF0gpzk,109952
209
215
  instaui/static/insta-ui.ico,sha256=08FJg4qWolvOjfodoh8IJLStslrvd8sDyuRcTUDq5ak,1150
210
- instaui/static/insta-ui.js.map,sha256=cuplnJd5ozaVPCO2Flbf30hmuUJLIk0mo4cu2mMb7Lg,664019
216
+ instaui/static/insta-ui.js.map,sha256=c9H_5BPV7SSjK1RHxWAc2TKYx0pFFbLcw08VRrCqu-U,664247
211
217
  instaui/static/instaui-tools-browser.js,sha256=cLHKNXYaYMZriMxV-yKGAHTrHSdNRUlDVZmv6uc6mMw,14455
212
218
  instaui/static/vue.esm-browser.prod.js,sha256=vwQkXANuVYQuEFc0VgiokJdhNyMmvxMKyb1FmrYrNb4,162662
213
219
  instaui/static/vue.global.prod.js,sha256=YO-UVLcXWjFOKfGU2uRrIMYpliGY2y48OmEjV464Z7M,157933
@@ -232,32 +238,31 @@ instaui/template/env.py,sha256=ZqVsqpfSY1mupbgpBSkvOJytNui8xfNR5kNNC9rv4Ps,150
232
238
  instaui/template/web_template.py,sha256=BmZY13q4E_ZP4YVgfBKbbXvPHcGZfOl2f54wp_0DjJA,1603
233
239
  instaui/template/webview_template.py,sha256=rd51iPi600QOPQ9PMjgYk61oIxn3L2p3_sJ3eBPG_24,1557
234
240
  instaui/template/zero_template.py,sha256=E88VGsyjb1qbHFJlMW-xmLRFkwUXZA7VDoZ_Jd8YubA,3514
235
- instaui/ui/__init__.py,sha256=4aHnUvEv-0UjpZNu5fU6hvcj1ZGlWwIIobabWUJk-Mc,4818
236
- instaui/ui/__init__.pyi,sha256=VyyxCXkUhUe7V6lm23o0RYn8SFOE9Jm6aiRNqcCG3A4,4898
241
+ instaui/ui/__init__.py,sha256=e8GJWNB8HXMWlqqp4hGuRCWii5HcgyxXnyH4F8O7B64,4795
242
+ instaui/ui/__init__.pyi,sha256=8LwGzW1nFLd5bSKi25rrB47TMXdpomcWF31L0zx6blY,4875
237
243
  instaui/ui/events.py,sha256=lfhiINwn-Kh0MezsSeLJPttWm6G1aWiwyk3TRo0NrlA,809
238
244
  instaui/ui_functions/input_slient_data.py,sha256=0A5DegIt_MqdZgbj1RiVFNmB_RUqgov9FYtkw6VX0DE,511
239
245
  instaui/ui_functions/server.py,sha256=B4w8KwBUMGStY19uUG8E4vRG7-L4cedttLkh35xr698,357
240
246
  instaui/ui_functions/str_format.py,sha256=ECWttA4LlNHlvdT_73wGF_I68soWNEXTP_Hosmxt-m4,1139
241
247
  instaui/ui_functions/ui_page.py,sha256=WVm1qoQ9IxE3kWKKnAU8WVI8drsqxxlLucYKfEZ712s,367
242
248
  instaui/ui_functions/ui_types.py,sha256=J5tqFFkoZJMuoLeTqU52KNgw3kdB_IfcrhaBmyI6NAA,505
243
- instaui/ui_functions/url_location.py,sha256=zyTAJpA-3GBBe7WAiP2IDKQxeQhu0LNgBOxwEzcDaDk,823
244
249
  instaui/vars/_types.py,sha256=wthCk1fcxj1SZ5y6b84W9gFpoi8j2PYnfmaPj4Am72s,308
245
250
  instaui/vars/data.py,sha256=uxDN-Xa5wO-_QFZYkiYOACnb9Ve8yODSFNIUs-S_E0I,1768
246
251
  instaui/vars/element_ref.py,sha256=qC-Kb1hBGz_Y6WKjKxRvYR8jdvWW4VeAAGzJ2wSrGgI,1059
247
252
  instaui/vars/event_context.py,sha256=3ML6nyF6Q1hbFvdeu6E2QVOIVcWe1P9FtlCR0dgBGjo,1308
248
253
  instaui/vars/event_extend.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
249
- instaui/vars/js_computed.py,sha256=CYCSR21Je1nTKfFh4camDne7TCHol6JHVZySDT4lCrk,3643
250
- instaui/vars/path_var.py,sha256=DOgYHoajWKcMHMKYMSBiEOA99mmHIaMH-HRDvAKTZyE,2820
251
- instaui/vars/ref.py,sha256=iMwKRYI8ygy2cOpXJgqUYJCpzJCQskDl4lRYTACZWnA,2567
254
+ instaui/vars/js_computed.py,sha256=HjBbSeKCOYExJ2xwhklouG8bawlXW4JNvJZjDaE4CWg,3972
255
+ instaui/vars/path_var.py,sha256=znIvxaNHwQzXflEqwB2xjrI7Bk5_QjwYlhdl4qvtyws,2811
256
+ instaui/vars/ref.py,sha256=01MwULr6LYgVaOulLOBaGaN9XbSg5b0DO0p_R3rLhCQ,2875
252
257
  instaui/vars/slot_prop.py,sha256=qBVQ0Ze0T8-Wsy__8qEuqVESIrLX69Bmy21Kuxrg_GQ,1198
253
- instaui/vars/state.py,sha256=MuiCzR9n348P1J7qdCfFXXratwuOOGELLzg8pu9G6kE,3074
258
+ instaui/vars/state.py,sha256=x6qeTliE1J7qoFmAG7huJ-sNQ4VcFgy0IlJoNodqRe0,3190
254
259
  instaui/vars/types.py,sha256=K0QTajlzHaDvFoVMCHAhY_rVvrBm3FsC92BFPOgdBog,511
255
260
  instaui/vars/vfor_item.py,sha256=cVrpErh8OrycYjDLm7PTuE2kIcC2M6ThAQlwvTXG8x0,5490
256
- instaui/vars/vue_computed.py,sha256=6ZpxCQc2TJfh0vxTxcj6yNPjTVPo3CmsHq028xtiv8Y,2416
257
- instaui/vars/web_computed.py,sha256=zRlyq1gnuQ5HWS1mh3VYhrRX1EYYYCGIpo3AyW8hu9s,6382
261
+ instaui/vars/vue_computed.py,sha256=bWMlnjKf9pFYX9IrXtSzUZy4A7P4zABeDXUi4fvqnnI,2818
262
+ instaui/vars/web_computed.py,sha256=vbxN7ccyhdtKJAaYbnkc1aPWHPW_TmY9DzSyizsMAOM,6335
258
263
  instaui/vars/web_view_computed.py,sha256=bFFVE9jRKczNy4HhmegWoC6KOL_Nrej-ag37DAIDzaA,36
259
264
  instaui/vars/mixin_types/common_type.py,sha256=4KduANLCUCeGTA1ClEsbFzEzd8Mgve3693Wxf9H7Gmw,176
260
- instaui/vars/mixin_types/element_binding.py,sha256=Mc6rY18y1HlZ9vh62pYKhzyU2XvImZgKcWyKoekTM0s,326
265
+ instaui/vars/mixin_types/element_binding.py,sha256=WqULHTT8iqhebjt9lOvN9TqZfNz13cb1VQR9tMiQncE,499
261
266
  instaui/vars/mixin_types/observable.py,sha256=h2cox7BwQtLOWqCTaWnNU0TsgYJKuoNUuuEqwj-KXpU,141
262
267
  instaui/vars/mixin_types/pathable.py,sha256=40H5f1gCDtKs4Qor0C-moB821T7Df8DOgUcntjxgums,302
263
268
  instaui/vars/mixin_types/py_binding.py,sha256=VIVSrHrjcltsP5ADKHtMSZBpi2qKyameXqoEevdfqk8,237
@@ -265,9 +270,9 @@ instaui/vars/mixin_types/str_format_binding.py,sha256=i2jXm1RKddPnGrCxEyz0tkDrBU
265
270
  instaui/vars/mixin_types/var_type.py,sha256=FQj1TEkjT7HopDPztt0-J6eQVGHjem3KBFsjZwvcvYg,57
266
271
  instaui/watch/_types.py,sha256=HJ_eAID0NsEJ_S8PhcYWxpVWhYLjjqKlbNWwqdqS4IU,73
267
272
  instaui/watch/_utils.py,sha256=mTITHG8hp0pyfQXUERQKXMDna5Au02bhuASCV32eXHI,124
268
- instaui/watch/js_watch.py,sha256=8lVINBauHBRiDX3-F1V6V5_1CN9j1EMCROjcD9LRCD8,4230
273
+ instaui/watch/js_watch.py,sha256=m2p-6jL6ZJerkk2MJ-cE7nAngcFY5-NFVP3yFSO9Kmw,4351
269
274
  instaui/watch/vue_watch.py,sha256=Vd3nsRyf9ufrXLFTjaSvglwnkoWyE32fOV0qOogWPt4,2013
270
- instaui/watch/web_watch.py,sha256=LFzw2Mkm3N6VflxvxebVzEInlG5bP6vImje_TfS-5rE,6285
275
+ instaui/watch/web_watch.py,sha256=UdofiqTfyvGW1CLtyYydFtAwc_sAKRWhiLQCEHSNJPw,6152
271
276
  instaui/webview/__init__.py,sha256=_L8B0Ym7i1Q8eonQ81fC54EXn7oZuc6zE1KqeAEPHEg,65
272
277
  instaui/webview/_utils.py,sha256=pqARVv37h-8p7CLOpvqLV8O_az4EV2VD9G-beUVqjD8,172
273
278
  instaui/webview/api.py,sha256=9xuG3EKpmOOy1dvIrS9C9z9ukQDRnIdZLrGFD5FLyvU,2071
@@ -277,7 +282,7 @@ instaui/webview/resource.py,sha256=kFT6N5UZK5GLE0KmW3TrEYDNlViw9DL2OshRh41wBXs,5
277
282
  instaui/zero/__init__.py,sha256=N0LuRUAcaurxHSspcEDuwZg62W2S3qL4VtrMKxOivBE,49
278
283
  instaui/zero/func.py,sha256=8cA_wJMtRmoAARjWY8yY5MmLXDAQ7hyVW6f1Vbejtoc,3576
279
284
  instaui/zero/scope.py,sha256=HGohYOqnpRGVkkoz_gvR6-DgCc48AtJAcDwbOnnGHLM,3753
280
- instaui-0.1.15.dist-info/METADATA,sha256=4xaLjEqZu6_yAQieLp_zOGNvPtsboBvjk7j5SM50_h8,3562
281
- instaui-0.1.15.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
282
- instaui-0.1.15.dist-info/licenses/LICENSE,sha256=_JjnAWrikJ6qkwT7PazeFNRlcIu8q_RH3mYcHTxEF5c,1094
283
- instaui-0.1.15.dist-info/RECORD,,
285
+ instaui-0.1.17.dist-info/METADATA,sha256=rCiN5ssW1cIw_eNgbt6JzB1cKlI1qcFE_8aR2I5YmO8,3562
286
+ instaui-0.1.17.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
287
+ instaui-0.1.17.dist-info/licenses/LICENSE,sha256=_JjnAWrikJ6qkwT7PazeFNRlcIu8q_RH3mYcHTxEF5c,1094
288
+ instaui-0.1.17.dist-info/RECORD,,
File without changes