/* * Copyright (c) 2025, Glenn Skrzypczak * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::HTML { struct CommandEventInit : public DOM::EventInit { GC::Ptr source; String command; }; class CommandEvent : public DOM::Event { WEB_PLATFORM_OBJECT(CommandEvent, DOM::Event); GC_DECLARE_ALLOCATOR(CommandEvent); public: [[nodiscard]] static GC::Ref create(JS::Realm&, FlyString const& event_name, CommandEventInit = {}); static WebIDL::ExceptionOr> construct_impl(JS::Realm&, FlyString const& event_name, CommandEventInit); // https://html.spec.whatwg.org/multipage/interaction.html#dom-commandevent-command String const& command() const { return m_command; } // https://html.spec.whatwg.org/multipage/interaction.html#dom-commandevent-source GC::Ptr source() const { return as(retarget(m_source, current_target())); } private: void visit_edges(Visitor&) override; CommandEvent(JS::Realm&, FlyString const& event_name, CommandEventInit event_init); void initialize(JS::Realm&) override; GC::Ptr m_source; String m_command; }; }