1use crate::generated::catalog as g;
6
7pub fn layout_constant(name: &str) -> Option<f64> {
9 let i = g::LAYOUT_CONSTANT_NAMES.iter().position(|n| *n == name)?;
10 g::LAYOUT_CONSTANT_VALUES.get(i)?.parse().ok()
11}
12
13pub const WINDOW_THRESHOLD: f64 = 50.0;
15pub const WINDOW_OVERSCAN: f64 = 5.0;
17pub const RESIZE_STEP: f64 = 10.0;
19pub const PANEL_MIN: f64 = 10.0;
21pub const RESIZE_HANDLE_HIT: f64 = 8.0;
23pub const FIELD_INTRINSIC_WIDTH: f64 = 160.0;
25pub const MEDIA_INTRINSIC_WIDTH: f64 = 320.0;
27pub const MEDIA_ASPECT_RATIO: f64 = 1.7777778;
29pub const TREE_GUIDE_COLUMN: f64 = 14.0;
31pub const TREE_GUIDE_RADIUS: f64 = 3.0;
33pub const TREE_GUIDE_BRIDGE: f64 = 1.0;
36pub const PENDING_DELAY_MS: f64 = 150.0;
39pub const SKELETON_PULSE_MS: f64 = 1600.0;
41pub const SKELETON_OPACITY_LOW: f64 = 0.45;
42pub const SKELETON_OPACITY_HIGH: f64 = 0.9;
43pub const SKELETON_REDUCED_OPACITY: f64 = 0.6;
45pub const SEARCH_LIST_FADE: f32 = 24.0;
47pub const TABLE_COLUMN_MIN: f32 = 96.0;
50pub const TAB_STRIP_MAX_WIDTH: f32 = 240.0;
52pub const TAB_DRAG_THRESHOLD: f32 = 4.0;
55pub const TAB_LONG_PRESS_MS: f64 = 500.0;
57
58#[cfg(test)]
59mod tests {
60 use super::*;
61
62 #[test]
63 fn the_constants_are_layout_json() {
64 for (name, v) in [("windowThreshold", WINDOW_THRESHOLD), ("windowOverscan", WINDOW_OVERSCAN), ("resizeStep", RESIZE_STEP), ("panelMin", PANEL_MIN), ("resizeHandleHit", RESIZE_HANDLE_HIT), ("fieldIntrinsicWidth", FIELD_INTRINSIC_WIDTH), ("mediaIntrinsicWidth", MEDIA_INTRINSIC_WIDTH), ("mediaAspectRatio", MEDIA_ASPECT_RATIO), ("treeGuideColumn", TREE_GUIDE_COLUMN), ("treeGuideRadius", TREE_GUIDE_RADIUS), ("treeGuideBridge", TREE_GUIDE_BRIDGE), ("pendingDelayMs", PENDING_DELAY_MS), ("skeletonPulseMs", SKELETON_PULSE_MS), ("skeletonOpacityLow", SKELETON_OPACITY_LOW), ("skeletonOpacityHigh", SKELETON_OPACITY_HIGH), ("skeletonReducedOpacity", SKELETON_REDUCED_OPACITY), ("searchListFade", SEARCH_LIST_FADE as f64), ("tableColumnMin", TABLE_COLUMN_MIN as f64), ("tabStripMaxWidth", TAB_STRIP_MAX_WIDTH as f64), ("tabDragThreshold", TAB_DRAG_THRESHOLD as f64), ("tabLongPressMs", TAB_LONG_PRESS_MS)] {
65 assert_eq!(layout_constant(name), Some(v), "{name}");
66 }
67 assert_eq!(g::LAYOUT_CONSTANT_NAMES.len(), 21);
68 let json: serde_json::Value = serde_json::from_str(g::LAYOUT_JSON).unwrap();
69 assert_eq!(json["windowThreshold"], 50);
70 }
71}