instaui 0.1.15__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/__init__.py +9 -0
- instaui/_helper/observable_helper.py +45 -0
- instaui/arco/__init__.py +191 -0
- instaui/arco/_settings.py +25 -0
- instaui/arco/_use_tools/locale.py +50 -0
- instaui/arco/component_types.py +1019 -0
- instaui/arco/components/_utils.py +22 -0
- instaui/arco/components/affix.py +29 -0
- instaui/arco/components/alert.py +42 -0
- instaui/arco/components/anchor.py +42 -0
- instaui/arco/components/auto_complete.py +96 -0
- instaui/arco/components/avatar.py +55 -0
- instaui/arco/components/back_top.py +14 -0
- instaui/arco/components/badge.py +14 -0
- instaui/arco/components/breadcrumb.py +14 -0
- instaui/arco/components/button.py +43 -0
- instaui/arco/components/calendar.py +47 -0
- instaui/arco/components/card.py +14 -0
- instaui/arco/components/carousel.py +33 -0
- instaui/arco/components/cascader.py +111 -0
- instaui/arco/components/checkbox.py +32 -0
- instaui/arco/components/collapse.py +31 -0
- instaui/arco/components/color_picker.py +45 -0
- instaui/arco/components/comment.py +14 -0
- instaui/arco/components/config_provider.py +13 -0
- instaui/arco/components/date_picker.py +111 -0
- instaui/arco/components/descriptions.py +14 -0
- instaui/arco/components/divider.py +13 -0
- instaui/arco/components/drawer.py +98 -0
- instaui/arco/components/dropdown.py +45 -0
- instaui/arco/components/empty.py +14 -0
- instaui/arco/components/form.py +55 -0
- instaui/arco/components/icon.py +17 -0
- instaui/arco/components/image.py +33 -0
- instaui/arco/components/input.py +102 -0
- instaui/arco/components/input_number.py +97 -0
- instaui/arco/components/input_password.py +38 -0
- instaui/arco/components/input_search.py +37 -0
- instaui/arco/components/input_tag.py +110 -0
- instaui/arco/components/layout.py +13 -0
- instaui/arco/components/layout_content.py +6 -0
- instaui/arco/components/layout_footer.py +6 -0
- instaui/arco/components/layout_header.py +6 -0
- instaui/arco/components/layout_sider.py +53 -0
- instaui/arco/components/link.py +36 -0
- instaui/arco/components/list.py +68 -0
- instaui/arco/components/mention.py +97 -0
- instaui/arco/components/menu.py +88 -0
- instaui/arco/components/modal.py +97 -0
- instaui/arco/components/overflow_list.py +29 -0
- instaui/arco/components/page_header.py +29 -0
- instaui/arco/components/pagination.py +45 -0
- instaui/arco/components/pop_confirm.py +58 -0
- instaui/arco/components/popover.py +32 -0
- instaui/arco/components/progress.py +14 -0
- instaui/arco/components/radio.py +40 -0
- instaui/arco/components/radio_group.py +42 -0
- instaui/arco/components/rate.py +45 -0
- instaui/arco/components/resize_box.py +62 -0
- instaui/arco/components/result.py +14 -0
- instaui/arco/components/select.py +182 -0
- instaui/arco/components/skeleton.py +14 -0
- instaui/arco/components/slider.py +38 -0
- instaui/arco/components/space.py +14 -0
- instaui/arco/components/spin.py +14 -0
- instaui/arco/components/split.py +76 -0
- instaui/arco/components/statistic.py +14 -0
- instaui/arco/components/steps.py +32 -0
- instaui/arco/components/switch.py +57 -0
- instaui/arco/components/tab_pane.py +12 -0
- instaui/arco/components/table.py +276 -0
- instaui/arco/components/tabs.py +101 -0
- instaui/arco/components/tag.py +42 -0
- instaui/arco/components/textarea.py +84 -0
- instaui/arco/components/time_picker.py +76 -0
- instaui/arco/components/timeline.py +14 -0
- instaui/arco/components/tooltip.py +29 -0
- instaui/arco/components/transfer.py +58 -0
- instaui/arco/components/tree.py +120 -0
- instaui/arco/components/tree_select.py +86 -0
- instaui/arco/components/trigger.py +58 -0
- instaui/arco/components/typography.py +142 -0
- instaui/arco/components/upload.py +71 -0
- instaui/arco/components/verification_code.py +58 -0
- instaui/arco/components/watermark.py +14 -0
- instaui/arco/locales/__init__.py +4 -0
- instaui/arco/locales/_index.py +31 -0
- instaui/arco/locales/en_us.py +227 -0
- instaui/arco/locales/zh_cn.py +224 -0
- instaui/arco/setup.py +36 -0
- instaui/arco/static/instaui-arco.css +1 -0
- instaui/arco/static/instaui-arco.js +55771 -0
- instaui/arco/types.py +24 -0
- instaui/boot_info.py +43 -0
- instaui/common/jsonable.py +37 -0
- instaui/components/__init__.py +0 -0
- instaui/components/column.py +26 -0
- instaui/components/component.py +47 -0
- instaui/components/content.py +34 -0
- instaui/components/directive.py +55 -0
- instaui/components/element.py +573 -0
- instaui/components/grid.py +213 -0
- instaui/components/html/__init__.py +49 -0
- instaui/components/html/_mixins.py +34 -0
- instaui/components/html/_preset.py +4 -0
- instaui/components/html/button.py +38 -0
- instaui/components/html/checkbox.py +35 -0
- instaui/components/html/date.py +28 -0
- instaui/components/html/div.py +7 -0
- instaui/components/html/form.py +7 -0
- instaui/components/html/heading.py +51 -0
- instaui/components/html/input.py +28 -0
- instaui/components/html/label.py +21 -0
- instaui/components/html/li.py +17 -0
- instaui/components/html/link.py +31 -0
- instaui/components/html/number.py +34 -0
- instaui/components/html/paragraph.py +29 -0
- instaui/components/html/range.py +48 -0
- instaui/components/html/select.py +69 -0
- instaui/components/html/span.py +19 -0
- instaui/components/html/table.py +36 -0
- instaui/components/html/textarea.py +28 -0
- instaui/components/html/ul.py +20 -0
- instaui/components/label.py +5 -0
- instaui/components/markdown/markdown.js +33 -0
- instaui/components/markdown/markdown.py +41 -0
- instaui/components/markdown/static/github-markdown.css +12 -0
- instaui/components/markdown/static/marked.esm.js +2579 -0
- instaui/components/match.py +108 -0
- instaui/components/row.py +17 -0
- instaui/components/shiki_code/shiki_code.js +126 -0
- instaui/components/shiki_code/shiki_code.py +99 -0
- instaui/components/shiki_code/static/langs/css.mjs +5 -0
- instaui/components/shiki_code/static/langs/markdown.mjs +5 -0
- instaui/components/shiki_code/static/langs/python.mjs +5 -0
- instaui/components/shiki_code/static/langs/shell.mjs +2 -0
- instaui/components/shiki_code/static/langs/shellscript.mjs +5 -0
- instaui/components/shiki_code/static/shiki-core.js +5784 -0
- instaui/components/shiki_code/static/shiki-style.css +179 -0
- instaui/components/shiki_code/static/shiki-transformers.js +461 -0
- instaui/components/shiki_code/static/themes/vitesse-dark.mjs +2 -0
- instaui/components/shiki_code/static/themes/vitesse-light.mjs +2 -0
- instaui/components/slot.py +81 -0
- instaui/components/transition_group.py +9 -0
- instaui/components/value_element.py +52 -0
- instaui/components/vfor.py +142 -0
- instaui/components/vif.py +42 -0
- instaui/consts.py +23 -0
- instaui/dependencies/component_dependency.py +22 -0
- instaui/dependencies/plugin_dependency.py +28 -0
- instaui/event/event_mixin.py +12 -0
- instaui/event/js_event.py +82 -0
- instaui/event/vue_event.py +66 -0
- instaui/event/web_event.py +123 -0
- instaui/experimental/__init__.py +3 -0
- instaui/experimental/debug.py +48 -0
- instaui/extra_libs/_echarts.py +3 -0
- instaui/extra_libs/_import_error.py +9 -0
- instaui/extra_libs/_mermaid.py +3 -0
- instaui/extra_libs/_shiki_code.py +3 -0
- instaui/fastapi_server/_utils.py +42 -0
- instaui/fastapi_server/_uvicorn.py +37 -0
- instaui/fastapi_server/debug_mode_router.py +60 -0
- instaui/fastapi_server/dependency_router.py +28 -0
- instaui/fastapi_server/event_router.py +58 -0
- instaui/fastapi_server/middlewares.py +19 -0
- instaui/fastapi_server/request_context.py +19 -0
- instaui/fastapi_server/resource.py +30 -0
- instaui/fastapi_server/server.py +308 -0
- instaui/fastapi_server/watch_router.py +53 -0
- instaui/handlers/_utils.py +88 -0
- instaui/handlers/event_handler.py +60 -0
- instaui/handlers/watch_handler.py +61 -0
- instaui/html_tools.py +94 -0
- instaui/inject.py +33 -0
- instaui/js/__init__.py +4 -0
- instaui/js/js_output.py +15 -0
- instaui/js/lambda_func.py +35 -0
- instaui/launch_collector.py +52 -0
- instaui/page_info.py +13 -0
- instaui/runtime/__init__.py +29 -0
- instaui/runtime/_app.py +234 -0
- instaui/runtime/_inner_helper.py +9 -0
- instaui/runtime/_link_manager.py +89 -0
- instaui/runtime/context.py +47 -0
- instaui/runtime/dataclass.py +30 -0
- instaui/runtime/resource.py +65 -0
- instaui/runtime/scope.py +133 -0
- instaui/runtime/ui_state_scope.py +15 -0
- instaui/settings/__init__.py +4 -0
- instaui/settings/__settings.py +13 -0
- instaui/shadcn_classless/_index.py +42 -0
- instaui/shadcn_classless/static/shadcn-classless.css +403 -0
- instaui/skip.py +12 -0
- instaui/spa_router/__init__.py +26 -0
- instaui/spa_router/_components.py +35 -0
- instaui/spa_router/_file_base_utils.py +273 -0
- instaui/spa_router/_functions.py +122 -0
- instaui/spa_router/_install.py +11 -0
- instaui/spa_router/_route_model.py +117 -0
- instaui/spa_router/_router_box.py +40 -0
- instaui/spa_router/_router_output.py +22 -0
- instaui/spa_router/_router_param_var.py +51 -0
- instaui/spa_router/_types.py +4 -0
- instaui/spa_router/templates/page_routes +60 -0
- instaui/static/insta-ui.css +1 -0
- instaui/static/insta-ui.esm-browser.prod.js +3717 -0
- instaui/static/insta-ui.ico +0 -0
- instaui/static/insta-ui.js.map +1 -0
- instaui/static/instaui-tools-browser.js +511 -0
- instaui/static/templates/debug/sse.html +117 -0
- instaui/static/templates/web.html +74 -0
- instaui/static/templates/webview.html +78 -0
- instaui/static/templates/zero.html +71 -0
- instaui/static/vue.esm-browser.prod.js +9 -0
- instaui/static/vue.global.prod.js +9 -0
- instaui/static/vue.runtime.esm-browser.prod.js +5 -0
- instaui/systems/file_system.py +6 -0
- instaui/systems/func_system.py +119 -0
- instaui/systems/js_system.py +22 -0
- instaui/systems/module_system.py +46 -0
- instaui/systems/pydantic_system.py +27 -0
- instaui/systems/string_system.py +10 -0
- instaui/tailwind/__init__.py +6 -0
- instaui/tailwind/_index.py +24 -0
- instaui/tailwind/static/tailwindcss-v3.min.js +62 -0
- instaui/tailwind/static/tailwindcss-v4.min.js +8 -0
- instaui/template/__init__.py +4 -0
- instaui/template/_utils.py +23 -0
- instaui/template/env.py +7 -0
- instaui/template/web_template.py +49 -0
- instaui/template/webview_template.py +48 -0
- instaui/template/zero_template.py +105 -0
- instaui/ui/__init__.py +144 -0
- instaui/ui/__init__.pyi +149 -0
- instaui/ui/events.py +25 -0
- instaui/ui_functions/input_slient_data.py +16 -0
- instaui/ui_functions/server.py +15 -0
- instaui/ui_functions/str_format.py +36 -0
- instaui/ui_functions/ui_page.py +16 -0
- instaui/ui_functions/ui_types.py +13 -0
- instaui/ui_functions/url_location.py +33 -0
- instaui/vars/_types.py +8 -0
- instaui/vars/data.py +68 -0
- instaui/vars/element_ref.py +40 -0
- instaui/vars/event_context.py +49 -0
- instaui/vars/event_extend.py +0 -0
- instaui/vars/js_computed.py +117 -0
- instaui/vars/mixin_types/common_type.py +5 -0
- instaui/vars/mixin_types/element_binding.py +16 -0
- instaui/vars/mixin_types/observable.py +7 -0
- instaui/vars/mixin_types/pathable.py +14 -0
- instaui/vars/mixin_types/py_binding.py +13 -0
- instaui/vars/mixin_types/str_format_binding.py +8 -0
- instaui/vars/mixin_types/var_type.py +5 -0
- instaui/vars/path_var.py +90 -0
- instaui/vars/ref.py +103 -0
- instaui/vars/slot_prop.py +46 -0
- instaui/vars/state.py +97 -0
- instaui/vars/types.py +24 -0
- instaui/vars/vfor_item.py +204 -0
- instaui/vars/vue_computed.py +81 -0
- instaui/vars/web_computed.py +209 -0
- instaui/vars/web_view_computed.py +1 -0
- instaui/version.py +3 -0
- instaui/watch/_types.py +4 -0
- instaui/watch/_utils.py +3 -0
- instaui/watch/js_watch.py +110 -0
- instaui/watch/vue_watch.py +77 -0
- instaui/watch/web_watch.py +181 -0
- instaui/webview/__init__.py +2 -0
- instaui/webview/_utils.py +8 -0
- instaui/webview/api.py +72 -0
- instaui/webview/func.py +114 -0
- instaui/webview/index.py +161 -0
- instaui/webview/resource.py +172 -0
- instaui/zero/__init__.py +3 -0
- instaui/zero/func.py +123 -0
- instaui/zero/scope.py +109 -0
- instaui-0.1.15.dist-info/METADATA +152 -0
- instaui-0.1.15.dist-info/RECORD +283 -0
- instaui-0.1.15.dist-info/WHEEL +5 -0
- instaui-0.1.15.dist-info/licenses/LICENSE +21 -0
instaui/arco/types.py
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
from typing import Any, Dict, Literal
|
2
|
+
|
3
|
+
|
4
|
+
TLocale = Literal[
|
5
|
+
"zh-CN",
|
6
|
+
"en-US",
|
7
|
+
"ja-JP",
|
8
|
+
"zh-TW",
|
9
|
+
"pt-PT",
|
10
|
+
"es-ES",
|
11
|
+
"id-ID",
|
12
|
+
"fr-FR",
|
13
|
+
"de-DE",
|
14
|
+
"ko-KR",
|
15
|
+
"it-IT",
|
16
|
+
"ms-MY",
|
17
|
+
"th-TH",
|
18
|
+
"vi-VN",
|
19
|
+
"km-KH",
|
20
|
+
"ar-EG",
|
21
|
+
"ru-RU",
|
22
|
+
]
|
23
|
+
|
24
|
+
TCustomizeLocale = Dict[str, Any]
|
instaui/boot_info.py
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
from pathlib import Path
|
2
|
+
from typing import Literal
|
3
|
+
from instaui.version import __version__
|
4
|
+
|
5
|
+
_colors = {
|
6
|
+
"red": "\033[31m",
|
7
|
+
"green": "\033[32m",
|
8
|
+
"yellow": "\033[33m",
|
9
|
+
"blue": "\033[34m",
|
10
|
+
}
|
11
|
+
|
12
|
+
|
13
|
+
def zero_boot_info(file: Path):
|
14
|
+
message = f"""{_app_message('zero')}
|
15
|
+
{_arrow_right()}file: {_with_color(str(file))}
|
16
|
+
"""
|
17
|
+
print(message)
|
18
|
+
|
19
|
+
|
20
|
+
def web_boot_info(ip: str):
|
21
|
+
message = f"""{_app_message('web')}
|
22
|
+
{_arrow_right()}Local: {_with_color(str(ip), "blue")}
|
23
|
+
"""
|
24
|
+
print(message)
|
25
|
+
|
26
|
+
|
27
|
+
def webview_boot_info():
|
28
|
+
pass
|
29
|
+
|
30
|
+
|
31
|
+
def _app_message(mode: str) -> str:
|
32
|
+
return f"""{_with_color(f"InstaUI {__version__}")}
|
33
|
+
mode: {_with_color(mode)}"""
|
34
|
+
|
35
|
+
|
36
|
+
def _with_color(
|
37
|
+
text: str, color: Literal["red", "green", "yellow", "blue"] = "green"
|
38
|
+
) -> str:
|
39
|
+
return f"{_colors[color]}{text}\033[0m"
|
40
|
+
|
41
|
+
|
42
|
+
def _arrow_right() -> str:
|
43
|
+
return _with_color("➜ ")
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import orjson as json
|
2
|
+
import datetime
|
3
|
+
from enum import Enum
|
4
|
+
|
5
|
+
|
6
|
+
class Jsonable:
|
7
|
+
def _to_json_dict(self):
|
8
|
+
data = {k: v for k, v in self.__dict__.items() if k[:1] != "_"}
|
9
|
+
|
10
|
+
return data
|
11
|
+
|
12
|
+
|
13
|
+
def json_default(obj):
|
14
|
+
if isinstance(obj, float):
|
15
|
+
return None
|
16
|
+
if isinstance(obj, (datetime.date, datetime.datetime)):
|
17
|
+
return obj.isoformat()
|
18
|
+
if isinstance(obj, Enum):
|
19
|
+
return obj.value
|
20
|
+
if isinstance(obj, Jsonable):
|
21
|
+
return obj._to_json_dict()
|
22
|
+
|
23
|
+
|
24
|
+
def dumps(obj, indent=False):
|
25
|
+
def json_default_wrapper(obj):
|
26
|
+
for fn in [json_default]:
|
27
|
+
res = fn(obj)
|
28
|
+
if res is not None:
|
29
|
+
return res
|
30
|
+
|
31
|
+
return json.dumps(
|
32
|
+
obj, default=json_default_wrapper, option=json.OPT_INDENT_2 if indent else 0
|
33
|
+
).decode("utf-8")
|
34
|
+
|
35
|
+
|
36
|
+
def dumps2dict(obj):
|
37
|
+
return json.loads(dumps(obj))
|
File without changes
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from typing import Literal
|
3
|
+
from instaui.components.element import Element
|
4
|
+
from instaui.vars.types import TMaybeRef
|
5
|
+
from instaui.vars.js_computed import JsComputed
|
6
|
+
|
7
|
+
|
8
|
+
class Column(Element):
|
9
|
+
def __init__(self, *, inline: TMaybeRef[bool] = False):
|
10
|
+
super().__init__("div")
|
11
|
+
|
12
|
+
flex = JsComputed(
|
13
|
+
inputs=[inline], code="inline => inline? 'inline-flex' : 'flex'"
|
14
|
+
)
|
15
|
+
|
16
|
+
self.style("flex-direction: column;gap:var(--insta-column-gap)").style(
|
17
|
+
{"display": flex}
|
18
|
+
)
|
19
|
+
|
20
|
+
def gap(self, value: TMaybeRef[str]) -> Column:
|
21
|
+
return self.style({"gap": value})
|
22
|
+
|
23
|
+
def align_items(
|
24
|
+
self, value: TMaybeRef[Literal["start", "end", "center", "stretch", "revert"]]
|
25
|
+
) -> Column:
|
26
|
+
return self.style({"align-items": value})
|
@@ -0,0 +1,47 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import (
|
4
|
+
Dict,
|
5
|
+
Optional,
|
6
|
+
Union,
|
7
|
+
)
|
8
|
+
from instaui.common.jsonable import Jsonable
|
9
|
+
from instaui.runtime import (
|
10
|
+
get_app_slot,
|
11
|
+
check_default_app_slot_or_error,
|
12
|
+
)
|
13
|
+
from instaui.components.slot import SlotManager
|
14
|
+
from instaui.vars.mixin_types.element_binding import ElementBindingMixin
|
15
|
+
|
16
|
+
|
17
|
+
class Component(Jsonable):
|
18
|
+
def __init__(self, tag: Optional[Union[str, ElementBindingMixin]] = None):
|
19
|
+
check_default_app_slot_or_error(
|
20
|
+
"Not allowed to create element outside of ui.page"
|
21
|
+
)
|
22
|
+
|
23
|
+
self.tag = (
|
24
|
+
"div"
|
25
|
+
if tag is None or tag == ""
|
26
|
+
else (
|
27
|
+
tag._to_element_binding_config()
|
28
|
+
if isinstance(tag, ElementBindingMixin)
|
29
|
+
else str(tag)
|
30
|
+
)
|
31
|
+
)
|
32
|
+
self._slot_manager = SlotManager()
|
33
|
+
|
34
|
+
get_app_slot().append_component_to_container(self)
|
35
|
+
|
36
|
+
def __enter__(self):
|
37
|
+
self._slot_manager.default.__enter__()
|
38
|
+
return self
|
39
|
+
|
40
|
+
def __exit__(self, *_) -> None:
|
41
|
+
self._slot_manager.default.__exit__(*_)
|
42
|
+
|
43
|
+
def _to_json_dict(self) -> Dict:
|
44
|
+
data = super()._to_json_dict()
|
45
|
+
data["tag"] = self.tag
|
46
|
+
|
47
|
+
return data
|
@@ -0,0 +1,34 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from typing import Any, Dict
|
3
|
+
from instaui.components.component import Component
|
4
|
+
from instaui.vars.types import TMaybeRef
|
5
|
+
from instaui.vars.mixin_types.element_binding import ElementBindingMixin
|
6
|
+
|
7
|
+
|
8
|
+
class Content(Component):
|
9
|
+
def __init__(self, content: TMaybeRef[Any]):
|
10
|
+
"""Content to be displayed on the page, typically used for pure text content within slots.
|
11
|
+
|
12
|
+
Args:
|
13
|
+
content (TMaybeRef[Any]): The textual content to display.
|
14
|
+
|
15
|
+
Examples:
|
16
|
+
.. code-block:: python
|
17
|
+
with html.div():
|
18
|
+
ui.content("Hello, world!")
|
19
|
+
"""
|
20
|
+
super().__init__("content")
|
21
|
+
self._content = content
|
22
|
+
|
23
|
+
def _to_json_dict(self) -> Dict:
|
24
|
+
data = super()._to_json_dict()
|
25
|
+
props = {}
|
26
|
+
data["props"] = props
|
27
|
+
|
28
|
+
if isinstance(self._content, ElementBindingMixin):
|
29
|
+
props["content"] = self._content._to_element_binding_config()
|
30
|
+
props["r"] = 1
|
31
|
+
else:
|
32
|
+
props["content"] = self._content
|
33
|
+
|
34
|
+
return data
|
@@ -0,0 +1,55 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import (
|
4
|
+
Any,
|
5
|
+
List,
|
6
|
+
Optional,
|
7
|
+
)
|
8
|
+
from instaui.common.jsonable import Jsonable
|
9
|
+
from instaui.vars.mixin_types.element_binding import ElementBindingMixin
|
10
|
+
|
11
|
+
|
12
|
+
class Directive(Jsonable):
|
13
|
+
def __init__(
|
14
|
+
self,
|
15
|
+
*,
|
16
|
+
is_sys: bool,
|
17
|
+
name: str,
|
18
|
+
arg: Optional[str] = None,
|
19
|
+
modifiers: Optional[List[Any]] = None,
|
20
|
+
value: Optional[Any] = None,
|
21
|
+
) -> None:
|
22
|
+
super().__init__()
|
23
|
+
self.name = name
|
24
|
+
self._arg = arg
|
25
|
+
self._is_sys = is_sys
|
26
|
+
self._modifiers = modifiers
|
27
|
+
self._value = value
|
28
|
+
|
29
|
+
def __hash__(self) -> int:
|
30
|
+
return hash(self.name)
|
31
|
+
|
32
|
+
def __eq__(self, other: object) -> bool:
|
33
|
+
if not isinstance(other, Directive):
|
34
|
+
return False
|
35
|
+
return self.name == other.name
|
36
|
+
|
37
|
+
def _to_json_dict(self):
|
38
|
+
data = super()._to_json_dict()
|
39
|
+
|
40
|
+
if self._arg:
|
41
|
+
data["arg"] = self._arg
|
42
|
+
|
43
|
+
if self._value:
|
44
|
+
data["value"] = (
|
45
|
+
self._value._to_element_binding_config()
|
46
|
+
if isinstance(self._value, ElementBindingMixin)
|
47
|
+
else self._value
|
48
|
+
)
|
49
|
+
|
50
|
+
if self._modifiers:
|
51
|
+
data["mf"] = list(dict.fromkeys(self._modifiers).keys())
|
52
|
+
|
53
|
+
data["sys"] = int(self._is_sys)
|
54
|
+
|
55
|
+
return data
|