refactor(core): Split up the large menu trait.
This commit is contained in:
@@ -32,9 +32,6 @@ pub trait Menu: Send + 'static {
|
||||
/// position in the filtered results.
|
||||
fn filtered_label(&self, filtered_index: usize) -> Option<&str>;
|
||||
|
||||
/// Add raw values from streaming input or AddItems actions.
|
||||
fn add_raw(&mut self, values: Vec<serde_json::Value>);
|
||||
|
||||
/// Get the JSON value of a filtered item for output.
|
||||
/// Returns a reference to the stored value.
|
||||
fn serialize_filtered(&self, filtered_index: usize) -> Option<&serde_json::Value>;
|
||||
@@ -44,14 +41,6 @@ pub trait Menu: Send + 'static {
|
||||
/// for output and hook events.
|
||||
fn original_index(&self, filtered_index: usize) -> Option<usize>;
|
||||
|
||||
/// Replace all items with a new set of values. Used by
|
||||
/// handler hook `replace_items` responses.
|
||||
fn replace_all(&mut self, values: Vec<serde_json::Value>);
|
||||
|
||||
/// Remove items at the given original indices. Used by
|
||||
/// handler hook `remove_items` responses.
|
||||
fn remove_by_indices(&mut self, indices: Vec<usize>);
|
||||
|
||||
/// Get the formatted display text for a filtered item,
|
||||
/// if a format template is configured. Returns None if
|
||||
/// no template is set, in which case the raw label is
|
||||
@@ -73,3 +62,20 @@ pub trait Menu: Send + 'static {
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
||||
/// Extension of [`Menu`] with mutation methods. Required by
|
||||
/// [`MenuRunner`] which needs to add, replace, and remove
|
||||
/// items. Embedders that only need read-only access can
|
||||
/// depend on `Menu` alone.
|
||||
pub trait MutableMenu: Menu {
|
||||
/// Add raw values from streaming input or AddItems actions.
|
||||
fn add_raw(&mut self, values: Vec<serde_json::Value>);
|
||||
|
||||
/// Replace all items with a new set of values. Used by
|
||||
/// handler hook `replace_items` responses.
|
||||
fn replace_all(&mut self, values: Vec<serde_json::Value>);
|
||||
|
||||
/// Remove items at the given original indices. Used by
|
||||
/// handler hook `remove_items` responses.
|
||||
fn remove_by_indices(&mut self, indices: Vec<usize>);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user