csstree/csstree (css-tree)
### [`v3.0.0`](https://redirect.github.com/csstree/csstree/blob/HEAD/CHANGELOG.md#300-September-11-2024)
[Compare Source](https://redirect.github.com/csstree/csstree/compare/v2.3.1...v3.0.0)
- Added support for the [`@container`](https://drafts.csswg.org/css-contain-3/#container-rule) at-rule
- Added support for the [`@starting-style`](https://drafts.csswg.org/css-transitions-2/#defining-before-change-style) at-rule
- Added support for the [`@scope`](https://drafts.csswg.org/css-cascade-6/#scoped-styles) at-rule
- Added support for the [`@position-try`](https://developer.mozilla.org/en-US/docs/Web/CSS/@position-try) at-rule
- Added support for the [`@layer`](https://drafts.csswg.org/css-cascade-5/#at-layer) at-rule
- Added support for `layer`, `layer()` and `supports()` in the `@media` at-rule (according to [the @import rule](https://drafts.csswg.org/css-cascade-5/#at-import) in Cascading and Inheritance 5)
- Added `Layer` and `LayerList` node types
- Added `TokenStream#lookupTypeNonSC()` method
- Added `` to generic types
- Bumped `mdn/data` to `2.10.0`
- Aligned `<'font'>` to [CSS Fonts 4](https://drafts.csswg.org/css-fonts-4/)
- Aligned `` to [CSS Color 5](https://drafts.csswg.org/css-color-5/)
- Fixed initialization when `Object.prototype` is extended or polluted ([#262](https://redirect.github.com/csstree/csstree/issues/262))
- Fixed `fork()` method to consider the `generic` option when creating a Lexer instance ([#266](https://redirect.github.com/csstree/csstree/issues/266))
- Fixed crash on parse error when custom `line` or `offset` is specified via options ([#251](https://redirect.github.com/csstree/csstree/issues/251))
- Fixed `speak` syntax patch ([#241](https://redirect.github.com/csstree/csstree/issues/241))
- Fixed `:lang()` to accept a list of `` or `` per [spec](https://drafts.csswg.org/selectors/#the-lang-pseudo) ([#265](https://redirect.github.com/csstree/csstree/issues/265))
- Fixed lexer matching for syntaxes referred to as `<'property'>`, when the syntax has a top-level `#`-multiplier ([#102](https://redirect.github.com/csstree/csstree/issues/102))
- Relaxed parsing of syntax definition to allow whitespaces in range multiplier ([#270](https://redirect.github.com/csstree/csstree/issues/270))
- Changed `parseWithFallback()` to rollback `tokenIndex` before calling a fallback
- Changed `Block` to not include `{` and `}`
- Changed `Atrule` and `Rule` to include `{` and `}` for a block
- Changed `Ratio` parsing:
- Left and right parts contain nodes instead of strings
- Both left and right parts of a ratio can now be any number; validation of number range is no longer within the parser's scope.
- Both parts can now be functions. Although not explicitly mentioned in the specification, mathematical functions can replace numbers, addressing potential use cases ([#162](https://redirect.github.com/csstree/csstree/issues/162)).
- As per the [CSS Values and Units Level 4](https://drafts.csswg.org/css-values-4/#ratios) specification, the right part of `Ratio` can be omitted. While this can't be a parser output (which would produce a `Number` node), it's feasible during `Ratio` node construction or transformation.
- Changes to query-related at-rules:
- Added new node types:
- [`Feature`](./docs/ast.md#feature): represents features like `(feature)` and `(feature: value)`, fundamental for both `@media` and `@container` at-rules
- [`FeatureRange`](./docs/ast.md#featurerange): represents [features in a range context](https://www.w3.org/TR/mediaqueries-4/#mq-range-context)
- [`FeatureFunction`](./docs/ast.md#featurefunction): represents functional features such as `@supports`'s `selector()` or `@container`'s `style()`
- [`Condition`](./docs/ast.md#condition): used across all query-like at-rules, encapsulating queries with features and the `not`, `and`, and `or` operators
- [`GeneralEnclosure`](./docs/ast.md#condition): represents the [``](https://www.w3.org/TR/mediaqueries-4/#typedef-general-enclosed) production, which caters to unparsed parentheses or functional expressions
> Note: All new nodes include a `kind` property to define the at-rule type. Supported kinds are `media`, `supports`, and `container`.
- Added support for functions for features and features in a range context, e.g. `(width: calc(100cm / 6))`
- Added a `condition` value for the parser's context option to parse queries. Use the `kind` option to specify the condition type, e.g., `parse('...', { context: 'condition', kind: 'media' })`.
- Introduced a `features` section in the syntax configuration for defining functional features of at-rules. Expand definitions using the `fork()` method. The current definition is as follows:
```js
features: {
supports: { selector() { /* ... */ } },
container: { style() { /* ... */ } }
}
```
- Changes for `@media` at-rule:
- Enhanced prelude parsing for complex queries. Parentheses with errors will be parsed as `GeneralEnclosed`.
- Added support for features in a range context, e.g. `(width > 100px)` or `(100px < height < 400px)`
- Transitioned from `MediaFeature` node type to the `Feature` node type with `kind: "media"`.
- Changed `MediaQuery` node structure into the following form:
```ts
type MediaQuery = {
type: "MediaQuery";
modifier: string | null; // e.g. "not", "only", etc.
mediaType: string | null; // e.g. "all", "screen", etc.
condition: Condition | null;
}
```
- Changes for `@supports` at-rule:
- Enhanced prelude parsing for complex queries. Parentheses with errors will be parsed as `GeneralEnclosed`.
- Added support for features in a range context, e.g. `(width > 100px)` or `(100px < height < 400px)`
- Added `SupportsDeclaration` node type to encapsulate a declaration in a query, replacing `Parentheses`.
- Parsing now employs `Condition` or `SupportsDeclaration` nodes of kind `supports` instead of `Parentheses`.
- Added support for the [`selector()`](https://drafts.csswg.org/css-conditional-4/#at-supports-ext) feature via the `FeatureFunction` node (configured in `features.supports.selector`).
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
2.3.1
->3.0.0
Release Notes
csstree/csstree (css-tree)
### [`v3.0.0`](https://redirect.github.com/csstree/csstree/blob/HEAD/CHANGELOG.md#300-September-11-2024) [Compare Source](https://redirect.github.com/csstree/csstree/compare/v2.3.1...v3.0.0) - Added support for the [`@container`](https://drafts.csswg.org/css-contain-3/#container-rule) at-rule - Added support for the [`@starting-style`](https://drafts.csswg.org/css-transitions-2/#defining-before-change-style) at-rule - Added support for the [`@scope`](https://drafts.csswg.org/css-cascade-6/#scoped-styles) at-rule - Added support for the [`@position-try`](https://developer.mozilla.org/en-US/docs/Web/CSS/@position-try) at-rule - Added support for the [`@layer`](https://drafts.csswg.org/css-cascade-5/#at-layer) at-rule - Added support for `layer`, `layer()` and `supports()` in the `@media` at-rule (according to [the @import rule](https://drafts.csswg.org/css-cascade-5/#at-import) in Cascading and Inheritance 5) - Added `Layer` and `LayerList` node types - Added `TokenStream#lookupTypeNonSC()` method - Added `Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.