@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.
Files changed (115) hide show
  1. package/COMMERCIAL.md +7 -0
  2. package/Cargo.toml +34 -0
  3. package/LICENSE.md +9 -0
  4. package/README.md +88 -0
  5. package/package.json +54 -0
  6. package/scripts/build.sh +227 -0
  7. package/scripts/check-runtime-dependency.sh +41 -0
  8. package/scripts/framework-host-services.ts +40 -0
  9. package/scripts/generate-host-events.ts +17 -0
  10. package/scripts/generate-host-services.ts +28 -0
  11. package/scripts/hostgen/common.ts +73 -0
  12. package/scripts/hostgen/registry.ts +159 -0
  13. package/scripts/hostgen/rust-host-events.ts +171 -0
  14. package/scripts/hostgen/rust-host-services.ts +257 -0
  15. package/src/animation.rs +625 -0
  16. package/src/app.rs +324 -0
  17. package/src/assets.rs +572 -0
  18. package/src/bindings/mod.rs +1 -0
  19. package/src/bindings/ui.rs +705 -0
  20. package/src/bitmap.rs +317 -0
  21. package/src/bridge_callbacks.rs +242 -0
  22. package/src/context_menu_manager.rs +332 -0
  23. package/src/controls/anti_selection_area.rs +54 -0
  24. package/src/controls/button.rs +542 -0
  25. package/src/controls/checkbox.rs +372 -0
  26. package/src/controls/combobox.rs +1574 -0
  27. package/src/controls/context_menu.rs +1367 -0
  28. package/src/controls/control_template_set.rs +46 -0
  29. package/src/controls/control_tokens.rs +596 -0
  30. package/src/controls/dialog.rs +590 -0
  31. package/src/controls/dropdown.rs +1010 -0
  32. package/src/controls/form.rs +229 -0
  33. package/src/controls/internal/button_presenter.rs +142 -0
  34. package/src/controls/internal/checkbox_indicator_presenter.rs +210 -0
  35. package/src/controls/internal/dropdown_chevron_presenter.rs +134 -0
  36. package/src/controls/internal/dropdown_field_presenter.rs +269 -0
  37. package/src/controls/internal/dropdown_option_row_presenter.rs +184 -0
  38. package/src/controls/internal/mod.rs +13 -0
  39. package/src/controls/internal/pressable_indicator_presenter.rs +26 -0
  40. package/src/controls/internal/pressable_labeled_control.rs +492 -0
  41. package/src/controls/internal/radio_indicator_presenter.rs +208 -0
  42. package/src/controls/internal/selectable_popup_list.rs +597 -0
  43. package/src/controls/internal/slider_presenter.rs +282 -0
  44. package/src/controls/internal/switch_indicator_presenter.rs +235 -0
  45. package/src/controls/internal/text_input_core.rs +1074 -0
  46. package/src/controls/internal/text_input_presenter.rs +108 -0
  47. package/src/controls/mod.rs +235 -0
  48. package/src/controls/nav_link.rs +395 -0
  49. package/src/controls/popup.rs +191 -0
  50. package/src/controls/progress_bar.rs +287 -0
  51. package/src/controls/radio_button.rs +348 -0
  52. package/src/controls/radio_group.rs +283 -0
  53. package/src/controls/selection_area.rs +82 -0
  54. package/src/controls/shared.rs +68 -0
  55. package/src/controls/slider.rs +701 -0
  56. package/src/controls/switch.rs +293 -0
  57. package/src/controls/templating.rs +49 -0
  58. package/src/controls/tests.rs +3905 -0
  59. package/src/controls/text_area.rs +207 -0
  60. package/src/controls/text_input.rs +192 -0
  61. package/src/debug.rs +146 -0
  62. package/src/drag_drop.rs +424 -0
  63. package/src/drag_gesture.rs +258 -0
  64. package/src/drawing.rs +385 -0
  65. package/src/event.rs +1603 -0
  66. package/src/external_drop.rs +467 -0
  67. package/src/fetch.rs +500 -0
  68. package/src/ffi.rs +3542 -0
  69. package/src/file.rs +1677 -0
  70. package/src/focus_adorner.rs +307 -0
  71. package/src/focus_visibility.rs +121 -0
  72. package/src/frame_scheduler.rs +159 -0
  73. package/src/frame_signal.rs +64 -0
  74. package/src/generated/ffi.rs +798 -0
  75. package/src/generated/framework_host_services.rs +74 -0
  76. package/src/generated/mod.rs +2 -0
  77. package/src/host_services.rs +162 -0
  78. package/src/image_sampling.rs +78 -0
  79. package/src/keyboard_scroll.rs +137 -0
  80. package/src/keyboard_scroll_tracker.rs +385 -0
  81. package/src/lib.rs +547 -0
  82. package/src/logger.rs +56 -0
  83. package/src/mobile_text_selection_toolbar.rs +1034 -0
  84. package/src/navigation.rs +48 -0
  85. package/src/node/core.rs +2210 -0
  86. package/src/node/custom_drawable.rs +149 -0
  87. package/src/node/flex_box.rs +874 -0
  88. package/src/node/grid.rs +304 -0
  89. package/src/node/helpers.rs +442 -0
  90. package/src/node/image.rs +506 -0
  91. package/src/node/mod.rs +315 -0
  92. package/src/node/scroll_bar.rs +845 -0
  93. package/src/node/scroll_box.rs +514 -0
  94. package/src/node/scroll_state.rs +121 -0
  95. package/src/node/scroll_view.rs +557 -0
  96. package/src/node/svg_node.rs +474 -0
  97. package/src/node/text_node.rs +633 -0
  98. package/src/node/virtual_list.rs +678 -0
  99. package/src/panic_hook.rs +36 -0
  100. package/src/persisted.rs +274 -0
  101. package/src/platform.rs +556 -0
  102. package/src/popup_presenter.rs +344 -0
  103. package/src/selection_handle_adorner.rs +838 -0
  104. package/src/signal.rs +134 -0
  105. package/src/text.rs +1065 -0
  106. package/src/theme.rs +571 -0
  107. package/src/timers.rs +106 -0
  108. package/src/tool_tip.rs +167 -0
  109. package/src/tool_tip_manager.rs +691 -0
  110. package/src/transitions.rs +41 -0
  111. package/src/typography.rs +520 -0
  112. package/src/viewport.rs +108 -0
  113. package/src/worker.rs +308 -0
  114. package/src/worker_job.rs +82 -0
  115. package/src/worker_runtime.rs +172 -0
@@ -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
+ }