blob: ae2dd33f318f4b799d0ddcb9f79531fce51a28a6 [file]
import 'package:jaspr/dom.dart';
import 'package:jaspr/jaspr.dart';
import '../../../utils/provider.dart';
import '../../../utils/styles.dart';
import '../../bottompanel/views/bottom_panel.dart';
import '../../bottompanel/views/p2p_status_bar.dart';
import '../../project/view_models/panels_view_model.dart';
import '../../shared/components/split_panel.dart';
import '../components/editor_stack.dart';
import '../components/editor_tabs.dart';
class EditorContainer extends StatelessComponent {
const EditorContainer({super.key});
@override
Component build(BuildContext context) {
final panelsViewModel = context.watch<PanelsViewModel>();
return div(classes: 'editor-wrapper', [
SplitPanel(
isVertical: true,
absoluteFirst: false,
useRatio: false,
initialValue: 212,
minValue: 120,
maxValue: 480,
left: const div(classes: 'editor-main-area', [
EditorTabs(),
EditorStack(),
]),
right: const BottomPanel(),
showRight: panelsViewModel.showConsole || panelsViewModel.showProblems,
),
const P2pStatusBar(),
]);
}
@css
static List<StyleRule> get styles => [
css('.editor-wrapper').styles(
display: .flex,
minWidth: .zero,
minHeight: .zero,
overflow: .hidden,
flexDirection: .column,
flex: const Flex(grow: 1, basis: .zero),
),
css('.editor-main-area').styles(
display: .flex,
minHeight: .zero,
flexDirection: .column,
flex: const Flex(grow: 1, basis: .zero),
),
css('.editor-wrapper .editor-controls').styles(
display: .flex,
flexWrap: .wrap,
gap: .all(10.px),
flex: const .shrink(0),
),
css('.editor-wrapper .editor-controls > *').styles(
margin: .only(top: 0.px),
),
css('.editor-wrapper .editor-tabs').styles(
display: .flex,
minHeight: 36.px,
border: .only(
bottom: .solid(color: Colors.transparent, width: 0.px),
),
overflow: const .only(x: .auto, y: .hidden),
alignItems: .stretch,
flex: const .shrink(0),
backgroundColor: colorContainerLow,
),
];
}