instaui 0.1.15__py2.py3-none-any.whl → 0.1.16__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/action/__init__.py +10 -0
- instaui/action/cookie.py +25 -0
- instaui/arco/components/radio.py +19 -6
- instaui/arco/components/radio_group.py +2 -3
- instaui/components/component.py +2 -0
- instaui/components/html/__init__.py +2 -0
- instaui/components/html/label.py +9 -7
- instaui/components/html/radio.py +37 -0
- instaui/components/timer/timer.js +48 -0
- instaui/components/timer/timer.py +94 -0
- instaui/event/js_event.py +2 -0
- instaui/event/vue_event.py +3 -0
- instaui/event/web_event.py +2 -4
- instaui/runtime/scope.py +11 -2
- instaui/ui/__init__.py +2 -2
- instaui/ui/__init__.pyi +2 -2
- instaui/vars/js_computed.py +16 -1
- instaui/vars/mixin_types/element_binding.py +7 -1
- instaui/vars/path_var.py +3 -3
- instaui/vars/vue_computed.py +17 -1
- instaui/vars/web_computed.py +5 -4
- instaui/watch/js_watch.py +2 -0
- instaui/watch/web_watch.py +2 -6
- {instaui-0.1.15.dist-info → instaui-0.1.16.dist-info}/METADATA +1 -1
- {instaui-0.1.15.dist-info → instaui-0.1.16.dist-info}/RECORD +28 -23
- /instaui/{ui_functions → action}/url_location.py +0 -0
- {instaui-0.1.15.dist-info → instaui-0.1.16.dist-info}/WHEEL +0 -0
- {instaui-0.1.15.dist-info → instaui-0.1.16.dist-info}/licenses/LICENSE +0 -0
instaui/action/cookie.py
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
from typing import Optional, Union
|
3
|
+
from instaui.runtime.context import get_context
|
4
|
+
|
5
|
+
|
6
|
+
def cookie_output():
|
7
|
+
if not get_context().app_mode == "web":
|
8
|
+
raise ValueError("cookie_output can only be used in web mode")
|
9
|
+
|
10
|
+
|
11
|
+
def cookie_input():
|
12
|
+
pass
|
13
|
+
|
14
|
+
|
15
|
+
def set_cookie(
|
16
|
+
key: str,
|
17
|
+
value: str,
|
18
|
+
*,
|
19
|
+
max_age: Optional[int] = None,
|
20
|
+
expires: Optional[Union[int, datetime]] = None,
|
21
|
+
secure: bool = False,
|
22
|
+
httponly: bool = False,
|
23
|
+
samesite: Optional[str] = None,
|
24
|
+
):
|
25
|
+
pass
|
instaui/arco/components/radio.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
from __future__ import annotations
|
1
2
|
import typing
|
2
3
|
from typing_extensions import Unpack
|
3
4
|
import pydantic
|
@@ -6,13 +7,16 @@ from instaui.vars.types import TMaybeRef
|
|
6
7
|
from instaui.vars.state import StateModel
|
7
8
|
from instaui.arco import component_types
|
8
9
|
from instaui.event.event_mixin import EventMixin
|
9
|
-
from ._utils import handle_props
|
10
|
+
from ._utils import handle_props
|
11
|
+
from .radio_group import RadioGroup
|
12
|
+
|
13
|
+
_TValue = typing.Union[str, float]
|
10
14
|
|
11
15
|
|
12
16
|
class Radio(Element):
|
13
17
|
def __init__(
|
14
18
|
self,
|
15
|
-
value: typing.Optional[TMaybeRef[
|
19
|
+
value: typing.Optional[TMaybeRef[_TValue]] = None,
|
16
20
|
**kwargs: Unpack[component_types.TRadio],
|
17
21
|
):
|
18
22
|
super().__init__("a-radio")
|
@@ -33,8 +37,17 @@ class Radio(Element):
|
|
33
37
|
)
|
34
38
|
return self
|
35
39
|
|
40
|
+
@staticmethod
|
41
|
+
def from_list(options: TMaybeRef[typing.List[_TValue]], value: TMaybeRef[_TValue]):
|
42
|
+
return RadioGroup(value=value, options=options) # type: ignore
|
43
|
+
|
44
|
+
@staticmethod
|
45
|
+
def from_options(
|
46
|
+
options: TMaybeRef[typing.List[RadioOption]], value: TMaybeRef[_TValue]
|
47
|
+
):
|
48
|
+
return RadioGroup(value=value, options=options) # type: ignore
|
36
49
|
|
37
|
-
class RadioOption(StateModel):
|
38
|
-
|
39
|
-
|
40
|
-
|
50
|
+
class RadioOption(StateModel):
|
51
|
+
label: str
|
52
|
+
value: typing.Union[str, int]
|
53
|
+
disabled: bool = pydantic.Field(default=False)
|
@@ -4,7 +4,6 @@ from instaui.components.element import Element
|
|
4
4
|
from instaui.vars.types import TMaybeRef
|
5
5
|
from instaui.event.event_mixin import EventMixin
|
6
6
|
from ._utils import handle_props, try_setup_vmodel
|
7
|
-
from .radio import RadioOption
|
8
7
|
|
9
8
|
|
10
9
|
class TRadioGroup(TypedDict, total=False):
|
@@ -12,7 +11,7 @@ class TRadioGroup(TypedDict, total=False):
|
|
12
11
|
default_value: typing.Union[str, int, bool]
|
13
12
|
type: typing.Literal["radio", "button"]
|
14
13
|
size: typing.Literal["mini", "small", "medium", "large"]
|
15
|
-
options: typing.List[typing.Union[str, int
|
14
|
+
options: typing.List[typing.Union[str, int]]
|
16
15
|
direction: typing.Literal["horizontal", "vertical"]
|
17
16
|
disabled: bool
|
18
17
|
|
@@ -20,7 +19,7 @@ class TRadioGroup(TypedDict, total=False):
|
|
20
19
|
class RadioGroup(Element):
|
21
20
|
def __init__(
|
22
21
|
self,
|
23
|
-
value: typing.Optional[TMaybeRef[typing.Union[str,
|
22
|
+
value: typing.Optional[TMaybeRef[typing.Union[str, float]]] = None,
|
24
23
|
**kwargs: Unpack[TRadioGroup],
|
25
24
|
):
|
26
25
|
super().__init__("a-radio-group")
|
instaui/components/component.py
CHANGED
@@ -6,6 +6,7 @@ __all__ = [
|
|
6
6
|
"number",
|
7
7
|
"button",
|
8
8
|
"checkbox",
|
9
|
+
"radio",
|
9
10
|
"form",
|
10
11
|
"select",
|
11
12
|
"option",
|
@@ -32,6 +33,7 @@ from .input import Input as input
|
|
32
33
|
from .number import Number as number
|
33
34
|
from .button import Button as button
|
34
35
|
from .checkbox import Checkbox as checkbox
|
36
|
+
from .radio import Radio as radio
|
35
37
|
from .form import Form as form
|
36
38
|
from .select import Select as select
|
37
39
|
from .ul import Ul as ul
|
instaui/components/html/label.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
from __future__ import annotations
|
2
|
-
from typing import TYPE_CHECKING, Any, Union
|
2
|
+
from typing import TYPE_CHECKING, Any, Optional, Union
|
3
3
|
from instaui.components.element import Element
|
4
4
|
|
5
5
|
if TYPE_CHECKING:
|
@@ -10,12 +10,14 @@ class Label(Element):
|
|
10
10
|
def __init__(
|
11
11
|
self,
|
12
12
|
text: Union[Any, TMaybeRef[Any], None] = None,
|
13
|
+
*,
|
14
|
+
for_: Optional[TMaybeRef[str]] = None,
|
13
15
|
):
|
14
16
|
super().__init__("label")
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
self.props(
|
19
|
+
{
|
20
|
+
"innerText": text,
|
21
|
+
"for": for_,
|
22
|
+
}
|
23
|
+
)
|
@@ -0,0 +1,37 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from typing import TYPE_CHECKING, Optional, Union
|
3
|
+
from instaui.components.element import Element
|
4
|
+
from instaui.components.value_element import ValueElement
|
5
|
+
from ._mixins import InputEventMixin
|
6
|
+
|
7
|
+
if TYPE_CHECKING:
|
8
|
+
from instaui.vars.types import TMaybeRef
|
9
|
+
|
10
|
+
|
11
|
+
_T_value = str
|
12
|
+
|
13
|
+
|
14
|
+
class Radio(InputEventMixin, ValueElement[_T_value]):
|
15
|
+
def __init__(
|
16
|
+
self,
|
17
|
+
value: Optional[TMaybeRef[_T_value]] = None,
|
18
|
+
*,
|
19
|
+
model_value: Optional[_T_value] = None,
|
20
|
+
id: Optional[TMaybeRef[str]] = None,
|
21
|
+
name: Optional[TMaybeRef[str]] = None,
|
22
|
+
):
|
23
|
+
super().__init__("input", value, is_html_component=True)
|
24
|
+
self.props({"type": "radio"})
|
25
|
+
|
26
|
+
self.props(
|
27
|
+
{
|
28
|
+
"id": id,
|
29
|
+
"name": name,
|
30
|
+
}
|
31
|
+
)
|
32
|
+
|
33
|
+
if model_value is not None:
|
34
|
+
self.props({"value": model_value})
|
35
|
+
|
36
|
+
def _input_event_mixin_element(self) -> Element:
|
37
|
+
return self
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import { ref, watch, onMounted, onUnmounted, toRef } from 'vue'
|
2
|
+
|
3
|
+
|
4
|
+
export default {
|
5
|
+
props: ['intervalSeconds', 'active', 'once', 'immediate'],
|
6
|
+
setup(props, { emit }) {
|
7
|
+
const { intervalSeconds, once = false, immediate = true } = props
|
8
|
+
const intervalId = ref(null)
|
9
|
+
const isActive = toRef(() => props.active ?? true)
|
10
|
+
const emitTick = once ? () => { emit('tick'); stopInterval() } : () => emit('tick')
|
11
|
+
|
12
|
+
if (once === false) {
|
13
|
+
watch(isActive, (value) => {
|
14
|
+
if (value) {
|
15
|
+
startInterval()
|
16
|
+
} else {
|
17
|
+
stopInterval()
|
18
|
+
}
|
19
|
+
})
|
20
|
+
}
|
21
|
+
|
22
|
+
const startInterval = () => {
|
23
|
+
if (immediate) {
|
24
|
+
emitTick()
|
25
|
+
}
|
26
|
+
|
27
|
+
intervalId.value = setInterval(() => {
|
28
|
+
emitTick()
|
29
|
+
}, intervalSeconds * 1000)
|
30
|
+
}
|
31
|
+
|
32
|
+
const stopInterval = () => {
|
33
|
+
clearInterval(intervalId.value)
|
34
|
+
emit('stop')
|
35
|
+
}
|
36
|
+
|
37
|
+
onMounted(() => {
|
38
|
+
if (isActive.value) {
|
39
|
+
startInterval()
|
40
|
+
}
|
41
|
+
})
|
42
|
+
|
43
|
+
onUnmounted(() => {
|
44
|
+
stopInterval()
|
45
|
+
})
|
46
|
+
}
|
47
|
+
|
48
|
+
}
|
@@ -0,0 +1,94 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from typing import List, Optional
|
3
|
+
from instaui.components.element import Element
|
4
|
+
from instaui.vars.types import TMaybeRef
|
5
|
+
from instaui.event.event_mixin import EventMixin
|
6
|
+
|
7
|
+
|
8
|
+
class Timer(Element, esm="./timer.js"):
|
9
|
+
"""
|
10
|
+
A timer component that triggers events at specified intervals.
|
11
|
+
|
12
|
+
Args:
|
13
|
+
interval_seconds (float): Time in seconds between repeated events.
|
14
|
+
active (Optional[TMaybeRef[bool]], optional): If True, starts the timer immediately.
|
15
|
+
Accepts reactive values (e.g., state references) for dynamic control. Defaults to None (equivalent to True).
|
16
|
+
immediate (Optional[bool], optional): If True, triggers the first event immediately. Defaults to None (equivalent to True).
|
17
|
+
|
18
|
+
Example:
|
19
|
+
.. code-block:: python
|
20
|
+
from instaui import ui, html
|
21
|
+
|
22
|
+
@ui.page('/')
|
23
|
+
def index():
|
24
|
+
x = ui.state(0)
|
25
|
+
active = ui.state(True)
|
26
|
+
|
27
|
+
@ui.event(inputs=[x], outputs=[x])
|
28
|
+
def on_tick(x):
|
29
|
+
return x + 1
|
30
|
+
|
31
|
+
ui.timer(1, active=active).on_tick(on_tick)
|
32
|
+
|
33
|
+
html.checkbox(active)
|
34
|
+
html.span(x)
|
35
|
+
"""
|
36
|
+
|
37
|
+
def __init__(
|
38
|
+
self,
|
39
|
+
interval_seconds: float,
|
40
|
+
*,
|
41
|
+
active: Optional[TMaybeRef[bool]] = None,
|
42
|
+
immediate: Optional[bool] = None,
|
43
|
+
):
|
44
|
+
super().__init__("template")
|
45
|
+
|
46
|
+
self.props(
|
47
|
+
{
|
48
|
+
"intervalSeconds": interval_seconds,
|
49
|
+
"active": active,
|
50
|
+
"immediate": immediate,
|
51
|
+
}
|
52
|
+
)
|
53
|
+
|
54
|
+
def on_tick(
|
55
|
+
self,
|
56
|
+
handler: EventMixin,
|
57
|
+
*,
|
58
|
+
extends: Optional[List] = None,
|
59
|
+
):
|
60
|
+
"""
|
61
|
+
Registers an event handler for the "tick" event.
|
62
|
+
"""
|
63
|
+
return self.on("tick", handler, extends=extends)
|
64
|
+
|
65
|
+
def on_stop(
|
66
|
+
self,
|
67
|
+
handler: EventMixin,
|
68
|
+
*,
|
69
|
+
extends: Optional[List] = None,
|
70
|
+
):
|
71
|
+
"""
|
72
|
+
Registers an event handler for the "stop" event.
|
73
|
+
"""
|
74
|
+
|
75
|
+
return self.on("stop", handler, extends=extends)
|
76
|
+
|
77
|
+
@classmethod
|
78
|
+
def once(cls, delay_seconds: float):
|
79
|
+
"""
|
80
|
+
Creates a timer that triggers only once.
|
81
|
+
|
82
|
+
Args:
|
83
|
+
delay_seconds (float): Time in seconds before the timer triggers.
|
84
|
+
|
85
|
+
Example:
|
86
|
+
.. code-block:: python
|
87
|
+
msg = ui.state('')
|
88
|
+
on_done = ui.js_event(outputs=[msg],code="()=> 'Done!'")
|
89
|
+
|
90
|
+
ui.timer.once(1).on_tick(on_done)
|
91
|
+
html.span(msg) # will show "Done!" after 1 second
|
92
|
+
|
93
|
+
"""
|
94
|
+
return cls(delay_seconds, immediate=False).props({"once": True})
|
instaui/event/js_event.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import typing
|
2
2
|
from instaui.vars.mixin_types.py_binding import CanInputMixin, CanOutputMixin
|
3
|
+
from instaui.vars.mixin_types.element_binding import _try_mark_inputs_used
|
3
4
|
from instaui.common.jsonable import Jsonable
|
4
5
|
from .event_mixin import EventMixin
|
5
6
|
|
@@ -26,6 +27,7 @@ class JsEvent(Jsonable, EventMixin):
|
|
26
27
|
def _to_json_dict(self):
|
27
28
|
data = super()._to_json_dict()
|
28
29
|
data["type"] = self.event_type()
|
30
|
+
_try_mark_inputs_used(self._org_inputs)
|
29
31
|
|
30
32
|
if self._inputs:
|
31
33
|
data["inputs"] = self._inputs
|
instaui/event/vue_event.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import typing
|
2
2
|
from instaui.common.jsonable import Jsonable
|
3
3
|
from instaui.vars.mixin_types.observable import ObservableMixin
|
4
|
+
from instaui.vars.mixin_types.element_binding import _try_mark_inputs_used
|
4
5
|
from .event_mixin import EventMixin
|
5
6
|
|
6
7
|
|
@@ -59,6 +60,8 @@ class VueEvent(Jsonable, EventMixin):
|
|
59
60
|
|
60
61
|
def _to_json_dict(self):
|
61
62
|
data = super()._to_json_dict()
|
63
|
+
|
64
|
+
_try_mark_inputs_used((self._bindings or {}).values())
|
62
65
|
data["type"] = self.event_type()
|
63
66
|
return data
|
64
67
|
|
instaui/event/web_event.py
CHANGED
@@ -4,7 +4,7 @@ from typing_extensions import ParamSpec
|
|
4
4
|
from instaui.common.jsonable import Jsonable
|
5
5
|
from instaui.runtime._app import get_current_scope, get_app_slot
|
6
6
|
from instaui.vars.mixin_types.py_binding import CanInputMixin, CanOutputMixin
|
7
|
-
from instaui.vars.mixin_types.element_binding import
|
7
|
+
from instaui.vars.mixin_types.element_binding import _try_mark_inputs_used
|
8
8
|
from instaui.handlers import event_handler
|
9
9
|
from .event_mixin import EventMixin
|
10
10
|
|
@@ -47,9 +47,7 @@ class WebEvent(Jsonable, EventMixin, typing.Generic[P, R]):
|
|
47
47
|
def _to_json_dict(self):
|
48
48
|
app = get_app_slot()
|
49
49
|
|
50
|
-
|
51
|
-
if isinstance(_input, ElementBindingMixin):
|
52
|
-
_input._mark_used()
|
50
|
+
_try_mark_inputs_used(self._inputs)
|
53
51
|
|
54
52
|
hkey = event_handler.create_handler_key(
|
55
53
|
page_path=app.page_path, handler=self._fn
|
instaui/runtime/scope.py
CHANGED
@@ -97,14 +97,23 @@ class Scope(Jsonable):
|
|
97
97
|
if self._element_refs:
|
98
98
|
data["eRefs"] = self._element_refs
|
99
99
|
|
100
|
+
# web computeds
|
100
101
|
_web_computeds = [
|
101
102
|
computed for computed in self._web_computeds if computed._is_used()
|
102
103
|
]
|
103
104
|
|
104
105
|
if _web_computeds:
|
105
106
|
data["web_computed"] = _web_computeds
|
106
|
-
|
107
|
-
|
107
|
+
|
108
|
+
# js computeds
|
109
|
+
_js_computeds = [
|
110
|
+
computed for computed in self._js_computeds if computed._is_used()
|
111
|
+
]
|
112
|
+
|
113
|
+
if _js_computeds:
|
114
|
+
data["js_computed"] = _js_computeds
|
115
|
+
|
116
|
+
# vue computeds
|
108
117
|
if self._vue_computeds:
|
109
118
|
data["vue_computed"] = self._vue_computeds
|
110
119
|
if self._const_data:
|
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
|
|
instaui/vars/js_computed.py
CHANGED
@@ -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
|
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
|
17
|
-
return PathTrackerBindable(self).
|
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
|
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/vue_computed.py
CHANGED
@@ -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
|
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
|
|
instaui/vars/web_computed.py
CHANGED
@@ -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
|
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
|
-
|
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)
|
instaui/watch/web_watch.py
CHANGED
@@ -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
|
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
|
-
|
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,
|
@@ -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=
|
67
|
-
instaui/arco/components/radio_group.py,sha256=
|
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=
|
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=
|
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=
|
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=4-u-9tCe5372zDJWPs3-BDC-xpaKUDbdPQmcbThMyeI,1020
|
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=
|
159
|
-
instaui/event/vue_event.py,sha256=
|
160
|
-
instaui/event/web_event.py,sha256=
|
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=
|
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
|
@@ -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=
|
236
|
-
instaui/ui/__init__.pyi,sha256=
|
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=
|
250
|
-
instaui/vars/path_var.py,sha256=
|
254
|
+
instaui/vars/js_computed.py,sha256=HjBbSeKCOYExJ2xwhklouG8bawlXW4JNvJZjDaE4CWg,3972
|
255
|
+
instaui/vars/path_var.py,sha256=znIvxaNHwQzXflEqwB2xjrI7Bk5_QjwYlhdl4qvtyws,2811
|
251
256
|
instaui/vars/ref.py,sha256=iMwKRYI8ygy2cOpXJgqUYJCpzJCQskDl4lRYTACZWnA,2567
|
252
257
|
instaui/vars/slot_prop.py,sha256=qBVQ0Ze0T8-Wsy__8qEuqVESIrLX69Bmy21Kuxrg_GQ,1198
|
253
258
|
instaui/vars/state.py,sha256=MuiCzR9n348P1J7qdCfFXXratwuOOGELLzg8pu9G6kE,3074
|
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=
|
257
|
-
instaui/vars/web_computed.py,sha256=
|
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=
|
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=
|
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=
|
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.
|
281
|
-
instaui-0.1.
|
282
|
-
instaui-0.1.
|
283
|
-
instaui-0.1.
|
285
|
+
instaui-0.1.16.dist-info/METADATA,sha256=r5ViXqPm5_kLMHKBc6N2MhiwZlODJhOBRtSTVgDWSJ0,3562
|
286
|
+
instaui-0.1.16.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
287
|
+
instaui-0.1.16.dist-info/licenses/LICENSE,sha256=_JjnAWrikJ6qkwT7PazeFNRlcIu8q_RH3mYcHTxEF5c,1094
|
288
|
+
instaui-0.1.16.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|