| 
									
										
										
										
											2023-05-25 12:43:52 +01:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2025-07-10 12:17:27 +01:00
										 |  |  |  * Copyright (c) 2023-2025, Sam Atkins <sam@ladybird.org> | 
					
						
							| 
									
										
										
										
											2023-05-25 12:43:52 +01:00
										 |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <AK/FlyString.h>
 | 
					
						
							| 
									
										
										
										
											2025-08-08 10:11:51 +01:00
										 |  |  | #include <LibWeb/CSS/StyleValues/StyleValue.h>
 | 
					
						
							| 
									
										
										
										
											2023-05-25 12:43:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace Web::CSS { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // https://www.w3.org/TR/css-values-4/#custom-idents
 | 
					
						
							|  |  |  | class CustomIdentStyleValue final : public StyleValueWithDefaultOperators<CustomIdentStyleValue> { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2025-04-15 15:18:27 -06:00
										 |  |  |     static ValueComparingNonnullRefPtr<CustomIdentStyleValue const> create(FlyString custom_ident) | 
					
						
							| 
									
										
										
										
											2023-05-25 12:43:52 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-08-19 14:00:10 +01:00
										 |  |  |         return adopt_ref(*new (nothrow) CustomIdentStyleValue(move(custom_ident))); | 
					
						
							| 
									
										
										
										
											2023-05-25 12:43:52 +01:00
										 |  |  |     } | 
					
						
							|  |  |  |     virtual ~CustomIdentStyleValue() override = default; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     FlyString const& custom_ident() const { return m_custom_ident; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-07 00:59:49 +01:00
										 |  |  |     virtual String to_string(SerializationMode) const override { return m_custom_ident.to_string(); } | 
					
						
							| 
									
										
										
										
											2025-08-14 12:44:03 +01:00
										 |  |  |     virtual Vector<Parser::ComponentValue> tokenize() const override; | 
					
						
							|  |  |  |     virtual GC::Ref<CSSStyleValue> reify(JS::Realm& realm, String const&) const override; | 
					
						
							| 
									
										
										
										
											2023-05-25 12:43:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     bool properties_equal(CustomIdentStyleValue const& other) const { return m_custom_ident == other.m_custom_ident; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     explicit CustomIdentStyleValue(FlyString custom_ident) | 
					
						
							|  |  |  |         : StyleValueWithDefaultOperators(Type::CustomIdent) | 
					
						
							|  |  |  |         , m_custom_ident(move(custom_ident)) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     FlyString m_custom_ident; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |