@effindomv2/fui-rs 0.1.3
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.
- package/COMMERCIAL.md +7 -0
- package/Cargo.toml +34 -0
- package/LICENSE.md +9 -0
- package/README.md +88 -0
- package/package.json +54 -0
- package/scripts/build.sh +227 -0
- package/scripts/check-runtime-dependency.sh +41 -0
- package/scripts/framework-host-services.ts +40 -0
- package/scripts/generate-host-events.ts +17 -0
- package/scripts/generate-host-services.ts +28 -0
- package/scripts/hostgen/common.ts +73 -0
- package/scripts/hostgen/registry.ts +159 -0
- package/scripts/hostgen/rust-host-events.ts +171 -0
- package/scripts/hostgen/rust-host-services.ts +257 -0
- package/src/animation.rs +625 -0
- package/src/app.rs +324 -0
- package/src/assets.rs +572 -0
- package/src/bindings/mod.rs +1 -0
- package/src/bindings/ui.rs +705 -0
- package/src/bitmap.rs +317 -0
- package/src/bridge_callbacks.rs +242 -0
- package/src/context_menu_manager.rs +332 -0
- package/src/controls/anti_selection_area.rs +54 -0
- package/src/controls/button.rs +542 -0
- package/src/controls/checkbox.rs +372 -0
- package/src/controls/combobox.rs +1574 -0
- package/src/controls/context_menu.rs +1367 -0
- package/src/controls/control_template_set.rs +46 -0
- package/src/controls/control_tokens.rs +596 -0
- package/src/controls/dialog.rs +590 -0
- package/src/controls/dropdown.rs +1010 -0
- package/src/controls/form.rs +229 -0
- package/src/controls/internal/button_presenter.rs +142 -0
- package/src/controls/internal/checkbox_indicator_presenter.rs +210 -0
- package/src/controls/internal/dropdown_chevron_presenter.rs +134 -0
- package/src/controls/internal/dropdown_field_presenter.rs +269 -0
- package/src/controls/internal/dropdown_option_row_presenter.rs +184 -0
- package/src/controls/internal/mod.rs +13 -0
- package/src/controls/internal/pressable_indicator_presenter.rs +26 -0
- package/src/controls/internal/pressable_labeled_control.rs +492 -0
- package/src/controls/internal/radio_indicator_presenter.rs +208 -0
- package/src/controls/internal/selectable_popup_list.rs +597 -0
- package/src/controls/internal/slider_presenter.rs +282 -0
- package/src/controls/internal/switch_indicator_presenter.rs +235 -0
- package/src/controls/internal/text_input_core.rs +1074 -0
- package/src/controls/internal/text_input_presenter.rs +108 -0
- package/src/controls/mod.rs +235 -0
- package/src/controls/nav_link.rs +395 -0
- package/src/controls/popup.rs +191 -0
- package/src/controls/progress_bar.rs +287 -0
- package/src/controls/radio_button.rs +348 -0
- package/src/controls/radio_group.rs +283 -0
- package/src/controls/selection_area.rs +82 -0
- package/src/controls/shared.rs +68 -0
- package/src/controls/slider.rs +701 -0
- package/src/controls/switch.rs +293 -0
- package/src/controls/templating.rs +49 -0
- package/src/controls/tests.rs +3905 -0
- package/src/controls/text_area.rs +207 -0
- package/src/controls/text_input.rs +192 -0
- package/src/debug.rs +146 -0
- package/src/drag_drop.rs +424 -0
- package/src/drag_gesture.rs +258 -0
- package/src/drawing.rs +385 -0
- package/src/event.rs +1603 -0
- package/src/external_drop.rs +467 -0
- package/src/fetch.rs +500 -0
- package/src/ffi.rs +3542 -0
- package/src/file.rs +1677 -0
- package/src/focus_adorner.rs +307 -0
- package/src/focus_visibility.rs +121 -0
- package/src/frame_scheduler.rs +159 -0
- package/src/frame_signal.rs +64 -0
- package/src/generated/ffi.rs +798 -0
- package/src/generated/framework_host_services.rs +74 -0
- package/src/generated/mod.rs +2 -0
- package/src/host_services.rs +162 -0
- package/src/image_sampling.rs +78 -0
- package/src/keyboard_scroll.rs +137 -0
- package/src/keyboard_scroll_tracker.rs +385 -0
- package/src/lib.rs +547 -0
- package/src/logger.rs +56 -0
- package/src/mobile_text_selection_toolbar.rs +1034 -0
- package/src/navigation.rs +48 -0
- package/src/node/core.rs +2210 -0
- package/src/node/custom_drawable.rs +149 -0
- package/src/node/flex_box.rs +874 -0
- package/src/node/grid.rs +304 -0
- package/src/node/helpers.rs +442 -0
- package/src/node/image.rs +506 -0
- package/src/node/mod.rs +315 -0
- package/src/node/scroll_bar.rs +845 -0
- package/src/node/scroll_box.rs +514 -0
- package/src/node/scroll_state.rs +121 -0
- package/src/node/scroll_view.rs +557 -0
- package/src/node/svg_node.rs +474 -0
- package/src/node/text_node.rs +633 -0
- package/src/node/virtual_list.rs +678 -0
- package/src/panic_hook.rs +36 -0
- package/src/persisted.rs +274 -0
- package/src/platform.rs +556 -0
- package/src/popup_presenter.rs +344 -0
- package/src/selection_handle_adorner.rs +838 -0
- package/src/signal.rs +134 -0
- package/src/text.rs +1065 -0
- package/src/theme.rs +571 -0
- package/src/timers.rs +106 -0
- package/src/tool_tip.rs +167 -0
- package/src/tool_tip_manager.rs +691 -0
- package/src/transitions.rs +41 -0
- package/src/typography.rs +520 -0
- package/src/viewport.rs +108 -0
- package/src/worker.rs +308 -0
- package/src/worker_job.rs +82 -0
- package/src/worker_runtime.rs +172 -0
package/src/tool_tip.rs
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
use crate::PopupPlacement;
|
|
2
|
+
use std::cell::Cell;
|
|
3
|
+
|
|
4
|
+
thread_local! {
|
|
5
|
+
static NEXT_TOOL_TIP_ID: Cell<u64> = const { Cell::new(1) };
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
fn next_tool_tip_id() -> u64 {
|
|
9
|
+
NEXT_TOOL_TIP_ID.with(|slot| {
|
|
10
|
+
let id = slot.get();
|
|
11
|
+
slot.set(id.wrapping_add(1).max(1));
|
|
12
|
+
id
|
|
13
|
+
})
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
#[derive(Clone, Debug)]
|
|
17
|
+
pub struct ToolTip {
|
|
18
|
+
id: u64,
|
|
19
|
+
text_value: String,
|
|
20
|
+
initial_show_delay_ms: i32,
|
|
21
|
+
between_show_delay_ms: i32,
|
|
22
|
+
show_duration_ms: i32,
|
|
23
|
+
placement: PopupPlacement,
|
|
24
|
+
horizontal_offset: f32,
|
|
25
|
+
vertical_offset: f32,
|
|
26
|
+
open_on_focus: bool,
|
|
27
|
+
panel_background_color: u32,
|
|
28
|
+
text_color: u32,
|
|
29
|
+
panel_background_overridden: bool,
|
|
30
|
+
text_color_overridden: bool,
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
impl Default for ToolTip {
|
|
34
|
+
fn default() -> Self {
|
|
35
|
+
Self {
|
|
36
|
+
id: next_tool_tip_id(),
|
|
37
|
+
text_value: String::new(),
|
|
38
|
+
initial_show_delay_ms: 700,
|
|
39
|
+
between_show_delay_ms: 100,
|
|
40
|
+
show_duration_ms: 5000,
|
|
41
|
+
placement: PopupPlacement::Top,
|
|
42
|
+
horizontal_offset: 0.0,
|
|
43
|
+
vertical_offset: 0.0,
|
|
44
|
+
open_on_focus: true,
|
|
45
|
+
panel_background_color: 0,
|
|
46
|
+
text_color: 0,
|
|
47
|
+
panel_background_overridden: false,
|
|
48
|
+
text_color_overridden: false,
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
impl PartialEq for ToolTip {
|
|
54
|
+
fn eq(&self, other: &Self) -> bool {
|
|
55
|
+
self.id == other.id
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
impl ToolTip {
|
|
60
|
+
pub fn new() -> Self {
|
|
61
|
+
Self::default()
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
pub fn text(value: impl Into<String>) -> Self {
|
|
65
|
+
Self::new().with_text(value)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
pub fn with_text(mut self, value: impl Into<String>) -> Self {
|
|
69
|
+
self.text_value = value.into();
|
|
70
|
+
self
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
pub fn content_text(&self) -> &str {
|
|
74
|
+
&self.text_value
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
pub fn initial_show_delay(mut self, value: i32) -> Self {
|
|
78
|
+
self.initial_show_delay_ms = value.max(0);
|
|
79
|
+
self
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
pub fn initial_show_delay_ms(&self) -> i32 {
|
|
83
|
+
self.initial_show_delay_ms
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
pub fn between_show_delay(mut self, value: i32) -> Self {
|
|
87
|
+
self.between_show_delay_ms = value.max(0);
|
|
88
|
+
self
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
pub fn between_show_delay_ms(&self) -> i32 {
|
|
92
|
+
self.between_show_delay_ms
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
pub fn show_duration(mut self, value: i32) -> Self {
|
|
96
|
+
self.show_duration_ms = value.max(0);
|
|
97
|
+
self
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
pub fn show_duration_ms(&self) -> i32 {
|
|
101
|
+
self.show_duration_ms
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
pub fn placement(mut self, value: PopupPlacement) -> Self {
|
|
105
|
+
self.placement = value;
|
|
106
|
+
self
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
pub fn popup_placement(&self) -> PopupPlacement {
|
|
110
|
+
self.placement
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
pub fn horizontal_offset(mut self, value: f32) -> Self {
|
|
114
|
+
self.horizontal_offset = value;
|
|
115
|
+
self
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
pub fn horizontal_offset_px(&self) -> f32 {
|
|
119
|
+
self.horizontal_offset
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
pub fn vertical_offset(mut self, value: f32) -> Self {
|
|
123
|
+
self.vertical_offset = value;
|
|
124
|
+
self
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
pub fn vertical_offset_px(&self) -> f32 {
|
|
128
|
+
self.vertical_offset
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
pub fn open_on_focus(mut self, flag: bool) -> Self {
|
|
132
|
+
self.open_on_focus = flag;
|
|
133
|
+
self
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
pub fn opens_on_focus(&self) -> bool {
|
|
137
|
+
self.open_on_focus
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
pub fn panel_color(mut self, color: u32) -> Self {
|
|
141
|
+
self.panel_background_overridden = true;
|
|
142
|
+
self.panel_background_color = color;
|
|
143
|
+
self
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
pub fn has_panel_color_override(&self) -> bool {
|
|
147
|
+
self.panel_background_overridden
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
pub fn panel_background_color(&self) -> u32 {
|
|
151
|
+
self.panel_background_color
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
pub fn text_color(mut self, color: u32) -> Self {
|
|
155
|
+
self.text_color_overridden = true;
|
|
156
|
+
self.text_color = color;
|
|
157
|
+
self
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
pub fn has_text_color_override(&self) -> bool {
|
|
161
|
+
self.text_color_overridden
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
pub fn tooltip_text_color(&self) -> u32 {
|
|
165
|
+
self.text_color
|
|
166
|
+
}
|
|
167
|
+
}
|