/* * Copyright (c) 2021, Luke Wilde * Copyright (c) 2022, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Web::DOM { struct CustomEventInit : public EventInit { JS::Value detail { JS::js_null() }; }; // https://dom.spec.whatwg.org/#customevent class CustomEvent : public Event { WEB_PLATFORM_OBJECT(CustomEvent, Event); public: static WebIDL::ExceptionOr> create(JS::Realm&, FlyString const& event_name, CustomEventInit const& event_init = {}); static WebIDL::ExceptionOr> construct_impl(JS::Realm&, FlyString const& event_name, CustomEventInit const& event_init); virtual ~CustomEvent() override; // https://dom.spec.whatwg.org/#dom-customevent-detail JS::Value detail() const { return m_detail; } virtual JS::ThrowCompletionOr initialize(JS::Realm&) override; virtual void visit_edges(JS::Cell::Visitor&) override; void init_custom_event(String const& type, bool bubbles, bool cancelable, JS::Value detail); private: CustomEvent(JS::Realm&, FlyString const& event_name, CustomEventInit const& event_init); // https://dom.spec.whatwg.org/#dom-customevent-initcustomevent-type-bubbles-cancelable-detail-detail JS::Value m_detail { JS::js_null() }; }; }