#ifndef FTXUI_COMPONENT_HPP #define FTXUI_COMPONENT_HPP #include // for function #include // for shared_ptr, make_shared #include // for wstring #include // for vector #include "ftxui/component/component_base.hpp" #include "ftxui/component/component_options.hpp" #include "ftxui/dom/elements.hpp" // for Element #include "ftxui/util/ref.hpp" // for ConstStringRef, StringRef namespace ftxui { class ComponentBase; struct Event; using Component = std::shared_ptr; using Components = std::vector; template std::shared_ptr Make(Args&&... args) { return std::make_shared(args...); } Component Button(ConstStringRef label, std::function on_click, ConstRef = {}); Component Checkbox(ConstStringRef label, bool* checked, ConstRef option = {}); Component Input(StringRef content, ConstStringRef placeholder, ConstRef option = {}); Component Menu(const std::vector* entries, int* selected_, ConstRef = {}); Component Radiobox(const std::vector* entries, int* selected_, ConstRef option = {}); Component Toggle(const std::vector* entries, int* selected, ConstRef option = {}); template // T = {int, float, long} Component Slider(StringRef label, T* value, T min, T max, T increment); Component Renderer(Component child, std::function); Component Renderer(std::function); Component CatchEvent(Component child, std::function); namespace Container { Component Vertical(Components children); Component Vertical(Components children, int* selector); Component Horizontal(Components children); Component Horizontal(Components children, int* selector); Component Tab(Components children, int* selector); } // namespace Container Component ResizableSplitLeft(Component main, Component back, int* main_size); Component ResizableSplitRight(Component main, Component back, int* main_size); Component ResizableSplitTop(Component main, Component back, int* main_size); Component ResizableSplitBottom(Component main, Component back, int* main_size); } // namespace ftxui #endif /* end of include guard: FTXUI_COMPONENT_HPP */ // Copyright 2021 Arthur Sonzogni. All rights reserved. // Use of this source code is governed by the MIT license that can be found in // the LICENSE file.