{# max-h used to live on this outer div, capping header+list
together - since the header is shrink-0 (always its full
natural height, e.g. search row + hint row + the sort-
controls row above), it always claims its space FIRST,
leaving only whatever's left of that fixed budget for the
list. That's why the list looked cramped, and why
bumping this cap felt disproportionate: the header's own
height doesn't change, so 100% of any increase here goes
to the list alone, not split evenly. Capping the list
directly instead (below) gives it a size that's stable
regardless of how tall the header ends up being. #}
{{ tree_folder_row('row', 'toggleLabFolder(row.path)', 'labTreeCollapsed[row.path]') }}
{# py-2 lives on the inner wrapper below, not this row div - see
tree_folder_row's comment in _macros.html for why. #}
{{ tree_indent_guides('row') }}
Inputs
Outputs
Template ports
in:
out:
{% endcall %}
{ const ok = await window.mojoConfirm({title:'Clear graph',message:'Remove all nodes and connections?',confirmLabel:'Clear',cancelLabel:'Cancel',variant:'warning'}); if(ok){ mojoLabClear(); window.mojoLabRebaseline?.(); } }"
@mojo:lab-activate-tab.document="$nextTick(() => {
const el = document.getElementById('lab-canvas');
const tab = labTabs.find(t => t.id === labActiveTabId);
mojoLabSetActiveHistoryTab(tab ? tab.id : labActiveTabId);
if (el) {
mojoLabInit(el, columns, labGraph, tab ? tab.viewport : null);
}
mojoLabSetContext(columns, labSchemas, labName);
})"
x-init="
const _labInitCanvas = () => $nextTick(() => {
const el = document.getElementById('lab-canvas');
const tab = labTabs.find(t => t.id === labActiveTabId);
mojoLabSetActiveHistoryTab(tab ? tab.id : labActiveTabId);
if (el) {
mojoLabInit(el, columns, labGraph, tab ? tab.viewport : null);
}
mojoLabSetContext(columns, labSchemas, labName);
});
$watch('labOpen', (open) => {
try { localStorage.setItem('mojo:lab:open', open ? '1' : '0'); } catch {}
if (!open) _saveTabs();
if (open) _labInitCanvas();
});
if (labOpen) _labInitCanvas();
$watch('labSchemas', (s) => { if (labOpen) mojoLabSetContext(columns, s, labName); });
$watch('labName', (n) => { if (labOpen) mojoLabSetContext(columns, labSchemas, n); });
">
Select Signal
{% from 'partials/trial_viewer/_macros.html' import tree_folder_row, tree_expand_collapse_buttons, tree_indent_guides, tree_search_input %}