blob: ceae27591a6186119684fe2df4c8e625a026c56e [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// API docs from [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web).
// Attributions and copyright licensing by Mozilla Contributors is licensed
// under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/.
// Generated from Web IDL definitions.
// ignore_for_file: unintended_html_in_doc_comment
@JS()
library;
import 'dart:js_interop';
import 'dom.dart';
typedef HighlightType = String;
/// The **`Highlight`** interface of the
/// [CSS Custom Highlight API](https://developer.mozilla.org/en-US/docs/Web/API/CSS_Custom_Highlight_API)
/// is used to represent a collection of [Range] instances to be styled using
/// the API.
///
/// To style arbitrary ranges in a page, instantiate a new `Highlight` object,
/// add one or more `Range` objects to it, and register it using the
/// [HighlightRegistry].
///
/// A `Highlight` instance is a
/// [`Set`-like object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#set-like_browser_apis)
/// that can hold one or more `Range` objects.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/Highlight).
extension type Highlight._(JSObject _) implements JSObject {
external factory Highlight([
AbstractRange initialRange1,
AbstractRange initialRange2,
AbstractRange initialRange3,
AbstractRange initialRange4,
]);
/// It is possible to create [Range] objects that overlap in a document.
///
/// When overlapping ranges are used by multiple different [Highlight]
/// objects, and when those highlights are styled using pseudo-elements, this
/// may lead to conflicting styles.
///
/// If two text ranges overlap and are both highlighted using the
/// [css_custom_highlight_api], and if they're both styled using the `color`
/// CSS property, the browser needs to decide which color should be used for
/// styling the text in the overlapping part.
///
/// By default, all highlights have the same priority and the browser chooses
/// the most recently registered highlight to style the overlapping parts.
///
/// The `priority` property of the [Highlight] interface is a `Number` used to
/// change this default behavior and determine which highlight's styles should
/// be used to resolve style conflicts in overlapping parts.
///
/// Note that all the styles of a highlight are applied and the browser only
/// needs to resolve conflicts when the same CSS properties are used by
/// multiple overlapping highlights. The highlight style conflict resolution
/// also does not depend on the order in which the pseudo-elements rules
/// appear in the source, or whether or not CSS properties are marked as
/// `!important`.
external int get priority;
external set priority(int value);
/// The `type` property of the [Highlight] interface is an enumerated `String`
/// used to specify the meaning of the highlight. This allows assistive
/// technologies, such as screen readers, to include this meaning when
/// exposing the highlight to users.
///
/// By default, a highlight object will have its type set to `highlight`, but
/// you can change it to `spelling-error` or `grammar-error`.
external HighlightType get type;
external set type(HighlightType value);
}
/// The **`HighlightRegistry`** interface of the
/// [CSS Custom Highlight API](https://developer.mozilla.org/en-US/docs/Web/API/CSS_Custom_Highlight_API)
/// is used to register [Highlight] objects to be styled using the API.
/// It is accessed via [CSS.highlights_static].
///
/// A `HighlightRegistry` instance is a
/// [`Map`-like object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#map-like_browser_apis),
/// in which each key is the name string for a custom highlight, and the
/// corresponding value is the associated [Highlight] object.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/HighlightRegistry).
extension type HighlightRegistry._(JSObject _) implements JSObject {}