Skip to main content

gpui_rhai/
lib.rs

1//! Runtime foundations for building GPUI applications from Rhai source.
2
3pub mod column_resize;
4pub mod component;
5pub mod component_styles;
6pub mod context;
7pub mod date;
8pub mod dependency;
9pub mod devtools;
10pub mod diagnostic;
11pub mod document;
12pub mod document_view;
13pub mod drag_drop;
14pub mod draggable;
15pub mod effect;
16pub mod element_ref;
17pub mod engine;
18mod environment_dependency;
19pub mod event;
20pub mod font;
21pub mod geometry;
22pub mod host_slot;
23pub mod inline_svg;
24mod interaction;
25mod invocation;
26pub mod lifecycle;
27pub mod locale;
28pub mod native_collection;
29pub mod native_handler;
30pub mod node;
31pub mod overlay;
32mod overlay_element;
33pub mod pan_zoom;
34pub mod primitive;
35pub mod range_input;
36pub mod range_slider;
37mod read_dependency;
38pub mod reload;
39pub mod renderer;
40pub mod resizable;
41pub mod responsive;
42pub mod retained;
43pub mod rotatable;
44pub mod schema;
45mod script_lint;
46pub mod script_source;
47pub mod scrollbar;
48pub mod selection_area;
49pub mod signal;
50mod slot_runtime;
51pub mod sortable;
52pub mod source;
53pub mod split_resize;
54pub mod state;
55pub mod store;
56pub mod style;
57mod table_layout;
58pub mod text_area;
59mod text_edit;
60pub mod text_input;
61pub mod theme;
62pub mod timer;
63pub mod value;
64pub mod virtual_list;
65mod virtual_list_element;
66pub mod window;
67
68#[cfg(feature = "charts")]
69pub mod chart;
70
71pub mod accessibility;
72pub mod action;
73pub mod app;
74pub mod asset;
75pub mod async_runtime;
76pub mod automation;
77mod backend;
78pub mod budget;
79pub mod canvas;
80pub mod capability;
81pub mod clock;
82mod collection_projection;
83pub mod motion;
84
85pub use gpui;
86pub use gpui_platform;
87
88pub use accessibility::{
89    AccessibilityError, AccessibilityNode, AccessibilityTree, CommittedSemanticFrame,
90};
91pub use action::{
92    ActionError, ActionId, ActionInvocation, ActionRegistry, DispatchScriptAction, KeyBindingSpec,
93};
94pub use app::{
95    EmbeddedScriptView, FileScriptView, PreparedScriptView, ScriptApplication, ScriptViewConfig,
96    ScriptViewError, ScriptViewExtension, ScriptViewHandle, ScriptViewHost,
97    ScriptViewPerformanceSnapshot, ScriptViewState, ThemeHandle, install,
98};
99pub use asset::{
100    AssetData, AssetError, AssetId, AssetProvider, AssetRegistry, DirectoryAssetProvider,
101    ImageDecodeHandle, ImageHandle, InMemoryAssetProvider, SvgCacheStats,
102};
103pub use async_runtime::{
104    AsyncDelivery, AsyncRuntimeError, AsyncScope, SubscriptionCloseReason,
105    SubscriptionDeliveryPolicy, SubscriptionEmitter, SubscriptionHandle, SubscriptionOptions,
106    SubscriptionRegistration, SubscriptionRegistry, TaskCancellation, TaskHandle, TaskRegistry,
107};
108pub use automation::{
109    AutomationBounds, AutomationCommand, AutomationDispatchReport, AutomationError,
110    AutomationFailure, AutomationLocator, AutomationNode, AutomationRequest, AutomationResponse,
111    AutomationResult, AutomationSnapshot, handle_automation_json_line, run_automation_json_lines,
112};
113pub use budget::{RuntimeBudgetError, RuntimeBudgets};
114pub use canvas::{
115    CanvasClipRect, CanvasCommand, CanvasError, CanvasFill, CanvasPathSample, CanvasPathSegment,
116    CanvasScene, CanvasTransform,
117};
118pub use capability::{
119    AppManifest, AsyncCapabilityHandler, CapabilityDescriptor, CapabilityError, CapabilityHandler,
120    CapabilityId, CapabilityMethod, CapabilityRegistry, SubscriptionCapabilityHandler,
121    SubscriptionWork, TaskWork,
122};
123#[cfg(feature = "charts")]
124pub use chart::*;
125pub use clock::{ManualRuntimeClock, RuntimeClock, RuntimeClockSource};
126pub use column_resize::{ColumnResizePrimitiveHandler, column_resize_primitive_descriptor};
127pub use component::{
128    ComponentDefinition, ComponentError, ComponentExportCollector, ComponentExportError,
129    ComponentHeaderError, ComponentInvocation, ComponentMetadata, ComponentPropConversionError,
130    ComponentPropValue, ComponentProps, ComponentRegistry, ComponentRegistryError, ComponentSchema,
131    EventSchema, RuntimeApiRange, SlotSchema, parse_component_header,
132};
133pub use component_styles::{ComponentStyleError, ComponentStyleSheet, load_component_styles};
134pub use context::{
135    ComponentIncarnation, ExecutionPhase, PendingEvent, UiContext, UiContextError, UiMutationBatch,
136    UiRuntimeState, UiStateSnapshot, UiTransactionError,
137};
138pub use date::{CalendarClock, CalendarClockSource, DateError, GregorianDate, Weekday};
139pub use dependency::{
140    DependencyError, ModuleCompileCache, ModuleDependencyGraph, ModuleRefreshReport,
141    extract_imports,
142};
143#[cfg(feature = "dev-reload")]
144pub use dependency::{FileChangeBatch, FileWatcher, WatcherError};
145pub use devtools::{
146    InspectorComponent, InspectorEffect, InspectorElementRef, InspectorMotion, InspectorNode,
147    InspectorSignal, InspectorSnapshot, InspectorTimeline, InspectorTimer, RuntimeTrace,
148    RuntimeTraceKind, TraceBuffer,
149};
150pub use diagnostic::{
151    Diagnostic, DiagnosticCode, DiagnosticContext, DiagnosticContextError, DiagnosticErrorKind,
152    DiagnosticExecutionTiming, DiagnosticFrame, DiagnosticOperationBudget, DiagnosticSeverity,
153    DiagnosticStateSnapshot,
154};
155pub use document::{
156    DiffAlignedRow, DiffDisplayRow, DiffRowKind, DiffViewMode, DiffWhitespace, DocumentDescriptor,
157    DocumentError, DocumentLimits, DocumentLine, DocumentRuntimeConfig, DocumentSource,
158    DocumentWrap, NativeTextDocument, NativeTextDocumentRegistry, PreparedDiff, PreparedDocument,
159    SyntaxRegistry, SyntaxSpan, SyntaxTokenKind, prepare_diff, prepare_diff_with_limits,
160    prepare_document, prepare_document_with_limits,
161};
162pub use document_view::{
163    CodeViewerPrimitiveHandler, DiffSide, DiffViewerPrimitiveHandler, RevealDocumentLine,
164    code_viewer_primitive_descriptor, diff_viewer_primitive_descriptor, init_document_view,
165};
166pub use drag_drop::{
167    DragSourcePrimitiveHandler, DropZonePrimitiveHandler, drag_source_primitive_descriptor,
168    drop_zone_primitive_descriptor,
169};
170pub use draggable::{DraggablePrimitiveHandler, draggable_primitive_descriptor};
171pub use effect::{EffectDescriptor, EffectError, EffectId, EffectRegistry};
172pub use element_ref::{ElementRef, ElementRefError, ElementRefId, ElementRefRegistry};
173pub use engine::{
174    CompiledUi, ComponentInvocationRecipe, DEFAULT_SCRIPT_OPERATION_LIMIT, ExecutionOperation,
175    ExecutionTiming, OPERATION_SEMANTICS_VERSION, RuntimeEngine, RuntimeError, ScriptCallback,
176    ScriptCallbackDefinitionError, ScriptGeneration,
177};
178pub use event::{
179    EventDispatchReport, EventModifiers, EventPhase, EventPropagation, EventResponse, EventRouter,
180    HostCallback, LogicalPoint, PointerCaptureDirective, PointerCaptureRegistry, PointerEventData,
181    PropagationControl, UiEvent, UiEventBinding, UiEventHandler, WheelEventData,
182};
183pub use font::{FontError, FontSource, validate_font_sources};
184pub use geometry::{
185    Affine2D, ElementGeometry, GeometryBounds, GeometryError, GeometryRegistry, PresentedGeometry,
186};
187pub use host_slot::{HostSlotError, HostSlotRegistry};
188pub use inline_svg::{InlineSvg, InlineSvgError};
189pub use lifecycle::{LifecycleError, LifecycleState, ScriptLifecycle};
190pub use locale::{
191    CalendarMetadata, CalendarNames, DatePatterns, DateStyle, LocaleBundle, LocaleError,
192    LocaleManager, NumberFormatOptions, NumberMetadata, TextDirection, format_date_with_metadata,
193    format_integer_with_metadata, format_number_with_metadata, load_locale_source,
194};
195pub use motion::{
196    MotionEasing, MotionError, MotionFrame, MotionHandle, MotionInertia, MotionIntent, MotionKey,
197    MotionKeyframe, MotionKeyframes, MotionPlaybackState, MotionPreference, MotionProgressBinding,
198    MotionProgressDriver, MotionProperty, MotionQuality, MotionResourceUsage, MotionRuntime,
199    MotionSnapshot, MotionSource, MotionSpring, MotionTimeline, MotionTimelineEvent,
200    MotionTimelineEventKind, MotionTimelineSnapshot, MotionTimelineStep, MotionTrack,
201    MotionTransition,
202};
203pub use native_collection::{
204    NativeCollection, NativeCollectionError, NativeCollectionRegistry, VirtualCollectionData,
205};
206pub use native_handler::{
207    NativeEvent, NativeHandlerDescriptor, NativeHandlerError, NativeHandlerId, NativeHandlerRef,
208    NativeHandlerRegistry,
209};
210pub use node::{
211    ImageSourceSpec, LayerNodeSpec, LayerPlacement, NodeKey, OverlayDismissPolicy,
212    OverlayInitialFocus, OverlayNodeSpec, OverlayWidthPolicy, SourceLocation, Span, TooltipDelays,
213    UiNode, UiNodeKind, UiNodeKindTag,
214};
215pub use overlay::{
216    DismissReport, FocusToken, OverlayBounds, OverlayError, OverlayId, OverlayKind, OverlayManager,
217    OverlayPlacement, OverlaySpec, PlacementResult, TooltipScheduler, TooltipTransition,
218};
219pub use pan_zoom::{PanZoomPrimitiveHandler, pan_zoom_primitive_descriptor};
220pub use primitive::{
221    EffectPrimitiveDescriptor, PrimitiveAccessibilityProjection, PrimitiveContext,
222    PrimitiveDescriptor, PrimitiveError, PrimitiveHandler, PrimitiveId, PrimitiveInstance,
223    PrimitiveInstanceId, PrimitiveNode, PrimitivePlatform, PrimitiveProps, PrimitiveRegistry,
224    PrimitiveResourceError, PrimitiveResourceHandle, PrimitiveResourceScope,
225    PrimitiveSemanticProposal, PrimitiveTheme, PrimitiveValue,
226};
227pub use range_input::{RangeInputPrimitiveHandler, range_input_primitive_descriptor};
228pub use range_slider::{RangeSliderPrimitiveHandler, range_slider_primitive_descriptor};
229pub use reload::{LiveScript, ReloadOutcome};
230pub use renderer::{
231    ColorResolver, GpuiNodeRenderer, LiteralColorResolver, NodeEventDispatcher, StaticUiView,
232    StaticUiViewError,
233};
234pub use resizable::{ResizablePrimitiveHandler, resizable_primitive_descriptor};
235pub use responsive::{ResponsiveError, ResponsiveRuntime, ViewportBreakpoints, ViewportClass};
236pub use retained::{
237    NodeId, ReconcileError, ReconcileMetrics, ReconcileReport, RetainedChildLink, RetainedNode,
238    RetainedUiTree,
239};
240pub use rotatable::{RotatablePrimitiveHandler, rotatable_primitive_descriptor};
241pub use schema::{
242    ObjectField, SchemaDefinitionError, SchemaIssue, SchemaValidationError, ValueSchema,
243};
244pub use script_lint::{KnownCallDiagnostic, KnownCallLintError};
245pub use script_source::{
246    EmbeddedScriptSource, FileScriptSource, ScriptAsset, ScriptSource, ScriptSourceError,
247};
248pub use scrollbar::{ScrollbarSpec, ScrollbarVisibility};
249pub use selection_area::{SelectionAreaPrimitiveHandler, selection_area_primitive_descriptor};
250pub use signal::{
251    NativeSignal, SignalError, SignalId, SignalKind, SignalProperty, SignalRegistry,
252    SignalSnapshot, SignalValue, SignalWriter,
253};
254pub use sortable::{SortablePrimitiveHandler, sortable_primitive_descriptor};
255pub use source::{ModuleId, ModuleIdError, RestrictedModuleResolver};
256pub use split_resize::{SplitResizePrimitiveHandler, split_resize_primitive_descriptor};
257pub use state::{
258    ComponentInstancePath, ComponentStateSchema, RenderStateTransaction, StateError, StateField,
259    StateInstanceSnapshot, StateReconcileReport, StateStore, StateValueSnapshot,
260};
261pub use store::{StoreError, StoreId, StoreReadSession, StoreRegistry, StoreScope, StoreSnapshot};
262pub use style::{
263    Align, AutoLength, BorderLineStyle, ColorParseError, ColorValue, CornerLengths, CursorKind,
264    DisplayMode, EdgeLengths, FlexDirection, FlexWrapMode, FontSlant, HitTestBehavior,
265    InteractionState, Justify, LayoutEdgeLengths, LayoutLength, Length, LengthError,
266    LinearGradientSpec, OverflowMode, PositionMode, PseudoState, RadiusToken, Rgba8, ShadowSpec,
267    SignedLength, SpacingToken, Style, StyleProperties, StyleValueError, TextAlignMode,
268    WhiteSpaceMode,
269};
270pub use text_area::{TextAreaPrimitiveHandler, init_text_area, text_area_primitive_descriptor};
271pub use text_input::{
272    TextBuffer, TextInputPrimitiveHandler, init_text_input, text_input_primitive_descriptor,
273};
274pub use theme::{
275    REQUIRED_TYPOGRAPHY, ResolvedTheme, ResolvedTypography, SystemAppearance, ThemeError,
276    ThemeFamily, ThemeManager, ThemeMode, ThemeMotion, ThemeMotionOverrides, ThemeMotionSpring,
277    ThemePreference, ThemeSelection, ThemeSnapshot, ThemeTokenOverrides, ThemeTokenValue,
278    ThemeTokens, ThemeTypography, ThemeTypographyOverrides, ThemeVariant, ThemeVariantInfo,
279    TypographyToken, load_theme_source,
280};
281pub use timer::{TimerDescriptor, TimerError, TimerId, TimerRegistry, TimerSnapshot};
282pub use value::{
283    OpaqueHandle, UiValue, UiValueError, UiValuePath, UiValuePathError, UiValuePathSegment,
284};
285pub use virtual_list::{
286    VariableListSpec, VariableListState, VariableListWindow, VirtualCollectionId,
287    VirtualCollectionMetrics, VirtualCollectionNodeSpec, VirtualListError, VirtualRequestRegistry,
288};
289pub use window::{
290    QueuedWindowCommand, ScriptWindowSpec, WindowCommand, WindowCommandError, WindowCommandPolicy,
291    WindowCommandRegistry,
292};
293
294/// The first runtime API generation understood by component source.
295pub const RUNTIME_API_VERSION: u32 = 2;