/* * Copyright (c) 2025, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace DevTools { class DEVTOOLS_API FlexItemActor final : public Actor { public: static constexpr auto base_name = "flex-item"sv; static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr, Web::UniqueNodeID, JsonObject); virtual ~FlexItemActor() override; void update_flex_item(JsonObject); Web::UniqueNodeID node_id() const { return m_node_id; } JsonValue serialize_flex_item() const; private: FlexItemActor(DevToolsServer&, String name, WeakPtr, Web::UniqueNodeID, JsonObject); virtual void handle_message(Message const&) override; WeakPtr m_walker; Web::UniqueNodeID m_node_id; JsonObject m_flex_item; }; class DEVTOOLS_API FlexboxActor final : public Actor { public: static constexpr auto base_name = "flexbox"sv; static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr, WeakPtr, Web::UniqueNodeID, JsonObject); virtual ~FlexboxActor() override; void update_flexbox_layout(JsonObject); Web::UniqueNodeID container_node_id() const { return m_container_node_id; } JsonValue serialize_flexbox() const; private: FlexboxActor(DevToolsServer&, String name, WeakPtr, WeakPtr, Web::UniqueNodeID, JsonObject); virtual void handle_message(Message const&) override; Optional actor_for_flex_item(JsonObject); WeakPtr m_layout_inspector; WeakPtr m_walker; Web::UniqueNodeID m_container_node_id; JsonObject m_flexbox_layout; HashMap> m_flex_item_actors; }; class DEVTOOLS_API GridActor final : public Actor { public: static constexpr auto base_name = "grid"sv; static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr, WeakPtr, Web::UniqueNodeID, JsonObject); virtual ~GridActor() override; void update_grid_layout(JsonObject); Web::UniqueNodeID container_node_id() const { return m_container_node_id; } JsonValue serialize_grid() const; private: GridActor(DevToolsServer&, String name, WeakPtr, WeakPtr, Web::UniqueNodeID, JsonObject); virtual void handle_message(Message const&) override; WeakPtr m_layout_inspector; WeakPtr m_walker; Web::UniqueNodeID m_container_node_id; JsonObject m_grid_layout; }; class DEVTOOLS_API LayoutInspectorActor final : public Actor { public: static constexpr auto base_name = "layout-inspector"sv; static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr, WeakPtr); virtual ~LayoutInspectorActor() override; private: LayoutInspectorActor(DevToolsServer&, String name, WeakPtr, WeakPtr); virtual void handle_message(Message const&) override; Optional actor_for_flexbox_layout(JsonObject); Optional actor_for_grid_layout(JsonObject); WeakPtr m_tab; WeakPtr m_walker; HashMap> m_flexbox_actors; HashMap> m_grid_actors; }; }