1#![cfg_attr(target_family = "wasm", no_main)]
2
3use gpui::{
4 App, Bounds, Context, TextOverflow, Window, WindowBounds, WindowOptions, div, prelude::*, px,
5 size,
6};
7use gpui_platform::application;
8
9struct HelloWorld {}
10
11impl Render for HelloWorld {
12 fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement {
13 let text = "The longest word 你好世界这段是中文,こんにちはこの段落は日本語です in any of the major \
14 English language dictionaries is pneumonoultramicroscopicsilicovolcanoconiosis, a word that \
15 refers to a lung disease contracted from the inhalation of very fine silica particles, \
16 a url https://github.com/zed-industries/zed/pull/35724?query=foo&bar=2, \
17 specifically from a volcano; medically, it is the same as silicosis.";
18 div()
19 .id("page")
20 .size_full()
21 .flex()
22 .flex_col()
23 .p_2()
24 .gap_2()
25 .bg(gpui::white())
26 .child(
27 div()
28 .flex()
29 .flex_row()
30 .flex_shrink_0()
31 .gap_2()
32 .child(
33 div()
34 .flex()
35 .border_1()
36 .border_color(gpui::red())
37 .text_ellipsis()
38 .child("longer text in flex 1"),
39 )
40 .child(
41 div()
42 .flex()
43 .border_1()
44 .border_color(gpui::red())
45 .text_ellipsis()
46 .child("short flex"),
47 )
48 .child(
49 div()
50 .overflow_hidden()
51 .border_1()
52 .border_color(gpui::red())
53 .text_ellipsis()
54 .w_full()
55 .child("A short text in normal div"),
56 ),
57 )
58 .child(
59 div()
60 .flex_shrink_0()
61 .text_xl()
62 .truncate()
63 .border_1()
64 .border_color(gpui::blue())
65 .child("ELLIPSIS: ".to_owned() + text),
66 )
67 .child(
68 div()
69 .flex_shrink_0()
70 .text_xl()
71 .overflow_hidden()
72 .text_ellipsis()
73 .line_clamp(2)
74 .border_1()
75 .border_color(gpui::blue())
76 .child("ELLIPSIS 2 lines: ".to_owned() + text),
77 )
78 .child(
79 div()
80 .flex_shrink_0()
81 .text_xl()
82 .overflow_hidden()
83 .text_overflow(TextOverflow::Truncate("".into()))
84 .border_1()
85 .border_color(gpui::green())
86 .child("TRUNCATE: ".to_owned() + text),
87 )
88 .child(
89 div()
90 .flex_shrink_0()
91 .text_xl()
92 .overflow_hidden()
93 .text_overflow(TextOverflow::Truncate("".into()))
94 .line_clamp(3)
95 .border_1()
96 .border_color(gpui::green())
97 .child("TRUNCATE 3 lines: ".to_owned() + text),
98 )
99 .child(
100 div()
101 .flex_shrink_0()
102 .text_xl()
103 .whitespace_nowrap()
104 .overflow_hidden()
105 .border_1()
106 .border_color(gpui::black())
107 .child("NOWRAP: ".to_owned() + text),
108 )
109 .child(div().text_xl().w_full().child(text))
110 }
111}
112
113fn run_example() {
114 application().run(|cx: &mut App| {
115 let bounds = Bounds::centered(None, size(px(800.0), px(600.0)), cx);
116 cx.open_window(
117 WindowOptions {
118 window_bounds: Some(WindowBounds::Windowed(bounds)),
119 ..Default::default()
120 },
121 |_, cx| cx.new(|_| HelloWorld {}),
122 )
123 .unwrap();
124 cx.activate(true);
125 });
126}
127
128#[cfg(not(target_family = "wasm"))]
129fn main() {
130 run_example();
131}
132
133#[cfg(target_family = "wasm")]
134#[wasm_bindgen::prelude::wasm_bindgen(start)]
135pub fn start() {
136 gpui_platform::web_init();
137 run_example();
138}