(project_root: &str, anim_path: &str)
| 2644 | .into_iter() |
| 2645 | .filter(|value| filter.is_empty() || value.to_ascii_lowercase().contains(&filter)) |
| 2646 | .map(|value| InspectorPickerEntry { |
| 2647 | label: value.clone(), |
| 2648 | value, |
| 2649 | }) |
| 2650 | .collect() |
| 2651 | } |
| 2652 | |
| 2653 | fn inspector_node_picker_entries(state: &EditorState) -> Vec<InspectorPickerEntry> { |
| 2654 | if state.doc_text.is_empty() { |
| 2655 | return Vec::new(); |
| 2656 | } |
| 2657 | let filter = NodePickerFilter::parse(&state.inspector_picker_filter); |
| 2658 | let doc = cached_scene_doc_shared(&state.doc_text); |
| 2659 | let allowed = inspector_picker_node_ref_types(state); |
| 2660 | doc.scene |
| 2661 | .nodes |
| 2662 | .iter() |
| 2663 | .filter_map(|node| { |
| 2664 | if !node_ref_type_allows(&allowed, node.data.node_type) { |
| 2665 | return None; |
| 2666 | } |
| 2667 | let name = doc.scene.key_name_or_id(node.key).to_string(); |
| 2668 | let path = scene_node_path(&doc, node.key); |
| 2669 | let hay = format!( |
| 2670 | "{} {} {}", |
| 2671 | name.to_ascii_lowercase(), |
| 2672 | path.to_ascii_lowercase(), |
| 2673 | node.data.type_name().to_ascii_lowercase() |
| 2674 | ); |
| 2675 | if !filter.text.iter().all(|needle| hay.contains(needle)) { |
| 2676 | return None; |
| 2677 | } |
| 2678 | let label = format!( |
| 2679 | "{} {} {}", |
| 2680 | node_type_icon(node.data.node_type), |
| 2681 | editor_view::short_path(&path, 26), |
| 2682 | node.data.type_name() |
| 2683 | ); |
| 2684 | Some(InspectorPickerEntry { value: name, label }) |
no test coverage detected