/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::HTML { class HTMLElement : public DOM::Element , public HTML::GlobalEventHandlers { public: using WrapperType = Bindings::HTMLElementWrapper; HTMLElement(DOM::Document&, QualifiedName); virtual ~HTMLElement() override; String title() const { return attribute(HTML::AttributeNames::title); } virtual bool is_editable() const final; String content_editable() const; DOM::ExceptionOr set_content_editable(const String&); String inner_text(); void set_inner_text(StringView); int offset_top() const; int offset_left() const; int offset_width() const; int offset_height() const; bool cannot_navigate() const; NonnullRefPtr dataset() const { return m_dataset; } protected: virtual void parse_attribute(const FlyString& name, const String& value) override; private: // ^HTML::GlobalEventHandlers virtual EventTarget& global_event_handlers_to_event_target() override { return *this; } enum class ContentEditableState { True, False, Inherit, }; ContentEditableState content_editable_state() const; NonnullRefPtr m_dataset; }; }